国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用JAVA實現(xiàn)一個學生管理系統(tǒng)和登錄系統(tǒng)

這篇具有很好參考價值的文章主要介紹了用JAVA實現(xiàn)一個學生管理系統(tǒng)和登錄系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、學生管理系統(tǒng):

1.創(chuàng)建學生對象Student的javabean類:

2.創(chuàng)建出學生管理系統(tǒng)?StudentSystem類:

1.addStudent方法:添加學生

2.ifOne方法,用來判斷我們輸入的學生id是否唯一(如果存在學生就不用再添加此學生):

3.queryStudent方法,把我們表中的所有學生顯示出來

4.getIndex()如果想修改或者刪除特定的學生,先獲取要獲取學生的索引

5.deletStudent()刪除指定學生:

6.updateStudent()修改指定學生

二、注冊系統(tǒng)

1.首先創(chuàng)建出User的javabean類

2.注冊功能

?2.contains()檢查用戶名是否存在:

?2.登錄功能

1.驗證碼生成的實現(xiàn),getcode()

2.checkUserInfo()檢查學生的信息是否正確

3.忘記密碼功能


?文章來源地址http://www.zghlxwxcb.cn/news/detail-503874.html

一、學生管理系統(tǒng):

1.創(chuàng)建學生對象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.創(chuàng)建出學生管理系統(tǒng)?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("-------歡迎來到學生管理系統(tǒng)-------");
            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[]數(shù)組進行儲存Student的對象?。?

1.addStudent方法:添加學生

public static void addStudent(ArrayList<Student> list){//此處傳入我們所創(chuàng)建出來的容器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已經(jīng)存在請重新錄入");
        }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("當前無學生信息,請?zhí)砑雍蟛樵?);
        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("修改成功");
}

學生管理系統(tǒng)制作完畢,接下來可以制作管理系統(tǒng)的登錄系統(tǒng)。如果只需要學生管理系統(tǒng),可以把?StudentSystem類中的的startSystem方法改成main方法,可以直接運行學生管理系統(tǒng)。

二、注冊系統(tǒng)

1.首先創(chuàng)建出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位之間。
?? ?只能是字母加數(shù)字的組合,不能是純數(shù)字。
2.鍵盤輸入兩次,兩次一致可以注冊。
3.身份證號碼需要驗證。
? ? ?驗證要求:
?? ?長度為18位。
?? ?不能以0開頭。
?? ?前17位必須是數(shù)字。
?? ?最后一位可以是數(shù)字也可以是大寫X或小寫x
4.手機號驗證:
?? ?驗證要求:
?? ??? ?長度為11位
?? ??? ?不能以0開頭
?? ??? ?必須是純數(shù)字

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位之間。
//        只能是字母加數(shù)字的組合,不能是純數(shù)字。
            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("兩次密碼一致,繼續(xù)錄入");
                break;
            }
        }
        //鍵盤錄入身份證號碼
//        長度為18位。
//        不能以0開頭。
//        前17位必須是數(shù)字。
//        最后一位可以是數(shù)字也可以是大寫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開頭
//        必須是純數(shù)字
        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;
        }
        //只能是字母加數(shù)字的組合,不能是純數(shù)字
        //循環(huán)得到每一個字符,如果有一個不是字母或者數(shù)字,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;
            }
        }
        //用戶名滿足長度內(nèi)容滿足要求
        //統(tǒng)計再用戶名中有多少個字母
        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.鍵盤錄入驗證碼
? ? 驗證要求
?? ?用戶名如果未注冊,直接結(jié)束方法,并提示:用戶名未注冊,請先注冊
?? ?判斷驗證碼是否正確,如果不正確,請重新輸入。
?? ?再判斷用戶名和密碼是否正確,有3次機會
? ? 忘記密碼
?? ?1.鍵盤錄入用戶名,判斷當前用戶名是否存在,如果不存在,直接結(jié)束,提示:未注冊
?? ?2.鍵盤錄入身份證號碼和手機號碼
?? ?3.判斷當前用戶的身份證號碼和手機號碼是否一致。
?? ??? ?如果一致,提示輸入密碼,進行修改
?? ??? ?如果不一致,賬號信息不匹配,修改失敗
?? ?驗證碼規(guī)則:
?? ??? ?長度為5
?? ??? ?由4位大寫或者小寫字母和1位數(shù)字組成,同一個字母可重復。
?? ??? ?數(shù)字可以出現(xiàn)在任何位置
?? ? 比如
?? ??? ?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;
                }
            }
            //驗證用戶名密碼是否正確
            //封裝思想,把一些零散的數(shù)據(jù),封裝成一個對象
            //傳遞一個整體,不用傳零散的數(shù)據(jù)
            User userInfo = new User(username, password, null, null);
            boolean flag1 = checkUserInfo(list, userInfo);
            if (flag1) {
                System.out.println("登錄成功,可以開始使用學生管理系統(tǒng)");
                StudentSystem ss = new StudentSystem();
                ss.StartSystem();

            } else {
                if(i==2) {
                    System.out.println("當前賬號"+username+"被鎖定,請聯(lián)系客服人員");
                    return;
                }else{
                    System.out.println("用戶名或密碼錯誤,還剩下"+(2-i)+"次機會");
                }
            }
        }
    }

?總共有三次登陸的機會,機會用完退出程序:用for循環(huán)控制。

切記不能把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.驗證碼生成的實現(xiàn),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將字母重新排序,單獨的數(shù)字在進行交換,最后獲得驗證碼字符串。

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

登錄成功就可以創(chuàng)建StudentSystem對象,調(diào)用startSystem方法,啟動學生管理系統(tǒng)了??!

3.忘記密碼功能

三、忘記密碼
?? ?1.鍵盤錄入用戶名,判斷當前用戶名是否存在,如果不存在,直接結(jié)束方法,并提示未注冊。
?? ?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;
        }
        //所有的數(shù)據(jù)驗證成功,直接修改
        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("-------歡迎來到學生管理系統(tǒng)-------");
            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已經(jīng)存在請重新錄入");
            }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("當前無學生信息,請?zhí)砑雍蟛樵?);
            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("歡迎來到學生管理系統(tǒng)");
            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;
        }
        //所有的數(shù)據(jù)驗證成功,直接修改
        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位之間。
//        只能是字母加數(shù)字的組合,不能是純數(shù)字。
            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("兩次密碼一致,繼續(xù)錄入");
                break;
            }
        }
        //鍵盤錄入身份證號碼
//        長度為18位。
//        不能以0開頭。
//        前17位必須是數(shù)字。
//        最后一位可以是數(shù)字也可以是大寫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開頭
//        必須是純數(shù)字
        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;
        }
        //只能是字母加數(shù)字的組合,不能是純數(shù)字
        //循環(huán)得到每一個字符,如果有一個不是字母或者數(shù)字,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;
            }
        }
        //用戶名滿足長度內(nèi)容滿足要求
        //統(tǒng)計再用戶名中有多少個字母
        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;
                }
            }
            //驗證用戶名密碼是否正確
            //封裝思想,把一些零散的數(shù)據(jù),封裝成一個對象
            //傳遞一個整體,不用傳零散的數(shù)據(jù)
            User userInfo = new User(username, password, null, null);
            boolean flag1 = checkUserInfo(list, userInfo);
            if (flag1) {
                System.out.println("登錄成功,可以開始使用學生管理系統(tǒng)");
                StudentSystem ss = new StudentSystem();
                ss.StartSystem();

            } else {
                if(i==2) {
                    System.out.println("當前賬號"+username+"被鎖定,請聯(lián)系客服人員");
                    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;
    }

    //生成一個驗證碼
//    驗證碼規(guī)則:
//    長度為5
//    由4位大寫或者小寫字母和1位數(shù)字組成,同一個字母可重復。
//    數(shù)字可以出現(xiàn)在任何位置
    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實現(xiàn)一個學生管理系統(tǒng)和登錄系統(tǒng)

?

到了這里,關(guān)于用JAVA實現(xiàn)一個學生管理系統(tǒng)和登錄系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 用GPT4實現(xiàn)SSM框架實現(xiàn)學生信息管理系統(tǒng)的登錄和增刪改查

    下面介紹一下用GPT4.0生成的SSM框架相關(guān)的登錄和增刪改查代碼。沒有加css樣式。 在pom.xml文件中添加相關(guān)依賴: 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日
    瀏覽(18)
  • Python Django的學生選課管理系統(tǒng),實現(xiàn)多用戶登錄注冊,可選課可評課

    Python Django的學生選課管理系統(tǒng),實現(xiàn)多用戶登錄注冊,可選課可評課

    學生選課管理系統(tǒng)是一個基于Python Django開發(fā)的教務管理系統(tǒng),旨在提供方便快捷的選課服務和學籍管理功能。該系統(tǒng)分為教師端和學生端兩個角色,為教師和學生提供了不同的功能和權(quán)限。 教師端功能: 教師可以登錄系統(tǒng)后,進行課程管理、成績錄入和學生管理等操作。具

    2024年01月24日
    瀏覽(37)
  • ChatGPT實現(xiàn)用C語言寫一個學生成績管理系統(tǒng)

    隨著ChatGPT爆火,大家都在使用ChatGPT來幫助自己提高效率,對于程序員來說使用它來寫代碼怎么樣呢?今天嘗試讓ChatGPT,寫了一個學生成績管理系統(tǒng)。 問題是:使用C語言寫一個學生成績管理系統(tǒng),要求使用鏈表,實現(xiàn)增刪改查功能。 下面是ChatGPT寫的代碼,用時不到30秒,速

    2023年04月13日
    瀏覽(95)
  • 學生管理系統(tǒng)(Java實現(xiàn))

    學生管理系統(tǒng)(Java實現(xiàn))

    學生管理系統(tǒng)效果圖 使用Java提供的Javax庫來實現(xiàn)圖形化界面,在使用這個庫的時候,我發(fā)現(xiàn)它和Qt十分相似,但和Qt相比感覺更方便使用。 效果圖: 1.主頁面 2.添加學生頁面 3.查找學生頁面 4.總結(jié) 該圖形化界面核心代碼其實和第一個在控制臺操作的管理系統(tǒng)基本一樣,只是進

    2024年02月09日
    瀏覽(15)
  • java實現(xiàn)管理學生選課系統(tǒng)

    java實現(xiàn)管理學生選課系統(tǒng)

    項目簡介 基于Java?Swing+MySQL的學生選課管理系統(tǒng),支持對課程的發(fā)布,查詢,添加,刪除操作,同時支持對學生及教師信息的管理。 ? ? ? 2.項目采用技術(shù) 該項目主要使用Java Swing+SQLServer ? ? ? ?3.功能需求分析 學生選課管理系統(tǒng)中要實現(xiàn)管理者對于學生和教師信息的管理以

    2024年02月07日
    瀏覽(22)
  • 一個基于SpringBoot+Vue前后端分離學生宿舍管理系統(tǒng)詳細設計實現(xiàn)

    一個基于SpringBoot+Vue前后端分離學生宿舍管理系統(tǒng)詳細設計實現(xiàn)

    博主介紹 : ? 全網(wǎng)粉絲30W+,csdn特邀作者、博客專家、CSDN新星計劃導師、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn) ? ?? 文末獲取源碼聯(lián)系 ?? ?????精彩專欄 推薦訂閱 ?????不然下次找不到喲 2022-2024年

    2024年02月07日
    瀏覽(166)
  • 【超詳細】Java實現(xiàn)學生信息管理系統(tǒng)

    【超詳細】Java實現(xiàn)學生信息管理系統(tǒng)

    ?項目介紹:用java實現(xiàn)學生信息的管理,其中錄入的數(shù)據(jù)包括:學號、姓名、年齡、居住地等,并且能夠?qū)崿F(xiàn)對學生信息的添加、修改、刪除、查看功能。 一、創(chuàng)建項目 1、項目名稱:myStudentManager 二、創(chuàng)建包 1、包名稱:study 2、名字也可以自己進行命名 三、創(chuàng)建兩個類 1、

    2024年02月04日
    瀏覽(20)
  • JAVA學生信息管理系統(tǒng)(數(shù)據(jù)庫實現(xiàn))

    JAVA學生信息管理系統(tǒng)(數(shù)據(jù)庫實現(xiàn))

    這次的項目是用數(shù)據(jù)庫實現(xiàn)學生的信息管理系統(tǒng),有三步組成,寫項目鏈接數(shù)據(jù)庫實現(xiàn)相關(guān)的操作 開發(fā)工具: eclipse、MySQL、navicat、mysql-connector-java-8.0.27 ? ? (1)主頁面 ? (2)添加界面 ? (3)刪除界面 ? ?(4)修改界面 ?(5)查找界面 (6)數(shù)據(jù)庫鏈接 ? 添加Java驅(qū)動包

    2024年02月11日
    瀏覽(32)
  • Java基礎——學生成績信息管理系統(tǒng)(簡單實現(xiàn))

    1、 定義一個學生類 Student,包含姓名、成績信息; 2、使用 ArrayList集合存儲學生對象; 3、 對集合中的元素進行增刪查改的操作。 學生類可以包含姓名、成績、學號、年齡等等,這里只包含了前兩項學生類屬性。 在該類中定義了簡單的增、刪、查、改的方法。 其中,遍歷集

    2024年02月11日
    瀏覽(22)
  • 用Java實現(xiàn)學生管理系統(tǒng)【簡化版】基礎

    用Java實現(xiàn)學生管理系統(tǒng)【簡化版】基礎

    ???博客首頁:痛而不言笑而不語的淺傷 ??歡迎關(guān)注??點贊 ?? 收藏 ?留言 ?? 歡迎討論! ??本文由痛而不言笑而不語的淺傷原創(chuàng),CSDN首發(fā)! ??系列專欄:《Java每日一練》 ??首發(fā)時間:2022年6月4日 ?:熱愛Java學習,期待一起交流! ????作者水平有限,如果發(fā)現(xiàn)錯

    2024年01月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包