1.学会分析"模拟新浪微博用户注册"程序的实现思路
2.根据思路独立完成"模拟新浪微博用户注册"程序源代码的编写、编译及运行
3.掌握Hashset存储数据的流程
要求:
编写一个模拟新浪微博用户注册的程序,要求使用hashset集合实现。假设当用户输入用户名、密码、确认密码、生日(输入格式为yyyy-MM-dd)、手机号(手机号长度为11位),并且以13,15,17或18为开头的手机号为正确、邮箱(包含符号@为正确信息)之后,判断信息输入是否正确,正确验证用户是否重复注册,如果不是重复注册则注册成功,例如用户信息列表中已经存在用户张正。当张正再次注册时,则输出注册结果用户重复。
二、实验原理(图):
(1)为了便于存储用户信息,需要创建一个用户类,在类中重写其中的HashCode()方法,令其返回用户名的哈希值,再重写equals()方法,来比较对象的用户名属性是否相等。
(2)有了用户类之后,再需要1一个用户注册类来模拟注册信息,该类中可以用HashSet集合来创建一个数据列表,然后向列表中添加两条初始注册信息。
(3)从控制台获取用户填写信息,可以通过Scanner类的nextLine()方法来实现,获取后,需要将获取的信息校验。
(4)校验信息可以创建一个检验类,在类中实现用户输入的信息的方法。检验结束后,如果检验结果错误就直接返回错误信息,这里可以声明一个检验结果变量和一个检验状态变量。检验结果变量用于存储提示信息,检验状态变量用于存储结果的判断标识。
(5)当用户输入的信息不满足格式时,需要修改变量1状态并存储错误信息。
(6)判断校验状态,如果所有信息都通过校验,则将用户信息创建成为用户对象,通过将对象添加到用户列表返回结果来判断用户名是否重复,并记录下返回结果信息。

package 模拟新浪微博注册;
public class User {//用户名private String userName;//用户密码private String pwd;//生日private String birthday;//手机号private String telNumber;//邮箱private String email;//扩展属性:确认密码private String rePwd;//有参构造函数public User(String userName,String pwd,String date,String telNumber,String email){setUserName(userName);setPwd(pwd);setBirthday(date);setTelNumber(telNumber);setEmail(email);}//无参构造函数public User() {}//属性访问器//重写toString()方法进行用户信息输出public String toString(){return "用户信息:\r姓名:"+getUserName()+"\r生日:"+getBirthday()+"\r邮箱:"+getEmail()+"\r手机号:"+getTelNumber()+"\r用户密码:"+getPwd();}
public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getTelNumber() {return telNumber;}public void setTelNumber(String telNumber) {this.telNumber = telNumber;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getRePwd() {return rePwd;}public void setRePwd(String rePwd) {this.rePwd = rePwd;}//重写hashCode方法public int hashCode(){return userName.hashCode();}//重写equals方法public boolean equals(Object obj) {//判断是否是同一个对象if (this==obj) {return true;}//判断对象是否为空,为空直接返回false,判断对象是否是User对象if (obj==null||getClass()!=obj.getClass()) {return false;}//将对象强制转换为User对象User other=(User)obj;//判断用户名是否为空if (userName==null) {if (other.userName!=null) {return false;}}else  if (!userName.equals(other.userName)) {return false;}       return true;}}package 模拟新浪微博注册;
import java.util.HashSet;
/** 用户操作类*/
public class UserManager {public static HashSet<User> USER_DATA=new HashSet<User>();//用户数据public UserManager(HashSet<User>USER_DATA){UserManager.USER_DATA=USER_DATA;}  //用户注册public boolean UserRegistraton(User user) {//用户验证if (user!=null) {//创建用户if (!USER_DATA.add(user)) {System.out.println("注册失败,用户重复!");return false;}System.out.println("注册成功!");USER_DATA.add(user);return true;}else {return false;   }   }}package 模拟新浪微博注册;
public  class UserVerification {//验证用户密码public static Boolean VerifyPwd(User user) {if (!user.getRePwd().equals(user.getPwd())) {System.out.println("原密码和确认密码不一致!");return  false;}return true;}//验证生日public static boolean VerifyBirthday(User user) {if (user.getBirthday().toString().length()!=10) {System.out.println("生日长度不满足10!");return false;}else{for(int i=0;i<user.getBirthday().toString().length();i++){Character thisChar=user.getBirthday().toString().charAt(i);//验证第四位和第七位是否是符号:"-"if (i==4||i==7) {if (!(thisChar=='-')) {System.out.println("第四位和第七位不是符号:-!");return false;}}else {//验证除了第4位,和第7位的字符是否是0-9的数字if (!(Character.isDigit(thisChar))) {System.out.println("除了第4位,和第7位的字符不是0-9的数字!");return false;}       }       }   }return true;   }//手机号判断public static boolean VerifyTelNumber(User s) {if (s.getTelNumber().length()!=11) {//手机号长度不等于11位System.out.println("手机号长度不等于11位!");return false;//首位必须为:13 15 17 18}else if (!(s.getTelNumber().startsWith("13"))&&!(s.getTelNumber().startsWith("15"))&&!(s.getTelNumber().startsWith("17"))&&!(s.getTelNumber().startsWith("18"))) {System.out.println("手机号前二位不为13 15 17 18 !");return false;     }return true;} //邮箱判断public static boolean VerifyEmail(User user) {if(!user.getEmail().contains("@")){System.out.println("邮箱里没包含@!");return false;}return true;  }}
。
package 模拟新浪微博注册;
import java.util.Date;
import java.util.HashSet;
import java.util.Scanner;
public class Test {//用户数据private static HashSet<User> USER_DATA=new HashSet<User>();//用户操作类private static UserManager objuserManager=new UserManager(USER_DATA);//用户验证类private static UserVerification userVerfi=new UserVerification();//输入类private static  Scanner scanner=new Scanner(System.in);//用户类static User objuser;@SuppressWarnings("resource")public static void main(String[] args) {//初始化部分initData();//接受用户输入信息UserInput();while(true){//注册if (!objuserManager.UserRegistraton(objuser)) {//注册失败System.out.println("你是否继续注册:0:不,1:是");if (new Scanner(System.in).nextInt()==0) {break;}//接受用户输入信息UserInput();if (objuserManager.UserRegistraton(objuser)) {break;}}else {//注册成功break;     }     }System.out.println("----------当前集合中用户信息----------");System.out.println(USER_DATA);}//初始化信息private static void initData() {// TODO Auto-generated method stub//new Date().toString()User user=new User("田振凯Ez","zq,123","1999-12-20","18618121193","zhouqi@itcast.cn");User user2 = new User("王肖晗NC", "ls,123", "2000-04-19", "18605321530", "lisi@itcast.cn");USER_DATA.add(user);USER_DATA.add(user2);}//用户信息输入@SuppressWarnings("static-access")private static void UserInput() {//创建对象objuser=new User();//输入用户名inputUserName(scanner);//输入密码和确认密码inputPwd(scanner);    //输入生日inputBirthday(scanner);//输入手机号inpitTelNumber(scanner);//输入邮箱inputEmail(scanner); }       //输入用户名private static void inputUserName(Scanner scanner) {// TODO Auto-generated method stubSystem.out.print("请输入用户名:");objuser.setUserName(scanner.nextLine());}//输入密码和确认密码@SuppressWarnings("static-access")private static void inputPwd(Scanner scanner) {// TODO Auto-generated method stubSystem.out.print("请输入密码:");objuser.setPwd(scanner.nextLine());System.out.print("确认密码:");objuser.setRePwd(scanner.nextLine());while (true) {if (userVerfi.VerifyPwd(objuser)) {//密码和确认密码正确break;  }System.out.print("请重新输入密码:");objuser.setPwd(scanner.nextLine());System.out.print("请重新输入确认密码:");objuser.setRePwd(scanner.nextLine());                 }    }//输入出生日期@SuppressWarnings("static-access")private static void inputBirthday(Scanner scanner) {// TODO Auto-generated method stubSystem.out.print("出生日期:");while (true) {objuser.setBirthday(scanner.nextLine());if (userVerfi.VerifyBirthday(objuser)) {break;     }System.out.print("请重新输入生日:");           }   }//输入手机号@SuppressWarnings("static-access")private static void inpitTelNumber(Scanner scanner) {// TODO Auto-generated method stubSystem.out.print("手机号码:");while (true) {objuser.setTelNumber(scanner.nextLine());if (userVerfi.VerifyTelNumber(objuser)) {break;  }System.out.print("请重新输入手机号码:");          }}//输入邮箱@SuppressWarnings("static-access")private static void inputEmail(Scanner scanner) {// TODO Auto-generated method stubSystem.out.print("邮箱:");while(true){objuser.setEmail(scanner.nextLine());if (userVerfi.VerifyEmail(objuser)) {break;  }System.out.print("请重新输入邮箱:");}}}

java模拟新浪微博用户注册相关推荐

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

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

  2. java模拟新浪微博_Java模拟新浪微博登陆抓取数据

    前言: 兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先: 要想登陆新浪微博需要预登 ...

  3. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

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

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

  5. java 模拟登录新浪微博(通过cookie)

    java模拟登录新浪微博(通过cookie) 这几天一直在研究新浪微博的爬虫,发现爬取微博的数据首先要登录.本来打算是通过账号和密码模拟浏览器登录.但是现在微博的登录机制比较复杂.通过账号密码还没有登 ...

  6. 模拟微博用户注册的程序【使用了HashSet集合实现】

    1.实验内容 (1)程序编写:编写一个模拟微博用户注册的程序,要求使用HashSet集合实现.假设用户输入用户名.密码.确认密码.生日(输入格式为yyyy-MM-dd为正确).邮箱(包含符号" ...

  7. java 模拟时钟_java模拟时钟

    本次课程设计采用时间片轮转调度算法来实现模拟进程调度任务的执行过 程. 用 Java 模拟进程调度过程,可以方便地将运行结果直观地表示出来.Java 语言 独有的多...... 本次课程设计采用时间片 ...

  8. 233网校java_java辅导:使用java模拟登陆考试大

    java辅导:使用java模拟登陆考试大 2009年1月5日来源:233网校网校课程 在线题库评论 分享到 public static void loginexamda() { URL url = n ...

  9. 用Java模拟multipart形式的Http Post请求

    本例通过java模拟了Http的request请求,请求格式为multipart,实现了向服务器同时传递json数据和图片数据. 1 import java.io.ByteArrayOutputStr ...

  10. java 模拟grep_java模拟linux命令grep

    java模拟linux命令grep. 在网上看到matlab模拟linux的grep命令,就想到用java也来模拟下linux命令grep, 算法非常简单,,这里直接上代码: /** * 模拟Unix ...

最新文章

  1. 米勒罗宾素性测试(Miller–Rabin primality test)
  2. Python面向对象(继承)
  3. python全局名称空间_python之名称空间知识点整理
  4. .NET加水印/验证码的NuGet包
  5. C/S通信模型与B/S通信模型介绍
  6. 【原创】Performanced C++ 经验规则 第五条:再谈重载、覆盖和隐藏
  7. 1-算法-hanoi汉诺塔问题- 递归
  8. 关于pc端微信登录前后端分离的java后台开发
  9. Selenium 入门篇
  10. 群晖NAS中对Gitlab配置邮箱发送消息_以163邮箱为例
  11. IF NOT EXISTS和 IF EXISTS的区别
  12. OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序
  13. 【ROS进阶】常用函数——ros::ok(),ros::Rate,ros::spin()和ros::spinOnce()
  14. Android关于图片压缩
  15. java中的super()是什么
  16. Unity游戏实战项目-英雄无敌
  17. 监控服务zabbix
  18. 如何停用笔记本的触摸板鼠标touch pad
  19. JMeter,LoadRunner,软件压力测试?
  20. oracle 控制文件丢失或损坏的恢复

热门文章

  1. win7安装镜像注入USB3.0,NVMe驱动
  2. 【 Android 10 生物识别 】系列 -- Fingerprint_指纹录入流程
  3. WDF基本对象和句柄定义
  4. catdog matlab,猫狗收养所 - ranjiewen的个人空间 - OSCHINA - 中文开源技术交流社区
  5. 【数据分析】销售案例分析——分解目标
  6. Gitea服务器ip变更项目无法创建、拉取、上传
  7. 2.1.1 理论模型
  8. SameSite Cookie支持的浏览器版本
  9. PHP源码中EXPECTED和UNEXPECTED的作用
  10. 申请免费的域名并且通过FTP上传及通过自己的域名访问自己的网站