Student

public class Student {  
    private int sid;  
    private String name;  
    private int age;  
    private String addrss;  
  
    public Student() {  
  
    }  
  
    public Student(int sid, String name, int age, String address) {  
        this.sid = sid;  
        this.name = name;  
        this.age = age;  
        this.addrss = address;  
    }  
  
    public int getSid() {  
        return sid;  
    }  
    public void setSid(int sid) {  
        this.sid = sid;  
    }  
  
    public String getName() {  
  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
    public String getAddrss() {  
        return addrss;  
    }  
    public void setAddrss(String addrss) {  
        this.addrss = addrss;  
    }  
}

User

public class User {  
    private String name;  
    private String password;  
    private String pNumber;  
  
    public String getUName() {  
        return name;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public String getNumber() {  
        return pNumber;  
    }  
  
    public void setUName(String uName) {  
        this.name = uName;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
    public void setNumber(String number) {  
        this.pNumber = number;  
    }  
  
}

App(登陆界面)

import java.util.ArrayList;  
import java.util.Random;  
import java.util.Scanner;  
  
public class APP {  
    public static void main(String[] args) {  
  
        ArrayList<User> users = new ArrayList<>();  
        Scanner sc = new Scanner(System.in);  
        while (true) {  
  
            System.out.println("欢迎来到学生管理系统");  
            System.out.println("1,登录 2,注册 3,忘记密码");  
  
            String select = sc.next();  
  
            switch (select) {  
                case "1":  
                    //  
                    logInApp(users);  
                    break;  
                case "2":  
                    registerApp(users);  
                    break;  
                case "3":  
                    break;  
            }  
        }  
        }  
  
  
    public static void logInApp(ArrayList<User> users) {  
        Scanner sc = new Scanner(System.in);  
        int i = 0;  
        while (true) {  
  
            System.out.println("请输入用户名");  
  
            String inName = sc.next();  
            if(!checkUserName(users, inName)) {  
                System.out.println("用户名未注册,请先注册");  
                continue;  
            }  
            System.out.println("请输入密码");  
            String inPassword = sc.next();  
            int d =returnUserIndex(users, inName);  
            System.out.println(d);  
            String s = users.get(d).getPassword();  
            System.out.println(s);  
            boolean b = users.get(d).getPassword().equalsIgnoreCase(inPassword);  
            System.out.println(b);  
            if(!checkUserInfo(users, inPassword, inName)) {  
//            if(!checkUserInfo(users, inName, inPassword)) {//错到姥姥家了,注意参数位置是否正确!!  
                System.out.println("密码错误,还剩" + (2-i) + "次机会");  
                i++;  
                if(i == 3) {  
                    System.out.println("密码错误,已自动冻结,请寻找管理员解封账号");  
                    return;  
                }  
            }else{  
  
                System.out.println("请输入验证码");  
                String rightCode = checkCode();  
                System.out.println("当前正确的验证码为:" + rightCode);  
                String code = sc.next();  
  
               boolean flag = code.equalsIgnoreCase(rightCode);  
                if(flag) {  
                    System.out.println("登陆成功");  
                    demoStudent ds = new demoStudent();  
                    ds.startStudentSystem();  
                }else{  
                    System.out.println("验证码验证错误!");  
                    return;  
                }  
  
  
            }  
        }  
    }  
  
    public static String checkCode() {  
  
        //要点:  
        //1.ArrayList<Character> codeSeed为Character类的集合对象,里面存放的是验证码种子  
  
        //2.StringBuilder sb为从验证码容器里取出的五位验证码.  
        //StringBuilder单独一种类型.可以以toString方法(是objectl类里的方法)转换为String  
        //再toCharArray()方法转换为更易操作的字符串数组  
  
        //3.return new String(arr);//返回最开始的字符串而不是字符数组  
  
        //1.创建一个集合添加所有的大写和小写字母  
        ArrayList<Character> codeSeed = new ArrayList<>();//Character容器?  
        Random r = new Random();  
        StringBuilder sb = new StringBuilder();  
        for(int i = 0; i < 26; i++) {  
            codeSeed.add((char)('a' + i));  
            codeSeed.add((char)('b' + i ));  
        }  
  
  
        for(int i = 0;i < 4; i++) {  
            int rIndex = r.nextInt(codeSeed.size());  
            sb.append(codeSeed.get(rIndex));  
        }  
        sb.append(r.nextInt(10));  
//        System.out.println(sb);  
//        System.out.println(sb.getClass());  
//        System.out.println(sb.getClass().toString());  
//        System.out.println(sb.toString());  
  
        //4.如果我们要修改字符串中的内容  
        //先把字符串变成字符数组,在数组中修改,然后再创建一个新的字符串  
        char[] arr = sb.toString().toCharArray();  
  
            int RandomIdex = r.nextInt(arr.length);//  
            char temp = arr[arr.length-1];//因为时字符数组,所以使用char型temp而不是int型  
            arr[arr.length-1] = arr[RandomIdex];//ength-1 不会越界  
            arr[RandomIdex] = temp;//arr[two]与char temp交换,而不是arr[temp]  
  
  
        return new String(arr);//返回最开始的字符串而不是字符数组  
  
  
    }  
  
  
  
  
    public static void registerApp(ArrayList<User> users) {  
  
        User user = new User();  
  
        Scanner sc = new Scanner(System.in);  
        while(true) {  
            System.out.println("请输入用户名");  
            String name = sc.next();  
  
            //检查用户名格式  
            if(name.length() >= 3 && name.length() <= 15) {  
  
            }else{  
                System.out.println("用户名长度必须在3~15位之间 ");  
                continue;//while循环中的跳步操作:continue直接到while循环开头  
  
            }  
            int flag = 0;  
            for(int i = 0; i < name.length(); i++) {  
  
                char a = name.charAt(i);  
                if((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) {  
                    flag++;  
                }  
            }  
            if(flag==0) {  
                System.out.println("只能是字母加数字的组合,但是不能是纯数字");  
                continue;  
            }  
  
            //检查重名  
            if(checkUserName(users,name)) {  
                System.out.println("该用户名已存在,请重新输入");  
            }else{  
                user.setUName(name);  
                break;  
            }  
        }  
        while(true) {  
            System.out.println("请输入密码");  
            String passWord1 = sc.next();  
            System.out.println("请再次确认密码");  
            String passWord2 = sc.next();  
            if(passWord1.equals(passWord2)) {  
                user.setPassword(passWord1);  
                break;  
            }else{  
                System.out.println("两次输入密码不一致!请重新输入");  
            }  
        }  
        while(true) {  
            System.out.println("请验证身份证号码");  
            String personId = sc.next();  
            if(cheakPersonId(users,personId)) {  
                break;  
            }  
        }  
  
        while(true) {  
            System.out.println("请输入手机号验证");  
            String phoneNumber = sc.next();  
            if(cheakPhoneNumber(users,phoneNumber)) {  
                user.setNumber(phoneNumber);  
                break;  
            }else{  
                System.out.println("格式错误!");  
            }  
  
        }  
  
        users.add(user);  
        System.out.println("注册成功!");  
        printUsers(users);  
  
  
  
    }  
    public static boolean cheakPersonId(ArrayList<User> users, String personId) {  
        if(personId.length() != 18 || personId.charAt(0) == '0') {  
            System.out.println("请检查格式:身份证18位且不能以0为开头");  
            return false;  
        }  
        for(int i = 0; i<personId.length()-1; i++) {  
            if(personId.charAt(i) >'9' && personId.charAt(i) < '0') {  
                System.out.println("请检查格式:前17位,必须都是数字");  
                return false;  
            }  
        }  
        if(!(personId.charAt(17) <='9' && personId.charAt(17)>='0'  
                || personId.charAt(17) == 'x'  
                || personId.charAt(17) =='X')) {  
            return false;  
        }  
        return true;  
    }  
    public static boolean cheakPhoneNumber(ArrayList<User> users, String phoneNumber) {  
        if(phoneNumber.length() != 11 || phoneNumber.charAt(0) == '0') {  
            return false;  
        }  
        for(int i = 0; i < phoneNumber.length(); i++) {  
            if(phoneNumber.charAt(i) >'9' || phoneNumber.charAt(i) < '0') {  
                System.out.println("请检查格式:必须全为数字");  
                return false;  
            }  
        }  
        return true;  
    }  
    private static boolean checkUserName(ArrayList<User> users,String userName) {  
        String name = userName;  
        User user = new User();  
        for (int i = 0; i < users.size(); i++) {  
            if(users.get(i).getUName().equals(name)) {  
                return true;  
            }  
        }  
        return false;  
    }  
    private static int returnUserIndex(ArrayList<User> users,String userName) {  
        String name = userName;  
        User user = new User();  
        for (int i = 0; i < users.size(); i++) {  
            if(users.get(i).getUName().equals(name)) {  
                return i;  
            }  
        }  
        return -1;  
    }  
    private  static void printUsers(ArrayList<User> users) {  
        for(int i = 0; i < users.size(); i++) {  
            System.out.println(users.get(i).getUName());  
            System.out.println(users.get(i).getNumber());  
            System.out.println(users.get(i).getPassword());  
  
        }  
    }  
  
    private static boolean checkUserInfo(ArrayList<User> users,String inPassword,String Name) {  
        int index = returnUserIndex(users, Name);  
        if(users.get(index).getPassword().equalsIgnoreCase(inPassword)) {  
            return true;  
        }else {  
            return false;  
        }  
    }  
  
  
}  
////inPassword != users.get(returnUserIndex(users, Name)).getPassword()//) {遗骸

demoStudent(主界面)

import java.util.ArrayList;  
import java.util.Scanner;  
  
public class demoStudent {  
        public static void startStudentSystem() {  
  
  
  
        ArrayList<Student> list = new ArrayList<>();  
        loop : while(true) { //loop标识符,用于break跳出大循环  
            Scanner sc = new Scanner(System.in);  
            System.out.println("请输入您的选择");  
            System.out.println("1,添加学生");  
            System.out.println("2,删除学生");  
            System.out.println("3,修改学生");  
            System.out.println("4,查询学生");  
            System.out.println("5,退出   ");  
  
            String select = sc.next();  
  
  
            switch(select) {  
                case "1" :  
                    //添加学生  
                    addStudent(list);  
                    break;  
                case "2" :  
                    //删除学生  
                    deleteStudent(list);  
                    break;  
                case "3" :  
                    //修改学生  
                    alterStudent(list);  
                    break;  
                case "4":  
                    //查询学生  
                    checkStudent(list);  
                    break;  
                case "5":  
//                    break loop;  
  
                    System.exit(0);//停止虚拟机运行  
                default:  
                    System.out.println("没有这个选项!");  
  
            }  
        }  
  
  
  
    }  
  
    public static void addStudent(ArrayList<Student>list) {  
  
        System.out.println("请输入学生id,学生姓名,学生年龄,学生所在地");  
        Scanner sc = new Scanner(System.in);  
        while(true) {  
            int id = sc.nextInt();  
            if(isExsit(list, id)) {  
                System.out.println("此id已被占用,请重新输入");  
  
            }else{  
                String name = sc.next();  
                int age = sc.nextInt();  
                String address = sc.next();  
  
                Student s = new Student(id,name,age,address);//构造函数载入数据,第二中方法可用setName方法  
  
                list.add(s);//把学生添加到集合里(容器)  
                System.out.println("学生信息添加成功");  
                break;  
            }  
        }  
    }  
  
    public static void deleteStudent(ArrayList<Student>list) {  
        System.out.println("请输入你要删除的学生的id号");  
        Scanner sc = new Scanner(System.in);  
        int id = sc.nextInt();  
        if(isExsit(list, id)) {  
            int index = returnIndex(list,id);  
            list.remove(index);//利用list内的remove方法直接删除指定位置的数据  
            System.out.println("删除成功");  
        }  
    }  
  
    public static void alterStudent(ArrayList<Student>list) {  
        System.out.println("请输入修改的学生id");  
        Scanner sc = new Scanner(System.in);  
        int id = sc.nextInt();  
        if(isExsit(list, id)) {  
            int index = returnIndex(list,id);  
            System.out.println("请输入姓名,年龄,地址");  
            String name = sc.next();  
            int age = sc.nextInt();  
            String address = sc.next();  
  
            Student s = new Student();  
            s = list.get(index);  
            s.setSid(id);  
            s.setName(name);  
            s.setAge(age);  
            s.setAddrss(address);  
            System.out.println("修改完成");  
        }  
    }  
  
    public static boolean isExsit(ArrayList<Student>list,int id) {  
//        for(int i = 0; i < list.size(); i++) {  
//            Student s = list.get(i);  
//            if(s.getSid() == id) {  
//                return true;  
//            }  
//        }  
//        return false;  
        return returnIndex(list,id) >= 0;//纯粹的开发经验  
    }  
    public static int returnIndex(ArrayList<Student>list,int id) {  
        int index = 0;//index其实可以省略,返回用i;  
        for(int i = 0; i < list.size(); i++) {  
            Student s = list.get(i);  
            if (s.getSid() == id) {  
                return index;  
            }else{  
                index++;  
            }  
        }  
        return -1;  
    }  
  
    public static void checkStudent(ArrayList<Student>list) {  
        if(list.size() == 0 ) {  
            System.out.println("暂无学生信息");  
            return;  
        }  
        for(int i = 0; i < list.size(); i++) {  
            Student student = list.get(i);//创建学生对象接受ArrayList内的get出的studdentt  
            System.out.println("学生id为"+student.getSid()+"姓名为:"+student.getName()+"年龄为:"+student.getAge()+"地址为:"+student.getAddrss());  
        }//在遍历自定义类的数组时,使用类内方法get函数拼接展示  
    }  
}