【案例5-3】 模拟用户注册
【案例介绍】
1.任务描述
互联网为我们提供了巨大的便利,如微信带给我们的视频、淘宝带给我们便利的购物等,但这些APP都需要有一个账户才可以登录,而账户需要注册可以获取。
本例要求编写一个程序,模拟用户注册。用户输入用户名、密码、确认密码、生日(格式为yyyy–mm—dd为正确)、手机号(手机号长度为11位,并且以13、15、17、18为开头的手机号为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息正确后,验证用户是否重复,重复则给出相应提示,如果不重复则注册成功。案例要求使用HashSet集合实现。

package com.j2se.myInstances.example6_3;import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;public class UserRegister {private static HashSet<User> USER_DATA = new HashSet<User>();public static void main(String[] a) {initData();Scanner sc = new Scanner(System.in);System.out.println("用户名:");String uname = sc.next();System.out.println("密码:");String upass = sc.next();System.out.println("重复密码:");String repass = sc.next();System.out.println("邮箱:");String email = sc.next();System.out.println("生日:");String birthdate = sc.next();System.out.println("手机号:");String pnumber = sc.next();// 校验用户信息,返回登录状态信息CheckInfo checkInfo = new CheckInfo(USER_DATA);String str = checkInfo.checkAction(uname, upass, repass, email, pnumber, birthdate);System.out.println("注册结果:" + str);}// 初始化数据,创建两个已存在的用户信息private static void initData() {User user = new User("James", "js123", "js@lake.cn","18897779984", new Date().toString());User user2 = new User("Harden", "hd123", "hd@hou.cn","13454647878", new Date().toString());USER_DATA.add(user);USER_DATA.add(user2);}}
package com.j2se.myInstances.example6_3;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;public class CheckInfo {public static HashSet<User> USER_DATA = new HashSet<>();public CheckInfo(HashSet<User> USER_DATA) {this.USER_DATA = USER_DATA;}// 校验用户信息,返回登录状态信息public String checkAction(String uname, String upass, String repass, String email,String uphone, String birthdate) {StringBuilder result = new StringBuilder();int state = 1; // 1: 成功,2:失败// 密码判断if (!upass.equals(repass)) {result.append("两次输入密码不一致\n");state = 2;}// 生日判断if (birthdate.length() != 10) {result.append("生日格式错误!\n");state = 2;} else {for (int i = 0; i < birthdate.length(); i++) {Character c = birthdate.charAt(i);if (i == 4 || i == 7) {if (c != '-') {result.append("生日格式错误!\n");state = 2;}}}}// 手机号判断if (uphone.length() != 11) {result.append("手机号码无效!, 必须是11位\n");state = 2;} else if (!uphone.startsWith("13") || !uphone.startsWith("15") || !uphone.startsWith("17") || !uphone.startsWith("18")) {result.append("手机号码不正确!\n");state = 2;}// 邮箱判断// 判断邮箱地址,默认不带@符号的邮箱为无效邮箱if (!email.contains("@")) {result.append("邮箱格式不正确!\n");state = 2;}// 如果以上信息校验无误,则将新用户加入到集合if (state == 1) {//            格式化日期返回Date对象
//             定义日期格式DateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date dateBirthday = null;try {dateBirthday = format.parse(birthdate);} catch (ParseException e) {e.printStackTrace();}User user = new User(uname, repass, email, uphone, birthdate);if (!USER_DATA.add(user)) {result.append("用户已存在!\n");state = 2;}if (state == 1) result.append("用户已存在!\n");}return result.toString();}}
package com.j2se.myInstances.example6_3;public class User {private String username;private String password;private String email;private String phoneNumber;private String birthdate;public User() {}public User(String username, String password, String email, String phoneNumber, String birthdate) {this.username = username;this.password = password;this.email = email;this.phoneNumber = phoneNumber;this.birthdate = birthdate;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;User user = (User) o;if (username != null ? !username.equals(user.username) : user.username != null) return false;if (password != null ? !password.equals(user.password) : user.password != null) return false;if (email != null ? !email.equals(user.email) : user.email != null) return false;if (phoneNumber != null ? !phoneNumber.equals(user.phoneNumber) : user.phoneNumber != null) return false;return birthdate != null ? birthdate.equals(user.birthdate) : user.birthdate == null;}@Overridepublic int hashCode() {return username.hashCode();  //  以用户名作为是否重复的依据}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}public String getBirthdate() {return birthdate;}public void setBirthdate(String birthdate) {this.birthdate = birthdate;}
}

Java 【案例5-3】 模拟用户注册相关推荐

  1. 【java案例】:模拟物流快递系统程序设计

    文档下载链接:https://download.csdn.net/download/oxygen23333/86770543 案例题目:         模拟物流快递系统程序设计(面向对象的程序设计) ...

  2. java案例--利用抽象类模拟加油站消费

    系统需求 某加油站推出了2种支付卡,一种是预存10000的金卡,后续加油享受8折优惠,                                             一种是预存5000的银卡 ...

  3. java 模拟用户注册

    模拟用户注册,用户输入用户名,密码,确认密码,生日(格式为yyyy-MM-dd)手机号(长度为11位,并且以13,15,17,18开头的手机号码为正确)之后,判断信息正确后,验证用户是否重复,重复则给 ...

  4. java案例----用户注册--发送邮件并激活/发送邮件验证码

    java案例----用户注册-发送邮件并激活/发送邮件验证码 一.前期准备 1.准备两个邮箱账号(一个发邮件,一个收邮件) 1.1)登录需要发送邮件的QQ邮箱,找到设置项 1.2)然后在账户栏下,找到 ...

  5. java案例-实现斗地主游戏案例

    java案例-实现斗地主游戏案例 1.需求分析: 模拟斗地主游戏,利用集合,Map实现斗地主的逻辑,并且可以看分派好的牌 2.具体实现: (1)在牌盒(字符串数组)存储四个花色: String[] c ...

  6. java期末课程设计----模拟银行业务(带界面)

    java期末课程设计----模拟银行业务(带界面) 本项目包含存款,取款,查询,转账,修改密码等功能的银行管理系统的功能(不涉及数据库).大致流程图如下: 一.设计思路 本系统采用JAVA语言并在ec ...

  7. java案例——字符串反转

    java案例--字符串反转 1.需求: 定义一个方法,实现字符串反转.键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入abc,输出结果cba 2.思路: 1.键盘录入一个字符串,用S ...

  8. Java案例——字符串拼接

    Java案例--字符串拼接案例 1.案例需求 定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果 例如,数字为int[] arr = {1,2,3}; ...

  9. java闰年的年份,Java案例-判断给定年份是闰年

    专注学子高考志愿填报,分享你所不知道信息. Java案例-判断给定年份是闰年 案例描述 编写程序,判断给定的某个年份是否是闰年. 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则 ...

最新文章

  1. 1.2.2一个数可以有多少种用连续素数之和表示
  2. OKR怎么使用比较好?
  3. 磁盘分区标为活动的方法及取消磁盘分区标为活动的方法
  4. php本页面调试报错配置
  5. 进程线程007 进程挂靠与跨进程读写内存
  6. SpringMVC中 -- @RequestMapping的作用及用法
  7. 关于手机端CSS Sprite图标定位的一些领悟
  8. OpenCV-CL: OpenCL加速计算机视觉技术
  9. vba 执行网页javascript_JavaScript秘密笔记 第一集
  10. python实例 79,80
  11. 转: SQLite内建函数表
  12. int 和String之间的互转
  13. velocity模板使用建议
  14. CentOS 配置网络yum源
  15. 【九天教您南方cass 9.1】 13 等高线法计算土方量
  16. linux Ubuntu使用Eclipse菜单栏不见了解决方法
  17. BZOJ 3786: 星系探索 ETT
  18. 项管行知02--工作环境
  19. 高防服务器防御中“清洗”是什么意思
  20. 实验 Linux下C工具应用

热门文章

  1. 模拟电路笔记(照片)
  2. 《The One!团队》:BETA Scrum metting1
  3. 电竞DOTA2数据API接口 - 【比赛详情】API调用示例代码
  4. IT小白如何从职场新人到行业翘楚,看一个IT高管的发展路线
  5. 跟着大宇学MySQL------目录帖
  6. 计算机网络课程背景,课程发展的历史沿革
  7. 扫雷的一个简单实现 - C语言
  8. DENdb:human增强子数据库
  9. 数据中心云工作流任务的能效调度算法研究(1)
  10. Tokyo Tyrant