• 登录注册含验证码


    项目:用户登录和注册(含验证码)

    第一步:创建一个对应的用户模型类

        用户的对应模型类:User

                  属性:账号:username

                  属性:密码:password

                  属性:联系方式:phoneNumber

                  属性:邮箱:email

     1 package cn.aurn.demo02;
     2 /*
     3  *     用户模型类
     4  */
     5 public class User {
     6     //属性
     7     private String username;//账号
     8     private String password;//密码
     9     private String phoneNumber;//手机号
    10     private String email;//邮件
    11     
    12     //有参构造方法
    13     public User(String username, String password, String phoneNumber, String email) {
    14         this.username = username;
    15         this.password = password;
    16         this.phoneNumber = phoneNumber;
    17         this.email = email;
    18     }
    19 
    20     //set和get方法
    21     public String getUsername() {
    22         return username;
    23     }
    24 
    25     public void setUsername(String username) {
    26         this.username = username;
    27     }
    28 
    29     public String getPassword() {
    30         return password;
    31     }
    32 
    33     public void setPassword(String password) {
    34         this.password = password;
    35     }
    36 
    37     public String getPhoneNumber() {
    38         return phoneNumber;
    39     }
    40 
    41     public void setPhoneNumber(String phoneNumber) {
    42         this.phoneNumber = phoneNumber;
    43     }
    44 
    45     public String getEmail() {
    46         return email;
    47     }
    48 
    49     public void setEmail(String email) {
    50         this.email = email;
    51     }
    52     
    53 
    54 }

    第二步:测试类:UserTest

        提示用户选择操作,登录之前要判断存储用户信息的集合如果为空,那就提示用户当前没有账户,需要先注册。

     1 package cn.aurn.demo02;
     2 /**
     3  *     用户操作测试类
     4  */
     5 import java.util.ArrayList;
     6 import java.util.Scanner;
     7 
     8 public class UserTest {
     9     
    10     //用户输入对象
    11     public static Scanner scanner = new Scanner(System.in);
    12     
    13     //集合存储用户信息
    14     public static ArrayList<User> users = new ArrayList<User>();
    15     
    16     //验证码工具对象
    17     public static  CodeUtils codes = new CodeUtils(); 
    18     
    19     //主函数
    20     public static void main(String[] args) {
    21         //用户提示
    22         System.out.println("*****欢迎来到打死你战队****** ");
    23         
    24         while(true) {
    25             System.out.println("请进行如下操作:1、登录  2、注册");
    26             //用户输入操作
    27             String flag = scanner.nextLine();
    28             //判断用户操作
    29             if (flag.equals("1")) {
    30                 //登录,判断集合中是否有用户
    31                 if (users.isEmpty()) {
    32                     System.out.println("当前没有用户信息,请先注册!");
    33                 }else {
    34                     login();
    35                 }
    36             }else if (flag.equals("2")) {
    37                 regist();
    38             }
    39         }
    40     }

    第三步:验证码工具类:CodeUtils

        利用随机数生成6位验证码(注册时用)和4位验证码(登录时用)。

     1 package cn.aurn.demo02;
     2 
     3 import java.util.Random;
     4 
     5 /**
     6  * 验证码生成工具类
     7  */
     8 public class CodeUtils {
     9 
    10     //创建一个数组对象
    11     private char[] codes = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    12                     '0','1','2','3','4','5','6','7','8','9',
    13                     'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    14 
    15     //创建一个随机数对象
    16     private Random random = new Random();
    17     
    18     /*
    19      * 随机生成4位验证码
    20      */
    21     public String getStringCode4() {
    22         //空字符串
    23         String code = "";
    24         //循环生成4位数验证码
    25         for(int i = 0; i < 4; i++) {
    26             //每循环一次,随机拿一个验证码
    27             int index = random.nextInt(codes.length);
    28             //每拿到一个,就添加到空的字符串中拼接
    29             code += codes[index];
    30         }
    31         return code;
    32     }
    33     
    34     /*
    35      * 随机生成6位数验证码
    36      */
    37     public String getStringCode6() {
    38         //空字符串
    39         String code = "";
    40         //循环生成4位数验证码
    41         for(int i = 0; i < 6; i++) {
    42             //每循环一次,我就随机拿一个验证码
    43             int index = random.nextInt(codes.length);
    44             //每拿到一个,就添加到空的字符串中拼接
    45             code += codes[index];
    46         }
    47         return code;
    48     }
    49 }

    第四步:注册方法:regist()

        1、提示用户,输入账号,密码,确认密码,注册手机号,验证码。

        2、设置两个开关:账号是否重复:isFlag(默认是关的false,即账号不重复);

                  注册是否通过:isRegist(默认是开的true,即注册通过)。

        3、先判断用户验证码输入的是否正确,不正确就关闭isRegist开关,不进行后面的,提醒用户重新再来。

        4、再判断用户输入的密码与确认密码是否一样,不一样就关闭isRegist开关,不注册,提示用户重新再来。

        5、for循环存储用户信息的集合,判断用户输入的账号是否已经存在在集合中,如果存在打开isFlag开关,关闭isRegist开关,提示用户当前账号已存在,重新输入, 

          跳出循环; 如果不存在,就直接注册,将用户输入的信息存储在集合中。

     1     /*
     2      *     注册方法
     3      */
     4     private static void regist() {
     5         //提示用户
     6         //账号
     7         System.out.println("请输入您要注册的账号:");
     8         String username = scanner.nextLine();
     9         
    10         //密码
    11         System.out.println("请输入您要注册的密码:");
    12         String password = scanner.nextLine();
    13         
    14         //确认密码
    15         System.out.println("请输入您要注册的确认密码:");
    16         String repassword = scanner.nextLine();
    17         
    18         //手机号
    19         System.out.println("请输入您要注册的手机号:");
    20         String phoneNumber = scanner.nextLine();
    21         
    22         //邮箱
    23         System.out.println("请输入您要注册的邮箱:");
    24         String email = scanner.nextLine();
    25         
    26         //生成6位验证码
    27         String code = codes.getStringCode6();
    28         System.out.println("请输入验证码信息(区分大小写):"+code);
    29         String code1 = scanner.nextLine();
    30         
    31         //账户是否重复开关
    32         boolean isFlag = false;//默认是关闭的,即账号不重复
    33         
    34         //是否通过注册开关
    35         boolean isRegist = true;//默认是打开的,即通过注册
    36         
    37         //判断
    38         if (code1.equals(code)) {
    39             //验证码正确
    40             if (password.equals(repassword)) {
    41                 //密码与确认密码正确
    42                 //循环遍历账户信息存储集合
    43                 for (User user : users) {
    44                     //判断是否已经注册过了
    45                     if (user.getUsername().equals(username)) {
    46                         //用户输入账号已注册存在
    47                         //打开重复开关
    48                         isFlag = true;
    49                         //关闭注册
    50                         isRegist = false;
    51                         //跳出循环
    52                         break;
    53                     }
    54                 }
    55             }else {
    56                 System.out.println("确认密码与密码不一致,请重新操作!");
    57                 //关闭注册按钮
    58                 isRegist = false;
    59             }
    60         }else {
    61             System.out.println("验证码输入错误,请重新操作!");
    62             //关闭注册按钮
    63             isRegist = false;
    64         }
    65         //账号已注册存在
    66         if (isFlag) {
    67             System.out.println("很遗憾,您输入的账号已注册过,请重新输入!");
    68         }else {
    69             //账号不存在,注册
    70             if (isRegist) {
    71                 User user = new User(username, repassword, phoneNumber, email);
    72                 //添加信息进集合
    73                 users.add(user);
    74                 //提示用户
    75                 System.out.println("恭喜您,注册成功!");
    76             }
    77         }
    78     }

    第五步:登录方法:login()

        1、提示用户,输入账号,密码,验证码。

        2、设置一个开关:是否登录成功:isLogin(默认是关闭的false)。

        3、先判断用户输入的验证码是否正确,如果不正确,提示用户验证码输入错误,请重新操作。

        4、for循环遍历用户信息集合,然后判断用户输入的账号和密码与集合中的账号与密码是否一样,如果一样,打开IsLogin开关,提示用户登录成功,退出循环;

           否则,提示用户的账号或密码输入错误,请重新操作。

     1     /*
     2      *     登录方法
     3      */
     4     private static void login() {
     5         //提示用户
     6         // 账号
     7         System.out.println("请输入登录的账号:");
     8         String username = scanner.nextLine();
     9 
    10         // 密码
    11         System.out.println("请输入登录的密码:");
    12         String password = scanner.nextLine();
    13 
    14         // 生成4位验证码
    15         String code = codes.getStringCode4();
    16         System.out.println("请输入验证码信息(区分大小写):" + code);
    17         String code1 = scanner.nextLine();
    18         
    19         //设置登录成功开关
    20         boolean isLogin = false;//默认关闭的,即登陆失败
    21         
    22         //判断验证码
    23         if (code1.equals(code)) {
    24             //验证码正确
    25             //遍历集合
    26             for (User user : users) {
    27                 //判断输入的账号与密码与注册的信息进行匹配
    28                 if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
    29                     //登录成功
    30                     isLogin = true;
    31                     System.out.println("登陆成功!");
    32                     //退出循环
    33                     break;
    34                 }
    35             }
    36             //账户密码输入错误
    37             if (!isLogin) {
    38                 System.out.println("账号或密码输入错误,请重新登录");
    39             }
    40         }else {
    41             System.out.println("验证码输入错误,请重新操作!");
    42         }
    43     }                            
  • 相关阅读:
    Day 50
    Spring Boot logging 配置及相关属性
    spring boot的项目名称问题
    spring boot的项目结构问题
    @RestController无法自动注入的问题
    mysql的模糊查询
    写点什么来为自己的过去和未来画个分隔符
    python学习随笔day2
    python学习随笔day1
    linux文件上传和下载
  • 原文地址:https://www.cnblogs.com/qjc-hll-520/p/12076917.html
Copyright © 2020-2023  润新知