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 
程序入口--main方法

 

|--运行结果

技术图片

 

技术图片

 

技术图片

 

技术图片

 

以上是关于Java 可以用已知帐号登录,且可以注册后登录的小程序的主要内容,如果未能解决你的问题,请参考以下文章

引用的帐号当前已锁定,且可能无法登录,win7的电脑,怎么解开?

怎么用一个手机号注册多个百度账号

struts2 重复登录问题 例如a用户用a帐号登录后 b用户用a帐号登录就把a那里下了 b可以用

单机传奇求帮助注册帐号一点确定就会断开连接,因为我下载的版本自带登录器太老无法使用,我就去下载了H

扣扣帐号被盗了,怎样才可以找回?

VPS拨号怎么用?