登录注册含验证码
项目:用户登录和注册(含验证码)
第一步:创建一个对应的用户模型类
用户的对应模型类: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 }
上一篇: swoole怎么连接数据库