Java 可以用已知帐号登录,且可以注册后登录的小程序
Posted twuxian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 可以用已知帐号登录,且可以注册后登录的小程序相关的知识,希望对你有一定的参考价值。
|--需求说明
1、写一个注册和登录功能,使用已知的帐号和密码可以直接登录,如果没有帐号,注册后可以用刚注册的帐号登录
2、注册的时候,如果帐号已经存在,不能注册
3、注册的时候,设置两次密码,如果两次密码设置得不同,不能注册
4、登录的时候,密码输错三次,锁定帐号
5、登录的时候,如果没有这个帐号,则提醒用户注册,注册后可以登录
6、登录的时候,帐号密码都正确要输入验证码,系统给出的验证码和用户输入一致时,允许登录(忽略大小写)
7、登录之后,用户可以看到用户的预留信息
|--实现方式
1、采用循环结构,嵌套分支结构---详情见代码注释
2、创建一个用户类,用于初始化信息
3、
|--代码内容
1 package com.work.work1; 2 3 /** 4 * @auther::9527 5 * @Description: 性别 6 * @program: shi_yong 7 * @create: 2019-07-30 14:22 8 */ 9 public enum Gender 10 男,女 11
1 package com.work.work1; 2 3 /** 4 * @auther::9527 5 * @Description: 用户信息类 6 * @program: shi_yong 7 * @create: 2019-07-30 14:19 8 */ 9 public class User 10 private String name; //用户名 11 private String passWords; //用户密码 12 private String phoneNum; // 用户手机号码 13 private Gender sex; //用户性别 14 15 //带参构造,用于初始化数据和创建对象数组 16 public User(String name, String passWords, String phoneNum, Gender sex) 17 this.name = name; 18 this.passWords = passWords; 19 this.phoneNum = phoneNum; 20 this.sex = sex; 21 22 23 24 //无参构造 25 public User() 26 27 28 //getter / setter方法,用于获取或者设置信息 29 public String getName() 30 return name; 31 32 33 public void setName(String name) 34 this.name = name; 35 36 37 public String getPassWords() 38 return passWords; 39 40 41 public void setPassWords(String passWords) 42 this.passWords = passWords; 43 44 45 public String getPhoneNum() 46 return phoneNum; 47 48 49 public void setPhoneNum(String phoneNum) 50 this.phoneNum = phoneNum; 51 52 53 public Gender getSex() 54 return sex; 55 56 57 public void setSex(Gender sex) 58 this.sex = sex; 59 60
1 package com.work.work1; 2 3 /** 4 * @auther::9527 5 * @Description: 方法类 6 * @program: shi_yong 7 * @create: 2019-07-30 17:57 8 */ 9 public class Meth 10 //验证码生成器 11 public static String verificationCode() 12 final int VCODE = 6; //验证码长度为6 13 String code = ""; //定义一个返回值 14 15 for (int i = 0; i < VCODE; i++) 16 //设置一个布尔变量,如果为真,就给数字验证码,如果为假,就给字母验证码 17 boolean choose = ((int) (Math.random() * 2) == 0) ? true : false; 18 if (choose) 19 //choose 为真,验证码在0~9之间选择 20 code += (int) (Math.random() * 10); 21 else 22 //翻开char值对照表,发现英文字母a 小写是从65开始的,大写是从97开始的 23 //根据以上条件进行三目运算,在大小写之间做出选择 24 int temp = ((int)(Math.random()*2)==0)?65:97; 25 //定义一个char变量,搜集英文字符,下面的26就是英文字母的总数 26 char ch = (char)(Math.random()*26+temp); 27 code += ch; 28 29 30 return code; //返回验证码 31 32 33
1 package com.work.work1; 2 3 import java.util.HashMap; 4 import java.util.Scanner; 5 6 /** 7 * @auther::9527 8 * @Description: 系统注册 9 * @program: shi_yong 10 * @create: 2019-07-30 14:26 11 */ 12 public class Register 13 public static void main(String[] args) 14 Scanner scanner = new Scanner(System.in); 15 16 //初始化信息 String name, String passWords, String phoneNum, Gender sex 17 User u1 = new User("1536", "audinig", "15356395764", Gender.女); 18 User u2 = new User("9527", "123456", "15750000564", Gender.男); 19 User u3 = new User("3721", "unu999", "16685693564", Gender.女); 20 User u4 = new User("1966", "239jdk", "18556493564", Gender.男); 21 //设定一个空的user对象,用于接收用户信息 22 User u5 = null; 23 24 //创建map集合,用于储存信息 25 HashMap<String, User> map = new HashMap(); 26 map.put(u1.getName(), u1); 27 map.put(u2.getName(), u2); 28 map.put(u3.getName(), u3); 29 map.put(u4.getName(), u4); 30 31 32 //设置一个标记,用于判断是否要继续问用户 33 boolean boo = true; 34 while (boo) 35 System.out.println("请选择登陆还是注册:1.登陆\\t2.注册"); 36 String answer = scanner.next(); 37 38 //选择1的时候,进入登录模块 39 if ("1".equals(answer)) 40 System.out.println("请输入用户名:"); 41 String name = scanner.next(); 42 43 if (map.containsKey(name)) 44 String passWords =""; 45 //设置计数器,如果输错三次,就退出系统 46 int count = 0; 47 for (int i = 0; i < 3; i++) 48 System.out.println("请输入用户密码:"); 49 passWords = scanner.next(); 50 51 if (map.get(name).getPassWords().equals(passWords)) 52 boolean isPass = true; 53 do 54 String verificationCode = Meth.verificationCode(); 55 System.out.println("请输入系统给定的验证码(忽略大小写)"); 56 System.out.println("验证码:"+verificationCode); 57 String input = scanner.next(); 58 if (input.equalsIgnoreCase(verificationCode)) 59 isPass = false; 60 else 61 System.out.println("请重新输入"); 62 63 while(isPass); 64 System.out.println("登陆成功,以下是你的预留信息"); 65 System.out.println("你的电话号码是" + map.get(name).getPhoneNum()); 66 //用户名与密码匹配,退出for循环 67 break; 68 else 69 count+=1; 70 if (count >=3) 71 System.out.println("连续输错三次,你再也进不了系统了"); 72 System.exit(1); 73 74 System.out.println("你只有三次失误的机会,请重新输入"); 75 76 77 78 else 79 System.out.println("没有这个用户,需要先注册,才能登陆"); 80 //跳出本次循环,重新问是要登录还是要注册 81 continue ; 82 83 84 //帐号密码都正确了,退出这个循环 85 boo = false; 86 //选择2的时候,进入注册模块 87 else if ("2".equals(answer)) 88 //搜集用户名 89 String name = ""; 90 boolean isName = true; 91 do 92 System.out.println("请自定义一个账号"); 93 name = scanner.next(); 94 if (name.length() >= 3) 95 if (name.equals(map.containsKey(name))) 96 System.out.println("已有该账号,请重新输入一个账号"); 97 else 98 System.out.println("该账号可用,已记录"); 99 isName = false; 100 101 else 102 System.out.println("用户名长度不得小于3,请重新输入用户名"); 103 104 105 while (isName); 106 107 //搜集密码信息 设定一次接受用户输入的变量名 108 String passsWords = ""; 109 boolean isPassWord = true; 110 do 111 112 boolean pwLenth = true; 113 //设定二次密码输入的变量名 114 String passWords2 = ""; 115 do 116 System.out.println("请输入密码"); 117 passsWords = scanner.next(); 118 if (passsWords.length() < 6) 119 System.out.println("密码长度不得小于6位"); 120 else 121 pwLenth = false; 122 123 System.out.println("请再一次输入密码"); 124 passWords2 = scanner.next(); 125 if (passWords2.length() < 6) 126 System.out.println("密码长度不得小于6位"); 127 else 128 pwLenth = false; 129 130 131 while (pwLenth); 132 133 if (!passsWords.equals(passWords2)) 134 System.out.println("两次输入的密码不一致,请重新输入"); 135 //如果两次输入的密码不一致,则给isPassWord 赋值为true,以便再次循环 136 isPassWord = true; 137 else 138 //如果两次输入的密码一致,则给isPassWord 赋值为false,以便退出循环 139 isPassWord = false; 140 141 while (isPassWord); 142 143 //搜集用户其他信息 name, passWords, phoneNum, sex 144 System.out.println("请输入电话号码"); 145 String phoneNum = scanner.next(); 146 System.out.println("请输入性别,按1选择女性,其他任意字符选择男性"); 147 Gender gender = scanner.next().equals("1") ? Gender.女 : Gender.男; 148 //向u5传参 149 u5 = new User(name,passsWords, phoneNum, gender); 150 //将获取到到用户信息放入新的map 151 map.put(u5.getName(), u5); 152 System.out.println("注册成功"); 153 System.out.println("请登录"); 154 System.out.println(); 155 156 //选择其他任意字符,重新循环 157 else 158 System.out.println("只能按1或者2,请重新选择"); 159 continue; 160 161 162 163
|--运行结果
以上是关于Java 可以用已知帐号登录,且可以注册后登录的小程序的主要内容,如果未能解决你的问题,请参考以下文章
引用的帐号当前已锁定,且可能无法登录,win7的电脑,怎么解开?
struts2 重复登录问题 例如a用户用a帐号登录后 b用户用a帐号登录就把a那里下了 b可以用