Java学生管理系统升级(黑马程序员)

步骤1:思路分析,b站链接:思路分析

步骤2:创建StudentSystemPlus包。

步骤3:编写StudentSystemPlus类和User类。

代码:

StudentSystemPlus类:

package StudentSystemPlus;

import org.w3c.dom.css.CSSStyleRule;

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

public class StudentSystemPlus {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        // 登录界面
        while(true){
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作: 1登录 2注册 3忘记密码 4 退出");
            System.out.println("请输入您的选择:");
//        int choose = sc.nextInt();
            String choose = sc.next();
            switch (choose){
                case "1":{ enroll(list); break; }
                case "2": { login(list); break;}
                case "3": { forgetPassword(list); break; }
                case "4": { System.out.println("谢谢使用,再见");  System.exit(0); }
                default: {System.out.println("没有这个选项"); break;}
            }
        }
    }
    //注册
    private static void login(ArrayList<User> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("用户注册");
        String name, password, personid, phoneNumber;

        while(true){
            System.out.println("请输入用户名");
            name = sc.next();
            if(checkname(list, name) == true)  break;
            else System.out.println("输入的用户名不合法,请重新输入");
        }

        //用户名合法后,输入注册密码
        while(true){
            System.out.println("请输入密码");
            password = sc.next();
            System.out.println("请再次输入密码");
            String password2 = sc.next();
            if(checkpassword(password2, password) == true)break;
            else System.out.println("两次输入的密码不一样,请重新输入");
        }

        //进行身份证号验证
        while(true){
            System.out.println("请输入身份证号码");
            personid = sc.next();
            if(checkpersonid(personid) == true) break;
            else System.out.println("身份证密码不合法,请重新输入");
        }

        //验证手机号码
        while (true){
            System.out.println("请输入手机号码");
            phoneNumber = sc.next();
            if(checkphoneNumber(phoneNumber) == true) break;
            else System.out.println("手机号不合法,请重新输入");
        }
        //都合法,加入集合
        User u = new User(name, password, personid, phoneNumber);
        list.add(u);
        System.out.println("注册成功!");

        printlist(list);
    }
    //登录
    private static void enroll(ArrayList<User> list){
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名");
            String name = sc.next();
            int userIndex = getindex(list, name);
            if(userIndex < 0) { System.out.println("用户未注册,请先注册"); return; }

            System.out.println("请输入密码");
            String password = sc.next();
            while(true){

                String rightcode = getCode();
                System.out.println("当前正确的验证码为" + rightcode);
                String code = sc.next();
                if(code.equalsIgnoreCase(rightcode)) { System.out.println("验证码正确"); break; }
                else System.out.println("验证码错误");
            }

            User useInfo = new User(name, password, null,null);
            //判断登录的用户名和密码对不对得上
            if( list.get(userIndex).getPassword().equals(password)) { System.out.println("登录成功!可以开始使用学生管理系统了"); break; }
            else if(i == 2) { System.out.println("登录失败,账户已被锁定,请联系客服"); return; }
            else System.out.println("用户名或密码错误,当前还剩下" + (2 - i) + "次机会" );
        }
    }
    //忘记密码
    private static void forgetPassword(ArrayList<User> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String usename = sc.next();
        int useindex = getindex(list, usename);
        if(useindex < 0) { System.out.println("用户名" + usename + "未注册,请先注册"); return; }

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

        User u = list.get(useindex);
        if(!(u.getPersonid().equals(personid) && u.getPhoneNumber().equals(phoneNumber))){
            System.out.println("身份证号码或手机号码有误,不能修改密码");
            return;
        }

        String password; //设置新密码
        while(true){
            System.out.println("请输入密码");
            password = sc.next();
            System.out.println("请再次输入密码");
            String password2 = sc.next();
            if(checkpassword(password2, password) == true){ System.out.println("两次输入密码一致"); break; }
            else System.out.println("两次输入的密码不一样,请重新输入");
        }
        u.setPassword(password);
        list.set(useindex, u);
    }

    //寻找下标
    private static int getindex(ArrayList<User> list, String name){
        //判断name是否存在
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            if(u.getUsername().equals(name)) return i; // 如果用户名存在,返回xiabiao
        }
        return -1;
    }
    //判断用户名是否合法
    private   static boolean checkname(ArrayList<User> list, String name){
        if(name.length() < 3 || name.length() > 15) return false;
        int zimu=0;
        char[] c = name.toCharArray();
        for (int i = 0; i < c.length; i ++) // 判断name是否合法
        {
            if(!((c[i]>= '0' && c[i] <= '9') || (c[i]>= 'a' && c[i] <= 'z') || (c[i]>= 'A' && c[i] <= 'Z'))) return false;
            if((c[i]>= 'a' && c[i] <= 'z') || (c[i]>= 'A' && c[i] <= 'Z')) zimu ++;
        }
        if(zimu == 0) return false;
        if(getindex(list, name) > 0) return false;

        return true;
    }
    //判断密码是否一致
    private static boolean checkpassword(String s1, String s2){
        if(s1.equals(s2) != true) return false;
        return true;
    }
    //检查身份证号码是否合法
    private static boolean checkpersonid(String personid){
        if(personid.length() != 18) return false; // 长度不合法
        char[] shenfenzhenghao = personid.toCharArray();
        for (int i = 0; i < shenfenzhenghao.length - 1; i++) //前17位如果不全是数字,就不合法
            if(shenfenzhenghao[i] >'9' || shenfenzhenghao[i] <'0') return false;
        //如果最后一位不是x或者X,就不行
        char zuihouyiwei = shenfenzhenghao[shenfenzhenghao.length - 1];
        if(zuihouyiwei != 'x' && zuihouyiwei != 'X' && (zuihouyiwei > '9' && zuihouyiwei <'0'))
            return false;
        return true;
    }
    //检查手机号码是否合法
    private static boolean checkphoneNumber(String phoneNumber){
        if(phoneNumber.length() != 11) return false;
        if(phoneNumber.charAt(0) == '0') return false;
        for (int i = 0; i < phoneNumber.length(); i++) {
            char z = phoneNumber.charAt(i);
            if(z > '9' || z < '0') return false; break;
        }
        return true;
    }
    //遍历list
    private static void printlist(ArrayList<User> list){
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            System.out.println(u.getUsername() + "\t" + u.getPassword() + "\t" + u.getPersonid() + "\t" + u.getPhoneNumber());
        }
    }
    //获取验证码
    private static String getCode(){
        ArrayList<Character> list = new ArrayList<>();
        for (int i = 0; i < 26; i++) {
            list.add((char)('a' + i));
            list.add((char)('A' + i));
        }
        StringBuilder sb = new StringBuilder();
        Random rm = new Random();
        for (int i = 0; i < 4; i++) {
            int index = rm.nextInt(list.size());
            char c = list.get(index);
            sb.append(c);
        }
        int k = rm.nextInt(9);
        sb.append(k);
        //打乱顺序
        char[] arr = sb.toString().toCharArray();
        k = rm.nextInt(arr.length);
        char c = arr[k];
        arr[k] = arr[4];
        arr[4] = c;
        return new String(arr);
    }
}

User类:

package StudentSystemPlus;

public class User {
    private String username;
    private String password; // 密码
    private String personid; // 身份证号码
    private String phoneNumber;// 电话号码

    public User() {
    }

    public User(String username, String password, String personid, String phoneNumber) {
        this.username = username;
        this.password = password;
        this.personid = personid;
        this.phoneNumber = phoneNumber;
    }

    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 getPersonid() {
        return personid;
    }

    public void setPersonid(String personid) {
        this.personid = personid;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值