学生管理系统升级版(java)

在昨天的学生管理系统的基础上,我们进行了升级,增添的功能如下

  1. 用户认证升级:通过引入注册、登录、忘记密码功能,加强对用户身份的验证,提高系统的安全性。
  2. 功能完善:新增注册、忘记密码功能,并对原有的添加、删除、修改、查询功能进行优化,确保功能的稳定性和实用性。
  3. 操作流程优化:优化用户操作流程,简化用户操作步骤,提高系统的易用性和用户满意度 

首先我们需要增加一个user类

public class user {
    private String suename;
    private String password;
    private String IDinfo;
    private String phonenumber;

    public user() {
    }

    public user(String suename, String password, String IDinfo, String phonenumber) {
        this.suename = suename;
        this.password = password;
        this.IDinfo = IDinfo;
        this.phonenumber = phonenumber;
    }

    /**
     * 获取
     * @return suename
     */
    public String getSuename() {
        return suename;
    }

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

    /**
     * 获取
     * @return password
     */
    public String getPassword() {
        return password;
    }

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

    /**
     * 获取
     * @return IDinfo
     */
    public String getIDinfo() {
        return IDinfo;
    }

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

    /**
     * 获取
     * @return phonenumber
     */
    public String getPhonenumber() {
        return phonenumber;
    }

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

    public String toString() {
        return "user{suename = " + suename + ", password = " + password + ", IDinfo = " + IDinfo + ", phonenumber = " + phonenumber + "}";
    }
}

其次是我们昨天已经创建好的学生类

public class user {
    private String suename;
    private String password;
    private String IDinfo;
    private String phonenumber;

    public user() {
    }

    public user(String suename, String password, String IDinfo, String phonenumber) {
        this.suename = suename;
        this.password = password;
        this.IDinfo = IDinfo;
        this.phonenumber = phonenumber;
    }

    /**
     * 获取
     * @return suename
     */
    public String getSuename() {
        return suename;
    }

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

    /**
     * 获取
     * @return password
     */
    public String getPassword() {
        return password;
    }

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

    /**
     * 获取
     * @return IDinfo
     */
    public String getIDinfo() {
        return IDinfo;
    }

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

    /**
     * 获取
     * @return phonenumber
     */
    public String getPhonenumber() {
        return phonenumber;
    }

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

    public String toString() {
        return "user{suename = " + suename + ", password = " + password + ", IDinfo = " + IDinfo + ", phonenumber = " + phonenumber + "}";
    }
}

最后是实现功能的主体

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

public class subject {

    public static void main(String[] args) {
        ArrayList<user> ulist = new ArrayList<>();
        M:while (true) {
            System.out.println("------欢迎来到学生管理系统------");
            System.out.println("请选择操作");
            System.out.println("1:登录 2:注册 3:忘记密码");
            Scanner sc = new Scanner(System.in);
            String choice = sc.next();
            switch (choice) {
                case "1" -> {
                    login(ulist);
                    break ;
                    }
                case "2" -> sign(ulist);
                case "3" -> forgetpassword(ulist);
                default -> System.out.println("无效输入");
            }
        }
    }

    public static ArrayList<user> login(ArrayList<user> ulist) {
        //验证验证码
        char[] d = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 'd', 'f'
                , 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E'
                , 'R', 'T', 'Y', 'U', 'I',
                'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M'};
        char[] S = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
        while (true) {
            String yzm = "";
            Random R = new Random();
            int a = R.nextInt(5);//数字出现的位置
            for (int i = 0; i < 5; i++) {
                if (i == a) {
                    yzm += S[a];
                } else {
                    //随机字母的序列
                    int x = R.nextInt(52);
                    yzm += d[x];
                }
            }
            System.out.println("-------" + yzm + "-------");
            System.out.println("请输入您看到的验证码");
            Scanner sw = new Scanner(System.in);
            String inyzm = sw.next();
            if (inyzm.equals(yzm)) {
                break;
            } else {
                continue;
            }
        }

        boolean aaa = true;
        //验证用户名
        AC:while (aaa) {
            System.out.println("请输入您的用户名");
            Scanner sc = new Scanner(System.in);
            String usename = sc.next();
            //对已有的list进行遍历,判断用户名是否存在
            for (int i = 0; i < ulist.size(); i++) {
                boolean flage = ulist.get(i).getSuename().equals(usename);
                if (flage) {
                    System.out.println("用户名验证正确,请输入密码");
                    break AC;
                }
            }
            System.out.println("用户名未注册,请先注册");
            aaa = false;
            break;
        }

        //验证密码
        eee:
        while (aaa) {
            System.out.println("请输入您的密码");
            Scanner sc = new Scanner(System.in);
            String password = sc.next();
            //对已有的list进行遍历,判断用户名是否存在
            int count = 0;
            for (int i = 0; i < ulist.size(); i++) {
                count++;
                boolean flage = ulist.get(i).getPassword().equals(password);
                if (flage) {
                    System.out.println("密码正确");
                    head();
                    break eee;
                }
            }
            if (count == 3) {
                System.out.println("密码错误次数过多,请稍后再试");
                aaa = false;
                break eee;
            }

        }//密码判定成功
        return ulist;

    }

    //用户名的创建
    public static ArrayList<user> sign(ArrayList<user> ulist) {
        Scanner sc = new Scanner(System.in);
        user u1 = new user();
        boolean aaa = true;
        b:
        while (aaa) {
            System.out.println("请创建您的用户名");
            String usename = sc.next();
            for (int i = 0; i < ulist.size(); i++) {
                boolean flage = ulist.get(i).getSuename().equals(usename);
                if (flage) {
                    System.out.println("用户名已存在,请重新输入");
                    continue;
                }
            }
            if (usename.length() < 3 || usename.length() > 15) {
                System.out.println("您输入的长度不合法,长度需在3~15位之间");
                continue;
            }
            //到此,长度合法
            int scount = 0;
            int ccount = 0;
            for (int i = 0; i < usename.length(); i++) {
                char c = usename.charAt(i);
                if (c >= '0' && c <= '9') {
                    scount++;
                }
                if (c >= 'a' && c <= 'z') {
                    ccount++;
                }
            }
            if (scount == usename.length() || ccount == usename.length()) {
                System.out.println("用户名必须由数字和字母两种构成,请重新输入");
                continue;
            }
            //到此用户名完全合法
            aaa = false;
            u1.setSuename(usename);
        }

        //密码部分
        boolean bbb = true;
        c:
        while (bbb) {
            System.out.println("请创建您的密码");
            String pass = sc.next();
            System.out.println("请确认您的密码");
            String scurepass = sc.next();
            if (scurepass.equals(pass)) {
                u1.setPassword(pass);
                bbb = false;
            } else {
                System.out.println("两次输入的密码不一致,请重新输入");
                continue;
            }
        }

        boolean ccc = true;
        while (ccc) {
            System.out.println("请输入您的身份证号");
            String ID = sc.next();
            if (ID.length() != 18) {
                System.out.println("长度不合法,必须为16位有效证件");
                continue;
            }
            if (ID.charAt(0) == '0') {
                System.out.println("身份证第一位需为非零元素");
                continue;
            }
            int count2 = 0;
            for (int i = 0; i < ID.length() - 1; i++) {
                if (ID.charAt(i) >= '0' && ID.charAt(i) <= '9') {
                    count2++;
                }
            }
            if (count2 != ID.length() - 1) {
                System.out.println("身份证输入有误,前17为必须由数字组成");
                continue;
            }
            char last = ID.charAt(ID.length() - 1);

            if ((last >= '0' && last <= '9') || last == 'x' || last == 'X') {
                System.out.println("身份证验证成功");
            } else {
                System.out.println("身份证最后一位非法");
                continue;
            }
            u1.setIDinfo(ID);
            ccc = false;
        }

        ddd:
        while (true) {
            System.out.println("请输入11位的手机号");
            String number = sc.next();
            if (number.charAt(0) == '0') {
                System.out.println("手机号第一位不能为0");
                continue;
            }
            if (number.length() != 11) {
                System.out.println("手机号长度非法");
                continue;
            }
            for (int i = 0; i < number.length(); i++) {
                char c = number.charAt(i);
                if (c > '9' && c < '0') {
                    System.out.println("手机号必须全部是数字");
                    continue ddd;
                }
            }
            u1.setPhonenumber(number);
            break ddd;
        }
        //到此手机号验证成功

        System.out.println("账户已经成功创建");
        ulist.add(u1);
        return ulist;
        //注册功能全部实现
    }


    public static ArrayList<user> forgetpassword(ArrayList<user> ulist) {
        boolean F = true;
        ttt:while (F) {
            if (ulist.size()==0) {
                System.out.println("系统暂未保存任何数据");
                break ;
            }
            System.out.println("请输入您注册时的用户名");
            Scanner sc = new Scanner(System.in);
            String usename = sc.next();
            for (int i = 0; i < ulist.size(); i++) {
                boolean flage = ulist.get(i).getSuename().equals(usename);

                if (flage) {
                    System.out.println("请输入身份证");
                    String ID = sc.next();
                    System.out.println("请输入手机号");
                    String number = sc.next();
                    if (ID.equals(ulist.get(i).getIDinfo())&&number.equals(ulist.get(i).getPhonenumber())) {
                        System.out.println("请输入新密码");
                        String newPassword = sc.next();
                        ulist.get(i).setPassword(newPassword);
                        System.out.println("密码重置成功");
                        break ttt;
                    }
                } else {
                    System.out.println("用户名不存在");
                    F = false;
                }
            }
        }
        return ulist;
    }

    public static void head() {
        ArrayList<studengt> slist = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        a:
        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.println("请输入您的选择");
            String select = sc.next();
            switch (select) {
                case "1" -> add(slist);
                case "2" -> delete(slist);
                case "3" -> update(slist);
                case "4" -> query(slist);
                case "5" -> {
                    System.out.println("退出");
                    break a;
                }
                case "admis" -> System.out.println(slist);
                default -> System.out.println("404 NotFound");

            }
        }
    }

    public static ArrayList<studengt> add(ArrayList<studengt> slist) {
        Scanner sadd = new Scanner(System.in);
        System.out.println("请输入学生id");
        String id = sadd.next();
        System.out.println("请输入学生姓名");
        String name = sadd.next();
        System.out.println("请输入学生年龄");
        int age = sadd.nextInt();
        System.out.println("请输入学生家庭住址");
        String address = sadd.next();
        studengt s = new studengt(id, name, age, address);
        slist.add(s);
        System.out.println("学生添加成功");
        return slist;
    }

    public static ArrayList<studengt> delete(ArrayList<studengt> slist) {
        System.out.println("请输入需要删除的id");
        Scanner dsc = new Scanner(System.in);
        String id = dsc.next();
        for (int i = 0; i < slist.size(); i++) {
            boolean flage = slist.get(i).getId().equals(id);
            if (flage) {
                System.out.println(slist.get(i) + "已删除");
                slist.remove(i);
                return slist;
            }
        }
        System.out.println("学生信息不存在");
        return slist;
    }

    public static boolean query(ArrayList<studengt> slist) {
        if (slist.size() == 0) {
            System.out.println("系统暂无数据");
            return false;
        }
        System.out.println("请输入查询的id");
        Scanner usc = new Scanner(System.in);
        String id = usc.next();
        //根据id获取到这个学生的信息
        for (int i = 0; i < slist.size(); i++) {
            boolean flage = slist.get(i).getId().equals(id);
            if (flage) {
                System.out.println(slist.get(i));
                return true;
            }
        }
        System.out.println("查无此人");
        return false;
    }

    public static ArrayList<studengt> update(ArrayList<studengt> slist) {
        System.out.println("请输入需要修改的id");
        Scanner usc = new Scanner(System.in);
        String id = usc.next();
        for (int i = 0; i < slist.size(); i++) {
            boolean flage = slist.get(i).getId().equals(id);
            if (flage) {
                System.out.println("请输入修改后的学生姓名");
                String newName = usc.next();
                slist.get(i).setName(newName);
                System.out.println("请输入修改后的学生年龄");
                int newAge = usc.nextInt();
                slist.get(i).setAge(newAge);
                System.out.println("请输入修改后的学生地址");
                String newAdderss = usc.next();
                slist.get(i).setAddress(newAdderss);
                System.out.println("修改后的学生信息如下");
                System.out.println(slist.get(i));
                return slist;
            }
        }
        System.out.println("需要修改的id不存在,请重新输入");
        return slist;
    }


}

欢迎大家对代码的不足或者是错误进行指出,评论区都会看到

  • 20
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值