1.实验内容

(1)程序编写:编写一个模拟微博用户注册的程序,要求使用HashSet集合实现。假设用户输入用户名、密码、确认密码、生日(输入格式为yyyy-MM-dd为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息输入是否正确,正确验证用户是否重复注册,如果不是重复注册则注册成功。例如,用户信息列表中已存在用户“张三”,当张三再次注册时,则输出“注册结果:用户重复!”。

2.基本要求

(1)能够使用集合类存储数据,掌握HashSet存储数据的流程和方法;

(2)能够使用常用实用类进行字符串和日期的处理;

(3)能够使用Java API文档进行自主学习。

用户校验类:

​package java1;
import java.util.HashSet;
import java.util.Scanner;
class checkAc{int check=2;int flag=0;HashSet<User> ha = new HashSet<>();public checkAc(HashSet<User> ha) {this.ha = ha;}public String checkAction(String userName, String password, String rePassword, String birthday, String telNumber, String email){Scanner sc =new Scanner(System.in);StringBuffer sb=new StringBuffer();if (!password.equals(rePassword)){sb.append("密码前后不一致");check=3;}//charAt()方法返回指定索引位置的char值。索引范围为0~length()-1for (int i = 0; i < birthday.length(); i++) {if (i==4||i==7){if (birthday.charAt(i)!='-'){flag=1;}}else {//好好看看验证字符是否为字符串的这个方法时如何用的if (!(Character.isDigit(birthday.charAt(i)))){flag=1;}}}if (flag==1){sb.append("生日格式不正确");check=3;}if (telNumber.length()!=11){System.out.println("手机号字数不够");check=3;}else {for (int i = 0; i < telNumber.length(); i++) {if (!(telNumber.startsWith("13")||telNumber.startsWith("18")||telNumber.startsWith("19"))){sb.append("手机号码格式不正确");check=3;}}}if (!email.contains("@")){sb.append("邮箱格式不符");//toString()函数用于将当前对象以字符串的形式返回check=3;}if (check==2){User newUser = new User(userName,password, rePassword,birthday, telNumber, email);if (!(ha.add(newUser))){check=3;}}if (check==2){sb.append("注册成功");}return sb.toString();//toString()方法:  将指定的数据以字符串形式返回。/*用户名,密码不做要求。密码和确认密码要相同。如果不相同,则输出,密码前后不一。生日格式必须十位,不足十位输出位数不符。除第五位和第八位是-,之外的必为数字,不符合要求则输出生日日期格式不对。电话号码必须是十一位,且是13或18或19开头的,否则输出,电话输入错误。邮箱必须带@,否则输出格式错误。*/}
}[点击并拖拽以移动]
​

用户注册类:

package java1;//用户注册类
/*
编写一个模拟微博用户注册的程序,
要求使用HashSet集合实现。
假设用户输入用户名、密码、确认密码、生日(输入格式为yyyy-MM-dd为正确)、
邮箱(包含符号“@”为正确)信息之后,判断信息输入是否正确,
正确验证用户是否重复注册,如果不是重复注册则注册成功。
例如,用户信息列表中已存在用户“张三”,当张三再次注册时,则输出“注册结果:用户重复!”。*/
public class User {String userName;String password;String rePassword;String birthday;String telNumber;String  email;public User(String userName, String password, String rePassword, String birthday, String telNumber, String email) {this.userName = userName;this.password = password;this.rePassword = rePassword;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) && password.equals(user.password) && rePassword.equals(user.rePassword) && birthday.equals(user.birthday) && telNumber.equals(user.telNumber) && email.equals(user.email);
//    }public boolean equals(Object obj) {if (this == obj)//俩对象相同return true;if (obj == null)//return false;if (getClass() != obj.getClass())//return false;User other = (User) obj;//if (userName == null) {return false;} else if (!userName.equals(other.userName))return false;return true;}//注意重写这里@Override
//    public int hashCode() {
//        return Objects.hash(userName, password, rePassword, birthday, telNumber, email);
//    }public int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((userName == null) ? 0 : userName.hashCode());return result;//result是哈希值}
}

主类,测评

package java1;
import java.util.HashSet;
import java.util.Scanner;
//注册用户类+校验
//用户从控制输入注册信息
//用校验类来判断是否格式符合并且用hashset,equals进行查重
//合格并且不重复的就存入集合。
//用户名、密码、确认密码、生日(输入格式为yyyy-MM-dd为正确)、
//邮箱(包含符号“@”为正确)
public class RegisterUser {public static void main(String[] args) {HashSet<User> us = new HashSet<>();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();checkAc ac =new checkAc(us);String result =ac.checkAction(userName,password,rePassword,birthday,telNumber,email);System.out.println(result);us.add(new User("大筒木萍萍","2","2","2012-08-30","13236046876","2@"));us.add(new User("大筒木婷婷","1","1","2022-08-30","13236046876","1@"));}
}

模拟微博用户注册的程序【使用了HashSet集合实现】相关推荐

  1. java模仿微博代码_杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例

    案例设计背景介绍: 编写一个新浪微博用户注册的程序,要求使用HashSet集合实现. 假设当用户输入用户名.密码.确认密码.生日(输入格式yyyy-mm-dd为正确).手机号码(手机长度为11位,并且 ...

  2. java模拟新浪微博_Java模拟新浪微博用户注册

    模拟新浪微博用户注册 User.java package gather.sina; public class User { private String username; private Strin ...

  3. python爬虫登录微博_python爬虫-模拟微博登录

    微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...

  4. Cris 小哥哥的大数据项目之 HBase 模拟微博核心功能

    Cris 小哥哥的大数据项目之 HBase 模拟微博核心功能 Author:Cris 文章目录 Cris 小哥哥的大数据项目之 HBase 模拟微博核心功能 Author:Cris 0. 序 1. 需 ...

  5. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  6. c语言与64位windows不兼容_微软发布可模拟 64 位 x86 程序的 ARM 版 Windows 10

    微软今天宣布推出可以在 ARM 架构 PC 上模拟 64 位 x86 程序的新版 Windows 10.这意味着,拥有 ARM PC 的用户,比如 Surface Pro X 可以安装 64 位 x8 ...

  7. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例

    用Python写一个模拟qq聊天小程序的代码实例 发布时间:2020-09-09 07:49:29

  8. 3.9 编写程序,模拟石头剪刀布游戏。程序随机产生一个数,这个数为2、1或0,分别表示石头剪刀和布。

    1. 题目要求编写程序,模拟石头剪刀布游戏.程序随机产生一个数,这个数为2.1或0,分别表示石头剪刀和布.提示用户输入值2.1或0.然后显示一条消息,表明用户和计算机谁赢了游戏.下面是运行示例:你出什 ...

  9. java模拟微博登录_Python模拟微博登陆,亲测有效

    今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密.那么首先就要做那件必做之事!模拟登陆-- 我对代码进行了优化,重构成了Python 3.6 版本,并且加入了大量注释方便大家学习. PC 登录 ...

最新文章

  1. POJ - 3186 Treats for the Cows DP
  2. js 微信小程序日期 时间转时间戳
  3. 关于Unity中的声音管理模块(专题七)
  4. 2017沈阳站 Tree
  5. 基于 bootstrap 字体图标,用纯CSS实现星级评分功能
  6. Hadoop 的核心(2)—— MapReduce YARN
  7. Robocopy命令实现文件服务器每日镜像备份/增量备份操作
  8. 移除单元格选中时的高亮显示状态
  9. TortoiseSVN的设置
  10. matlab单回路控制系统设计,实验二单回路控制系统的建模与仿真 .doc
  11. Xshell 和 Xftp 免费下载
  12. android长截图工具下载,手机长截图怎么截?超方便的长截图App
  13. Python_输入年月日计算是今年第几天 考虑闰年二月29天,平年28天
  14. 方维直播源码对接新版腾讯云通信对接新版腾讯即时通信IM
  15. Elastic Sketch: Adaptive and Fast Network-wide Measurements
  16. Selenium如何使用句柄方式切换窗口?
  17. 配置nginx.conf证书,实现http跳转htpps(80-->443)
  18. 计算机职业生涯规划书一万字,大学生职业规划一万字
  19. 解决eclipse报错:错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)
  20. 2022-2028全球与中国液态环氧树脂市场现状及未来发展趋势

热门文章

  1. Java开源中文分词器的使用方法和分词效果对比
  2. SPAC第一家“吃螃蟹”的公司来了,港股等待“化学反应”?
  3. 【全网首发】听阿里云产品架构师罗小飞解读CDN产品最佳实践
  4. Hdoj 2671 Can't be easier
  5. python中国剩余定理公式_《孙子算经》之物不知数题:中国剩余定理
  6. 利用WPF建立自己的3d gis软件(非axhost方式)(二)基础状态切换
  7. Python免费的家庭视频监控系统(1)
  8. 程序员他们也可以很可爱幽默
  9. 王兴,中国互联网最小清新的男人!
  10. 计算机创造奇迹的英语作文,高中英语作文模板:兴趣创造奇迹