第一步:创建一个对应的用户模型类
用户的对应模型类: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 }