Java-模擬新浪微博用戶註冊功能實現(控制檯程序)

一:微博註冊流程

在這裏插入圖片描述

二:類的建立

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:註冊失敗,提醒用戶是否繼續運行效果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章