学生管理系统Java实现

一、这是一个黑马程序员提供的java基础语法练习项目

二、要求是可以实现登录、注册和忘记密码三个功能。需要创建一个用户类,他们包含下列属性:用户名、密码、身份证号码、手机号码。整个系统的功能需要满足:

三、用户类 

package SMS2;

public class Student {
    private String username;
    private String password;
    private String id;
    private String phone_number;

    public Student() {
    }

    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 getId() {
        return id;
    }

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

    public String getPhone_number() {
        return phone_number;
    }

    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }
}

四、测试类

package SMS2;

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

public class Student_test {
    public static void main(String[] args) {
        ArrayList<Student> list=new ArrayList<Student>();
        Scanner sc=new Scanner(System.in);
        boolean flag=true;
        while (flag){
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作1登录 2注册 3忘记密码");
            int click=sc.nextInt();
            switch (click){
                case 1:
                    System.out.println("请输入用户名");
                    String login_name=sc.next();
                    if (check_enroll(list,login_name)!=true) {
                        System.out.println("用户名未注册,请先注册");
                        break;
                    }else {
                        System.out.println("请输入密码");
                        String login_password=sc.next();
                        char [] captcha=generate_CAPTCHA();
                        String str = new String(captcha);
                        System.out.println("请输入验证码:"+str);
                        while (true){
                            String input_captcha= sc.next();
                            char[] input_capt=input_captcha.toCharArray();
                            if (check_CAPTCHA(captcha,input_capt)) break;
                            else {
                                captcha=generate_CAPTCHA();
                                str = new String(captcha);
                                System.out.println("验证码不正确,请重新输入:"+str);
                            }
                        }
                        int count=0;
                        while (true){
                            if (check_loginpassword(list,login_name,login_password)){
                                System.out.println("登录中,欢迎访问");
                                break;
                            }else {
                                System.out.println("密码错误,请重新输入");
                                login_password=sc.next();
                            }
                        }
                    }
                    flag=false;
                    break;

                case 2:
                    System.out.println("请输入用户名,用户名长度必须在3~15位之间");
                    String name=sc.next();
                    if (check_username1(list,name)&&check_username2(name)){
                        Student s=new Student();
                        list.add(s);
                        s.setUsername(name);
                        System.out.println("请输入密码");
                        while (true){
                            String password1=sc.next();
                            System.out.println("请再次确认密码");
                            String password2=sc.next();
                            if (password1.equals(password2)) {
                                s.setPassword(password1);
                                System.out.println("密码设置成功,请输入身份证号");
                                break;
                            }else System.out.println("两次输入不一致,请重新输入密码");
                        }
                        while (true){
                            String id=sc.next();
                            if (check_id(id)){
                                s.setId(id);
                                System.out.println("身份证号验证成功,请输入手机号");
                                break;
                            }else System.out.println("请再次输入身份证号");
                        }
                        while (true){
                            String phonenum=sc.next();
                            if (check_phonenum(phonenum)){
                                s.setPhone_number(phonenum);
                                System.out.println("手机号验证成功,信息录入完成");
                                break;
                            }
                        }
                    }
                    break;
                case 3:
                    System.out.println("请输入用户名");
                    login_name=sc.next();
                    if (check_enroll(list,login_name)!=true) {
                        System.out.println("用户名未注册,请先注册");
                        break;
                    }else{
                        System.out.println("请输入身份证号");
                        String id=sc.next();
                        System.out.println("请输入手机号");
                        String phone_num=sc.next();
                        if (check_info(list,login_name,id,phone_num)>=0){
                            System.out.println("请输入新密码");
                            list.get(check_info(list,login_name,id,phone_num)).setPassword(sc.next());
                            System.out.println("密码修改成功");
                        }else System.out.println("账号信息不匹配,修改失败");
                    }
                    break;
            }
        }

    }
    //检查用户名是否存在
    public static boolean check_username1(ArrayList<Student> list,String username) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getUsername().equals(username)) {
                System.out.println("用户名已存在");
                return false;
            }
        }
        return true;
    }
    //检查用户名是否合法
    public static boolean check_username2(String username) {
        boolean flag=true;
        if (username.length()<3||username.length()>15){
            System.out.print("长度不合法,用户名长度必须在3~15位之间;");
            flag=false;
        }
        boolean check_num=false;
        boolean check_alphabet=false;
        for (int i=0;i<username.length();i++){
            char alphabet=username.charAt(i);
            if (check_alphabet&&check_num) break;
            else if (alphabet>=48&&alphabet<=57) check_num=true;
            else if ((alphabet>=65&&alphabet<=90)||(alphabet>=97&&alphabet<=122)) check_alphabet=true;
            else continue;
        }
        if ((check_alphabet!=true)||(check_num!=true)) {
            System.out.print("用户名组成不合法,只能是字母加数字的组合,但是不能是纯数字;");
            flag=false;
        }
        if (flag!=true) System.out.println();
        return flag;

    }
    //检查id是否合法
    public static boolean check_id(String id) {
        boolean flag=true;
        if (id.length()!=18) {
            System.out.print("身份证号长度不合法;");
            flag=false;
        }else {
            for (int i=0;i<18;i++){
                if (i<17&&(id.charAt(i)<48||id.charAt(i)>57)){
                    System.out.print("身份证号前17位,必须都是数字;");
                    flag=false;
                }else if (i==17&&((id.charAt(i)!=88&&id.charAt(i)!=120)&&(id.charAt(i)<48||id.charAt(i)>57))){
                    System.out.print("身份证号最为一位要么是数字,要么是大写X或小写x;");
                    flag=false;
                }
            }
        }
        if (id.charAt(0)=='0'){
            System.out.print("身份证号不能以0开头;");
            flag=false;
        }
        if (flag!=true) System.out.println();
        return flag;


    }
    //检查手机号是否合法
    public static boolean check_phonenum(String phonenum) {
        boolean flag=true;
        if (phonenum.length()!=11){
            flag=false;
            System.out.print("手机号长度必须为11位;");
        }
        if (phonenum.charAt(0)=='0'){
            flag=false;
            System.out.print("手机号不能以0开头;");
        }
        for (int i=0;i<phonenum.length();i++){
            if (phonenum.charAt(i)<48||phonenum.charAt(i)>57){
                flag=false;
                System.out.println("手机号必须都是数字");
            }
        }
        if (flag!=true) System.out.println();
        return flag;

    }
    //检查登录用户名是否存在
    public static boolean check_enroll(ArrayList<Student> list,String login_name) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getUsername().equals(login_name)) return true;
        }
        return false;
    }
    //检查登录密码是否正确
    public static boolean check_loginpassword(ArrayList<Student> list,String login_name,String password) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getUsername().equals(login_name)&&list.get(i).getPassword().equals(password))
                return true;
        }
        return false;
    }
    //生成验证码
    public static char[]  generate_CAPTCHA() {
        int rand_num1=(int)(Math.random()*5);
        char [] arr=new char[5];
        for (int i = 0; i < arr.length; i++) {
            if (i==rand_num1){//数字
                arr[i]=(char)((int)(Math.random()*10)+48);
            }else {
                int rand_num2=(int)(1+Math.random()*2);//判断大小写
                int rand_num3=(int)(0+Math.random()*26);//选择字母
                if (rand_num2==1) arr[i]=(char)((int)(65+Math.random()*26));
                else arr[i]=(char)((int)(97+Math.random()*26));
            }
        }
        return arr;

    }
    //检查验证码是否正确
    public static boolean check_CAPTCHA(char[] captcha1,char[] captcha2) {
        if (captcha1.length!=captcha2.length) return false;
        char c1=' ';
        char c2=' ';
        for (int i = 0; i < captcha1.length; i++) {
            c1=Character.toUpperCase(captcha1[i]);
            c2=Character.toUpperCase(captcha2[i]);
            if(c1!=c2) return false;
        }
        return true;
    }
    //检查信息是否正确
    public static int check_info(ArrayList<Student> list,String login_name,String id,String phone_num) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getUsername().equals(login_name)&&list.get(i).getId().equals(id)&&list.get(i).getPhone_number().equals(phone_num)) return i;
        }
        return -1;
    }
}

五、总结

1.整体逻辑并不复杂
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值