Java-模拟新浪微博用户注册功能实现(控制台程序)

简介: Java-模拟新浪微博用户注册功能实现(控制台程序)

一:微博注册流程

在这里插入图片描述

二:类的建立

1:用户实体类 ------>User
2:用户操作类(注册登入) ------>UserManager
3:用户信息验证类 ------>UserVerification
4:用户测试类 ------>Test

三:HashSet判断对象是否相同(本节课重点)

在这里插入图片描述
①:未重写equles和hashCode方法
在这里插入图片描述
在这里插入图片描述

②:重写equles和hashCode方法和toString方法
在这里插入图片描述

备注:在判断HashSet对象是否相同,通过equles和hashCode二者返回值确定,二者都返回为true表示该集合不存在该对象,可以进行add方法的添加,add方法底层是利用Map集合下的put方法进行对象的添加(HashSet集合底层是通过Map集合实现),所以在开发中采用重写eaules和hashCode方法,重写toString()方法用于用户信息输出。

四:代码详情

1:User类

package Microblogging;
/*
 * 用户实体类
 */
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() {
         
     }
     //属性访问器
        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 str) {
               this.birthday = str;
           }
           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;
           }
         //重写toString()方法进行用户信息输出
           public String toString(){
                return "用户信息:\r姓名:"+getUserName()+"\r生日:"
              +getBirthday()+"\r邮箱:"+getEmail()+"\r手机号:"+getTelNumber()+"\r用户密码:"+getPwd();
           }
//重写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;
               }
           
           }

2:UserManager类

package Microblogging;
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;    
            }
        }
}

3:UserVerification类

package Microblogging;
/*
 * 用户信息验证类
 * 
 */
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 user) {
        if (user.getTelNumber().length()!=11) {
                    //手机号长度不等于11位
            System.out.println("手机号长度不等于11位!");
                    return false;
                    //首位必须为:13 15 17 18
                }else if (!(user.getTelNumber().startsWith("13"))&&!(user.getTelNumber().startsWith("15"))
                        &&!(user.getTelNumber().startsWith("17"))&&!(user.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;
    }
}

4:Test类

package Microblogging;
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
            User user=new User("张三","zq,123",new Date().toString(),"18618121193","zhouqi@itcast.cn");
            USER_DATA.add(user);
        }

            //用户信息输入
            @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 stub
                 System.out.print("请输入用户名:");
                 objuser.setUserName(scanner.nextLine());
            }

            //输入密码和确认密码
            @SuppressWarnings("static-access")
            private static void inputPwd(Scanner scanner) {
                // TODO Auto-generated method stub
                System.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 stub
                 System.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 stub
                System.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 stub
                 System.out.print("邮箱:");
                 while(true){
                     objuser.setEmail(scanner.nextLine());
                     if (userVerfi.VerifyEmail(objuser)) {
                        break;
                    }
                     System.out.print("请重新输入邮箱:");
                 }
            }
}

五:运行效果

1:注册成功运行效果
在这里插入图片描述

2:数据验证效果
在这里插入图片描述
3:注册失败,提醒用户是否继续运行效果
在这里插入图片描述

相关文章
|
23天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
103 60
|
11天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
21 2
|
1月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
45 2
|
1月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
24 3
|
1月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
1月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
101 1
|
1月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
25 1
|
6月前
|
Java
java实战项目超市管理系统控制台版
java实战项目超市管理系统控制台版
|
6月前
|
Java
【Java开发指南 | 第二十篇】Java流之控制台
【Java开发指南 | 第二十篇】Java流之控制台
55 2
|
6月前
|
XML 监控 Dubbo
Dubbo03【管理控制台和监控中心搭建】,Java开发实用必备的几款插件
Dubbo03【管理控制台和监控中心搭建】,Java开发实用必备的几款插件
下一篇
无影云桌面