java基础-学生管理系统升级

复制代码
package com.jdL.studentmanagement;

public class user {
    //用户的基本信息:用户名,密码,身份证号,手机号
    private String name;
    private String password;
    private String idcard;
    private String phonenumber;

    //空参构造
    public user() {
    }
    //有参构造
    public user(String name, String password, String idcard, String phonenumber) {
        this.name = name;
        this.password = password;
        this.idcard = idcard;
        this.phonenumber = phonenumber;
    }
    //get和set方法
    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 getIdcard() {
        return idcard;
    }

    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }
}
复制代码
package com.jdL.studentmanagement;

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

public class UserMain {
    public static void main(String[] args) {
        //建立一个user对象的集合
        ArrayList<user> userlist = new ArrayList<>();
        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作:1登录 2注册 3忘记密码");
            System.out.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch (choose) {
                case "1":
                    boolean flag=login(userlist);
                    if(flag){
                        System.out.println("登录成功");
                    }
                    break;
                case "2":
                    userlist=register(userlist);
                    break;
                case "3":
                    forgetPassword(userlist);
                    break;
                default:
                    System.out.println("无此相关操作");
                    break;
            }
        }

    }
    //在一个集合中判断数据是否存在
    public static boolean contains(ArrayList<user> list, String name) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getName().equals(name)) {
                return true;
            }
        }
        return false;
    }
    //获取一个number位数的验证码
    public static String getVerification(int number){
        char[] chars = new char[number];
        char[] array={'a','b','c','d','e','f','g','h','A','B','C','D','E','F','G','H'};
        char temp=' ';
        Random random=new Random();
        for (int i = 0; i < chars.length-1; i++) {
            //每次都随机产生一个
            int num=random.nextInt(array.length);
            chars[i]=array[num];
        }
        int num1=random.nextInt(10);
        chars[chars.length-1]=(char)(num1+'0');
        //把验证码数组中数字放在任意位置
        int num2=random.nextInt(chars.length-1);
        temp=chars[num2];
        chars[num2]=chars[chars.length-1];
        chars[chars.length-1]=temp;
        //输出验证码字符串
        return String.valueOf(chars);
    }

    //在一个集合中获取姓名对应的密码
    public static String getpassword(ArrayList<user> list, String name) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getName().equals(name)) {
                return list.get(i).getPassword();
            }
        }
        return null;
    }
    //在一个集合中获取姓名对应的索引
    public static int getIndex(ArrayList<user> list, String name) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getName().equals(name)) {
                return i;
            }
        }
        return -1;
    }

    //2、注册
    public static ArrayList<user> register(ArrayList<user> list) {
        //注册:用户名的判断
        Scanner sc = new Scanner(System.in);
        String name=" ";
        loop:
        while (true) {
            int count = 0;
            System.out.println("请输入用户名:");
            name = sc.next();
            //判断录入的用户名是否已经存在,利用contain方法输出真假
            if (contains(list, name)) {
                System.out.println("此用户名已存在");
            } else {
                //不存在继续判断字符串长度
                if (name.length() >= 3 && name.length() <= 15) {
                    for (int i = 0; i < name.length(); i++) {
                        //用户名的每一个字符都必须在a~z,A~Z,0~9三个之间
                        char ch = name.charAt(i);
                        //System.out.println(ch);
                        if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9'))) {
                            System.out.println("注册的用户名需要包含字母和数字");
                            break;
                        } else {
                            if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
                                count++;
                            }
                        }
                    }
                    if(count>0){
                        //list.add(new user().setName(name);
                        break;
                    }else{
                        System.out.println("注册的用户不能为数字");
                    }
                } else {
                    System.out.println("用户名长度必须在3~15之间,请确认");
                }

            }
        }
        //注册:键盘密码输入的时候,需两次一样才可以注册
        String password = " ";
        while (true) {
            System.out.println("请输入密码:");
            String passwordFirst = sc.next();
            System.out.println("请再次输入密码:");
            String passwordSecond = sc.next();
            if (!passwordFirst.equals(passwordSecond)) {
                System.out.println("两次密码输入不一致,");
            } else {
                password = passwordFirst;
                break;
            }
        }
        //注册:身份证号码的验证
        String idcard = " ";
        loop:while (true) {
            System.out.println("请输入用户名身份证号:");
            String idcardtemp = sc.next();
            if (idcardtemp.charAt(0) == '0' || idcardtemp.length() != 18) {
                System.out.println("录入的身份证号必须满足18位且第一位不能为0");
                continue;
            } else {
                for (int i = 0; i < idcardtemp.length() - 1; i++) {
                    if (!((idcardtemp.charAt(i) >= '0' && idcardtemp.charAt(i) <= '9'))) {
                        System.out.println("身份证号前面17位必须为纯数字");
                        continue loop;
                    } else {
                        char last = idcardtemp.charAt(idcardtemp.length() - 1);
                        if (!((last >= '0' && last <= '9') || (last == 'X') || (last == 'x'))) {
                            System.out.println("录入的身份证号最后一位需要在0~9之间,或者为X、x");
                            continue loop;
                        }
                    }
                }
            }
            idcard = idcardtemp;
            break loop;
        }

        //注册:手机号验证
        String phonenumbe=" ";
        loop:while (true) {
            System.out.println("请输入手机号");
            String phonenum = sc.next();
            if(phonenum.length() != 11||phonenum.charAt(0)=='0'){
                System.out.println("手机号录入格式错误");
            }else{
                for(int i=0;i<phonenum.length();i++){
                    if(!(phonenum.charAt(i)>='0' && phonenum.charAt(i)<='9')){
                        System.out.println("手机号只能全部都是数字,请确认");
                        continue loop;
                    }
                }
                phonenumbe=phonenum;
                break loop;
            }
        }
        list.add(new user(name,password,idcard,phonenumbe));
        System.out.println("注册成功");
        return list;
    }

    //1、登录
    public static boolean login(ArrayList<user> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入登录的用户名");
        String name = sc.next();
        if(contains(list,name)){
            while (true) {
                //先获取一个验证码
                String PorVerification=getVerification(5);
                System.out.println(PorVerification);
                System.out.println("请输入验证码");
                String EnterVerification = sc.next();
                if(PorVerification.equals(EnterVerification)){
                    break;
                }
            }
            int count= 0;
            while (true) {
                //count = 0;
                System.out.println("请输入登录的用户密码");
                String password = sc.next();
                //获取登录用户名的密码
                String proPassword=getpassword(list,name);
                System.out.println("用户的初始密码是:"+proPassword);
                if(password.equals(proPassword)){
                    return true;
                }else{
                    count++;
                }
                if(count>=3){
                    System.out.println("用户密码录入错误,超过三次");
                    return false;
                }
            }

        }else {
            System.out.println("未查询到用户名,请先注册");
        }
        return false;
    }

    //3、忘记密码
    public static boolean forgetPassword(ArrayList<user> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入登录的用户名");
        String name = sc.next();
        if(contains(list,name)){
            //找到用户名对象的索引
            int index=getIndex(list,name);
            while (true) {
            System.out.println("输入身份证号");
            String idCard = sc.next();
                if(!(list.get(index).getIdcard().equals(idCard))){
                    System.out.println("用户身份证号错误");
                }else{
                    break;
                }
            }
            while (true) {
            System.out.println("输入手机号");
            String phonenumber = sc.next();
                if(!(list.get(index).getPhonenumber().equals(phonenumber))){
                    System.out.println("用户手机号错误");
                }else{
                    break;
                }
            }
            //身份证和手机号都正确
            //if((list.get(index).getIdcard().equals(idCard))&&list.get(index).getPhonenumber().equals(phonenumber)){
                System.out.println("请输入新的密码");
                String newPassword = sc.next();
                list.get(index).setPassword(newPassword);
                //return true;
            //}
        }else{
            System.out.println("用户名不存在,请先注册");
            return false;
        }
        return true;
    }
}
相关推荐
弥巷2 小时前
【Android】Android内存缓存LruCache与DiskLruCache的使用及实现原理
android·java
好好沉淀2 小时前
Apache 工具包(commons-io commons-lang3 )保姆介绍
java·ide
毕设源码-邱学长2 小时前
【开题答辩全过程】以 服装购物平台为例,包含答辩的问题和答案
java·eclipse
多喝开水少熬夜3 小时前
堆相关算法题基础-java实现
java·开发语言·算法
richxu202510013 小时前
Java开发环境搭建之 10.使用IDEA创建和管理Mysql数据库
java·ide·intellij-idea
7澄13 小时前
Java 集合框架:List 体系与实现类深度解析
java·开发语言·vector·intellij-idea·集合·arraylist·linkedlist
行思理3 小时前
IntelliJIdea 工具新手操作技巧
java·spring·intellijidea
Adellle3 小时前
Java中同步和异步的区别,以及阻塞和非阻塞的区别
java·开发语言
qq_12498707533 小时前
基于springboot+vue的物流管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·毕业设计