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

|--需求说明

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

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

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

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

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

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

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

|--实现方式

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

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

3、

|--代码内容

1 1 package com.work.work1; 2 2 3 3 /** 4 4 * @auther::9527 5 5 * @Description: 性别 6 6 * @program: shi_yong 7 7 * @create: 2019-07-30 14:22 8 8 */ 9 9 public enum Gender { 1010,1111 }

枚举类--选择用户性别

1 1 package com.work.work1; 2 2 3 3 /** 4 4 * @auther::9527 5 5 * @Description: 用户信息类 6 6 * @program: shi_yong 7 7 * @create: 2019-07-30 14:19 8 8 */ 9 9 public class User { 1010 private String name; //用户名 1111 private String passWords; //用户密码 1212 private String phoneNum; // 用户手机号码 1313 private Gender sex; //用户性别 1414 1515 //带参构造,用于初始化数据和创建对象数组 1616 public User(String name, String passWords, String phoneNum, Gender sex) { 1717 this.name = name; 1818 this.passWords = passWords; 1919 this.phoneNum = phoneNum; 2020 this.sex = sex; 2121 } 2222 2323 2424 //无参构造 2525 public User() { 2626 } 2727 2828 //getter / setter方法,用于获取或者设置信息 2929 public String getName() { 3030 return name; 3131 } 3232 3333 public void setName(String name) { 3434 this.name = name; 3535 } 3636 3737 public String getPassWords() { 3838 return passWords; 3939 } 4040 4141 public void setPassWords(String passWords) { 4242 this.passWords = passWords; 4343 } 4444 4545 public String getPhoneNum() { 4646 return phoneNum; 4747 } 4848 4949 public void setPhoneNum(String phoneNum) { 5050 this.phoneNum = phoneNum; 5151 } 5252 5353 public Gender getSex() { 5454 return sex; 5555 } 5656 5757 public void setSex(Gender sex) { 5858 this.sex = sex; 5959 } 6060 }

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

1 1 package com.work.work1; 2 2 3 3 /** 4 4 * @auther::9527 5 5 * @Description: 方法类 6 6 * @program: shi_yong 7 7 * @create: 2019-07-30 17:57 8 8 */ 9 9 public class Meth { 1010 //验证码生成器 1111 public static String verificationCode() { 1212 final int VCODE = 6; //验证码长度为6 1313 String code = ""; //定义一个返回值 1414 1515 for (int i = 0; i < VCODE; i++) { 1616 //设置一个布尔变量,如果为真,就给数字验证码,如果为假,就给字母验证码 1717 boolean choose = ((int) (Math.random() * 2) == 0) ? true : false; 1818 if (choose) { 1919 //choose 为真,验证码在0~9之间选择 2020 code += (int) (Math.random() * 10); 2121 } else { 2222 //翻开char值对照表,发现英文字母a 小写是从65开始的,大写是从97开始的 2323 //根据以上条件进行三目运算,在大小写之间做出选择 2424 int temp = ((int)(Math.random()*2)==0)?65:97; 2525 //定义一个char变量,搜集英文字符,下面的26就是英文字母的总数 2626 char ch = (char)(Math.random()*26+temp); 2727 code += ch; 2828 } 2929 } 3030 return code; //返回验证码 3131 } 3232 3333 }

验证码生成器

1 1 package com.work.work1; 2 2 3 3 import java.util.HashMap; 4 4 import java.util.Scanner; 5 5 6 6 /** 7 7 * @auther::9527 8 8 * @Description: 系统注册 9 9 * @program: shi_yong 10 10 * @create: 2019-07-30 14:26 11 11 */ 12 12 public class Register { 13 13 public static void main(String[] args) { 14 14 Scanner scanner = new Scanner(System.in); 15 15 16 16 //初始化信息 String name, String passWords, String phoneNum, Gender sex 17 17 User u1 = new User("1536", "audinig", "15356395764", Gender.); 18 18 User u2 = new User("9527", "123456", "15750000564", Gender.); 19 19 User u3 = new User("3721", "unu999", "16685693564", Gender.); 20 20 User u4 = new User("1966", "239jdk", "18556493564", Gender.); 21 21 //设定一个空的user对象,用于接收用户信息 22 22 User u5 = null; 23 23 24 24 //创建map集合,用于储存信息 25 25 HashMap<String, User> map = new HashMap(); 26 26 map.put(u1.getName(), u1); 27 27 map.put(u2.getName(), u2); 28 28 map.put(u3.getName(), u3); 29 29 map.put(u4.getName(), u4); 30 30 31 31 32 32 //设置一个标记,用于判断是否要继续问用户 33 33 boolean boo = true; 34 34 while (boo) { 35 35 System.out.println("请选择登陆还是注册:1.登陆\t2.注册"); 36 36 String answer = scanner.next(); 37 37 38 38 //选择1的时候,进入登录模块 39 39 if ("1".equals(answer)) { 40 40 System.out.println("请输入用户名:"); 41 41 String name = scanner.next(); 42 42 43 43 if (map.containsKey(name)) { 44 44 String passWords =""; 45 45 //设置计数器,如果输错三次,就退出系统 46 46 int count = 0; 47 47 for (int i = 0; i < 3; i++) { 48 48 System.out.println("请输入用户密码:"); 49 49 passWords = scanner.next(); 50 50 51 51 if (map.get(name).getPassWords().equals(passWords)){ 52 52 boolean isPass = true; 53 53 do { 54 54 String verificationCode = Meth.verificationCode(); 55 55 System.out.println("请输入系统给定的验证码(忽略大小写)"); 56 56 System.out.println("验证码:"+verificationCode); 57 57 String input = scanner.next(); 58 58 if (input.equalsIgnoreCase(verificationCode)){ 59 59 isPass = false; 60 60 }else { 61 61 System.out.println("请重新输入"); 62 62 } 63 63 }while(isPass); 64 64 System.out.println("登陆成功,以下是你的预留信息"); 65 65 System.out.println("你的电话号码是" + map.get(name).getPhoneNum()); 66 66 //用户名与密码匹配,退出for循环 67 67 break; 68 68 }else { 69 69 count+=1; 70 70 if (count >=3){ 71 71 System.out.println("连续输错三次,你再也进不了系统了"); 72 72 System.exit(1); 73 73 } 74 74 System.out.println("你只有三次失误的机会,请重新输入"); 75 75 } 76 76 } 77 77 78 78 } else { 79 79 System.out.println("没有这个用户,需要先注册,才能登陆"); 80 80 //跳出本次循环,重新问是要登录还是要注册 81 81 continue ; 82 82 } 83 83 84 84 //帐号密码都正确了,退出这个循环 85 85 boo = false; 86 86 //选择2的时候,进入注册模块 87 87 } else if ("2".equals(answer)) { 88 88 //搜集用户名 89 89 String name = ""; 90 90 boolean isName = true; 91 91 do { 92 92 System.out.println("请自定义一个账号"); 93 93 name = scanner.next(); 94 94 if (name.length() >= 3) { 95 95 if (name.equals(map.containsKey(name))) { 96 96 System.out.println("已有该账号,请重新输入一个账号"); 97 97 } else { 98 98 System.out.println("该账号可用,已记录"); 99 99 isName = false; 100100 } 101101 } else { 102102 System.out.println("用户名长度不得小于3,请重新输入用户名"); 103103 } 104104 105105 } while (isName); 106106 107107 //搜集密码信息 设定一次接受用户输入的变量名 108108 String passsWords = ""; 109109 boolean isPassWord = true; 110110 do { 111111 112112 boolean pwLenth = true; 113113 //设定二次密码输入的变量名 114114 String passWords2 = ""; 115115 do { 116116 System.out.println("请输入密码"); 117117 passsWords = scanner.next(); 118118 if (passsWords.length() < 6) { 119119 System.out.println("密码长度不得小于6位"); 120120 } else { 121121 pwLenth = false; 122122 } 123123 System.out.println("请再一次输入密码"); 124124 passWords2 = scanner.next(); 125125 if (passWords2.length() < 6) { 126126 System.out.println("密码长度不得小于6位"); 127127 } else { 128128 pwLenth = false; 129129 } 130130 131131 } while (pwLenth); 132132 133133 if (!passsWords.equals(passWords2)) { 134134 System.out.println("两次输入的密码不一致,请重新输入"); 135135 //如果两次输入的密码不一致,则给isPassWord 赋值为true,以便再次循环 136136 isPassWord = true; 137137 } else { 138138 //如果两次输入的密码一致,则给isPassWord 赋值为false,以便退出循环 139139 isPassWord = false; 140140 } 141141 } while (isPassWord); 142142 143143 //搜集用户其他信息 name, passWords, phoneNum, sex 144144 System.out.println("请输入电话号码"); 145145 String phoneNum = scanner.next(); 146146 System.out.println("请输入性别,按1选择女性,其他任意字符选择男性"); 147147 Gender gender = scanner.next().equals("1") ? Gender. : Gender.; 148148 //向u5传参 149149 u5 = new User(name,passsWords, phoneNum, gender); 150150 //将获取到到用户信息放入新的map 151151 map.put(u5.getName(), u5); 152152 System.out.println("注册成功"); 153153 System.out.println("请登录"); 154154 System.out.println(); 155155 156156 //选择其他任意字符,重新循环 157157 } else { 158158 System.out.println("只能按1或者2,请重新选择"); 159159 continue; 160160 } 161161 } 162162 } 163163 }

程序入口--main方法

|--运行结果

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

ssh连接服务器

1.概述ssh是一种网络通信协议,用于计算机之间的加密登录.一般用ssh连接服务器有两种方式:密码认证与密钥认证.密码认证就是通过传统的输入密码的方式登录,密钥认证就是把产生的公钥注册到服务器后,用私钥登录,这样就可以不用每次登录输入密码.特别适合作者这种脑残记不住密码的懒人.2.密码认证密码认证登录直接在终端使用ssh

Keycloak 基本功能

Keycloak是一个致力于解决应用和服务身份验证与访问管理的开源工具。可以通过简单的配置达到保护应用和服务的目的。用户管理你的应用不需要开发登录模块,验证用户和保存用户。Keycloak开发了用户管理,登录,注册,密码策略,安全问题,二步验证,密码重置等功能。登录,注册界面所需字段都是可配置,可自定义的。用户角色,权限管理功能,用户组功能。用户

mysql用户

1\.学会能按着需求创建一个帐号2\.知道连接字符串是什么样3\.密码密码怎么恢复mysql用户权限介绍mysql用户管理 !(https://oscimg.oschina.net/oscnet/368d3c1e00a0a9515545c2962660a27a080.png)!(https://oscimg.oschin

RabbitMq增加远程访问用户

添加远程管理账户如果要从远程登录怎么做呢?处于安全考虑,guest这个默认的用户只能通过http://localhost:15672来登录,其他的IP无法直接用这个guest帐号。这里我们可以通过配置文件来实现从远程登录管理界面,只要编辑/etc/rabbitmq/rabbitmq.config文件(没有就新增),添加以下配置就可以了

PHP制作登录注册页面

用PHP制作登录和注册页面,一共6个页面,三个可视页面:登录、注册、主页,三个处理页面:验证、添加用户、清除退出注册<!这是注册页面d&z2z.php,用户可以提交用户名和密码进行注册,点击注册按钮提交给d&z4add.php页面处理<!doctypehtml<html<head