JAVA 用户、学生管理系统

需求:

        采取控制台的方式去书写学生管理系统,能进行增删改查等操作

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

        只有用户登录成功后,才能进入到学生管理系统中进行操作

学生类 

        属性:

                id 、姓名、年龄、家庭住址

        添加功能:

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

                *** id唯一

        删除功能:

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

                *** id存在删除

                *** id不存在,提示不存在,并回到初始菜单

        修改功能:

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

                *** id存在,继续录入其他信息

                *** id不存在,提示不存在,并回到初始菜单

        学生管理系统功能菜单:

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

用户类

         属性:

                用户名、密码、身份证号码、手机号码

         注册功能:

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

                       *** 用户名唯一

                       *** 用户名长度必须在3~15位之间

                       *** 只能是数字加字母的组合,但不能是纯数字

                2.密码键入两次,两次一致才可以进行注册

                3.身份证号码需要验证:

                        *** 长度为18位

                        *** 不能以0开头

                        *** 前十七位,必须都是数字

                        *** 最后一位可以是数字,也可以是大写或小写x

                4.手机号验证:

                        *** 长度为11位

                        *** 不能以0开头

                        *** 必须都是数字

        登录功能:

                1.键盘录入用户名

                2.键盘录入密码

                3.键盘录入验证码

                要求:

                        用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
                        判断验证码是否正确,如不正确,重新输入
                        再判断用户名和密码是否正确,有三次机会

         忘记密码:

                1.键盘录入用户名,判断用户名是否存在,如不存在直接结束方法,并提示:未注册

                2.键盘录入身份证号码和手机号码

                3.判断当前用户的身份证号码和手机号是否一致
                   如果一致,提示输入密码,进行修改
                   如果不一致,提示:账号信息不匹配,修改失败

        验证码规则:

                长度为5
                由4位大写或小写字母和一位数字组成,字母可重复
                数字可以出现在任意位置

        用户登录界面菜单:

--------------欢迎来到郑轻学生管理系统--------------"
"请选择操作 1:登录 2:注册 3:忘记密码"

               

完整代码:

        

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

public class test {
    public static void main(String[] args) {

        //创建一个用户集合
        ArrayList<User> userList = new ArrayList<>();

        Scanner sc = new Scanner(System.in);

        //业务
        boolean b=true;
        while (b) {
            //登录界面
            System.out.println("--------------欢迎来到郑轻学生管理系统--------------");
            System.out.println("请选择操作 1:登录 2:注册 3:忘记密码");
            String chose = sc.next();
            switch (chose) {
                case "1" -> b=!( login(userList) );
                case "2" -> registered(userList);
                case "3" -> forgetPassWord(userList);
                default -> System.out.println("您的输入有误,请重新输入");
            }
        }


        //创建一个学生集合
        ArrayList<Student> studentList = new ArrayList<>();

        //业务
        boolean temp = true;
        while (temp) {
            //主菜单
            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.println("请输入您的选择");

            int num = sc.nextInt();
            switch (num) {
                case 1 -> addStudent(studentList);
                case 2 -> removeStudent(studentList);
                case 3 -> setStudent(studentList);
                case 4 -> getStudent(studentList);
                case 5 -> temp = false;
                default -> System.out.println("您的输入有误,请重新输入");
            }

        }

    }

    // 判断 id 是否已存在   存在返回下标
    public static int idCheck(String id, ArrayList<Student> studentList) {
        for (int i = 0; i < studentList.size(); i++) {
            if (studentList.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }

    public static void addStudent(ArrayList<Student> studentList) {

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生的 id");
        String id = sc.next();
        System.out.println("请输入学生的 姓名");
        String name = sc.next();
        System.out.println("请输入学生的 年龄");
        int age = sc.nextInt();
        System.out.println("请输入学生的 地址");
        String address = sc.next();

        //判断id
        int index = idCheck(id, studentList);

        //
        if (index >= 0) {  //true 存在
            System.out.println("id已存在,请重新输入");
            addStudent(studentList);

        } else {    //     不存在
            Student stu = new Student();
            stu.setId(id);
            stu.setName(name);
            stu.setAge(age);
            stu.setAddress(address);

            studentList.add(stu);
            System.out.println("添加成功");
        }
    }

    public static void removeStudent(ArrayList<Student> studentList) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入删除学生的id");
        String id = sc.next();

        int index = idCheck(id, studentList);

        if (index >= 0) {
            //存在
            studentList.remove(index);
            System.out.println("删除成功");
        } else {
            //不存在
            System.out.println("id不存在");
        }

    }

    public static void setStudent(ArrayList<Student> studentList) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入修改学生id");
        String id = sc.next();

        int index = idCheck(id, studentList);
        if (index == -1) {
            //不存在
            System.out.println("id不存在");
        } else {
            //存在
            String name = sc.next();
            int age = sc.nextInt();
            String address = sc.next();

            studentList.get(index).setName(name);
            studentList.get(index).setAge(age);
            studentList.get(index).setAddress(address);
            System.out.println("修改成功");
        }

    }

    public static void getStudent(ArrayList<Student> studentList) {

        //判断是否存了学生
        int size = studentList.size();
        if (size == 0) {
            System.out.println("当前无学生信息,请添加后再查询");
        } else {
            System.out.println("id  " + "     " + "姓名 " + "     " + "年龄" + "     " + "家庭住址");

            for (int i = 0; i < studentList.size(); i++) {
                Student stu = new Student();
                stu = studentList.get(i);
                System.out.println(stu.getId() + "     " + stu.getName() + "     " + stu.getAge() + "     " + stu.getAddress());
            }
        }
    }

    //注册用户
    public static void registered(ArrayList<User> userList) {

        Loop:while (true) {
            User u = new User();
            Scanner sc = new Scanner(System.in);

            System.out.println("请输入新用户的用户名");
            String userName = sc.next();

            System.out.println("请输入新用户的密码");
            String passWord1 = sc.next();

            System.out.println("请再次输入密码");
            String passWord2 =sc.next();

            System.out.println("请输入新用户的身份证号");
            String id = sc.next();

            System.out.println("请输入新用户的手机号");
            String phoneNumber = sc.next();


            //判断用户名是否重复
            int index = userNameCheck(userName,userList);
            if(index>=0){
                //重复
                System.out.println("用户名已重复,请重新注册");
                break;
            }
            //判断用户名长度
            if (userName.length()<=3||userName.length()>=15){
                System.out.println("用户名长度不在3~15之间,请重新注册");
                break;
            }
            //判断用户名组合
            boolean b=userNameZuHe(userName);
            if (b==false){
                System.out.println("用户名只能是字母加数字的组合,但不能是纯数字,请重新注册");
                break;
            }

            //判断密码是否一致
            if(!passWord1.equals(passWord2)){
                System.out.println("两次密码不一致,请重新注册");
                break;
            }

            //判断身份号是否18位 第一位是不是0
            if(id.length()!=18 || id.charAt(0)=='0'){
                System.out.println("请输入正确的身份证号码(长度18 第一位不是0)");
                break;
            }
            //判断前17位是不是数字
            for (int i = 0; i < id.length()-1; i++) {
                char c=id.charAt(i);
                if (c<'0'||c>'9'){
                    System.out.println("请输入正确的身份证号码(前17位)");
                    break Loop;
                }
            }
            //判断最后一位是否是数字或者x、X
            if( (id.charAt(id.length()-1)>='0'&&id.charAt(id.length()-1)<='9')||(id.charAt(id.length()-1)=='x')||(id.charAt(id.length()-1)=='X') ){

            }else {
                System.out.println("请输入正确的身份证号码(最后一位)");
                break ;
            }

            //判断手机号
            if (phoneNumber.length()!=11){
                System.out.println("请输入正确的手机号(11位)");
                break ;
            }
            if(phoneNumber.charAt(0)=='0'){
                System.out.println("请输入正确的手机号(第一位不是0)");
                break ;
            }
            for (int i = 0; i < phoneNumber.length(); i++) {
                char c=phoneNumber.charAt(i);
                if(c<'0'||c>'9'){
                    System.out.println("请输入正确的手机号(数字)");
                    break Loop;
                }

            }

            //注册用户 并添加到用户数组
            u.setUserName(userName);
            u.setPassWord(passWord1);
            u.setId(id);
            u.setPhoneNumber(phoneNumber);
            userList.add(u);

            //结束注册
            System.out.println("注册成功");
            return;
        }

    }

    //判断用户名组合
    public static boolean userNameZuHe(String userName){
        boolean b=true;
        int count=0;
        for (int i = 0; i < userName.length(); i++) {
            char c=userName.charAt(i);

            if( (c>='0'&&c<='9') || (c>='a'&&c<='z') || (c>='A'&&c<='Z') ){

            }else {
                b=false;
                break;
            }

            if(  (c>='a'&&c<='z') || (c>='A'&&c<='Z')  ) count++;
        }
        if(count==0) b=false;

        return b;
    }
    //判断用户名是否存在 返回下标
    public static int userNameCheck(String userName,ArrayList<User> userList) {

        for (int i = 0; i < userList.size(); i++) {
            if (userList.get(i).getUserName().equals(userName)) {
                return i;
            }
        }
        return -1;
    }

    //登录用户
    public static boolean login(ArrayList<User> userList){
        Scanner sc=new Scanner(System.in);
        int count=0;
        while (true) {
            System.out.println("请输入用户名");
            String userName=sc.next();

            //判断用户名
            int index = userNameCheck(userName, userList);
            if(index==-1){
                System.out.println("用户名未注册,请先注册");
                return false;
            }

            System.out.println("请输入密码");
            String passWord=sc.next();
            String codeRight=setCode();
            System.out.println("请输入验证码:"+codeRight);
            String code=sc.next();

            //判断验证码
            if(!codeRight.equals(code)){
                System.out.println("验证码错误,请重新输入");
                continue;
            }

            //判断用户名密码是否正确
            if (passWord.equals(userList.get(index).getPassWord())){
                System.out.println("登录成功");
                return true;
            }else {
                count++;
                if(count==3){
                    System.out.println("密码错误三次");
                    return false;
                }else System.out.println("密码错误,请重新输入");
            }

        }

    }

    //生成验证码
    public static String setCode(){
        StringBuilder code=new StringBuilder();
        Random r=new Random();
        for (int i=0;i<5-1;i++){
            int numaA=r.nextInt(2);
            int num=r.nextInt(26);
            if(numaA==0){
                char c=(char)('a'+num);
                code.append(c);
            }else {
                char c=(char)('A'+num);
                code.append(c);
            }
        }
        int num2=r.nextInt(10);
        code.append(num2);

        //打乱顺序
        String code1=code.toString();
        char[] chars = code1.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            int index=r.nextInt(chars.length);
            char c= chars[i];
            chars[i]=chars[index];
            chars[index]=c;
        }

        StringBuilder codeResult=new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            codeResult=codeResult.append(chars[i]);
        }
        return codeResult.toString();
    }
    //忘记密码
    public static void forgetPassWord(ArrayList<User> userList){

        Scanner sc=new Scanner(System.in);
        System.out.println("请输入用户名");
        String userName=sc.next();

        //判断用户名
        int index = userNameCheck(userName, userList);
        if(index==-1){
            System.out.println("用户名未注册,请先注册");
            return;
        }

        System.out.println("请输入身份证号码");
        String id=sc.next();

        System.out.println("请输入手机号码");
        String phoneNumber=sc.next();

        String idRight=userList.get(index).getId();
        String phoneNumberRight=userList.get(index).getPhoneNumber();
        if( idRight.equals(id) && phoneNumberRight.equals(phoneNumber) ){
            System.out.println("请输入新密码");
            String newPassWord=sc.next();
            //修改密码
            userList.get(index).setPassWord(newPassWord);
            System.out.println("修改成功");
        }else {
            System.out.println("账号信息不匹配,修改失败");
        }

    }

}

 

学生类

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

    public Student() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

     

用户类

public class User {
    private String userName;
    private String passWord;
    private String id;
    private String phoneNumber;

    public User() {
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public User(String userName, String passWord, String id, String phoneNumber) {
        this.userName = userName;
        this.passWord = passWord;
        this.id = id;
        this.phoneNumber = phoneNumber;
    }
}

      

                       
                        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值