百木园-与人分享,
就是让自己快乐。

用户登录注册案例---加猜数字小游戏(集合版)

分析:
A:有哪些类呢?
用户类
测试类
B:每个类有哪些东西呢?
用户类:
         成员变量:用户名,密码
构造方法:无参构造
成员方法:getXxx()/setXxx()

登录,注册

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

用户基本描述类
成员变量:用户名,密码
构造方法:无参构造
成员方法:getXxx()/setXxx()

 

用户操作类
登录,注册

测试类:

main方法。

C:类与类之间的关系是什么呢?
在测试类中创建用户操作类和用户基本描述类的对象,并使用其功能。

分包:
A:功能划分
B:模块划分
C:先按模块划分,再按功能划分

今天我们选择按照功能划分:
用户基本描述类包 cn.itcast.pojo
用户操作接口 cn.itcast.dao
用户操作类包 cn.itcast.dao.impl---实现接口类
今天是集合实现,过几天是IO实现,再过几天是GUI实现,就业班我们就是数据库实现
用户测试类 cn.itcast.test

用户基本描述类

 1 package YongHuMaoShuLei;
 2 /**
 3  * 这是用户基本描述类
 4  *
 5  *   @author Spring
 6  *   @version V1.0
 7  *
 8  *   描述内容:
 9  *          成员变量:  用户名,登录密码
10  *          构造方法:选择无参
11  *          成员方法:setXxx和getXxx
12  * */
13 
14 public class User {
15     private String username;
16     private String password;
17 
18     public User(){}
19 
20     public String getUsername() {
21         return username;
22     }
23 
24     public void setUsername(String username) {
25         this.username = username;
26     }
27 
28     public String getPassworld() {
29         return password;
30     }
31 
32     public void setPassworld(String passworld) {
33         this.password = passworld;
34     }
35 }

 

用户操作接口

 1 package JiKouGongNengLei;
 2 
 3 import YongHuMaoShuLei.User;
 4 
 5 /**
 6  * 根据用户实现功能的接口
 7  * @author Spring
 8  * @version 1.0
 9  *
10  * */
11 
12 public interface UserDao {
13     /**
14      * 这是用户登录功能
15      *
16      * @param username
17      *            用户名
18      * @param password
19      *            密码
20      * @return 返回登录是否成功
21      */
22     public abstract boolean show(String Username,String password);
23     /**
24      * 这是用户注册功能
25      *
26      * @param user
27      *            要注册的用户信息--此时参数----是用户类基本描述类类对象
28      */
29     public abstract void show1(User user);
30     /**
31      * 这是猜数游戏功能
32      */
33     public abstract  void show2();
34 
35 
36 
37 }

 

用户实现接口类--操作包

package ShiXianJiKouLei;

import JiKouGongNengLei.UserDao;
import YongHuMaoShuLei.User;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/**
 * 这是用户操作的接口功能的具体实现类(集合版)
 *
 * @author Spring
 * @version V1.0
 *
 */

public  class UserDemoimpl implements UserDao {
    //为了登录功能进行用户名和登录密码的校验
    // 为了让多个方法能够使用同一个集合,就把集合定义为成员变量
    // 为了不让外人看到,用private
    // 为了让多个对象共享同一个成员变量,用static
    //static变量也称作静态变量,静态变量和非静态变量的区别是:
    // 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
    // 而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
    private  static  ArrayList<User> A= new ArrayList<User>();

    //登录校验
    public boolean show(String username,String password){
        boolean flag = false;
        //对集合中的数据进行遍历
        //遍历其用户用和登录密码是否和传递过来的参数相等---使用增强否进行遍历
        for(User m : A){
            //遍历得到User中的m对象---其m对象调用其获取方法getXxx来获取集合中的注册的用户和密码信息
            //此时注册信息中的用户和密码信息进行比较String类型采用equals方法进行
            if (m.getUsername().equals(username)&& m.getPassworld().equals(password)){
               flag =true;
               break;
            }
        }
        return flag;//返回的是flag变量的boolean值
    }
    //注册实现
    public void show1(User user){
       //把基本描述用户信息添加到集合
        //创建集合对象
       // ArrayList<User> A= new ArrayList<User>();
        //向集合中添加信息
        A.add(user);
    }

    //猜数游戏
    public  void show2(){
        //提示用户进行猜数游戏
        System.out.println(\"--------\"+\"欢迎来到猜数小游戏\"+\"-----------\");
        //随机产生一个生成数
        int suijishu = (int) (Math.random()*100)+1;
        System.out.println(suijishu);
        //创建键盘输入对象
        Scanner sc = new Scanner(System.in);

        //进行循环判断猜数猜数游戏--给出三次猜数机会--并提示用户还剩多少次机会
        for(int x=0;x<3;x++){
            //给出用户提示
            System.out.println(\"请你输入你所猜的数\");
            //定义键盘输入对象的类型
            int aa = sc.nextInt();
            //给出初始的次数
            int count = 2;
            if (aa==suijishu){
                System.out.println(\"恭喜你猜对了,本轮游戏结束\");
                break;
            }else if(aa>suijishu){
                System.out.println(\"你猜的数有点大\");
                if(count-x==0){
                    System.out.println(\"游戏结束\");
                    break;
                }else{
                    System.out.println(\"你还有\"+(count-x)+\"次机会\");
                }

            }else if(aa<suijishu){
                System.out.println(\"你猜的数有点小\");
                if(count-x==0){
                    System.out.println(\"游戏结束\");
                    break;
                }else{
                    System.out.println(\"你还有\"+(count-x)+\"次机会\");
                }
            }
        }
    }
}

 

测试类

package CeShiLei;


import JiKouGongNengLei.UserDao;
import ShiXianJiKouLei.UserDemoimpl;
import YongHuMaoShuLei.User;
import com.sun.jmx.snmp.SnmpInt;

import java.util.Scanner;

public class Usertest {
    public static void main(String[] args) {

        //创建键盘输入对象
        Scanner sc = new Scanner(System.in);
        while (true) {
            //首先给出一个选择界面---提供用户进行选择
            System.out.println(\"----------\" + \"欢迎光临\" + \"------------\");
            System.out.println(\"1:注册\");
            System.out.println(\"2:登录\");
            System.out.println(\"3:退出\");
            System.out.println(\"---------------------\");
            System.out.println(\"请你输入您的选择\");
            //规定键盘输入对象的类型是String类型
            String xuanze = sc.nextLine();
            //对UserDao创建对象---利用多态、----对UserDemoimpol中的集合使用其静态变量static
            //static修饰的变量被所有对象所共享

            //switch语句中有多个地方要使用,我们就定义到外边
            UserDao gongneng = new UserDemoimpl();

            //对给出的页面进行选项进行选择
            switch (xuanze) {
                case \"1\":
                    //注册界面
                    System.out.println(\"----------\" + \"欢迎来到注册界面\" + \"------------\");
                    System.out.println(\"注册用户名:\");
                    String newusername = sc.nextLine();
                    System.out.println(\"注册密码:\");
                    String newpassword = sc.nextLine();
                    //创建User对象---利用对象将数据传递给User中的成员变量
                    User jiben = new User();
                    jiben.setUsername(newusername);
                    jiben.setPassworld(newpassword);

                    //利用UserDemoimpl实现接口类---将User对象中的信息添加到集合中
                    //利于集合中的数据与登录数据进行比较
                    //利用上面创建的UserDao gongneng = new UserDemoimpl();向集合添加数据
                    gongneng.show1(jiben);
                    //数据添加完毕显示注册成功
                    System.out.println(\"注册成功\");
                    break;
                case \"2\":
                    //登录界面
                    System.out.println(\"----------\" + \"欢迎来到登录界面\" + \"------------\");
                    System.out.println(\"登录用户名:\");
                    String username = sc.nextLine();
                    System.out.println(\"登录密码:\");
                    String password = sc.nextLine();
                    //对输入的用户名和密码进行比较
                    //调用其UserDemoimpl中的show方法来进行对集合中存在的注册信息进行比较
                    //比较其注册用户名,密码是否和输入这输入的一样
                    //UserDao gongneng = new UserDemoimpl();--多态
                    //方法返回值为boolean
                    boolean AA = gongneng.show(username,password);
                    //如果Boolean值是true的则执行循环体内的语句否则执行else{}
                    if(AA){
                        System.out.println(\"恭喜你,登录成功\");

                        System.out.println(\"你是否要玩猜数游戏--y继续--n退出\");
                        while(true) {
                            String tt = sc.nextLine();
                            //equalsIgnoreCase不区分大小写
                            if (tt.equalsIgnoreCase(\"y\")) {
                                gongneng.show2();
                                System.out.println(\"你还玩吗?y/继续--n/退出\");
                            } else if (tt.equalsIgnoreCase(\"n\")) {
                                System.exit(0);
                            }
                        }

                    }else{
                        System.out.println(\"用户名或者密码错误\");
                        System.out.println(\"请你再次输入\");
                    }
                    break;
                case \"3\":
                default:
                    System.out.println(\"欢迎您的使用,再见\");
                    //强制结束此程序的运行--此语句执行后后面的语句不再被执行
                    System.exit(0);
            }
        }
    }
}

 


来源:https://www.cnblogs.com/ztg-java-xuexi/p/16055549.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 用户登录注册案例---加猜数字小游戏(集合版)

相关推荐

  • 暂无文章