【案例 6 您所在的位置:网站首页 以m开头的邮箱格式 【案例 6

【案例 6

2024-04-07 09:33| 来源: 网络整理| 查看: 265

【案例介绍】

1.任务描述 互联网为我们提供了巨大的便利,如微信带给我们的视频、淘宝带给我们便利的购物等,但这些 APP 都需要有一个账户才可以登录,而账户需要注册可以获取。本例要求编写一个程序,模拟用户注册。用户输入用户名、密码、确认密码、生日(格式为 yyyy–mm—dd 为正确)、手机号(手机号长度为 11 位,并且以13、15、17、18 为开头的手机号为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息正确后,验证用户是否重复,重复则给出相应提示,如果不重复则注册成功。案例要求使用 HashSet 集合实现。

2.运行结果 略

【案例任务】 学会分析“模拟微信用户注册”任务的实现思路。根据思路独立完成“模拟微信用户注册”任务的源代码编写、编译及运行。掌握 HashSet 集合常用方法的使用及存储数据的流程。 【案例思路】

(1) 为了便于存储用户的信息。需要创建一个用户类,在类中重写其中的 HashCode()方法,令其返回用户的额哈希值,再重写 equals()方法,来比较对象的用户属性是否相等。

(2) 创建一个用户注册类来模拟用户注册信息,该类中可以用 HashSet 集合创建一个数据列表,然后向列表中添加两条初始用户信息。

(3) 从控制台获取用户填写信息,通过 Scanner 类的 nextline()方法实现,获取后,需要将获取的数据进行校验。

(4) 单独创建一个校验类,在该类中实现校验用户输入信息的方法。校验结束后,如果效验结果错误就直接返回错误信息,这里可以分别声明一个校验结果的变量和一个校验状态的变量。校验结果变量用于存储提示信息,校验状态变量用于存储结果的判断标识。

(5)当用户输入的信息不满足规定的格式时,需要修改变量的状态并且存储错误信息。

(6) 判断校验状态,如果所有信息都通过校验,则将用户信息创建为用户对象,通过将对象添加到用户列表返回结果来判断用户是否重复,并记录下返回结果信息。

【案例实现】 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import java.util.Scanner; //用户信息 class User { private String userName; // 用户名 private String password; // 密码 private Date birthday; // 生日 private String telNumber; // 手机号码 private String email; // 邮箱 public User() { } 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; } // 重写 hashCode 与 equals 方法 @Override public int hashCode() {// 重写 hashCode 方法,以用户名作为是否重复的依据 return userName.hashCode(); } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj instanceof User) { User user = (User) obj; return user.userName.equals(this.userName); } return false; } } class CheckInfo { public static HashSet USER_DATA = new HashSet(); // 用户数据 public CheckInfo(HashSet USER_DATA) { this.USER_DATA = USER_DATA; } // 校验用户信息,返回登录状态信息 public String checkAction(String userName, String password, String rePassword, String birthday, String phone, String email) { String result = ""; // 校验用户名 if (userName == null || userName.equals("")) { result = "用户名不能为空"; return result; } // 校验密码 if (password == null || password.equals("")) { result = "密码不能为空"; return result; } // 校验两次密码是否一致 if (!password.equals(rePassword)) { result = "两次输入的密码不一致"; return result; } // 校验生日,格式为 yyyy--mm—dd 为正确 if (birthday == null || birthday.equals("")) { result = "生日不能为空"; return result; } else if (birthday.length() != 10) { result = "生日格式不正确"; return result; } else if (birthday.charAt(4) != '-' || birthday.charAt(7) != '-') { result = "生日格式不正确"; return result; } // 校验手机号码,手机号长度为 11 位,并且以 13、15、17、18 为开头的手机号为正确 if (phone == null || phone.equals("")) { result = "手机号不能为空"; return result; } else if (phone.length() != 11) { result = "手机号长度不正确"; return result; } else if (!(phone.startsWith("13") || phone.startsWith("15") || phone.startsWith("17") || phone.startsWith("18"))) { result = "手机号格式不正确"; return result; } // 校验邮箱 if (email == null || email.equals("")) { result = "邮箱不能为空"; return result; } else if (!email.contains("@")) { result = "邮箱格式不正确"; return result; } //字符串转时间Date Date date = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { date = sdf.parse(birthday); } catch (ParseException e) { e.printStackTrace(); } // 校验用户名是否重复 User user = new User(userName, password, date, phone, email); if (USER_DATA.contains(user)) { result = "用户名已存在"; return result; } // 校验成功,返回注册成功信息 result = "注册成功!"; return result; } } public class UserRegister { public static HashSet USER_DATA = new HashSet(); // 用户数据 public static void main(String[] args) { initData(); Scanner scanner = new Scanner(System.in); System.out.println("请输入用户名:"); String userName = scanner.nextLine(); System.out.println("请输入密码:"); String password = scanner.nextLine(); System.out.println("请再次输入密码:"); String rePassword = scanner.nextLine(); System.out.println("请输入生日:"); String birthday = scanner.nextLine(); System.out.println("请输入手机号:"); String phone = scanner.nextLine(); System.out.println("请输入邮箱:"); String email = scanner.nextLine(); CheckInfo checkInfo = new CheckInfo(USER_DATA); String result = checkInfo.checkAction(userName, password, rePassword, birthday, phone, email); System.out.println(result); } // 初始化数据,创建两个已存在的用户信息 private static void initData() { //字符串转时间Date Date date = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { date = sdf.parse("1992-01-01"); } catch (ParseException e) { e.printStackTrace(); } USER_DATA.add(new User("迪丽热巴", "123456", date, "13111111111", "[email protected]")); USER_DATA.add(new User("吴宣仪", "123456", date, "13111111111", "[email protected]")); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有