登錄注冊含驗證碼


項目:用戶登錄和注冊(含驗證碼)

第一步:創建一個對應的用戶模型類

    用戶的對應模型類:User

              屬性:賬號:username

              屬性:密碼:password

              屬性:聯系方式:phoneNumber

              屬性:郵箱:email

 1 package cn.aurn.demo02;
 2 /*
 3  *     用戶模型類
 4  */
 5 public class User {
 6     //屬性
 7     private String username;//賬號
 8     private String password;//密碼
 9     private String phoneNumber;//手機號
10     private String email;//郵件
11     
12     //有參構造方法
13     public User(String username, String password, String phoneNumber, String email) {
14         this.username = username;
15         this.password = password;
16         this.phoneNumber = phoneNumber;
17         this.email = email;
18     }
19 
20     //set和get方法
21     public String getUsername() {
22         return username;
23     }
24 
25     public void setUsername(String username) {
26         this.username = username;
27     }
28 
29     public String getPassword() {
30         return password;
31     }
32 
33     public void setPassword(String password) {
34         this.password = password;
35     }
36 
37     public String getPhoneNumber() {
38         return phoneNumber;
39     }
40 
41     public void setPhoneNumber(String phoneNumber) {
42         this.phoneNumber = phoneNumber;
43     }
44 
45     public String getEmail() {
46         return email;
47     }
48 
49     public void setEmail(String email) {
50         this.email = email;
51     }
52     
53 
54 }

 

第二步:測試類:UserTest

    提示用戶選擇操作,登錄之前要判斷存儲用戶信息的集合如果為空,那就提示用戶當前沒有賬戶,需要先注冊。

 1 package cn.aurn.demo02;
 2 /**
 3  *     用戶操作測試類
 4  */
 5 import java.util.ArrayList;
 6 import java.util.Scanner;
 7 
 8 public class UserTest {
 9     
10     //用戶輸入對象
11     public static Scanner scanner = new Scanner(System.in);
12     
13     //集合存儲用戶信息
14     public static ArrayList<User> users = new ArrayList<User>();
15     
16     //驗證碼工具對象
17     public static  CodeUtils codes = new CodeUtils(); 
18     
19     //主函數
20     public static void main(String[] args) {
21         //用戶提示
22         System.out.println("*****歡迎來到打死你戰隊****** ");
23         
24         while(true) {
25             System.out.println("請進行如下操作:1、登錄  2、注冊");
26             //用戶輸入操作
27             String flag = scanner.nextLine();
28             //判斷用戶操作
29             if (flag.equals("1")) {
30                 //登錄,判斷集合中是否有用戶
31                 if (users.isEmpty()) {
32                     System.out.println("當前沒有用戶信息,請先注冊!");
33                 }else {
34                     login();
35                 }
36             }else if (flag.equals("2")) {
37                 regist();
38             }
39         }
40     }

 

第三步:驗證碼工具類:CodeUtils

    利用隨機數生成6位驗證碼(注冊時用)和4位驗證碼(登錄時用)。

 1 package cn.aurn.demo02;
 2 
 3 import java.util.Random;
 4 
 5 /**
 6  * 驗證碼生成工具類
 7  */
 8 public class CodeUtils {
 9 
10     //創建一個數組對象
11     private char[] codes = {'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',
12                     '0','1','2','3','4','5','6','7','8','9',
13                     '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'};
14 
15     //創建一個隨機數對象
16     private Random random = new Random();
17     
18     /*
19      * 隨機生成4位驗證碼
20      */
21     public String getStringCode4() {
22         //空字符串
23         String code = "";
24         //循環生成4位數驗證碼
25         for(int i = 0; i < 4; i++) {
26             //每循環一次,隨機拿一個驗證碼
27             int index = random.nextInt(codes.length);
28             //每拿到一個,就添加到空的字符串中拼接
29             code += codes[index];
30         }
31         return code;
32     }
33     
34     /*
35      * 隨機生成6位數驗證碼
36      */
37     public String getStringCode6() {
38         //空字符串
39         String code = "";
40         //循環生成4位數驗證碼
41         for(int i = 0; i < 6; i++) {
42             //每循環一次,我就隨機拿一個驗證碼
43             int index = random.nextInt(codes.length);
44             //每拿到一個,就添加到空的字符串中拼接
45             code += codes[index];
46         }
47         return code;
48     }
49 }

 

第四步:注冊方法:regist()

    1、提示用戶,輸入賬號,密碼,確認密碼,注冊手機號,驗證碼。

    2、設置兩個開關:賬號是否重復:isFlag(默認是關的false,即賬號不重復);

              注冊是否通過:isRegist(默認是開的true,即注冊通過)。

    3、先判斷用戶驗證碼輸入的是否正確,不正確就關閉isRegist開關,不進行后面的,提醒用戶重新再來。

    4、再判斷用戶輸入的密碼與確認密碼是否一樣,不一樣就關閉isRegist開關,不注冊,提示用戶重新再來。

    5、for循環存儲用戶信息的集合,判斷用戶輸入的賬號是否已經存在在集合中,如果存在打開isFlag開關,關閉isRegist開關,提示用戶當前賬號已存在,重新輸入, 

      跳出循環; 如果不存在,就直接注冊,將用戶輸入的信息存儲在集合中。

 1     /*
 2      *     注冊方法
 3      */
 4     private static void regist() {
 5         //提示用戶
 6         //賬號
 7         System.out.println("請輸入您要注冊的賬號:");
 8         String username = scanner.nextLine();
 9         
10         //密碼
11         System.out.println("請輸入您要注冊的密碼:");
12         String password = scanner.nextLine();
13         
14         //確認密碼
15         System.out.println("請輸入您要注冊的確認密碼:");
16         String repassword = scanner.nextLine();
17         
18         //手機號
19         System.out.println("請輸入您要注冊的手機號:");
20         String phoneNumber = scanner.nextLine();
21         
22         //郵箱
23         System.out.println("請輸入您要注冊的郵箱:");
24         String email = scanner.nextLine();
25         
26         //生成6位驗證碼
27         String code = codes.getStringCode6();
28         System.out.println("請輸入驗證碼信息(區分大小寫):"+code);
29         String code1 = scanner.nextLine();
30         
31         //賬戶是否重復開關
32         boolean isFlag = false;//默認是關閉的,即賬號不重復
33         
34         //是否通過注冊開關
35         boolean isRegist = true;//默認是打開的,即通過注冊
36         
37         //判斷
38         if (code1.equals(code)) {
39             //驗證碼正確
40             if (password.equals(repassword)) {
41                 //密碼與確認密碼正確
42                 //循環遍歷賬戶信息存儲集合
43                 for (User user : users) {
44                     //判斷是否已經注冊過了
45                     if (user.getUsername().equals(username)) {
46                         //用戶輸入賬號已注冊存在
47                         //打開重復開關
48                         isFlag = true;
49                         //關閉注冊
50                         isRegist = false;
51                         //跳出循環
52                         break;
53                     }
54                 }
55             }else {
56                 System.out.println("確認密碼與密碼不一致,請重新操作!");
57                 //關閉注冊按鈕
58                 isRegist = false;
59             }
60         }else {
61             System.out.println("驗證碼輸入錯誤,請重新操作!");
62             //關閉注冊按鈕
63             isRegist = false;
64         }
65         //賬號已注冊存在
66         if (isFlag) {
67             System.out.println("很遺憾,您輸入的賬號已注冊過,請重新輸入!");
68         }else {
69             //賬號不存在,注冊
70             if (isRegist) {
71                 User user = new User(username, repassword, phoneNumber, email);
72                 //添加信息進集合
73                 users.add(user);
74                 //提示用戶
75                 System.out.println("恭喜您,注冊成功!");
76             }
77         }
78     }

 

第五步:登錄方法:login()

    1、提示用戶,輸入賬號,密碼,驗證碼。

    2、設置一個開關:是否登錄成功:isLogin(默認是關閉的false)。

    3、先判斷用戶輸入的驗證碼是否正確,如果不正確,提示用戶驗證碼輸入錯誤,請重新操作。

    4、for循環遍歷用戶信息集合,然后判斷用戶輸入的賬號和密碼與集合中的賬號與密碼是否一樣,如果一樣,打開IsLogin開關,提示用戶登錄成功,退出循環;

       否則,提示用戶的賬號或密碼輸入錯誤,請重新操作。

 1     /*
 2      *     登錄方法
 3      */
 4     private static void login() {
 5         //提示用戶
 6         // 賬號
 7         System.out.println("請輸入登錄的賬號:");
 8         String username = scanner.nextLine();
 9 
10         // 密碼
11         System.out.println("請輸入登錄的密碼:");
12         String password = scanner.nextLine();
13 
14         // 生成4位驗證碼
15         String code = codes.getStringCode4();
16         System.out.println("請輸入驗證碼信息(區分大小寫):" + code);
17         String code1 = scanner.nextLine();
18         
19         //設置登錄成功開關
20         boolean isLogin = false;//默認關閉的,即登陸失敗
21         
22         //判斷驗證碼
23         if (code1.equals(code)) {
24             //驗證碼正確
25             //遍歷集合
26             for (User user : users) {
27                 //判斷輸入的賬號與密碼與注冊的信息進行匹配
28                 if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
29                     //登錄成功
30                     isLogin = true;
31                     System.out.println("登陸成功!");
32                     //退出循環
33                     break;
34                 }
35             }
36             //賬戶密碼輸入錯誤
37             if (!isLogin) {
38                 System.out.println("賬號或密碼輸入錯誤,請重新登錄");
39             }
40         }else {
41             System.out.println("驗證碼輸入錯誤,請重新操作!");
42         }
43     }                            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM