java案例22:模拟用户注册
思路:
与微信、淘宝类似, 都需要一个账户才可以登录,而账户需要注册才可以获取。 编写程序模拟用户注册。 用户输入用户名、 密码、确认密码、 生日(格式:yyyy-mm-dd)、 手机号(长度为11位)且仅支持13/15/17/19开头的手机号 邮箱(包含@符号) 判断信息正确后,验证用户是否重复 重复给出相应提示 如不重复则注册成功,将信息存入集合中 使用HashSet集合实现
代码:
代码结构:

User类:
package base.base022;
import java.util.Date;
import java.util.Objects;
public class User {
private String username;
private String password;
private Date birthday;
private String tel;
private String email;
public User() {
}
public User(String username, String password, Date birthday, String tel, String email) {
this.username = username;
this.password = password;
this.birthday = birthday;
this.tel = tel;
this.email = email;
}
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 Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(username, user.username) &&
Objects.equals(password, user.password) &&
Objects.equals(birthday, user.birthday) &&
Objects.equals(tel, user.tel) &&
Objects.equals(email, user.email);
}
@Override
public int hashCode() {
return Objects.hash(username, password, birthday, tel, email);
}
}
测试类:
package base.base022;
/*
模拟用户注册
与微信、淘宝类似,
都需要一个账户才可以登录,而账户需要注册才可以获取。
编写程序模拟用户注册。
用户输入用户名、
密码、确认密码、
生日(格式:yyyy-mm-dd)、
手机号(长度为11位)且仅支持13/15/17/19开头的手机号
邮箱(包含@符号)
判断信息正确后,验证用户是否重复
重复给出相应提示
如不重复则注册成功,将信息存入集合中
使用HashSet集合实现
*/
import java.sql.SQLOutput;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;
public class Test22 {
public static void main(String[] args) throws ParseException {
HashSet<User> hs = new HashSet<>();
hs.add(new User("夏习清","123",new Date(),"19512341234","123@qq.com"));
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
System.out.println("请再次确定密码:");
String repassword = sc.nextLine();
System.out.println("请输入生日:");
String birthday = sc.nextLine();
System.out.println("请输入手机号:");
String tel = sc.nextLine();
System.out.println("请输入邮箱:");
String email = sc.nextLine();
//进行相关数据判断
int status = 0;
if(!password.equals(repassword)){
status = 1;
System.out.println("两次密码不一致!");
}
if(!(birthday.charAt(4)=='-'&&birthday.charAt(7)=='-')){
status = 1;
System.out.println("生日格式不正确!");
}
if(!(tel.length() == 11)&&(tel.startsWith("13")||tel.startsWith("15")||tel.startsWith("17")||tel.startsWith("19"))){
status = 1;
System.out.println("手机号格式不正确!");
}
if(!email.contains("@")){
status = 1;
System.out.println("邮箱格式不正确!");
}
if(status == 0){
//封装成对象
//生日的数据是以字符串的形式接受的,User类中birthday类型是date,所以需要将字符串类型转化为data对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birthday);
User user = new User(username,password,date,tel,email);
//如果user已存在,添加失败,返回false
//如果user不存在,添加成功,返回true;
boolean b = hs.add(user);
if(b == true){
System.out.println("注册成功!");
}else{
System.out.println("注册失败!");
}
}else{
System.out.println("注册失败!");
}
}
}