zoukankan      html  css  js  c++  java
  • Java基础知识强化之集合框架笔记37:用户登录注册案例

    1. 登录注册案例分析图解:

    2. 用户登录案例 详细分析分包实现

    (1)用户登录案例详细分析(面向对象思想

    按照如下的操作,可以让我们更符合面向对象思想

      • 有哪些类呢

                    用户类

                    测试类

          • 每个类有哪些东西呢

                    用户类:

           成员变量:用户名,密码

                            构造方法:无参构造

                            成员方法:getXxx() / setXxx()

                                              登录,注册

                           假如用户类的内容比较多,将来维护起来就比较麻烦,为了更清晰的分类,我们就把用户又划分成了两类:

                          用户基本描述类:                           

                                成员变量:用户名,密码

                                                   构造方法:无参构造

                                                   成员方法:getXxx() / setXxx()

                           用户操作类:

                                 登录,注册

                                                  

                  测试类:

                             main方法

          • 类与类之间的关系是什么呢

         在测试类中创建用户操作类和用户基本描述类的对象,并使用其功能。

    (2)用户登录案例分包

      功能划分

        模块划分

        先按模块划分,再按照功能划分

    这次我们选择按照功能划分:
      用户基本描述类包:     cn.itcast.pojo
      用户操作接口:           cn.itcast.dao
      用户操作类包:             cn.itcast.dao.impl
    这次是集合实现,其次是IO实现,再次是GUI实现,最终就是数据库实现
          用户测试类:              cn.itcast.test

    3. 用户登录案例 用户基本描述类用户操作接口 实现:

    (1)用户基本描述类:User

     1 package cn.itcast.pojo;
     2 
     3 /**
     4  * 
     5  * 这是用户基本描述类
     6  * @author Mr He
     7  * @version V1.0
     8  *
     9  */
    10 
    11 public class User {
    12     //用户名
    13     private String username;
    14     //密码
    15     private String password;
    16     
    17     public User() {
    18         super();
    19     }
    20 
    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 
    38 }

    (2)用户操作接口 :UserDao

     1 package cn.itcast.dao;
     2 
     3 import cn.itcast.pojo.User;
     4 
     5 /**
     6  * 这是针对用户进行操作的接口
     7  * @author Mr He
     8  * @version V1.0
     9  *
    10  */
    11 public interface UserDao {
    12     /**
    13      * 这是用户的登录功能
    14      * @param username
    15      *               用户名
    16      * @param password
    17      *              密码
    18      * @return  返回登录是否成功
    19      */
    20     public abstract boolean isLogin(String username, String password);
    21     
    22     /**
    23      * 这是用户的注册功能
    24      * @param user 要注册的用户的信息
    25      */
    26     public abstract  void regist(User user);
    27 }

    4. 用户登录案例 用户操作类的具体实现:UserDaoImpl

     1 package cn.itcast.dao.impl;
     2 
     3 import java.util.ArrayList;
     4 
     5 import cn.itcast.dao.UserDao;
     6 import cn.itcast.pojo.User;
     7 
     8 /**
     9  * 这是用户操作的具体实现类(集合版)
    10  * @author  Mr He
    11  * @version V1.0
    12  *
    13  */
    14 
    15 public class UserDaoImpl implements UserDao {
    16     //为了让多个方法能够使用同一个集合,就把集合定义为成员变量
    17     //为了不让外人看的,用private
    18     //为了让多个对象共享同一个成员变量,使用static修饰
    19     private static ArrayList<User> array = new ArrayList<User>();
    20     
    21 
    22     public boolean isLogin(String username, String password) {
    23         //遍历集合,获取每一个用户,并判断该用户的用户名和密码是否和传递过来的匹配
    24         boolean flag = false;
    25         for(User u:array) {
    26             if(u.getUsername().equals(username) && u.getPassword().equals(password)) {
    27                 flag = true;
    28                 break;
    29             }
    30         }
    31         
    32         return flag;
    33     }
    34 
    35     public void regist(User user) {
    36         //把用户信息存储到集合
    37         array.add(user);
    38         
    39     }
    40 
    41 }

    5. 用户登录案例 猜数字游戏类:GuessNumber

     1 package cn.itcast.game;
     2 
     3 import java.util.Scanner;
     4 
     5 /**
     6  * 这是猜数字小游戏
     7  * @author Mr He
     8  * @version V1.0
     9  *
    10  */
    11 public class GuessNumber {
    12     private GuessNumber() {        
    13     }
    14     
    15     public static void start() {
    16         //产生一个随机数
    17         int number = (int) (Math.random()*100)+1;
    18         
    19         //定义一个统计变量
    20         int count =0;
    21         while (true) {
    22             // 键盘录入一个数据
    23             Scanner sc = new Scanner(System.in);
    24             System.out.println("请输入一个数据(1~100):");
    25             int guessNumber = sc.nextInt();
    26             count++;
    27             // 判断
    28             if (guessNumber > number) {
    29                 System.out.println("你猜的数据" + guessNumber + "大了");
    30             } else if (guessNumber < number) {
    31                 System.out.println("你猜的数据" + guessNumber + "小了");
    32             } else {
    33                 System.out.println("恭喜你,"+count+"次就猜中了");
    34                 break;
    35             }
    36         }
    37     }
    38 }

    6. 用户登录案例 测试类的实现:UserTest

      1 package cn.itcast.test;
      2 
      3 import java.util.Scanner;
      4 
      5 import cn.itcast.dao.UserDao;
      6 import cn.itcast.dao.impl.UserDaoImpl;
      7 import cn.itcast.game.GuessNumber;
      8 import cn.itcast.pojo.User;
      9 
     10 /**
     11  * 用户测试类
     12  * 
     13  * @author Mr He
     14  * @version V1.0
     15  * 
     16  * 新增加两个小问题:
     17  * (1)多个对象共享同一个成员变量,用静态
     18  * (2)循环里面如果有switch,并且在switch里面有break,那么结束的不是循环,而是switch语句
     19  */
     20 public class UserTest {
     21     public static void main(String[] args) {
     22 
     23         while (true) {
     24             // 欢迎界面,给出选择项
     25             System.out.println("--------------欢迎光临--------------");
     26             System.out.println("1 登录");
     27             System.out.println("2 注册");
     28             System.out.println("3 退出");
     29             System.out.println("请输入你的选择:");
     30             // 键盘录入选择,根据选择做不同的操作
     31             Scanner sc = new Scanner(System.in);
     32             // 为了后面的录入值的方便,我所有的数据录入全部用字符接收
     33             String choiceString = sc.nextLine();
     34 
     35             // switch多个地方要使用,我就定义到外面
     36             UserDao ud = new UserDaoImpl();
     37 
     38             // 经过简单的思考,我选择了switch
     39             switch (choiceString) {
     40             case "1":
     41                 // 登录界面,请输入用户名和密码
     42                 System.out.println("--------------登录界面--------------");
     43                 System.out.println("请输入用户名:");
     44                 String username = sc.nextLine();
     45                 System.out.println("请输入密码:");
     46                 String password = sc.nextLine();
     47 
     48                 // 调用登录功能
     49                 // 多态
     50                 // UserDao ud = new UserDaoImpl();
     51                 boolean flag = ud.isLogin(username, password);
     52                 if (flag) {
     53                     System.out.println("登录成功,可以开始玩游戏");
     54                     
     55                     System.out.println("你玩吗?y/n");
     56                     while (true) {
     57                         String resultString = sc.nextLine();
     58                         if (resultString.equalsIgnoreCase("y")) {
     59                             // 玩游戏
     60                             GuessNumber.start();
     61                             System.out.println("你还玩吗?y/n");
     62                         }else {
     63                             break;
     64                         }
     65                     }
     66                     
     67                     
     68                     System.out.println("谢谢使用,欢迎下次再来");
     69                     System.exit(0);
     70                     //break;//这里写break,结束的是switch语句
     71                 } else {
     72                     System.out.println("用户名或者密码有误,登录失败");
     73                 }
     74                 break;
     75 
     76             case "2":
     77                 // 注册界面,请输入用户名和密码
     78                 System.out.println("--------------注册界面--------------");
     79                 System.out.println("请输入用户名:");
     80                 String newUsername = sc.nextLine();
     81                 System.out.println("请输入密码:");
     82                 String newPassword = sc.nextLine();
     83 
     84                 // 把用户名和密码封装到一个对象中
     85                 User user = new User();
     86                 user.setUsername(newUsername);
     87                 user.setPassword(newPassword);
     88 
     89                 // 调用注册功能
     90                 // 多态
     91                 // UserDao ud = new UserDaoImpl();
     92                 // 具体类使用
     93                 // UserDaoImpl udi = new UserDaoImpl();
     94                 ud.regist(user);
     95                 System.out.println("注册成功");
     96                 break;
     97 
     98             case "3":
     99             default:
    100                 System.out.println("谢谢使用,欢迎下次再来");
    101                 System.exit(0);
    102                 break;
    103 
    104             }
    105 
    106         }
    107     }
    108 
    109 }

    7. 工程一栏图,如下:

    8. 运行效果如下:

    (1)测试运行效果1:

    --------------欢迎光临--------------
    1 登录
    2 注册
    3 退出
    请输入你的选择:
    2
    --------------注册界面--------------
    请输入用户名:
    admin
    请输入密码:
    admin
    注册成功
    --------------欢迎光临--------------
    1 登录
    2 注册
    3 退出
    请输入你的选择:
    1
    --------------登录界面--------------
    请输入用户名:
    admin
    请输入密码:
    admin
    登录成功,可以开始玩游戏
    你玩吗?y/n
    y
    请输入一个数据(1~100):
    56
    你猜的数据56小了
    请输入一个数据(1~100):
    67
    你猜的数据67小了
    请输入一个数据(1~100):
    78
    你猜的数据78小了
    请输入一个数据(1~100):
    89
    你猜的数据89大了
    请输入一个数据(1~100):
    80
    你猜的数据80小了
    请输入一个数据(1~100):
    84
    你猜的数据84小了
    请输入一个数据(1~100):
    85
    恭喜你,7次就猜中了
    你还玩吗?y/n
    n
    谢谢使用,欢迎下次再来

    (2)测试运行效果2:

    --------------欢迎光临--------------
    1 登录
    2 注册
    3 退出
    请输入你的选择:
    2
    --------------注册界面--------------
    请输入用户名:
    admin
    请输入密码:
    admin
    注册成功
    --------------欢迎光临--------------
    1 登录
    2 注册
    3 退出
    请输入你的选择:
    1
    --------------登录界面--------------
    请输入用户名:
    admin
    请输入密码:
    addd
    用户名或者密码有误,登录失败
    --------------欢迎光临--------------
    1 登录
    2 注册
    3 退出
    请输入你的选择:
    1
    --------------登录界面--------------
    请输入用户名:
    admin
    请输入密码:
    admin
    登录成功,可以开始玩游戏
    你玩吗?y/n
    n
    谢谢使用,欢迎下次再来

  • 相关阅读:
    Grid表格的js触发事件
    C# 在获得鼠标点击事件时,如何判断Control键,Shift键被按下
    纠错《COM技术内幕》之ProgID
    C# 日期格式化
    C# 操作系统防火墙
    C# 开发和调用Web Service
    谓侠
    高维FWT
    单位根反演
    容斥 反演
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4856092.html
Copyright © 2011-2022 走看看