Java 可以用已知帐号登录,且可以注册后登录的小程序

Wesley13
• 阅读 392

|--需求说明

1、写一个注册和登录功能,使用已知的帐号和密码可以直接登录,如果没有帐号,注册后可以用刚注册的帐号登录

2、注册的时候,如果帐号已经存在,不能注册

3、注册的时候,设置两次密码,如果两次密码设置得不同,不能注册

4、登录的时候,密码输错三次,锁定帐号

5、登录的时候,如果没有这个帐号,则提醒用户注册,注册后可以登录

6、登录的时候,帐号密码都正确要输入验证码,系统给出的验证码和用户输入一致时,允许登录(忽略大小写)

7、登录之后,用户可以看到用户的预留信息

|--实现方式

1、采用循环结构,嵌套分支结构---详情见代码注释

2、创建一个用户类,用于初始化信息

3、

|--代码内容

Java  可以用已知帐号登录,且可以注册后登录的小程序 Java  可以用已知帐号登录,且可以注册后登录的小程序

 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 }

枚举类--选择用户性别

Java  可以用已知帐号登录,且可以注册后登录的小程序 Java  可以用已知帐号登录,且可以注册后登录的小程序

 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 }

用户类---初始化用户信息

Java  可以用已知帐号登录,且可以注册后登录的小程序 Java  可以用已知帐号登录,且可以注册后登录的小程序

 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 }

验证码生成器

Java  可以用已知帐号登录,且可以注册后登录的小程序 Java  可以用已知帐号登录,且可以注册后登录的小程序

  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  可以用已知帐号登录,且可以注册后登录的小程序

Java  可以用已知帐号登录,且可以注册后登录的小程序

Java  可以用已知帐号登录,且可以注册后登录的小程序

Java  可以用已知帐号登录,且可以注册后登录的小程序

点赞
收藏
评论区
推荐文章
Easter79 Easter79
2年前
ssh连接服务器
1.概述ssh是一种网络通信协议,用于计算机之间的加密登录.一般用ssh连接服务器有两种方式:密码认证与密钥认证.密码认证就是通过传统的输入密码的方式登录,密钥认证就是把产生的公钥注册到服务器后,用私钥登录,这样就可以不用每次登录输入密码.特别适合作者这种脑残记不住密码的懒人.2.密码认证密码认证登录直接在终端使用ssh
Stella981 Stella981
2年前
Keycloak 基本功能
Keycloak是一个致力于解决应用和服务身份验证与访问管理的开源工具。可以通过简单的配置达到保护应用和服务的目的。用户管理你的应用不需要开发登录模块,验证用户和保存用户。Keycloak开发了用户管理,登录,注册,密码策略,安全问题,二步验证,密码重置等功能。登录,注册界面所需字段都是可配置,可自定义的。用户角色,权限管理功能,用户组功能。用户
Wesley13 Wesley13
2年前
ubuntu 18.04使用root用户登录ssh
ubuntu系统默认root用户是不能登录的,密码也是空的。如果要使用root用户登录,必须先为root用户设置密码打开终端,输入:sudopasswdroot然后按回车此时会提示你输入密码,在password:后输入你现在登录的用户的密码在ubuntu系统中,默认是不开启ssh使用root用户登陆的,在/etc/ssh/sshd\_c
Wesley13 Wesley13
2年前
mysql用户
1\.学会能按着需求创建一个帐号2\.知道连接字符串是什么样3\.密码密码怎么恢复mysql用户权限介绍mysql用户管理 !(https://oscimg.oschina.net/oscnet/368d3c1e00a0a9515545c2962660a27a080.png)!(https://oscimg.oschin
Wesley13 Wesley13
2年前
DDD实战进阶第一波(十一):开发一般业务的大健康行业直销系统(实现经销商代注册用例与登录令牌分发)
前两篇文章主要实现了经销商代注册的仓储与领域逻辑、经销商登录的仓储与相关逻辑,这篇文章主要讲述经销商代注册的用例与经销商登录的查询功能。一.经销商代注册用例在经销商代注册用例中,我们需要传递经销商的基本注册信息,这个信息是做成了DTO对象。1.经销商注册的DTO对象:publicclassAddDealerDTO
Stella981 Stella981
2年前
RabbitMq增加远程访问用户
添加远程管理账户如果要从远程登录怎么做呢?处于安全考虑,guest这个默认的用户只能通过http://localhost:15672来登录,其他的IP无法直接用这个guest帐号。这里我们可以通过配置文件来实现从远程登录管理界面,只要编辑/etc/rabbitmq/rabbitmq.config文件(没有就新增),添加以下配置就可以了
Stella981 Stella981
2年前
SecureCRT连接Linux关键的
很多时候我们需要连接很多台Linux操作系统,现在我演示怎么用SecureCRT去连接我们现在先设置root帐号的密码 sudo passwd root然后设置自己的密码切换到 root帐号su输入密码现在我们需要ssh免登陆操作aptget
Wesley13 Wesley13
2年前
PHP制作登录注册页面
用PHP制作登录和注册页面,一共6个页面,三个可视页面:登录、注册、主页,三个处理页面:验证、添加用户、清除退出注册<!这是注册页面d&z2z.php,用户可以提交用户名和密码进行注册,点击注册按钮提交给d&z4add.php页面处理<!doctypehtml<html<head
晴雯 晴雯
1年前
零门槛,手把手教你玩转ChatGPT
国内是可以玩ChatGPT的,只需要去官网注册一个OpenAI帐号,然后使用第三方接码平台获取短信验证码,就可以成功注册帐号,注册成功之后国内就可以随意使用chatGPT啦。国内怎么玩chatGPT如下:官方原版一、注册OpenAI账号1.打开:https
臧霸 臧霸
3星期前
SpringCloudalibaba+Vue开发仿社交小程序|完结无密
这个项目结合了后端的SpringCloudAlibaba和前端的Vue框架,用于开发一个仿社交小程序。下面是一些可能涉及到的功能和技术点:一、用户系统:1.使用SpringSecurity实现用户认证和授权。2.用户注册、登录、密码找回等功能。3.用户信息