用JAVA实现一个学生管理系统和登录系统

这篇具有很好参考价值的文章主要介绍了用JAVA实现一个学生管理系统和登录系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、学生管理系统:

1.创建学生对象Student的javabean类:

2.创建出学生管理系统 StudentSystem类:

1.addStudent方法:添加学生

2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):

3.queryStudent方法,把我们表中的所有学生显示出来

4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引

5.deletStudent()删除指定学生:

6.updateStudent()修改指定学生

二、注册系统

1.首先创建出User的javabean类

2.注册功能

 2.contains()检查用户名是否存在:

 2.登录功能

1.验证码生成的实现,getcode()

2.checkUserInfo()检查学生的信息是否正确

3.忘记密码功能


 文章来源地址https://www.toymoban.com/news/detail-503874.html

一、学生管理系统:

1.创建学生对象Student的javabean类:

public class Student {
        private String name;
        private int id;
        private String sex;
        private String adress;


        public Student() {
        }

        public Student(String name, int id, String sex, String adress) {
            this.name = name;
            this.id = id;
            this.sex = sex;
            this.adress = adress;
        }

        /**
         * 获取
         * @return name
         */
        public String getName() {
            return name;
        }

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

        /**
         * 获取
         * @return id
         */
        public int getId() {
            return id;
        }

        /**
         * 设置
         * @param id
         */
        public void setId(int id) {
            this.id = id;
        }

        /**
         * 获取
         * @return sex
         */
        public String getSex() {
            return sex;
        }

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

        /**
         * 获取
         * @return adress
         */
        public String getAdress() {
            return adress;
        }

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

        public String toString() {
            return "Student{name = " + name + ", id = " + id + ", sex = " + sex + ", adress = " + adress + "}";
        }
    }

2.创建出学生管理系统 StudentSystem类:

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

public class StudentSystem {
    public  void StartSystem() {
        ArrayList<Student> list = new ArrayList<>();
        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("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch (choose) {
                case "1":
                    addStudent(list);
                    break;
                case "2":
                    deleteStudent(list);
                    break;
                case "3":
                    updateStudent(list);
                    break;
                case "4":
                    queryStudent(list);
                    break;
                case "5": {
                    System.out.println("退出");
                    System.exit(0);
                    break;
                }
                default:
                    System.out.println("没有这个选项");
            }
        }
    }

此处还是使用最基础的switch-case进行不同功能的选择,并且此处的储存学生对象的容器选择用Arraylist容器进行书写,此处也可以用Student[]数组进行储存Student的对象!! 

1.addStudent方法:添加学生

public static void addStudent(ArrayList<Student> list){//此处传入我们所创建出来的容器list
    Student s = new Student();
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入学生的id");
    int id = 0;
    while(true) {
        id = sc.nextInt();
        boolean flag = ifOne(list, id);//学生对象是否唯一,用ifOne()方法进行判断
        if (flag) {
            System.out.println("id已经存在请重新录入");
        }else{
            s.setId(id);
            break;
        }
    }

    System.out.println("请输入学生的姓名");
    String name = sc.next();
    s.setName(name);

    System.out.println("请输入学生的性别");
    String sex = sc.next();
    s.setSex(sex);

    System.out.println("请输入学生的家庭住址");
    String adress = sc.next();
    s.setAdress(adress);

    list.add(s);
    System.out.println("添加成功");

}

2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):

public static boolean ifOne(ArrayList<Student> list,int id){
    for (int i = 0; i < list.size(); i++) {
        Student s = list.get(i);
        int sid = s.getId();
        if(sid==id){
            return true;
        }
    }
    return false;

}

3.queryStudent方法,把我们表中的所有学生显示出来

public static void queryStudent(ArrayList<Student> list){
    if(list.size()==0){
        System.out.println("当前无学生信息,请添加后查询");
        return;
    }

    System.out.println("id\t\t姓名\t年龄\t家庭住址");
    for (int i = 0; i < list.size(); i++) {
        Student stu = list.get(i);
        System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAdress());
    }
}

4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引

 public static int getIndex(ArrayList<Student> list,int id){
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            int sid = stu.getId();
            if (sid==id) {
                return i;
            }
        }
        return -1;
    }
}

这里我们通过id来获取我们所需要要的索引

5.deletStudent()删除指定学生:

public static void deleteStudent(ArrayList<Student> list){
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您要删除的学生的id");
    int id = sc.nextInt();
    int index = getIndex(list,id);//我们通过getIndex方法来获取所需要删除的下标
    //直接删除:remove
    list.remove(index);
}

6.updateStudent()修改指定学生

public static void updateStudent(ArrayList<Student> list){
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您要修改的学生的id");
    int id = sc.nextInt();
    //再次获取下标
    int index = getIndex(list,id);
    //开始修改学生的信息
    System.out.println("请输入学生姓名");
    list.get(index).setName(sc.next());
    System.out.println("请输入学生id");
    list.get(index).setId(sc.nextInt());
    System.out.println("请输入学生性别");
    list.get(index).setSex(sc.next());
    System.out.println("请输入学生地址");
    list.get(index).setAdress(sc.next());

    System.out.println("修改成功");
}

学生管理系统制作完毕,接下来可以制作管理系统的登录系统。如果只需要学生管理系统,可以把 StudentSystem类中的的startSystem方法改成main方法,可以直接运行学生管理系统。

二、注册系统

1.首先创建出User的javabean类

package StudentManagerSys;

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;
    }

    /**
     * 获取
     * @return userName
     */
    public String getUserName() {
        return userName;
    }

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

    /**
     * 获取
     * @return passWord
     */
    public String getPassWord() {
        return passWord;
    }

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

    /**
     * 获取
     * @return personId
     */
    public String getPersonId() {
        return personId;
    }

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

    /**
     * 获取
     * @return phoneNumber
     */
    public String getPhoneNumber() {
        return phoneNumber;
    }

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

    public String toString() {
        return "User{userName = " + userName + ", passWord = " + passWord + ", personId = " + personId + ", phoneNumber = " + phoneNumber + "}";
    }
}

2.注册功能

注册所需要的具体要求:

1.用户名有以下要求:
  验证要求:
    用户名唯一。
    用户名长度必须在3-15位之间。
    只能是字母加数字的组合,不能是纯数字。
2.键盘输入两次,两次一致可以注册。
3.身份证号码需要验证。
     验证要求:
    长度为18位。
    不能以0开头。
    前17位必须是数字。
    最后一位可以是数字也可以是大写X或小写x
4.手机号验证:
    验证要求:
        长度为11位
        不能以0开头
        必须是纯数字

private static void register(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);

        String username;
        while (true) {
            System.out.println("请输入用户名");
            username = sc.next();
//        用户名唯一。
//        用户名长度必须在3-15位之间。
//        只能是字母加数字的组合,不能是纯数字。
            boolean flag = checkUsername (username);
            if(!flag) {
                System.out.println("用户名格式不满足请重新输入");
                continue;
            }

            //校验用户名是否唯一
            boolean flag1 = contains(list,username);
            if(flag1){
                System.out.println("用户名"+username+"重复,请重新输入");
                continue;
            }else
                break;
        }
        //键盘录入密码
        //两次输入的密码一致可成功注册
        String password;
        while (true) {
            System.out.println("请输入要注册的密码");
            password = sc.next();
            System.out.println("请再输入一遍您的密码");
            String aginPassword = sc.next();
            if(!password.equals(aginPassword)){
                System.out.println("两次密码输入不一致,请重新输入");
                continue;
            }else{
                System.out.println("两次密码一致,继续录入");
                break;
            }
        }
        //键盘录入身份证号码
//        长度为18位。
//        不能以0开头。
//        前17位必须是数字。
//        最后一位可以是数字也可以是大写X或小写x
        String personId;
        while (true) {
            System.out.println("请输入身份证号码");
            personId = sc.next();
            boolean flag2 = checkPersonId(personId);
            if(flag2){
                System.out.println("身份证号码满足要求");
                break;
            }else{
                System.out.println("请重新输入");
                continue;
            }
        }

        //键盘录入手机号码
//        验证要求:
//        长度为11位
//        不能以0开头
//        必须是纯数字
        String phoneNumber;
        while (true) {
            System.out.println("请输入手机号码");
            phoneNumber = sc.next();
            boolean flag3 = checkPhonenumber(phoneNumber);
            if(flag3){
                System.out.println("手机号满足要求");
                break;
            }else{
                System.out.println("不满足要求,请重新输入");
                continue;
            }
        }

        User u = new User(username,password,personId,phoneNumber);
        list.add(u);
        System.out.println("注册成功");
    }

1.checkUsername():检查用户名是否符合要求

private static boolean checkUsername(String username) {
        int length = username.length();
        if(length<3||length>15){
            return false;
        }
        //只能是字母加数字的组合,不能是纯数字
        //循环得到每一个字符,如果有一个不是字母或者数字,return false
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))) {
                return false;
            }
        }
        //用户名满足长度内容满足要求
        //统计再用户名中有多少个字母
        int cnt = 0;
        for (int i = 0; i <length; i++) {
            char c = username.charAt(i);
            if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
                cnt++;
                break;
            }
        }
        return cnt>0;
    }

 2.contains()检查用户名是否存在:

private static boolean contains(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getUserName().equals(username)){
                return true;
            }
        }
        return false;
    }

3.checkPersonId()检查身份证号是否符合要求:

private static boolean checkPersonId(String personId) {
        int length = personId.length();
        //不是0开头,并且18位
        if(length!=18||personId.charAt(0)==0){
            return false;
        }
        //判断前十七位
        for (int i = 0; i < personId.length()-1; i++) {
            if(!(personId.charAt(i)>='0'&&personId.charAt(i)<='9'))
            {
                return false;
            }
        }

        if(!((personId.charAt(length-1)>='0'&&personId.charAt(length-1)<='9')||(personId.charAt(length-1)=='X'||personId.charAt(length-1)=='x')))
        {
            return false;
        }

        return true;

    }

4.checkPhoneNumber()检查手机号是否符合要求:

 private static boolean checkPhonenumber(String phoneNumber) {
        int length = phoneNumber.length();
        //不是0开头,并且18位
        if(length!=11||phoneNumber.charAt(0)==0){
            return false;
        }

        for (int i = 0; i < phoneNumber.length(); i++) {
            if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9'))
            {
                return false;
            }
        }

        return true;
    }

 2.登录功能

1.键盘录入用户名
    2.键盘录入密码
    3.键盘录入验证码
    验证要求
    用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
    判断验证码是否正确,如果不正确,请重新输入。
    再判断用户名和密码是否正确,有3次机会
    忘记密码
    1.键盘录入用户名,判断当前用户名是否存在,如果不存在,直接结束,提示:未注册
    2.键盘录入身份证号码和手机号码
    3.判断当前用户的身份证号码和手机号码是否一致。
        如果一致,提示输入密码,进行修改
        如果不一致,账号信息不匹配,修改失败
    验证码规则:
        长度为5
        由4位大写或者小写字母和1位数字组成,同一个字母可重复。
        数字可以出现在任何位置
     比如
        aQa1k1

private static void login(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {

            System.out.println("请输入用户名");
            String username = sc.next();
            boolean flag = contains(list, username);
            if (!flag) {
                System.out.println("用户名" + username + "未注册,请先注册再登录");
                return;
            }
            System.out.println("请输入密码");
            String password = sc.next();

            while (true) {
                String rightcode = getCode();
                System.out.println("当前正确的验证码为" + rightcode);
                System.out.println("请输入验证码");
                String code = sc.next();

                if (code.equalsIgnoreCase(rightcode)) {
                    System.out.println("验证码正确");
                    break;
                } else {

                    System.out.println("验证码错误");
                    continue;
                }
            }
            //验证用户名密码是否正确
            //封装思想,把一些零散的数据,封装成一个对象
            //传递一个整体,不用传零散的数据
            User userInfo = new User(username, password, null, null);
            boolean flag1 = checkUserInfo(list, userInfo);
            if (flag1) {
                System.out.println("登录成功,可以开始使用学生管理系统");
                StudentSystem ss = new StudentSystem();
                ss.StartSystem();

            } else {
                if(i==2) {
                    System.out.println("当前账号"+username+"被锁定,请联系客服人员");
                    return;
                }else{
                    System.out.println("用户名或密码错误,还剩下"+(2-i)+"次机会");
                }
            }
        }
    }

 总共有三次登陆的机会,机会用完退出程序:用for循环控制。

切记不能把getcode重复使用,这样会与前面的rightCode不一致,导致验证码无论如何都是错误的,写成上方的形式

while (true) {
    String rightcode = getCode();
    System.out.println("当前正确的验证码为" + getCode());
    System.out.println("请输入验证码");
    String code = sc.next();

    if (code.equalsIgnoreCase(rightcode)) {
        System.out.println("验证码正确");
        break;
    } else {

        System.out.println("验证码错误");
        continue;
    }
}

1.验证码生成的实现,getcode()

 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 r = new Random();
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(list.size());
            char c = list.get(index);
            sb.append(c);
        }
        int number = r.nextInt(10);
        sb.append(number);
        char[] arr = sb.toString().toCharArray();
        int randomIndex = r.nextInt(arr.length);
        char temp = arr[randomIndex];
        arr[randomIndex] = arr[arr.length-1];
        arr[arr.length-1] = temp;

        return new String(arr);
    }
}

先用Arraylist容器把所有的字母大小写存入list中,再通过StringBuilder将字母重新排序,单独的数字在进行交换,最后获得验证码字符串。

2.checkUserInfo()检查学生的信息是否正确

 private static boolean checkUserInfo(ArrayList<User> list,User userInfo) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getUserName().equals(userInfo.getUserName())&&list.get(i).getPassWord().equals(userInfo.getPassWord())){
                return true;
            }
        }
        return false;
    }

登录成功就可以创建StudentSystem对象,调用startSystem方法,启动学生管理系统了!!

3.忘记密码功能

三、忘记密码
    1.键盘录入用户名,判断当前用户名是否存在,如果不存在,直接结束方法,并提示未注册。
    2.键盘录入身份证号和手机号码
    3.判断当前用户的身份证号和手机号是否一致。
        如果一致,提示输入密码,进行修改
        如果不一致,提示:账号信息不匹配,修改失败

private static void forgetpassword(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.next();
        boolean flag = contains(list,username);
        if (!flag){
            System.out.println("当前用户"+username+"未注册,请先注册");
            return;
        }
        //键盘录入身份证号码和手机号码
        System.out.println("请输入身份证号码");
        String personId = sc.next();
        System.out.println("请输入手机号码");
        String phoneNumber = sc.next();

        //判断是否和用户对象中的身份证号码和手机号码是否相同
        //用户对象通过索引获取出来
        int index = findIndex(list,username);
        User user = list.get(index);
        if(!(user.getPersonId().equalsIgnoreCase(personId)&&user.getPhoneNumber().equals(phoneNumber))){
            System.out.println("身份证号或手机号输入不正确");
            return;
        }
        //所有的数据验证成功,直接修改
        String passWord;
        while (true) {
            System.out.println("请输入新的密码");
            passWord =sc.next();
            System.out.println("请重新输入一遍");
            String aginPassword = sc.next();
            if(passWord.equals(aginPassword)){
                System.out.println("两次密码输入一致");
                break;
            }else{
                System.out.println("输入不一致");
                continue;
            }
        }
        user.setPassWord(passWord);
        System.out.println("密码修改成功!");
    }

完整的代码:

Student类javabean类:

package StudentManagerSys;

public class Student {
        private String name;
        private int id;
        private String sex;
        private String adress;


        public Student() {
        }

        public Student(String name, int id, String sex, String adress) {
            this.name = name;
            this.id = id;
            this.sex = sex;
            this.adress = adress;
        }

        /**
         * 获取
         * @return name
         */
        public String getName() {
            return name;
        }

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

        /**
         * 获取
         * @return id
         */
        public int getId() {
            return id;
        }

        /**
         * 设置
         * @param id
         */
        public void setId(int id) {
            this.id = id;
        }

        /**
         * 获取
         * @return sex
         */
        public String getSex() {
            return sex;
        }

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

        /**
         * 获取
         * @return adress
         */
        public String getAdress() {
            return adress;
        }

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

        public String toString() {
            return "Student{name = " + name + ", id = " + id + ", sex = " + sex + ", adress = " + adress + "}";
        }
    }

User类的javabean类:

package StudentManagerSys;

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;
    }

    /**
     * 获取
     * @return userName
     */
    public String getUserName() {
        return userName;
    }

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

    /**
     * 获取
     * @return passWord
     */
    public String getPassWord() {
        return passWord;
    }

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

    /**
     * 获取
     * @return personId
     */
    public String getPersonId() {
        return personId;
    }

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

    /**
     * 获取
     * @return phoneNumber
     */
    public String getPhoneNumber() {
        return phoneNumber;
    }

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

    public String toString() {
        return "User{userName = " + userName + ", passWord = " + passWord + ", personId = " + personId + ", phoneNumber = " + phoneNumber + "}";
    }
}
StudentSystem类:
package StudentManagerSys;

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

public class StudentSystem {
    public  void StartSystem() {
        ArrayList<Student> list = new ArrayList<>();
        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("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch (choose) {
                case "1":
                    addStudent(list);
                    break;
                case "2":
                    deleteStudent(list);
                    break;
                case "3":
                    updateStudent(list);
                    break;
                case "4":
                    queryStudent(list);
                    break;
                case "5": {
                    System.out.println("退出");
                    System.exit(0);
                    break;
                }
                default:
                    System.out.println("没有这个选项");
            }
        }
    }

    //添加学生
    public static void addStudent(ArrayList<Student> list){
        Student s = new Student();
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生的id");
        int id = 0;
        while(true) {
            id = sc.nextInt();
            boolean flag = ifOne(list, id);
            if (flag) {
                System.out.println("id已经存在请重新录入");
            }else{
                s.setId(id);
                break;
            }
        }

        System.out.println("请输入学生的姓名");
        String name = sc.next();
        s.setName(name);

        System.out.println("请输入学生的性别");
        String sex = sc.next();
        s.setSex(sex);

        System.out.println("请输入学生的家庭住址");
        String adress = sc.next();
        s.setAdress(adress);

        list.add(s);
        System.out.println("添加成功");

    }

    public static void deleteStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要删除的学生的id");
        int id = sc.nextInt();
        int index = getIndex(list,id);//我们通过getIndex方法来获取所需要删除的下标
        //直接删除:remove
        list.remove(index);

        System.out.println("删除成功");
    }

    public static void updateStudent(ArrayList<Student> list){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要修改的学生的id");
        int id = sc.nextInt();
        //再次获取下标
        int index = getIndex(list,id);
        //开始修改学生的信息
        System.out.println("请输入学生姓名");
        list.get(index).setName(sc.next());
        System.out.println("请输入学生id");
        list.get(index).setId(sc.nextInt());
        System.out.println("请输入学生性别");
        list.get(index).setSex(sc.next());
        System.out.println("请输入学生地址");
        list.get(index).setAdress(sc.next());

        System.out.println("修改成功");
    }

    //查询学生
    public static void queryStudent(ArrayList<Student> list){
        if(list.size()==0){
            System.out.println("当前无学生信息,请添加后查询");
            return;
        }

        System.out.println("id\t\t姓名\t年龄\t家庭住址");
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAdress());
        }


    }

    public static boolean ifOne(ArrayList<Student> list,int id){
        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            int sid = s.getId();
            if(sid==id){
                return true;
            }
        }
        return false;

    }

    public static int getIndex(ArrayList<Student> list,int id){
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            int sid = stu.getId();
            if (sid==id) {
                return i;
            }
        }
        return -1;
    }
}

App类:

package StudentManagerSys;

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

public class App {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<User> list = new ArrayList<>();
        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择:1登录 2.注册 3.忘记密码");
            String choose = sc.next();
            switch(choose){
                case "1":
                    login(list);
                    break;
                case "2":
                    register(list);
                    break;
                case "3":
                    forgetpassword(list);
                    break;
                case "4": {
                    System.out.println("感谢使用");
                    System.exit(0);
                }
                default:
                    System.out.println("没有此选项");
                    break;

            }
        }
    }

    private static void forgetpassword(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.next();
        boolean flag = contains(list,username);
        if (!flag){
            System.out.println("当前用户"+username+"未注册,请先注册");
            return;
        }
        //键盘录入身份证号码和手机号码
        System.out.println("请输入身份证号码");
        String personId = sc.next();
        System.out.println("请输入手机号码");
        String phoneNumber = sc.next();

        //判断是否和用户对象中的身份证号码和手机号码是否相同
        //用户对象通过索引获取出来
        int index = findIndex(list,username);
        User user = list.get(index);
        if(!(user.getPersonId().equalsIgnoreCase(personId)&&user.getPhoneNumber().equals(phoneNumber))){
            System.out.println("身份证号或手机号输入不正确");
            return;
        }
        //所有的数据验证成功,直接修改
        String passWord;
        while (true) {
            System.out.println("请输入新的密码");
            passWord =sc.next();
            System.out.println("请重新输入一遍");
            String aginPassword = sc.next();
            if(passWord.equals(aginPassword)){
                System.out.println("两次密码输入一致");
                break;
            }else{
                System.out.println("输入不一致");
                continue;
            }
        }
        user.setPassWord(passWord);
        System.out.println("密码修改成功!");
    }

    private static int findIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            if(u.getUserName().equals(username)){
                return i;
            }
        }
        return -1;
    }

    private static void register(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);

        String username;
        while (true) {
            System.out.println("请输入用户名");
            username = sc.next();
//        用户名唯一。
//        用户名长度必须在3-15位之间。
//        只能是字母加数字的组合,不能是纯数字。
            boolean flag = checkUsername (username);
            if(!flag) {
                System.out.println("用户名格式不满足请重新输入");
                continue;
            }

            //校验用户名是否唯一
            boolean flag1 = contains(list,username);
            if(flag1){
                System.out.println("用户名"+username+"重复,请重新输入");
                continue;
            }else
                break;
        }
        //键盘录入密码
        //两次输入的密码一致可成功注册
        String password;
        while (true) {
            System.out.println("请输入要注册的密码");
            password = sc.next();
            System.out.println("请再输入一遍您的密码");
            String aginPassword = sc.next();
            if(!password.equals(aginPassword)){
                System.out.println("两次密码输入不一致,请重新输入");
                continue;
            }else{
                System.out.println("两次密码一致,继续录入");
                break;
            }
        }
        //键盘录入身份证号码
//        长度为18位。
//        不能以0开头。
//        前17位必须是数字。
//        最后一位可以是数字也可以是大写X或小写x
        String personId;
        while (true) {
            System.out.println("请输入身份证号码");
            personId = sc.next();
            boolean flag2 = checkPersonId(personId);
            if(flag2){
                System.out.println("身份证号码满足要求");
                break;
            }else{
                System.out.println("请重新输入");
                continue;
            }
        }

        //键盘录入手机号码
//        验证要求:
//        长度为11位
//        不能以0开头
//        必须是纯数字
        String phoneNumber;
        while (true) {
            System.out.println("请输入手机号码");
            phoneNumber = sc.next();
            boolean flag3 = checkPhonenumber(phoneNumber);
            if(flag3){
                System.out.println("手机号满足要求");
                break;
            }else{
                System.out.println("不满足要求,请重新输入");
                continue;
            }
        }

        User u = new User(username,password,personId,phoneNumber);
        list.add(u);
        System.out.println("注册成功");
    }

    private static boolean checkPhonenumber(String phoneNumber) {
        int length = phoneNumber.length();
        //不是0开头,并且18位
        if(length!=11||phoneNumber.charAt(0)==0){
            return false;
        }

        for (int i = 0; i < phoneNumber.length(); i++) {
            if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9'))
            {
                return false;
            }
        }

        return true;
    }

    private static boolean checkPersonId(String personId) {
        int length = personId.length();
        //不是0开头,并且18位
        if(length!=18||personId.charAt(0)==0){
            return false;
        }
        //判断前十七位
        for (int i = 0; i < personId.length()-1; i++) {
            if(!(personId.charAt(i)>='0'&&personId.charAt(i)<='9'))
            {
                return false;
            }
        }

        if(!((personId.charAt(length-1)>='0'&&personId.charAt(length-1)<='9')||(personId.charAt(length-1)=='X'||personId.charAt(length-1)=='x')))
        {
            return false;
        }

        return true;

    }

    private static boolean contains(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getUserName().equals(username)){
                return true;
            }
        }
        return false;
    }

    //判断用户名是否符合要求
    private static boolean checkUsername(String username) {
        int length = username.length();
        if(length<3||length>15){
            return false;
        }
        //只能是字母加数字的组合,不能是纯数字
        //循环得到每一个字符,如果有一个不是字母或者数字,return false
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))) {
                return false;
            }
        }
        //用户名满足长度内容满足要求
        //统计再用户名中有多少个字母
        int cnt = 0;
        for (int i = 0; i <length; i++) {
            char c = username.charAt(i);
            if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
                cnt++;
                break;
            }
        }
        return cnt>0;
    }

    private static void login(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {

            System.out.println("请输入用户名");
            String username = sc.next();
            boolean flag = contains(list, username);
            if (!flag) {
                System.out.println("用户名" + username + "未注册,请先注册再登录");
                return;
            }
            System.out.println("请输入密码");
            String password = sc.next();

            while (true) {
                String rightcode = getCode();
                System.out.println("当前正确的验证码为" + rightcode);
                System.out.println("请输入验证码");
                String code = sc.next();

                if (code.equalsIgnoreCase(rightcode)) {
                    System.out.println("验证码正确");
                    break;
                } else {

                    System.out.println("验证码错误");
                    continue;
                }
            }
            //验证用户名密码是否正确
            //封装思想,把一些零散的数据,封装成一个对象
            //传递一个整体,不用传零散的数据
            User userInfo = new User(username, password, null, null);
            boolean flag1 = checkUserInfo(list, userInfo);
            if (flag1) {
                System.out.println("登录成功,可以开始使用学生管理系统");
                StudentSystem ss = new StudentSystem();
                ss.StartSystem();

            } else {
                if(i==2) {
                    System.out.println("当前账号"+username+"被锁定,请联系客服人员");
                    return;
                }else{
                    System.out.println("用户名或密码错误,还剩下"+(2-i)+"次机会");
                }
            }
        }
    }

    private static boolean checkUserInfo(ArrayList<User> list,User userInfo) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getUserName().equals(userInfo.getUserName())&&list.get(i).getPassWord().equals(userInfo.getPassWord())){
                return true;
            }
        }
        return false;
    }

    //生成一个验证码
//    验证码规则:
//    长度为5
//    由4位大写或者小写字母和1位数字组成,同一个字母可重复。
//    数字可以出现在任何位置
    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 r = new Random();
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(list.size());
            char c = list.get(index);
            sb.append(c);
        }
        int number = r.nextInt(10);
        sb.append(number);
        char[] arr = sb.toString().toCharArray();
        int randomIndex = r.nextInt(arr.length);
        char temp = arr[randomIndex];
        arr[randomIndex] = arr[arr.length-1];
        arr[arr.length-1] = temp;

        return new String(arr);
    }
}

有帮助的话,大家可以点个赞鼓励一下,这也是我的第一个博客

                                        用JAVA实现一个学生管理系统和登录系统

 

到了这里,关于用JAVA实现一个学生管理系统和登录系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用GPT4实现SSM框架实现学生信息管理系统的登录和增删改查

    下面介绍一下用GPT4.0生成的SSM框架相关的登录和增删改查代码。没有加css样式。 在pom.xml文件中添加相关依赖: 3.1实体类 Student.java: User.java: 3.2DAO层(Mapper) StudentMapper.java: UserMapper.java: 3.3Service层 StudentService.java: StudentServiceImpl.java: UserService.java: UserServiceImpl.java: 3.4Controller层

    2024年02月09日
    浏览(40)
  • Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课

    学生选课管理系统是一个基于Python Django开发的教务管理系统,旨在提供方便快捷的选课服务和学籍管理功能。该系统分为教师端和学生端两个角色,为教师和学生提供了不同的功能和权限。 教师端功能: 教师可以登录系统后,进行课程管理、成绩录入和学生管理等操作。具

    2024年01月24日
    浏览(51)
  • ChatGPT实现用C语言写一个学生成绩管理系统

    随着ChatGPT爆火,大家都在使用ChatGPT来帮助自己提高效率,对于程序员来说使用它来写代码怎么样呢?今天尝试让ChatGPT,写了一个学生成绩管理系统。 问题是:使用C语言写一个学生成绩管理系统,要求使用链表,实现增删改查功能。 下面是ChatGPT写的代码,用时不到30秒,速

    2023年04月13日
    浏览(56)
  • 学生管理系统(Java实现)

    学生管理系统效果图 使用Java提供的Javax库来实现图形化界面,在使用这个库的时候,我发现它和Qt十分相似,但和Qt相比感觉更方便使用。 效果图: 1.主页面 2.添加学生页面 3.查找学生页面 4.总结 该图形化界面核心代码其实和第一个在控制台操作的管理系统基本一样,只是进

    2024年02月09日
    浏览(51)
  • java实现管理学生选课系统

    项目简介 基于Java Swing+MySQL的学生选课管理系统,支持对课程的发布,查询,添加,删除操作,同时支持对学生及教师信息的管理。       2.项目采用技术 该项目主要使用Java Swing+SQLServer        3.功能需求分析 学生选课管理系统中要实现管理者对于学生和教师信息的管理以

    2024年02月07日
    浏览(45)
  • 一个基于SpringBoot+Vue前后端分离学生宿舍管理系统详细设计实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月07日
    浏览(144)
  • 【超详细】Java实现学生信息管理系统

     项目介绍:用java实现学生信息的管理,其中录入的数据包括:学号、姓名、年龄、居住地等,并且能够实现对学生信息的添加、修改、删除、查看功能。 一、创建项目 1、项目名称:myStudentManager 二、创建包 1、包名称:study 2、名字也可以自己进行命名 三、创建两个类 1、

    2024年02月04日
    浏览(43)
  • 用Java实现学生管理系统【简化版】基础

     🎉博客首页:痛而不言笑而不语的浅伤 📢欢迎关注🥳点赞 👍 收藏 ⭐留言 📝 欢迎讨论! 🔮本文由痛而不言笑而不语的浅伤原创,CSDN首发! 🌋系列专栏:《Java每日一练》 🧿首发时间:2022年6月4日 ❤:热爱Java学习,期待一起交流! 🙏🏻作者水平有限,如果发现错

    2024年01月16日
    浏览(52)
  • JAVA学生信息管理系统(数据库实现)

    这次的项目是用数据库实现学生的信息管理系统,有三步组成,写项目链接数据库实现相关的操作 开发工具: eclipse、MySQL、navicat、mysql-connector-java-8.0.27     (1)主页面   (2)添加界面   (3)删除界面    (4)修改界面  (5)查找界面 (6)数据库链接   添加Java驱动包

    2024年02月11日
    浏览(46)
  • Java基础——学生成绩信息管理系统(简单实现)

    1、 定义一个学生类 Student,包含姓名、成绩信息; 2、使用 ArrayList集合存储学生对象; 3、 对集合中的元素进行增删查改的操作。 学生类可以包含姓名、成绩、学号、年龄等等,这里只包含了前两项学生类属性。 在该类中定义了简单的增、删、查、改的方法。 其中,遍历集

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包