一:微博注册流程
二:类的建立
1:用户实体类 ------>User
2:用户操作类(注册登入) ------>UserManager
3:用户信息验证类 ------>UserVerification
4:用户测试类 ------>Test
三:HashSet判断对象是否相同(本节课重点)
①:未重写equles和hashCode方法
②:重写equles和hashCode方法和toString方法
备注:在判断HashSet对象是否相同,通过equles和hashCode二者返回值确定,二者都返回为true表示该集合不存在该对象,可以进行add方法的添加,add方法底层是利用Map集合下的put方法进行对象的添加(HashSet集合底层是通过Map集合实现),所以在开发中采用重写eaules和hashCode方法,重写toString()方法用于用户信息输出。
四:代码详情
1:User类
package Microblogging;
/*
* 用户实体类
*/
public class User {
//用户名
private String userName;
//用户密码
private String pwd;
//生日
private String birthday;
//手机号
private String telNumber;
//邮箱
private String email;
//扩展属性:确认密码
private String rePwd;
//有参构造函数
public User(String userName,String pwd,String date,String telNumber,String email)
{
setUserName(userName);
setPwd(pwd);
setBirthday(date);
setTelNumber(telNumber);
setEmail(email);
}
//无参构造函数
public User() {
}
//属性访问器
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String str) {
this.birthday = str;
}
public String getTelNumber() {
return telNumber;
}
public void setTelNumber(String telNumber) {
this.telNumber = telNumber;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRePwd() {
return rePwd;
}
public void setRePwd(String rePwd) {
this.rePwd = rePwd;
}
//重写toString()方法进行用户信息输出
public String toString(){
return "用户信息:\r姓名:"+getUserName()+"\r生日:"
+getBirthday()+"\r邮箱:"+getEmail()+"\r手机号:"+getTelNumber()+"\r用户密码:"+getPwd();
}
//重写hashCode方法
public int hashCode(){
return userName.hashCode();
}
//重写equals方法
public boolean equals(Object obj) {
//判断是否是同一个对象
if (this==obj) {
return true;
}
//判断对象是否为空,为空直接返回false,判断对象是否是User对象
if (obj==null||getClass()!=obj.getClass()) {
return false;
}
//将对象强制转换为User对象
User other=(User)obj;
//判断用户名是否为空
if (userName==null) {
if (other.userName!=null) {
return false;
}
}else if (!userName.equals(other.userName)) {
return false;
}
return true;
}
}
2:UserManager类
package Microblogging;
import java.util.HashSet;
/*
* 用户操作类
*/
public class UserManager {
public static HashSet<User> USER_DATA=new HashSet<User>();//用户数据
public UserManager(HashSet<User>USER_DATA){
UserManager.USER_DATA=USER_DATA;
}
//用户注册
public boolean UserRegistraton(User user) {
//用户验证
if (user!=null) {
//创建用户
if (!USER_DATA.add(user)) {
System.out.println("注册失败,用户重复!");
return false;
}
System.out.println("注册成功!");
USER_DATA.add(user);
return true;
}else {
return false;
}
}
}
3:UserVerification类
package Microblogging;
/*
* 用户信息验证类
*
*/
public class UserVerification {
//验证用户密码
public static Boolean VerifyPwd(User user) {
if (!user.getRePwd().equals(user.getPwd())) {
System.out.println("原密码和确认密码不一致!");
return false;
}
return true;
}
//验证生日
public static boolean VerifyBirthday(User user) {
if (user.getBirthday().toString().length()!=10) {
System.out.println("生日长度不满足10!");
return false;
}else{
for(int i=0;i<user.getBirthday().toString().length();i++){
Character thisChar=user.getBirthday().toString().charAt(i);
//验证第四位和第七位是否是符号:"-"
if (i==4||i==7) {
if (!(thisChar=='-')) {
System.out.println("第四位和第七位不是符号:-!");
return false;
}
}else {
//验证除了第4位,和第7位的字符是否是0-9的数字
if (!(Character.isDigit(thisChar))) {
System.out.println("除了第4位,和第7位的字符不是0-9的数字!");
return false;
}
}
}
}
return true;
}
//手机号判断
public static boolean VerifyTelNumber(User user) {
if (user.getTelNumber().length()!=11) {
//手机号长度不等于11位
System.out.println("手机号长度不等于11位!");
return false;
//首位必须为:13 15 17 18
}else if (!(user.getTelNumber().startsWith("13"))&&!(user.getTelNumber().startsWith("15"))
&&!(user.getTelNumber().startsWith("17"))&&!(user.getTelNumber().startsWith("18"))) {
System.out.println("手机号前二位不为13 15 17 18 !");
return false;
}
return true;
}
//邮箱判断
public static boolean VerifyEmail(User user) {
if(!user.getEmail().contains("@")){
System.out.println("邮箱里没包含@!");
return false;
}
return true;
}
}
4:Test类
package Microblogging;
import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;
public class Test {
//用户数据
private static HashSet<User> USER_DATA=new HashSet<User>();
//用户操作类
private static UserManager objuserManager=new UserManager(USER_DATA);
//用户验证类
private static UserVerification userVerfi=new UserVerification();
//输入类
private static Scanner scanner=new Scanner(System.in);
//用户类
static User objuser;
@SuppressWarnings("resource")
public static void main(String[] args) {
//初始化部分
initData();
//接受用户输入信息
UserInput();
while(true){
//注册
if (!objuserManager.UserRegistraton(objuser)) {
//注册失败
System.out.println("你是否继续注册:0:不,1:是");
if (new Scanner(System.in).nextInt()==0) {
break;
}
//接受用户输入信息
UserInput();
if (objuserManager.UserRegistraton(objuser)) {
break;
}
}else {
//注册成功
break;
}
}
System.out.println("----------当前集合中用户信息----------");
System.out.println(USER_DATA);
}
//初始化信息
private static void initData() {
// TODO Auto-generated method stub
User user=new User("张三","zq,123",new Date().toString(),"18618121193","zhouqi@itcast.cn");
USER_DATA.add(user);
}
//用户信息输入
@SuppressWarnings("static-access")
private static void UserInput() {
//创建对象
objuser=new User();
//输入用户名
inputUserName(scanner);
//输入密码和确认密码
inputPwd(scanner);
//输入生日
inputBirthday(scanner);
//输入手机号
inpitTelNumber(scanner);
//输入邮箱
inputEmail(scanner);
}
//输入用户名
private static void inputUserName(Scanner scanner) {
// TODO Auto-generated method stub
System.out.print("请输入用户名:");
objuser.setUserName(scanner.nextLine());
}
//输入密码和确认密码
@SuppressWarnings("static-access")
private static void inputPwd(Scanner scanner) {
// TODO Auto-generated method stub
System.out.print("请输入密码:");
objuser.setPwd(scanner.nextLine());
System.out.print("确认密码:");
objuser.setRePwd(scanner.nextLine());
while (true) {
if (userVerfi.VerifyPwd(objuser)) {
//密码和确认密码正确
break;
}
System.out.print("请重新输入密码:");
objuser.setPwd(scanner.nextLine());
System.out.print("请重新输入确认密码:");
objuser.setRePwd(scanner.nextLine());
}
}
//输入出生日期
@SuppressWarnings("static-access")
private static void inputBirthday(Scanner scanner) {
// TODO Auto-generated method stub
System.out.print("出生日期:");
while (true) {
objuser.setBirthday(scanner.nextLine());
if (userVerfi.VerifyBirthday(objuser)) {
break;
}
System.out.print("请重新输入生日:");
}
}
//输入手机号
@SuppressWarnings("static-access")
private static void inpitTelNumber(Scanner scanner) {
// TODO Auto-generated method stub
System.out.print("手机号码:");
while (true) {
objuser.setTelNumber(scanner.nextLine());
if (userVerfi.VerifyTelNumber(objuser)) {
break;
}
System.out.print("请重新输入手机号码:");
}
}
//输入邮箱
@SuppressWarnings("static-access")
private static void inputEmail(Scanner scanner) {
// TODO Auto-generated method stub
System.out.print("邮箱:");
while(true){
objuser.setEmail(scanner.nextLine());
if (userVerfi.VerifyEmail(objuser)) {
break;
}
System.out.print("请重新输入邮箱:");
}
}
}
五:运行效果
1:注册成功运行效果
2:数据验证效果
3:注册失败,提醒用户是否继续运行效果