java案例22:模拟用户注册

思路:

与微信、淘宝类似,
都需要一个账户才可以登录,而账户需要注册才可以获取。

编写程序模拟用户注册。
用户输入用户名、
密码、确认密码、
生日(格式:yyyy-mm-dd)、
手机号(长度为11位)且仅支持13/15/17/19开头的手机号
邮箱(包含@符号)
判断信息正确后,验证用户是否重复
重复给出相应提示
如不重复则注册成功,将信息存入集合中

使用HashSet集合实现

代码:

代码结构:

User类:

package base.base022;

import java.util.Date;
import java.util.Objects;

public class User {
   private String username;
   private String password;
   private Date birthday;
   private String tel;
   private String email;

    public User() {
    }

    public User(String username, String password, Date birthday, String tel, String email) {
        this.username = username;
        this.password = password;
        this.birthday = birthday;
        this.tel = tel;
        this.email = email;
    }

    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 getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        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 Objects.equals(username, user.username) &&
                Objects.equals(password, user.password) &&
                Objects.equals(birthday, user.birthday) &&
                Objects.equals(tel, user.tel) &&
                Objects.equals(email, user.email);
    }

    @Override
    public int hashCode() {
        return Objects.hash(username, password, birthday, tel, email);
    }


}

测试类:

package base.base022;

/*
模拟用户注册

与微信、淘宝类似,
都需要一个账户才可以登录,而账户需要注册才可以获取。

编写程序模拟用户注册。
用户输入用户名、
密码、确认密码、
生日(格式:yyyy-mm-dd)、
手机号(长度为11位)且仅支持13/15/17/19开头的手机号
邮箱(包含@符号)
判断信息正确后,验证用户是否重复
重复给出相应提示
如不重复则注册成功,将信息存入集合中

使用HashSet集合实现



 */

import java.sql.SQLOutput;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;

public class Test22 {
    public static void main(String[] args) throws ParseException {
        HashSet<User> hs = new HashSet<>();
        hs.add(new User("夏习清","123",new Date(),"19512341234","123@qq.com"));

        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 tel = sc.nextLine();
        System.out.println("请输入邮箱:");
        String email = sc.nextLine();

        //进行相关数据判断
        int status = 0;
        if(!password.equals(repassword)){
            status = 1;
            System.out.println("两次密码不一致!");
        }
        if(!(birthday.charAt(4)=='-'&&birthday.charAt(7)=='-')){
            status = 1;
            System.out.println("生日格式不正确!");
        }
        if(!(tel.length() == 11)&&(tel.startsWith("13")||tel.startsWith("15")||tel.startsWith("17")||tel.startsWith("19"))){
            status = 1;
            System.out.println("手机号格式不正确!");
        }
        if(!email.contains("@")){
            status = 1;
            System.out.println("邮箱格式不正确!");
        }

        if(status == 0){

            //封装成对象
            //生日的数据是以字符串的形式接受的,User类中birthday类型是date,所以需要将字符串类型转化为data对象
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(birthday);

            User user = new User(username,password,date,tel,email);

            //如果user已存在,添加失败,返回false
            //如果user不存在,添加成功,返回true;
            boolean b = hs.add(user);
            if(b == true){
                System.out.println("注册成功!");
            }else{
                System.out.println("注册失败!");
            }

        }else{
            System.out.println("注册失败!");
        }

    }
}