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:注册失败,提醒用户是否继续运行效果
在这里插入图片描述

相关文章
|
4月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
351 98
|
5月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
6月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
193 2
|
11月前
|
弹性计算 监控 安全
实测阿里云操作系统控制台:功能、诊断与优化
阿里云操作系统(AliOS)是阿里巴巴专为物联网和智能设备开发的操作系统,提供高效、安全、智能化的解决方案。本文介绍了如何开通和使用阿里云的云服务器ECS,包括注册、选择操作系统、创建用户及授权等步骤。通过控制台,用户可以实时监控设备状态、管理组件、进行性能诊断,并优化资源使用。掌握这些功能有助于提升系统管理和数据处理能力,满足物联网场景的多样化需求。建议进一步丰富系统健康指标和观测功能,以提供更好的用户体验。
579 24
|
11月前
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
11月前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
378 0
|
11月前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
219 4
|
Java
【Java学习笔记】控制台读写
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ import java.io.Console; public class ConsoleLogin { public static void main(String arg[]) { Console con; con = System.
566 0