4.题目二 模拟用户注册软件
4.1 任务描述
编写一个程序,模拟用户注册的功能。用户输入用户名、密码、确认密码、生日(格式为yyyy--mm--dd为正确)、手机号(手机号长度为11位,并且以13、15、17、18为开头的手机号为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息正确与否,验证用户名是否重复,重复则给出相应提示,如果不重复则注册成功。
4.2 设计思路
首先明确思路,将本程序分为3个类,分别负责定义用户的各种属性、判断用户的信息是否合法、控制输入用户信息的提示和接收.
4.3 代码
User类
package 模拟用户注册软件;
import java.util.Date;
import java.util.Objects;
public class User {//属性信息
private String userName;
private String password;
private Date birthday;
private String telNumber;
private String email;
public User(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;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;//判断是否相等
if (o == null || getClass() != o.getClass()) return false;//判断对象是否为空和类是否为这个类
User user = (User) o;//强制转换类型
return userName.equals(user.userName);//只针对用户名判断
}
@Override
public int hashCode() {
return userName.hashCode();
}
}
CheckInfo类
package 模拟用户注册软件;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
public class CheckInfo {
public static HashSet<User> USER_DATA = new HashSet<>();
public CheckInfo(HashSet<User> 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();
int state = 1 ;
if (!password.equals(repassword)){//判断两次密码是否相同
result.append("两次密码输入不一致!\n");
state = 2 ;
}
if (birthday.length()!=10){//判断生日长度
result.append("生日格式不正确!\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("生日格式不正确!\n");
state = 2;
}
}
else {
if (!(Character.isDigit(thisChar))){//判断是否是数字.
result.append("生日格式不正确!\n");
state = 2;
}
}
}
}
if (phone.length()!=11){//手机号长度判断
result.append("手机号码不正确!\n");
state = 2 ;
}
else if ( !(phone.startsWith("13")||phone.startsWith("15")||phone.startsWith("17")
||phone.startsWith("18"))){//手机号开头判断
result.append("手机号码不正确!\n");
state = 2 ;
}
if ( !email.contains("@")){//判断是否有这个字符?
result.append("邮箱不正确!\n");
state = 2;
}
if ( state == 1){//格式正确
DateFormat format = new SimpleDateFormat("yyyy-mm-dd");
Date dateBirthday= null ;//定义一个日期类
try {//尝试转换格式.
dateBirthday = format.parse(birthday);
}
catch (ParseException e){//打印错误信息.
e.printStackTrace();
}
User newUser = new User(userName,repassword,dateBirthday,phone,email);
if ( !USER_DATA.add(newUser)){//加入集合
result.append("用户重复");
state = 2 ;
}
if(state == 1){
result.append("注册成功!");
}
}
return result.toString();
}
}
UserRegister类
package 模拟用户注册软件;
import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;
public class UserRegister {
public static HashSet<User> USER_DATA= new HashSet<>();
public static void main(String[] args){
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();
initDate();
CheckInfo checkInfo = new CheckInfo(USER_DATA);
String result=checkInfo.CheckAction(userName,password,repassword,birthday,telNumber,email);
System.out.println("注册结果:"+result);
}
private static void initDate(){
User user1=new User("张三","12311",new Date(),"15869745858","1213@QQ.COM");
User user2=new User("李四","156456",new Date(),"13869787858","lisi@QQ.COM");
USER_DATA.add(user1);
USER_DATA.add(user2);
}
}
具体思路见:java课程设计实验报告(1).doc-Java文档类资源-CSDN文库
https://download.csdn.net/download/kilig_CSM/72356785
包含任务描述、设计思路、实现过程、调试过程及运行结果 .内含运行截图.

浙公网安备 33010602011771号