一:微博註冊流程
二:類的建立
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","[email protected]");
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:註冊失敗,提醒用戶是否繼續運行效果