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:注册失败,提醒用户是否继续运行效果
在这里插入图片描述

发布了49 篇原创文章 · 获赞 17 · 访问量 4274

猜你喜欢

转载自blog.csdn.net/weixin_42753193/article/details/105103759