Javaコレクションは簡単なユーザー登録とログインを実現し、数字当てゲームのデモをプレイします

シリーズ記事ディレクトリ

Java Collection 簡単なユーザー登録・ログインを実現し、数字当てゲームのデモをプレイ
Java が IO を利用して簡単なユーザー登録・ログインを実現し、数字当てゲームのデモをプレイ



1. プロジェクトのシナリオ

Java コレクションを使用するだけで、ユーザー登録とログインのケースを完全に実現し、数字を推測する簡単なゲームをプレイできます。
(数字推測ゲーム: システムはユーザーが推測できる 1 ~ 100 の数字をランダムに生成し、大きい、小さい、正解数を推測するためのプロンプトを表示します)


2. 分析

どのようなクラスがありますか?
– ユーザークラス
– テストクラス

各クラスには何が含まれますか?
–ユーザークラス:
–メンバ変数:username(ユーザー名)、password(パスワード)
–構築メソッド:パラメータ構築なし –メンバ
メソッド:getXxx() / setXxx() –
テストクラス:
–main()メソッド

クラスとクラスの関係は何ですか?
– テストクラス内にユーザ操作クラスとユーザ基本記述クラスのオブジェクトを作成し、その機能を使用します。

機能別サブパッケージ
– ユーザー基本記述クラスパッケージpojo
– ユーザー操作インターフェースdao
– ユーザー操作クラスパッケージdao.impl
– ユーザーテストクラスtest

プロジェクトのディレクトリ構造を図に示します。
プロジェクトのディレクトリ構造


3、悟る

ユーザー基本記述クラス User.java

package pojo;

public class User {
    
    
    // 用户名
    private String username;
    // 密码
    private String password;

    public User() {
    
    
    }

    public String getUsername() {
    
    
        return username;
    }

    public void setUsername(String username) {
    
    
        this.username = username;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }
}


ユーザー操作インターフェース UserDao.java

package dao;

import pojo.User;

/**
 * 这是针对用户进行操作的接口
 *
 * @author Y
 * @version V1.0
 *
 */

public interface UserDao {
    
    
    /**
     * 这是用户登录功能
     *
     * @param username
     *           用户名
     * @param password
     *            密码
     * @return 返回登录是否成功
     */
    public abstract boolean isLogin(String username, String password);

    /**
     *
     * @param user
     *           要注册的用户信息
     */
    public void regist(User user);
}


ユーザー操作クラス UserDaoImpl.java の具体的な実装

package dao.impl;

import dao.UserDao;
import pojo.User;

import java.util.ArrayList;

/**
 * 这是用户操作的具体实现类
 *
 * @author Y
 * @version V1.0
 */

public class UserDaoImpl implements UserDao {
    
    
    // 为了让多个方法能够使用同一个集合,就把集合定义为成员变量
    // 为了不让外人看到,用private
    // 为了让多个对象共享同一个成员变量,用static
    private static ArrayList<User> array = new ArrayList<User>();

    @Override
    public boolean isLogin(String username, String password) {
    
    
        // 遍历集合,获取每一个用户,并判断该用户的用户名和密码是否和传递过来的匹配
        boolean flag = false;

        for (User u: array) {
    
    
            if (u.getUsername().equals(username) && u.getPassword().equals(password)) {
    
    
                flag = true;
                break;
            }
        }

        return flag;
    }

    @Override
    public void regist(User user) {
    
    
        array.add(user);
    }
}


数字を当てるゲーム GuessNumber.java

package game;

import java.util.Scanner;

/**
 * 猜数字小游戏
 *
 * @author Y
 * @version V1.0
 *
 */

public class GuessNumber {
    
    
    private GuessNumber() {
    
    
    }

    public static void start() {
    
    
        // 产生一个随机数
        int number = (int) (Math.random() * 100) + 1;

        // 定义一个统计变量
        int count = 0;

        while (true) {
    
    

            // 键盘录入一个数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入数据(1-100):");
            int guessNumber = sc.nextInt();

            count++;

            // 判断
            if (guessNumber > number) {
    
    
                System.out.println("你猜的数据" + guessNumber + "大了");
            } else if (guessNumber < number) {
    
    
                System.out.println("你猜的数据" + guessNumber + "小了");
            } else {
    
    
                System.out.println("恭喜你" + count + "次就猜中了");
                break;
            }
        }
    }
}


ユーザーテストクラスUserTest.javaの実装

import dao.UserDao;
import dao.impl.UserDaoImpl;
import game.GuessNumber;
import pojo.User;

import java.util.Scanner;

/**
 * 用户测试类
 *
 * @author Y
 * @version V1.0
 *
 */
public class UserTest {
    
    
    public static void main(String[] args) {
    
    
        // 为了能够回到首界面
        while (true) {
    
    
            // 欢迎界面给出选择项
            System.out.println("------------欢迎光临------------");
            System.out.println("1登录");
            System.out.println("2注册");
            System.out.println("3退出");
            System.out.println("请输入你的选择");
            // 键盘录入选择,根据选择做不同的操作
            Scanner sc = new Scanner(System.in);
            String choiceString = sc.nextLine();

            // switch语句的多个地方要使用,因此定义在外面
            // 多态
            UserDao ud = new UserDaoImpl();

            switch (choiceString) {
    
    
                case "1":
                    // 登录界面,输入用户名和密码
                    System.out.println("------------登录界面------------");
                    System.out.println("请输入用户名:");
                    String username = sc.nextLine();
                    System.out.println("请输入密码:");
                    String password = sc.nextLine();

                    // 调用登录功能
                    boolean flag = ud.isLogin(username, password);
                    if (flag) {
    
    
                        System.out.println("登录成功!");

                        System.out.println("你玩猜数字游戏吗?y/n");
                        while (true) {
    
    
                            String resultString = sc.nextLine();
                            if (resultString.equalsIgnoreCase("y")) {
    
    
                                // 玩猜数字游戏
                                GuessNumber.start();
                                System.out.println("你还玩吗?y/n");
                            } else {
    
    
                                break;
                            }
                        }
                        System.out.println("谢谢使用,欢迎下次再来!");
                        System.exit(0);
                        // 这里如果用break,结束的是switch
                    } else {
    
    
                        System.out.println("用户名或密码错误,登录失败");
                    }
                    break;
                case "2":
                    // 欢迎界面,请输入用户名和密码
                    System.out.println("------------注册界面------------");
                    System.out.println("请输入用户名:");
                    String newUsername = sc.nextLine();
                    System.out.println("请输入密码:");
                    String newPassword = sc.nextLine();

                    // 把用户名和密码封装到一个对象中
                    User user = new User();
                    user.setUsername(newUsername);
                    user.setPassword(newPassword);

                    // 调用注册功能
                    // 具体类使用
                    ud.regist(user);
                    System.out.println("注册成功!");
                    break;
                case "3":
                default:
                    System.out.println("谢谢使用,欢迎下次再来!");
                    System.exit(0);
                    break;
            }
        }
    }
}


4. デモンストレーション

登録ユーザー:Zhao Meng、Yu Wenwen、Liu Lian の 3 人
ユーザー登録

ユーザー Zhao Meng がログインし、数字当てゲームをプレイするかどうかを選択し、
ログイン
数字当てゲームをプレイすることを選択し
数字を推測してください
て終了します。
仕上げる


参考文献:

Liu Yi の JavaSE ビデオを参照してください。

おすすめ

転載: blog.csdn.net/qq_39691492/article/details/130000498