Java项目:学生管理系统

news2024/12/27 15:51:32

Java项目:学生管理系统

  • 一、学生管理系统基础版
    • 需求
      • 1. 初始菜单
      • 2. 学生类:
      • 3. 添加功能:
      • 4. 删除功能:
      • 5. 修改功能:
      • 6. 查询功能:
    • 代码
      • 1. 学生类
      • 2. 测试类
    • 输出结果
        • a. 添加
        • b. 删除
        • c. 修改
        • d. 查询
        • e. 退出
  • 二、学生管理系统升级版
    • 需求:
      • 1. 登录界面:
      • 2. 用户类:
      • 3. 注册功能:
      • 4. 登录功能:
      • 5. 忘记密码:
      • 6. 验证码规则:
    • 代码
      • 1. 学生类
      • 2. 用户类
      • 3. 学生管理系统类
      • 4. App入口
    • 输出结果
      • a. 注册
      • b. 登录
      • c. 忘记密码
      • d. 退出

一、学生管理系统基础版

需求

​ 采取控制台的方式去书写学生管理系统。

1. 初始菜单

"-------------欢迎来到黑马学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"

2. 学生类:

​ 属性:id、姓名、年龄、家庭住址

3. 添加功能:

​ 键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一

4. 删除功能:

​ 键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除
  • id不存在,需要提示不存在,并回到初始菜单

5. 修改功能:

​ 键盘录入要修改的学生id,需要满足以下要求

  • id存在,继续录入其他信息
  • id不存在,需要提示不存在,并回到初始菜单

6. 查询功能:

​ 打印所有的学生信息,需要满足以下要求

  • 如果没有学生信息,提示:当前无学生信息,请添加后再查询
  • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id          姓名      年龄      家庭住址
heima001    张三      23       南京
heima002    李四      24       北京
heima003    王五      25       广州
heima004    赵六      26       深圳

代码

1. 学生类

package day11;

public class Student {
    private String id;
    private String name;
    private int age;
    private String position;

    public Student() {
    }

    public Student(String id, String name, int age, String position) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.position = position;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return position
     */
    public String getPosition() {
        return position;
    }

    /**
     * 设置
     * @param position
     */
    public void setPosition(String position) {
        this.position = position;
    }

    public String toString() {
        return "Student{id = " + id + ", name = " + name + ", age = " + age + ", position = " + position + "}";
    }
}

2. 测试类

package day11;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("-------------学生管理系统----------------");
            System.out.println("1:添加学生");
            System.out.println("2:删除学生");
            System.out.println("3:修改学生");
            System.out.println("4:查询学生");
            System.out.println("5:退出");
            System.out.print("请输入您的选择: ");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    addStudent(students);
                    break;
                case "2":
                    deleteStudent(students);
                    break;
                case "3":
                    updateStudent(students);
                    break;
                case "4":
                    queryStudent(students);
                    break;
                case "5":
                    System.out.println("谢谢光临");
                    System.exit(0);
                default:
                    System.out.println("没有这个选项");
                    break;
            }
        }
    }

    public static void addStudent(ArrayList<Student> students) {
        Scanner sc = new Scanner(System.in);
        Student newStu = new Student();
        // 判断id是否存在
        String id = null;
        while (true) {
            System.out.println("请输入学生ID");
            id = sc.next();
            boolean flag = contains(students, id);
            if (flag) {
                System.out.println("id已存在,请重新输入");
            } else {
                newStu.setId(id);
                break;
            }
        }
        System.out.println("请输入学生姓名");
        String name = sc.next();
        newStu.setName(name);
        System.out.println("请输入学生年龄");
        int age = sc.nextInt();
        newStu.setAge(age);
        System.out.println("请输入学生家庭住址");
        String position = sc.next();
        newStu.setPosition(position);
        students.add(newStu);
        System.out.println("学生信息添加成功");
    }

    public static void deleteStudent(ArrayList<Student> students) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        String id = sc.next();
        int index = getIndex(students, id);
        if (index >= 0) {
            students.remove(index);
            System.out.println("id为" + id + "的学生删除成功");
        } else {
            System.out.println("要删除的id:" + id + "不存在,请重新输入");
        }
    }

    public static void updateStudent(ArrayList<Student> students) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改学生的id");
        String id = sc.next();

        int index = getIndex(students, id);
        if (index == -1) {
            System.out.println("要修改的id:" + id + "不存在,请重新输入");
            return;
        }
        Student stu = students.get(index);
        System.out.println("请输入要修改的学生姓名");
        String newName = sc.next();
        stu.setName(newName);
        System.out.println("请输入要修改的学生年龄");
        int newAge = sc.nextInt();
        stu.setAge(newAge);
        System.out.println("请输入要修改的学生家庭住址");
        String newPosition = sc.next();
        stu.setPosition(newPosition);
        System.out.println("学生信息修改成功");
    }

    public static void queryStudent(ArrayList<Student> students) {
        if (students.size() == 0) {
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }
        System.out.println("id\t\t姓名\t年龄\t家庭地址");
        for (int i = 0; i < students.size(); i++) {
            System.out.println(students.get(i).getId() + "\t" + students.get(i).getName() + "\t" + students.get(i).getAge() + "\t" + students.get(i).getPosition());
        }
    }

    /**
     * 判断id是否存在
     *
     * @param students 学生集合
     * @param id       学生id
     * @return true为存在,false为不存在
     */
    public static boolean contains(ArrayList<Student> students, String id) {
        return getIndex(students, id) >= 0;
    }

    /**
     * 通过id获得索引
     *
     * @param students 学生集合
     * @param id       学生id
     * @return 存在则返回索引值,不存在返回-1
     */
    public static int getIndex(ArrayList<Student> students, String id) {
        for (int i = 0; i < students.size(); i++) {
            Student student = students.get(i);
            String sid = student.getId();
            if (sid.equals(id)) {
                return i;
            }
        }
        return -1;
    }

}

输出结果

a. 添加

在这里插入图片描述
在这里插入图片描述

b. 删除

在这里插入图片描述
在这里插入图片描述

c. 修改

在这里插入图片描述
在这里插入图片描述

d. 查询

在这里插入图片描述

e. 退出

在这里插入图片描述

二、学生管理系统升级版

需求:

​ 为学生管理系统书写一个登陆、注册、忘记密码的功能。

​ 只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。

1. 登录界面:

System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");

2. 用户类:

​ 属性:用户名、密码、身份证号码、手机号码

3. 注册功能:

  1. 用户名需要满足以下要求:

    • 用户名唯一
    • 用户名长度必须在3~15位之间
    • 只能是字母加数字的组合,但是不能是纯数字
  2. 密码键盘输入两次,两次一致才可以进行注册。

  3. 身份证号码需要满足以下要求:

    • 长度为18位
    • 不能以0为开头
    • 前17位,必须都是数字
    • 最为一位可以是数字,也可以是大写X或小写x
  4. 手机号需要满足以下要求:

    • 长度为11位
    • 不能以0为开头
    • 必须都是数字

4. 登录功能:

  1. 键盘录入用户名
  2. 键盘录入密码
  3. 键盘录入验证码
  • 验证要求:
    • 用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
    • 判断验证码是否正确,如不正确,重新输入
    • 再判断用户名和密码是否正确,有3次机会

5. 忘记密码:

  1. 键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
  2. 键盘录入身份证号码和手机号码
  3. 判断当前用户的身份证号码和手机号码是否一致,如果一致,则提示输入密码,进行修改。如果不一致,则提示:账号信息不匹配,修改失败。

6. 验证码规则:

  1. 长度为5
  2. 由4位大写或者小写字母和1位数字组成,同一个字母可重复
  3. 数字可以出现在任意位置。比如:aQa1K。

代码

1. 学生类

package day11;

public class Student {
    private String id;
    private String name;
    private int age;
    private String position;

    public Student() {
    }

    public Student(String id, String name, int age, String position) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.position = position;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return position
     */
    public String getPosition() {
        return position;
    }

    /**
     * 设置
     * @param position
     */
    public void setPosition(String position) {
        this.position = position;
    }

    public String toString() {
        return "Student{id = " + id + ", name = " + name + ", age = " + age + ", position = " + position + "}";
    }
}

2. 用户类

package day11;

public class User {
    private String username;
    private String pd;
    private String userId;
    private String phoneNumber;

    public User() {
    }

    public User(String username, String pd, String userId, String phoneNumber) {
        this.username = username;
        this.pd = pd;
        this.userId = userId;
        this.phoneNumber = phoneNumber;
    }

    /**
     * 获取
     * @return username
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置
     * @param username
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取
     * @return pd
     */
    public String getPd() {
        return pd;
    }

    /**
     * 设置
     * @param pd
     */
    public void setPd(String pd) {
        this.pd = pd;
    }

    /**
     * 获取
     * @return userId
     */
    public String getUserId() {
        return userId;
    }

    /**
     * 设置
     * @param userId
     */
    public void setUserId(String userId) {
        this.userId = userId;
    }

    /**
     * 获取
     * @return phoneNumber
     */
    public String getPhoneNumber() {
        return phoneNumber;
    }

    /**
     * 设置
     * @param phoneNumber
     */
    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String toString() {
        return "User{username = " + username + ", pd = " + pd + ", userId = " + userId + ", phoneNumber = " + phoneNumber + "}";
    }
}

3. 学生管理系统类

package day11;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    public static void startStudentSystem() {
        ArrayList<Student> students = new ArrayList<>();
        Scanner sc = new Scanner(System.in);

        loop:
        while (true) {
            System.out.println("-------------学生管理系统----------------");
            System.out.println("1:添加学生");
            System.out.println("2:删除学生");
            System.out.println("3:修改学生");
            System.out.println("4:查询学生");
            System.out.println("5:退出");
            System.out.print("请输入您的选择: ");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    addStudent(students);
                    break;
                case "2":
                    deleteStudent(students);
                    break;
                case "3":
                    updateStudent(students);
                    break;
                case "4":
                    queryStudent(students);
                    break;
                case "5":
                    System.out.println("谢谢光临");
                    break loop;
                // System.exit(0);
                default:
                    System.out.println("没有这个选项");
                    break;
            }
        }
    }

    public static void addStudent(ArrayList<Student> students) {
        Scanner sc = new Scanner(System.in);
        Student newStu = new Student();
        // 判断id是否存在
        String id = null;
        while (true) {
            System.out.println("请输入学生ID");
            id = sc.next();
            boolean flag = contains(students, id);
            if (flag) {
                System.out.println("id已存在,请重新输入");
            } else {
                newStu.setId(id);
                break;
            }
        }
        System.out.println("请输入学生姓名");
        String name = sc.next();
        newStu.setName(name);
        System.out.println("请输入学生年龄");
        int age = sc.nextInt();
        newStu.setAge(age);
        System.out.println("请输入学生家庭住址");
        String position = sc.next();
        newStu.setPosition(position);
        students.add(newStu);
        System.out.println("学生信息添加成功");
    }

    public static void deleteStudent(ArrayList<Student> students) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        String id = sc.next();
        int index = getIndex(students, id);
        if (index >= 0) {
            students.remove(index);
            System.out.println("id为" + id + "的学生删除成功");
        } else {
            System.out.println("要删除的id:" + id + "不存在,请重新输入");
        }
    }

    public static void updateStudent(ArrayList<Student> students) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改学生的id");
        String id = sc.next();

        int index = getIndex(students, id);
        if (index == -1) {
            System.out.println("要修改的id:" + id + "不存在,请重新输入");
            return;
        }
        Student stu = students.get(index);
        System.out.println("请输入要修改的学生姓名");
        String newName = sc.next();
        stu.setName(newName);
        System.out.println("请输入要修改的学生年龄");
        int newAge = sc.nextInt();
        stu.setAge(newAge);
        System.out.println("请输入要修改的学生家庭住址");
        String newPosition = sc.next();
        stu.setPosition(newPosition);
        System.out.println("学生信息修改成功");
    }

    public static void queryStudent(ArrayList<Student> students) {
        if (students.size() == 0) {
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }
        System.out.println("id\t\t姓名\t年龄\t家庭地址");
        for (int i = 0; i < students.size(); i++) {
            System.out.println(students.get(i).getId() + "\t" + students.get(i).getName() + "\t" + students.get(i).getAge() + "\t" + students.get(i).getPosition());
        }
    }

    /**
     * 判断id是否存在
     *
     * @param students 学生集合
     * @param id       学生id
     * @return true为存在,false为不存在
     */
    public static boolean contains(ArrayList<Student> students, String id) {
        return getIndex(students, id) >= 0;
    }

    /**
     * 通过id获得索引
     *
     * @param students 学生集合
     * @param id       学生id
     * @return 存在则返回索引值,不存在返回-1
     */
    public static int getIndex(ArrayList<Student> students, String id) {
        for (int i = 0; i < students.size(); i++) {
            Student student = students.get(i);
            String sid = student.getId();
            if (sid.equals(id)) {
                return i;
            }
        }
        return -1;
    }

}

4. App入口

package day11;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<User> users = new ArrayList<>();

        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作 1、登录 2、注册 3、忘记密码 按其他键退出");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    login(users);
                    break;
                case "2":
                    register(users);
                    break;
                case "3":
                    forgetPd(users);
                    break;
                default:
                    System.out.println("谢谢使用,再见");
                    System.exit(0);
                    break;
            }
        }
    }

    /**
     * 忘记密码
     *
     * @param users 用户集合
     */
    private static void forgetPd(ArrayList<User> users) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.next();

        // 判断用户名是否注册
        boolean flag = contains(users, username);
        if (!flag) {
            System.out.println("当前用户" + username + "未注册,请先注册");
        }

        System.out.println("请输入身份证号码");
        String userId = sc.next();
        System.out.println("请输入手机号码");
        String phoneNumber = sc.next();
        int index = findIndex(users, username);
        User user = users.get(index);
        if (!(user.getUserId().equalsIgnoreCase(userId) && user.getPhoneNumber().equals(phoneNumber))) {
            System.out.println("身份证号码或手机号码输入有误,不能修改密码");
            return;
        }
        String pd;
        while (true) {
            System.out.println("请输入新的密码");
            pd = sc.next();
            System.out.println("请再次输入新的密码");
            String againPd = sc.next();
            if (pd.equals(againPd)) {
                System.out.println("两次密码一致");
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入");
            }
        }
        user.setPd(pd);
        System.out.println("密码修改成功");
    }

    /**
     * 查找用户名在用户集合中的索引值
     *
     * @param users    用户集合
     * @param username 用户名
     * @return 存在返回索引值,不存在返回-1
     */
    private static int findIndex(ArrayList<User> users, String username) {
        for (int i = 0; i < users.size(); i++) {
            User user = users.get(i);
            if (user.getUsername().equals(username)) {
                return i;
            }
        }
        return -1;
    }

    /**
     * 注册方法
     *
     * @param users 用户集合
     */
    private static void register(ArrayList<User> users) {
        Scanner sc = new Scanner(System.in);
        String username;
        String pd;
        String userId;
        String phoneNumber;

        // 键盘录入用户名
        while (true) {
            System.out.println("请输入用户名");
            username = sc.next();
            // 验证用户名
            boolean usernameFlag = checkUsername(username);
            if (!usernameFlag) {
                // 格式不满足,重新输入
                System.out.println("用户名格式不满足条件,需要重新输入");
                continue;
            }
            // 验证唯一性
            boolean uniqueUsername = contains(users, username);
            if (uniqueUsername) {
                System.out.println("用户名" + username + "已存在,请重新输入");
            } else {
                System.out.println("用户名" + username + "可用");
                break;
            }
        }

        // 键盘录入密码
        while (true) {
            System.out.println("请输入要注册的密码");
            pd = sc.next();
            System.out.println("请再次输入要注册的密码");
            String againPd = sc.next();
            if (pd.equals(againPd)) {
                System.out.println("两次密码输入一致,继续录入其他数据");
                break;
            } else {
                System.out.println("两次密码输入不一致,请重新输入");
            }
        }

        // 键盘录入身份证号码
        while (true) {
            System.out.println("请输入身份证号");
            userId = sc.next();
            boolean userIdFlag = checkUserId(userId);
            if (userIdFlag) {
                System.out.println("身份证号码格式满足要求");
                break;
            } else {
                System.out.println("身份证号码格式有误,请重新输入");
            }
        }

        // 键盘录入手机号码
        while (true) {
            System.out.println("请输入手机号码");
            phoneNumber = sc.next();
            boolean phoneNumberFlag = checkPhoneNumber(phoneNumber);
            if (phoneNumberFlag) {
                System.out.println("手机号码格式正确");
                break;
            } else {
                System.out.println("手机号码输入有误,请重新输入");
            }
        }

        User newUser = new User(username, pd, userId, phoneNumber);
        users.add(newUser);
        System.out.println(username + "注册成功");
    }

    /**
     * 验证手机号格式
     *
     * @param phoneNumber 手机号
     * @return 符合规范返回true,否则返回false
     */
    private static boolean checkPhoneNumber(String phoneNumber) {
        if (phoneNumber.length() != 11) {
            return false;
        }
        if (phoneNumber.startsWith("0")) {
            return false;
        }
        for (int i = 0; i < phoneNumber.length(); i++) {
            char c = phoneNumber.charAt(i);
            if (!(c >= '0' && c <= '9')) {
                return false;
            }
        }
        return true;
    }

    /**
     * 验证身份证号码格式
     *
     * @param userId 身份证号码
     * @return 符合规范返回true,否则返回false
     */
    private static boolean checkUserId(String userId) {
        if (userId.length() != 18) {
            return false;
        }
        if (userId.startsWith("0")) {
            return false;
        }
        // 前17位必须是数字
        for (int i = 0; i < userId.length() - 1; i++) {
            char c = userId.charAt(i);
            if (!(c >= '0' && c <= '9')) {
                return false;
            }
        }
        // 最后一位
        char endChar = userId.charAt(userId.length() - 1);
        return (endChar >= '0' && endChar <= '9') || (endChar == 'x') || (endChar == 'X');
    }

    /**
     * 查询用户名是否存在
     *
     * @param users    用户集合
     * @param username 用户名
     * @return 存在返回true,不存在返回false
     */
    private static boolean contains(ArrayList<User> users, String username) {
        return findIndex(users, username) >= 0;
    }

    /**
     * 验证用户名格式
     *
     * @param username 用户名
     * @return 符合规范返回true,否则返回false
     */
    private static boolean checkUsername(String username) {
        // 用户名长度在3~15位
        int len = username.length();
        if (len < 3 || len > 15) {
            return false;
        }
        // 必须是字母加数字
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'))) {
                return false;
            }
        }
        // 统计在用户名中,有多少个字母和数字
        int charCount = 0;
        int numCount = 0;
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
                charCount++;
            }
            if (c >= '0' && c <= '9') {
                numCount++;
            }
        }
        // 只能是数字+字母
        if ((charCount + numCount) != username.length()) {
            return false;
        }
        // 不能是纯数字
        return numCount != username.length();
    }

    /**
     * 登录方法
     *
     * @param users 用户集合
     */
    private static void login(ArrayList<User> users) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.next();
        boolean usernameFlag = contains(users, username);
        if (!usernameFlag) {
            System.out.println("用户名" + username + "未注册,请先注册再登录");
            return;
        }

        // 只有3次机会
        for (int i = 0; true; i++) {
            System.out.println("请输入密码");
            String pd = sc.next();

            while (true) {
                String rightCode = getCode();
                System.out.println("当前验证码为:" + rightCode);
                System.out.println("请输入验证码");
                String code = sc.next();
                if (code.equalsIgnoreCase(rightCode)) {
                    System.out.println("验证码正确");
                    break;
                } else {
                    System.out.println("验证码错误");
                }
            }
            User userInfo = new User(username, pd, null, null);
            boolean checkUserInfo = checkUserInfo(users, userInfo);
            if (checkUserInfo) {
                System.out.println("登录成功,可以使用学生管理系统");
                StudentSystem ss = new StudentSystem();
                ss.startStudentSystem();
                break;
            } else {
                if (i == 2) {
                    System.out.println("当前账号" + username + "被锁定");
                    return;
                } else {
                    System.out.println("登录失败,用户名或密码错误,还剩下" + (2 - i) + "次机会");
                }
            }
        }
    }

    /**
     * 验证账号密码是否匹配
     *
     * @param users    用户集合
     * @param userInfo 用户信息
     * @return 匹配返回true,不匹配返回false
     */
    private static boolean checkUserInfo(ArrayList<User> users, User userInfo) {
        for (User user : users) {
            if (user.getUsername().equals(userInfo.getUsername()) && user.getPd().equals(userInfo.getPd())) {
                return true;
            }
        }
        return false;
    }

    /**
     * 获取验证码
     *
     * @return 验证码
     */
    public static String getCode() {
        ArrayList<Character> charList = new ArrayList<>();
        char[] chars = new char[5];
        Random random = new Random();
        for (int i = 0; i < 26; i++) {
            charList.add((char) ('a' + i));
            charList.add((char) ('A' + i));
        }
        for (int i = 0; i < 5; i++) {
            int index = random.nextInt(charList.size());
            chars[i] = charList.get(index);
        }
        chars[random.nextInt(chars.length)] = (char) (random.nextInt(10) + 48);
        return new String(chars);
    }
}

输出结果

a. 注册

在这里插入图片描述

b. 登录

在这里插入图片描述

c. 忘记密码

在这里插入图片描述

d. 退出

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/172905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端监控 二三事

有必要针对 JS 错误做监控吗&#xff1f; 我们可以先假设不对 JS 错误做监控&#xff0c;试想会出现什么问题&#xff1f; JS 错误可能会导致渲染出错、用户操作意外终止&#xff0c;如果没有 JS 错误监控&#xff0c;开发者完全感知不到线上这些异常情况。特别是像电商、支付…

【2-神经网络优化】北京大学TensorFlow2.0

课程地址&#xff1a;【北京大学】Tensorflow2.0_哔哩哔哩_bilibiliPython3.7和TensorFlow2.1六讲&#xff1a;神经网络计算&#xff1a;神经网络的计算过程&#xff0c;搭建第一个神经网络模型神经网络优化&#xff1a;神经网络的优化方法&#xff0c;掌握学习率、激活函数、损…

7. 字符串str的详细讲解

python3字符串str的使用 (1) 基本使用 [a]. Python 中单引号 和双引号 " 使用完全相同&#xff1b; [b]. 使用三引号(单或双)可以指定一个多行字符串&#xff1b; # 长字符串 print( jkl fsf fs fs )[c]. 反斜杠可以用来转义&#xff0c;使用r(raw)可以让反斜杠…

【LeetCode高频100题-3】冲冲冲(持续更新23.1.19)

文章目录62. 不同路径题意解法1 排列组合解法2 动态规划62. 不同路径 题意 一道数学题&#xff0c;排列组合/小学奥赛题。动态规划不是一般来解决最值问题的吗&#xff0c;这道题为什么会想到dp&#xff1f; 解法1 排列组合 从左上角到右下角&#xff0c;一共要走mn-2步&am…

DEJA_VU3D - Cesium功能集 -完整地图标绘及编辑功能系列预告

前言编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合&#xff0c;有自己琢磨实现的&#xff0c;也有参考其他大神后整理实现的&#xff0c;初步算了算现在有差不多实现小140个左右的功能&#xff0c;后续也会不断的追加&#xff0c;所以暂时打算一周2-3更的样…

【算法】克鲁斯卡尔 (Kruskal) 算法

目录1.概述2.代码实现2.1.并查集2.2.邻接矩阵存储图2.3.邻接表存储图2.4.测试代码3.应用本文参考&#xff1a; 《数据结构教程》第 5 版 李春葆 主编 1.概述 &#xff08;1&#xff09;在一给定的无向图 G (V, E) 中&#xff0c;(u, v) 代表连接顶点 u 与顶点 v 的边&#xf…

【6s965-fall2022】剪枝✂pruningⅠ

模型剪枝的介绍 修剪&#xff0c;消除不必要的知识。DNN的知识可以理解为存在于其权重中。 事实证明&#xff0c;许多 DNN 模型可以被分解为权重张量&#xff0c;而权重张量经常包含统计冗余&#xff08;稀疏性&#xff09;。因此&#xff0c;你可以压缩 DNN 的权重张量&…

[从零开始]用python制作识图翻译器·五

测试 通过以上步骤我们终于实现了系统&#xff0c;现在到了紧张刺激的测试环节。直接运行run.py文件: python run.py ::注意需要进入conda环境稍作等等&#xff0c;我们的系统就运行啦&#xff08;啵唧啵唧&#xff09;。 在使用之前&#xff0c;我们还需要在设置中输入自己的…

使用vscode进行C++代码开发(linux平台)

使用vscode进行C代码开发(linux平台一、插件安装二、常用快捷键三、重要配置文件四、实际例子1. 编译并运行一个含有多个文件夹和文件的代码工程2. 编译并运行一个依赖第三方库的代码工程参考资料一、插件安装 执行 ctrl shift x打开插件窗口&#xff0c;然后搜索c插件&…

鸡格线(map操作)

鸡格线 (nowcoder.com) 题目描述 你有一个长为n的数组a&#xff0c;你需要支持以下两种操作: 1、输入l, r, k&#xff0c;对区间[1,r]中所有数字执行a; f(a;)操作k次(式中等号表示赋值操作)&#xff0c;之中f(z)round(10、c)&#xff0c;round为四舍五入函数。 2、输出当前数组…

缓存一致性问题怎么解决

关于Redis的其他的一些面试问题已经写过了&#xff0c;比如常见的缓存穿透、雪崩、击穿、热点的问题&#xff0c;但是还有一个比较麻烦的问题就是如何保证缓存一致性。对于缓存和数据库的操作&#xff0c;主要有以下两种方式。先删缓存&#xff0c;再更新数据库先删除缓存&…

Java 多线程 笔记

文章目录实现方式1. 通过Thread类2. 通过Runnable接口3. 通过Callable接口线程状态线程方法1. 线程停止2. 线程休眠sleep3. 线程礼让yield4. 线程强制执行join5. 线程状态观测getState6. 线程优先级守护线程&#xff08;daemon线程同步 TODO线程死锁Lock锁&#xff08;可重入锁…

Typora+Gitee+PicGo搭建图床

引言 markdown原则上不建议使用base64内嵌图片&#xff0c;因为太麻烦。 如果只是在本机浏览、编辑的话&#xff0c;那引用相对路径或者绝对路径即可&#xff0c;但是考虑到要发布、分享的情况&#xff0c;使用图床是比较好的解决方案。 本教程可以快速得到一个相对稳定的免…

单片机数据、地址、指令、控制总线结构

数据、地址、指令&#xff1a;之所以将这三者放在一同&#xff0c;是因为这三者的实质都是相同的──数字&#xff0c;或者说都是一串‘0’和‘1’组成的序列。换言之&#xff0c;地址、指令也都是数据。 指令&#xff1a;具体可参考文章 由单片机芯片的设计者规则的一种数字…

c程序gcc编译常见报错及解决方法整理

目录一、简介二、常见报错及解决方法1、数组定义错误2、Not enough information to produce a SYMDEFs file3、文件乱码<U0000>4、未定义或未申明报错5、代码中误加入中文三、其他相关链接一、简介 本文主要是整理c程序编译过程的常见报错的解决方法&#xff0c;方便大家…

Leetcode.312 戳气球

题目链接 Leetcode.312 戳气球 题目描述 有 n个气球&#xff0c;编号为0到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums中。 现在要求你戳破所有的气球。戳破第 i 个气球&#xff0c;你可以获得 nums[i−1]∗nums[i]∗nums[i1]nums[i - 1]…

C++ 类 对象初学者学习笔记

C 类 & 对象 访问数据成员 #include <iostream>using namespace std;class Box {public:double length; // 长度double breadth; // 宽度double height; // 高度// 成员函数声明double get(void);void set( double len, double bre, double hei ); }; // 成员…

两种在CAD中加载在线卫星影像的方法

概述 经常使用CAD的朋友应该会有这样的一个烦恼&#xff0c;就是当加载卫星图到CAD中进行绘图的时候&#xff0c;由于CAD本身的限制和电脑性能等原因&#xff0c;往往不能加载太大的地图图片到CAD内&#xff0c;这里给大家介绍两种在CAD内加载在线卫星影像的方法&#xff0c;希…

用docker部署webstack导航网站-其一

序言 认识的好朋友斥资买了一个NAS&#xff0c;并搭建了webdev和其他一些web应用&#xff0c;用于存放电子书、电影&#xff0c;并用alist搭建了一个网盘。现在他还缺少一个导航页&#xff0c;于是拖我给他做一个导航页。我欣然接受了&#xff0c;他想做一个和TBox导航&#x…

Arduino开发:网页控制ESP8266三色LED灯闪烁

根据板卡原理RGB三色LED对应引脚&#xff1a;int LEDR12、int LEDG14、int LEDB13;设置串口波特率为115200Serial.begin(115200);源代码如下所示&#xff1a;#include <ESP8266WiFi.h> // 提供 Wi-Fi 功能的库#include <ESP8266WebServer.h> // 提供网站服务器功能…