Java SE:实现学生管理系统

发布时间:2024年01月19日

目录

项目需求?

代码实现

所用到的两个标准JavaBean


项目需求?

/*
需求:
为学生管理系统书写一个登录、注册、忘记密码的功能
只要用户登录成功才能登录进学生管理系统进行增删查改操作

分析:
登录界面:

用户类
属性:用户名,密码,身份证,手机号

? ? //注册功能
? ? ? /*注册功能:
? ? ? ? 1.用户名需要满足以下要求:
? ? ? ? 验证要求:
? ? ? ? 用户名唯一
? ? ? ? 用户名长度必须在3-15之间
? ? ? ? 只能是数字加字母组合,但不能是纯数字
? ? ? ? 2.密码键盘输入两次,两次一致才可以进行注册
? ? ? ? 3.身份证号码需要验证
? ? ? ? ? ? 验证要求:
? ? ? ? ? ? 长度为18
? ? ? ? ? ? 开头不能为0
? ? ? ? ? ? 最后一位可以是数字也可以是大小写x
? ? ? ? 4.手机号码验证
? ? ? ? ? ? 验证要求:
? ? ? ? ? ? 长度为11
? ? ? ? ? ? 不能以0开头
? ? ? ? ? ? 必须是数字


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

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

//学生管理系统
/*业务需求:

.在控制台中书写学生管理系统

初始菜单:
-------------b站大学学生管理系统------------
1."添加学生信息"
2."删除学生信息"
3."查找学生信息"
4."修改学生信息"
5."退出管理系统"

学生类信息:id、姓名、年龄、家庭住址

添加功能:从键盘录入满足一下要求:id唯一

删除功能:从键盘输入
?*/


代码实现


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

public class Test1 {
    public static void main(String[] args) {
        //创建输入对象
        Scanner sc = new Scanner(System.in);
        ArrayList<User> list = new ArrayList<>();

        String i;

        do {
            LoginMenu();
            while (true) {
                i = sc.next();
                if (i.length() == 1) {
                    break;
                } else {
                    System.out.println("输入错误,请重新输入");
                }
            }
            switch (i.charAt(0)) {
                case '1' -> Register(list, sc);
                case '2' -> Login(list, sc);
                case '3' -> ForgetNum(list, sc);
                case '4' -> System.out.println("退出成功");
                default -> System.out.println("输入错误,请重新输入");
            }
        } while (i.charAt(0) != '4');
    }

    //登录界面
    public static void LoginMenu() {
        System.out.println("欢迎来到学生管理系统");
        System.out.println("请选择操作: 1.登录 2.注册 3.忘记密码 4.退出");
    }


    //注册功能
      /*注册功能:
        1.用户名需要满足以下要求:
        验证要求:
        用户名唯一
        用户名长度必须在3-15之间
        只能是数字加字母组合,但不能是纯数字
        2.密码键盘输入两次,两次一致才可以进行注册
        3.身份证号码需要验证
            验证要求:
            长度为18
            开头不能为0
            最后一位可以是数字也可以是大小写x
        4.手机号码验证
            验证要求:
            长度为11
            不能以0开头
            必须是数字

      */
    public static void Login(ArrayList<User> list, Scanner sc) {
        //创建对象
        //录入成功存储进u
        User u = new User();
        String str;


        //验证用户名
        while (true) {
            boolean flag = false;
            System.out.println("请输入用户名:");
            str = sc.next();
            //验证长度是否符合要求
            if (str.length() <= 3 || str.length() >= 15) {
                System.out.println("用户名长度需在3-15之间,请重新输入");
                continue;
            }

            //验证是否重名
            for (int i = 0; i < list.size(); i++) {
                if (str.equals(list.get(i).getName())) {
                    System.out.println("用户名重名,请重新输入");
                    flag = true;
                    break;
                }
            }
            if (flag) {
                continue;
            }

            //验证是否是纯数字
            //统计数字个数
            int count = 0;
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                    count++;
                }
            }
            if (count == str.length()) {
                System.out.println("用户名不能是纯数字,请重新输入");
                continue;
            }

            u.setName(str);
            System.out.println("用户名录入成功");
            break;
        }


        //验证密码
        while (true) {
            System.out.println("请输入密码:");
            str = sc.next();
            //若前后一致将返回true
            if (str.equals(sc.next())) {
                System.out.println("密码录入成功");
                u.setPassword(str);
                break;
            } else {
                System.out.println("密码前后不一致,请重新输入");
            }
        }


        //验证身份证号码
        while (true) {
            System.out.println("请输入身份证号码");
            str = sc.next();
            boolean flag = true;
            //长度为18
            if (str.length() != 18) {
                System.out.println("身份证长度为18位,请重新输入");
                continue;
            }

            //验证前面17位是否是数字
            System.out.println(str.charAt(0));
            for (int i = 0; i < 18; i++) {
                //验证1-17位数字是否在0-9

                if (i == 17 || (str.charAt(i) >= '0' && str.charAt(i) <= '9')) {

                    if (i == 17) {
                        if (str.charAt(17) == 'X' || str.charAt(17) == 'x' || (str.charAt(17) >= '0' && str.charAt(17) <= '9')) {
                            break;
                        } else {
                            flag = false;
                            System.out.println("前17位为数字,最后一位为数字或 X 或 x, 请重新输入");
                            continue;
                        }
                    }
                    if (str.charAt(0) == '0') {
                        System.out.println("身份证开头不为0,请重新输入");
                        flag = false;
                        break;
                    }
                } else {
                    System.out.println("前17位为数字,最后一位为数字或 X 或 x, 请重新输入");
                    flag = false;
                    break;
                }
            }
            //若flag为真即身份证录入成功,可跳出循环
            if (flag) {
                u.setId(str);
                System.out.println("身份证录入成功");
                System.out.println(str);
                break;
            }
        }


        //验证电话号码
        while (true) {
            boolean flag = true;
            System.out.println("请输入手机号码:");
            str = sc.next();
            //验证号码长度
            if (str.length() != 11) {
                System.out.println("电话号码为11位数字,请重新输入");
                continue;
            }
            //不能以零开头
            if (str.charAt(0) == '0') {
                System.out.println("电话号码不能以0开头,请重新输入");
                continue;
            }
            //验证每一位是否为数字
            for (int i = 0; i < 11; i++) {
                if (str.charAt(i) < '0' || str.charAt(i) > '9') {
                    System.out.println("电话号码为11位数字,请重新输入");
                    flag = false;
                    break;
                }
            }
            if (flag) {
                u.setTel(str);
                System.out.println("手机号码录入成功");
                break;
            }
        }

        list.add(u);
        System.out.println("注册成功");
    }


    //登录功能
        /*
        1.键盘录入用户名
        2.键盘录入密码
        3.键盘录入验证码
            验证要求:
            用户名如果未注册则结束方法,并提示:用户名未注册,请先注册
            判断验证码是否正确,如不正确,请重新输入
            在判断用户名和密码是否正确,有3次机会
         */
    public static void Register(ArrayList<User> list, Scanner sc) {

        while (true) {
            boolean flag = true;
            //记录用户名所在下标
            int x = 0;
            System.out.println("请输入用户名:");
            String Name = sc.next();
            //判断用户名是否存在
            for (int i = 0; i < list.size(); i++) {
                //判断为真即用户名存在,进行下一步
                if (Name.equals(list.get(i).getName())) {
                    x = i;
                    flag = false;
                    break;
                }
            }
            //用户名如果未注册则结束方法,并提示:用户名未注册,请先注册
            if (flag) {
                System.out.println("用户名未注册,请先注册");
                break;
            }


            //判断验证码是否正确
            //随机获取验证码
            //创建对象
            String str = "";
            Random r = new Random();

            //随机获取6位验证码拼接成字符串
            for (int i = 0; i < 6; i++) {
                //获得随机索引拼接成字符串
                str += r.nextInt(10);
            }
            System.out.println(str);
            System.out.println("请输入6位验证码:");
            String captcha = sc.next();
            //对比随机验证码和输入的是否正确
            while (true) {
                if (str.equals(captcha)) {
                    break;
                }
                System.out.println("验证码错误,请重新输入");
                captcha = sc.next();
            }


            //在判断用户名和密码是否正确,有3次机会

            flag = true;
            int count = 3;
            while (count != 0) {
                System.out.println("请输入密码:");
                String password = sc.next();
                if (list.get(x).getPassword().equals(password)) {
                    System.out.println("登陆成功");
                    StudentInformation();
                    flag = false;
                    break;
                }
                System.out.println("用户名或密码错误,剩余" + --count + "机会" + "请重新输入");
            }

            if (flag) {
                System.out.println("登录失败,请稍后重试");
            }
            return;
        }
    }


    //忘记密码
    /*
        1.键盘录入用户名,并判断用户是否存在,若不存在则结束方法,并提示未注册
        2.键盘录入身份证号码和手机号码
        3.判断当前用户身份证号码和手机号码是否一致
            如果一致,则提示输入密码。进行修改
            如果不一致,则提示账号信息不匹配,修改失败
     */
    public static void ForgetNum(ArrayList<User> list, Scanner sc) {
        while (true) {
            boolean flag = true;
            //记录用户名所在下标
            int x = 0;
            System.out.println("请输入用户名:");
            String Name = sc.next();
            //1.键盘录入用户名,并判断用户是否存在,若不存在则结束方法,并提示未注册
            for (int i = 0; i < list.size(); i++) {
                //判断为真即用户名存在,进行下一步
                if (Name.equals(list.get(i).getName())) {
                    x = i;
                    flag = false;
                    break;
                }
            }
            //用户名如果未注册则结束方法,并提示:用户名未注册,请先注册
            if (flag) {
                System.out.println("用户名未注册,请先注册");
                break;
            }

            //2.键盘录入身份证号码和手机号码
            System.out.println("请输入身份证号码:");
            String id = sc.next();
            System.out.println("请输入手机号码");
            String tel  = sc.next();

            //3.判断当前用户身份证号码和手机号码是否一致
            if (list.get(x).getId().equals(id) && list.get(x).getTel().equals(tel)) {
                //如果一致,则提示输入密码。进行修改
                //如果不一致,则提示账号信息不匹配,修改失败
                System.out.println("请输入重置密码:");
                String password = sc.next();
                list.get(x).setPassword(password);
                System.out.println("修改成功");
                break;
            } else {
                System.out.println("账号信息不匹配,修改失败");
            }
        }
    }


    //学生管理系统
    public static void StudentInformation() {
        //创建输入对象
        Scanner sc = new Scanner(System.in);
        //创建用户集合
        ArrayList<Student> list = new ArrayList<>();
        int i;
        do {
            Menu();
            i = sc.nextInt();
            Student u = new Student();
            boolean flag = true;
            switch (i) {
                //增
                case 1 -> AddUser(list, sc, u);
                //删
                case 2 -> RemoveUser(list, sc, u);

                //查
                case 3 -> SearchUser(list, sc);

                //改
                case 4 -> ChangeUser(list, sc);
                //展示
                case 5 -> ShowUser(list);
                //退出
                case 6 -> System.out.println("退出成功");
                default -> System.out.println("操作失败,请重新输入");
            }
        } while (i != 6);
    }

    //选择界面菜单
    public static void Menu() {
        System.out.println("-----------b站大学学生管理系统---------");
        System.out.println("-------------1.添加学生信息------------");
        System.out.println("-------------2.删除学生信息------------");
        System.out.println("-------------3.查找学生信息------------");
        System.out.println("-------------4.修改学生信息------------");
        System.out.println("-------------5.展示系统信息------------");
        System.out.println("-------------6.退出管理系统------------");
    }

    //增方法
    public static void AddUser(ArrayList<Student> list, Scanner sc, Student u) {
        System.out.println("请输入用户id:");
        u.setId(sc.next());
        System.out.println("请输入用户姓名:");
        u.setName(sc.next());
        System.out.println("请输入用户密码:");
        u.setPassword(sc.next());
        list.add(u);
        System.out.println("添加成功");
    }

    //删方法
    public static void RemoveUser(ArrayList<Student> list, Scanner sc, Student u) {
        System.out.println("请输入要删除用户的id:");
        String str = sc.next();
        boolean flag = true;
        for (int j = 0; j < list.size(); j++) {
            if (str.equals(list.get(j).getId())) {
                list.remove(j);
                System.out.println("删除成功");
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.println("删除失败");
        }
    }

    //查方法
    public static void SearchUser(ArrayList<Student> list, Scanner sc) {
        System.out.println("请输入要查找用户的id:");
        String str = sc.next();
        boolean flag = true;
        for (int j = 0; j < list.size(); j++) {
            if (str.equals(list.get(j).getId())) {
                System.out.println("查找成功用户信息为:");
                System.out.println(list.get(j).getId());
                System.out.println(list.get(j).getName());
                System.out.println(list.get(j).getPassword());
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.println("查找失败");
        }
    }

    //改方法
    public static void ChangeUser(ArrayList<Student> list, Scanner sc) {
        System.out.println("请输入要修改用户的id:");
        String str = sc.next();
        boolean flag = true;
        for (int j = 0; j < list.size(); j++) {

            if (str.equals(list.get(j).getId())) {
                System.out.println("请输入新的用户id:");
                list.get(j).setId(sc.next());
                System.out.println("请输入新的姓名:");
                list.get(j).setName(sc.next());
                System.out.println("请输入新的用户密码:");
                list.get(j).setPassword(sc.next());
                System.out.println("修改成功");
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.println("修改失败");
        }
    }

    //显示方法
    public static void ShowUser(ArrayList<Student> list) {
        System.out.println("用户id" + '\t' + "用户姓名" + '\t' + "用户密码");
        for (int j = 0; j < list.size(); j++) {
            System.out.print(list.get(j).getId() + '\t');
            System.out.print(list.get(j).getName() + '\t');
            System.out.print(list.get(j).getPassword() + '\t');
            System.out.println();
        }
    }
}

所用到的两个标准JavaBean

public class Student {

    private String id;
    private String name;
    private String password;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Student() {
    }

    public Student(String id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }
}

?

public class User {

    //属性:用户名,密码,身份证,手机号
    private String name;
    private String password;
    private String id;
    private String tel;


    //构造方法

    public User() {
    }

    public User(String name, String password, String id, String tel) {
        this.name = name;
        this.password = password;
        this.id = id;
        this.tel = tel;
    }

    public String getName() {
        return name;
    }

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

    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 getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }
}

文章来源:https://blog.csdn.net/2301_79526467/article/details/135694364
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。