java-学生管理系统进阶版

package StudentManageSystemEvolve;

import com.sun.javafx.geom.transform.Identity;

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

public class Test {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        while (true) {
            System.out.println("1.用户注册");
            System.out.println("2.用户登录");
            System.out.println("3.退出");
            System.out.print("请输入你要执行的操作:");
            String index;
            Scanner sc = new Scanner(System.in);
            index  = sc.next();
            switch (index){
                case "1":
                    userEnroll(list);
                    System.out.println(list.size());
                    print(list);
                    break;
                case "2":
                    userLogin(list);
                    break;
                case "3":
                    System.exit(0);
                default:
                    System.out.println("没有这个选项,请重新输入!");
            }
        }


    }
    //用户注册
    public static ArrayList<User> userEnroll(ArrayList<User> list){
        String identity;
        String phone;
        System.out.print("请输入你要注册的用户名:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();

        //判断用户名
        boolean b = userFormat(str);
        if (!b){
            return list;
        }

        //判断用户名是否唯一
        String str1;
        int index = ifId(list,str);
        if (index>=0){
            System.out.println("用户名已经被注册,请重新输入");
            return list;
        }else {
            while (true) {

                //判断密码是否正确
                System.out.print("请输入密码:");
                str1 = sc.next();
                System.out.print("请确认密码:");
                String str2 = sc.next();
                if (!str1.equals(str2)){
                    System.out.println("两次密码输入部一致,请重新输入!");
                }else {
                    break;
                }
            }

            //输入身份证号码
            System.out.println("请输入身份证号码:");
            identity = sc.next();
            //判断身份证号码是否输入正确
            boolean b1 = identityNumber(identity);
            if (!b1){
                return list;
            }

            //输入手机号码
            System.out.println("请输入手机号码");
            phone = sc.next();
            //手机号验证
            boolean b2 = phoneNUmber(phone);
            if (!b2){
                while (true){
                    identityNumber(identity);
                    if (b2){
                        break;
                    }
                }
            }
        }
        User u = new User(str,str1, identity, phone);
        list.add(u);
        return list;
    }
    //判断用户名是否唯一
    public static int ifId(ArrayList<User> list, String id){
        User u = new User();
        for (int i = 0; i < list.size(); i++) {
            u = list.get(i);
            if (u!=null){
                if (u.getId().equals(id)){
                    return i;
                }
            }
        }
        return -1;
    }

    //判断用户名格式是否输入正确
    public static boolean userFormat(String id){
        if (id.length()<3||id.length()>15){
            System.out.println("用户名格式输入错误!");
            return true;
        }
        char c;
        int count = 0;
        int index = 0;
        for (int i = 0; i < id.length(); i++) {
            if (count!=0&&index!=0){
                break;
            }
            c = id.charAt(i);
            if (c>='0'&&c<='9'){
                count++;
            }
            if ((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
                index++;
            }
        }
        if (count==0||index==0){
            System.out.println("用户名格式输入错误");
            return false;
        }
        return true;
    }

    //判断身份证号码是否输入正确
    public static boolean identityNumber(String identity){
        if (identity.length()!=18){
            System.out.println("身份证长度不正确!");
            return false;
        }
        char c = identity.charAt(0);
        if (c=='0'){
            System.out.println("身份证不能以0开头");
            return false;
        }
        for (int i = 0; i < identity.length(); i++) {
            c = identity.charAt(i);
            if (c!=identity.length()-1){
                if (c<'0'||c>'9'){
                    System.out.println("身份证前17位必须以数字开头");
                    return false;
                }
            }else {
                if (c<'0'||c>'9'||c!='X'||c!='x'){
                    System.out.println("身份证第18位必须是数字或者大写X或者小写x");
                    return false;
                }
            }
        }
        return true;
    }

    //手机号验证
    public static boolean phoneNUmber(String phone){
        if (phone.length()!=11){
            System.out.println("手机号长度不正确!");
            return false;
        }
        char c = phone.charAt(0);
        if (c=='0'){
            System.out.println("手机号开头不能是0!");
            return false;
        }
        for (int i = 0; i < phone.length(); i++) {
            c = phone.charAt(i);
            if (c<'0'||c>'9'){
                System.out.println("手机号必须是数字!");
                return false;
            }
        }
        return true;
    }

    //输出打印学生信息
    public static void print(ArrayList<User> list){
        User u;
        String s1;
        for (int i = 0; i < list.size(); i++) {
            u = list.get(i);
            System.out.println(u.getId()+"  "+u.getPassword()+"  "+u.getIdentity()+"  "+u.getPhone());
        }
    }

    //登录功能
    public static ArrayList<User> userLogin(ArrayList<User> list){
        String id = " ";
        String password = " ";
        ArrayList<User> list1 = new ArrayList<>();
        //判断用户有没有注册
        if (list.size()==0){
            System.out.println("你还没有注册,请注册后登录");
            return list1;
        }
        //键盘录入用名名
        int k = 0;
        int count = 0;
        while (k<3) {
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入用户名:");
            id = sc.next();
            System.out.print("请输入密码:");
            password = sc.next();
            //生成验证码
            String str = captcha();
            System.out.println("验证码:"+str);
            System.out.print("请输入验证码:");
            String captcha = sc.next();

            User u;
            //判断用户验证码输入是否正确
                if (captcha.equals(str)){
                }else {
                    System.out.println("输入错误,请重新输入!");
                }
            for (int i = 0; i < list.size(); i++) {
                u = list.get(i);
                if (u.getId().equals(id)&&u.getPassword().equals(password)){
                    count++;
                }else{
                    System.out.println("用户名或者密码输入错误,请重新输入!");
                }
            }

            k++;
        }
        Scanner sc = new Scanner(System.in);
        String passwork;
        if (count!=0){
            System.out.println("登录成功!");
        }else {
            for (int i = 0; i < list.size(); i++) {
                System.out.println("登录失败,通过身份证和手机号修改密码!");
                User u = list.get(i);
                if (u.getId().equals(id)){
                    System.out.println("请输入身份证信息:");
                    String identity = sc.next();
                    System.out.println("请输入手机号码:");
                    String phone = sc.next();
                    if (identity.equals(u.getIdentity())&&phone.equals(u.getPassword())){
                        System.out.println("请输入修改后的密码:");
                        passwork = sc.next();
                        User u1 = new User(id,password,identity,phone);
                        list.set(i,u);
                    }else{
                        System.out.println("信息匹配不成功,修改失败!");
                    }
                }else {
                    System.out.println("未注册!");
                }
            }

        }
        return list;

    }

    //生成验证码
    public static String captcha(){
        //定义数组存储a-z和A-z和0-9组成
        char []arr = {'a','b','c','d','e','f','g','h','i'
                ,'j','k','l','m','n','o','p','q','r','s'
                ,'t','u','v','w','x','y','z','A','B','C'
                ,'D','E','F','G','H','I','G','K','L','M'
                ,'N','O','P','Q','R','S','T','U','V','W'
                ,'X','Y','Z'};
        char []arr1 = {'0','1','2','3','4','5','6','7','8','9'};
        //采用随机方法生成四个随机的大小写字母
        Random r = new Random();
        char [] arr3 = new char[5];
        int index;
        for (int i = 0; i < arr3.length-1; i++) {
            index = r.nextInt(52);
            arr3[i] = arr[index];
        }

        index = r.nextInt(9);
        arr3[arr3.length-1] = arr1[index];

        //将随机字符串中的类内容打乱
        index = r.nextInt(5);
        char c = arr3[arr3.length-1];
        arr3[arr3.length-1] = arr3[index];
        arr3[index] = c;

        String str = "";
        for (int i = 0; i < arr3.length; i++) {
            str+=arr3[i];
        }
        return str;
    }
    }
package StudentManageSystemEvolve;

public class User {
    //用户名   密码    身份证号码   手机号码
    private String id;
    private String password;
    private String Identity;
    private String Phone;

    public User() {
    }

    public User(String id, String password, String identity, String phone) {
        this.id = id;
        this.password = password;
        Identity = identity;
        Phone = phone;
    }

    public String getId() {
        return id;
    }

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

    public String getPassword() {
        return password;
    }

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

    public String getIdentity() {
        return Identity;
    }

    public void setIdentity(String identity) {
        Identity = identity;
    }

    public String getPhone() {
        return Phone;
    }

    public void setPhone(String phone) {
        Phone = phone;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉迷书籍海洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值