微博注册练习

情景任务:用HashSet集合实行微博用户注册程序,假设当用户输入用户名、密码、确认密码、生日(输入格式为yyyy-mm-dd为正确)、邮箱(包含@为正确)信息之后,判断信息输入是否正确,正确验证用户是否重复注册,如果不是重复注册则注册成功。

方法一:

import java.util.*;
//面板类
public class Panel {
	public static void main(String[] args) {
		HashSet hs=new HashSet();
		User user=new User();
		Veri ver=new Veri();		//
		Scanner sc=new Scanner(System.in);
		while(true) {
			System.out.println("1.注册");
			System.out.println("2.退出");
			System.out.println("请输入如你的操作:");
			int choose=sc.nextInt();
			switch(choose) {
			case 1:
				System.out.println("----微博注册-----");
				System.out.println("");
				System.out.println("请输入用户名:");
				String name=sc.next();
				user.setName(name);  		//姓名
				ver.verificaPa(user);		//密码
				ver.verificapNumber(user);		//手机号
				ver.verificaBir(user);			//生日
				ver.vertificaMail(user);		//邮箱
				System.out.println("---------------");
				hs.add(user);
				break;
			case 2:
				System.out.println("退出系统!");
				exit();
				break;
			default:
				System.out.println("你输入有误!");
				continue;
			}
		}
		
	}
	public static void exit() {
		System.exit(0);
	}
}


import java.util.*;
//模拟微博用户注册
class User{
	private String name;
	private String password;
	String pass="111";
	private String pNumber;
	private String birthday;
	private String mailBox;
	
	public int hashCode() {
		return pNumber.hashCode();
	}
	public boolean equals(Object obj) {
		if(this==obj) {
			return true;
		}
		if(!(obj instanceof User)) {
			return false;
		}
		User user=(User ) obj;
		boolean b=this.name.equals(user.pNumber);
		return b;
	}
	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getpNumber() {
		return pNumber;
	}
	public void setpNumber(String pNumber) {
		this.pNumber = pNumber;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public String getMailBox() {
		return mailBox;
	}
	public void setMailBox(String mailBox) {
		this.mailBox = mailBox;
	}
}

import java.util.*;
//验证类
public class Veri {
	Scanner sc=new Scanner(System.in);
//	验证第二次输入密码与第一次是不是一致的
	public void verificaPa(User user) {
	while(true) {
		System.out.println("请输入密码:");
		String password=sc.next();
		System.out.println("请重复输入密码:");
		String passwordTwo=sc.next();
		if(passwordTwo.equals(password)) {
//			System.out.println("两次输入密码一样");
			user.setPassword(password);
			break;
		}else {
			System.out.println("第一次输入密码和第二次输入密码不一样");
			continue;
		}
	}
	}
//	验证电话号码,以13、15、17、18开头格式
	public void verificapNumber(User user) {
		while(true) {
			System.out.println("手机号码:");
			String pNumber=sc.next();
			if(pNumber.length()==11) {
				if(pNumber.startsWith("13")||pNumber.startsWith("15")
						||pNumber.startsWith("17")||pNumber.startsWith("18")) {
//				System.out.println("zz");
				user.setpNumber(pNumber);
				break;
				}else {
					System.out.println("电话号码格式输入有误");
					continue;
				}
			}else {
				System.out.println("电话号码位数有问题");
			}
			
		}
	}
//	验证生日,格式yyyy-mm-dd
	public void verificaBir(User user) {
		while(true) {
			System.out.println("输入出生日期:");
			String birthday=sc.next();
			if(birthday.charAt(4)=='-'&&birthday.charAt(7)=='-') {
				user.setBirthday(birthday);
				System.out.println("birth");
				break;
			}else {
				System.out.println("输入格式为:yyyy-mm-dd,请重新");
				continue;
			}
		}
		}
//	验证邮箱
	public void vertificaMail(User user) {
		System.out.println("电子邮箱:");
		String mailBox=sc.next();
		
		if(mailBox.contains("@")) {
			user.setMailBox(mailBox);
			System.out.println("mailBox");
		}else {
			System.out.println("输入的邮箱有问题");
		}
	}
}

方法二:

package daya4_Original;
import java.util.*;
//用户类
public class User_a {
		private String userName;	//用户名
		private String password;	//密码
		private Date birthday;		//生日
		private String telNumber;	//手机号码
		private String email;		//邮箱
		public User_a() {
			
		}
		public User_a(String userName,String password,
				Date birthday,String telNumber,String email) {
			this.userName=userName;
			this.password=password;
			this.birthday=birthday;
			this.telNumber=telNumber;
			this.email=email;
		}
//		重写hasCode equals方法
		@Override
		public int hashCode() {
			return userName.hashCode();
		}
		@Override
//		理解重写equals方法思路
		public boolean equals(Object obj) {
			if(this==obj) {		//确定地址是不是一样的
				return true;
			}
			if(obj==null) {		//判断是不是为空
				return false;
			}
			if(getClass()!=obj.getClass()) {		//判断对象是不是User类型
				return false;
			}
			User_a other=(User_a) obj;		//强制转换类型
			if(userName==null) {		//判断集合中的用户名是不是为空
				if(other.userName!=null) {		//判断对象中的用户名是不是为空
					return false;
				}
			}else if(!userName.equals(other.userName)) {		//判断用户名是否相等
				return false;
			}
			return true;
		}
		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 getTelNumber() {
			return telNumber;
		}
		public void setTelNumber(String telNumber) {
			this.telNumber = telNumber;
		}
		public String getEmail() {
			return email;
		}
		public void setEmail(String email) {
			this.email = email;
		}
		
}
package daya4_Original;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
public class CheckInfo {
	public static HashSet<User_a> USER_DATA=new HashSet<User_a>();
	
	public CheckInfo(HashSet<User_a> USER_DATA) {
		this.USER_DATA=USER_DATA;
	}
//	校验用户信息,返回登录状态信息

	public String checkAction(String userName,
			String password,String rePassword, String birthday,String phone,String email) {
		StringBuilder result=new StringBuilder();
//		1代表成功,2代表失败
		int state=1;
//		密码判断
		if(!password.equals(rePassword)) {
			result.append("两次输入的密码不一致!\r\n");
			state=2;
		}
//		生日判断
		if(birthday.length()!=10) {
			result.append("生日格式不正确!\r\n");
			state=2;
		}else {
			for(int i=0;i<birthday.length();i++) {
				Character thisChar=birthday.charAt(i);
				if(i==4||i==7) {
					if(!(thisChar=='-')) {
						result.append("生日格式不正确!\r\n");
						state=2;
					}
				}else {
					if(!(Character.isDigit(thisChar))) {
						result.append("生日格式不正确!\\r\\n");
						state=2;
					}
				}
			}
		}
//		手机号判断
		if(phone.length()!=11) {
			result.append("手机号码不正确!\r\n");
			state=2;
		}else if(!(phone.startsWith("13")||phone.startsWith("15")||
				phone.startsWith("17")||phone.startsWith("18"))) {
			result.append("手机号码不正确!\r\n");
			state=2;
		}
//		邮箱判断
		if(!email.contains("@")) {
			result.append("邮箱不正确!\\r\\n");
			state=2;
		}
//		如果以上信息校验正确,则将新用户加入集合
		if(state==1) {
//			格式化日期返回Date对象
			DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
			Date dateBirthday=null;
			try {
				dateBirthday=format.parse(birthday);
				
			}catch(java.text.ParseException e) {
				e.printStackTrace();

			}
			User_a newUser=new User_a(userName,rePassword,dateBirthday,phone,email) ;
//			将用户添加到列表中,同时根据HashSet判断用户名有没有重复
			if(!USER_DATA.add(newUser)) {
				result.append("用户重复使用!");
				state=2;
			}
			if(state==1) {
				result.append("用户注册成功!");
			}
			
		}
		return result.toString();
	}

}
package daya4_Original;
import java.util.*;
//用户注册类
public class UserRegister {
	public static HashSet<User_a> USER_DATA=new HashSet<User_a>();		//用户数据
	public static void main(String[] args) {
		initData();			//初始化用户信息
		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 telNumber=sc.nextLine();		//获取电话号码
		System.out.println("电子邮箱:");
		String email=sc.nextLine();			//获取电子邮箱
//		验证用户信息,返回登录状态信息
		CheckInfo checkInfo=new CheckInfo(USER_DATA);
		String result =checkInfo.checkAction(userName, password,
				repassword, birthday, telNumber, email);
		System.out.println("注册结果:"+result);
		
		
	}
//	初始化数据,创建两个已存在的用户信息
	private static void initData() {
		User_a user=new User_a("张正","zz,123",new Date(),
				"18810319240","zhangzheng@itcast.cn");
		User_a user2=new User_a("周琦","zq,123",new Date(),
				"18618121193","zhouqi@itcast.cn");
		USER_DATA.add(user);
		USER_DATA.add(user2);
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值