21

登录注册含验证码

 4 years ago
source link: http://www.cnblogs.com/qjc-hll-520/p/12076917.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

项目:用户登录和注册(含验证码)

第一步:创建一个对应的用户模型类

用户的对应模型类: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 Demo01 {
 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     }                            

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK