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文库icon-default.png?t=LBL2https://download.csdn.net/download/kilig_CSM/72356785

 包含任务描述、设计思路、实现过程、调试过程及运行结果 .内含运行截图.

posted @ 2022-12-13 12:15  冷月半明  阅读(64)  评论(0)    收藏  举报  来源