Java collection realizes simple user registration and login and plays guessing number game demo

Series Article Directory

Java collection realizes simple user registration and login and plays guessing number game demo
Java uses IO to realize simple user registration and login and plays guessing number game demo



1. Project scenario

Simply use the Java collection to fully realize the case of user registration and login and play a small game of guessing numbers.
(Number guessing game: the system randomly generates a number between 1-100 for the user to guess, and gives prompts for guessing big, small, and the number of correct guesses)


2. Analysis

What classes are there?
– User class
– Test class

What does each class contain?
–User class:
–Member variable: username (username), password (password)
–Construction method: no parameter construction
–Member method: getXxx() / setXxx()
–Test class:
–main() method

What is the relationship between classes and classes?
– Create objects of user operation class and user basic description class in the test class, and use their functions.

Subpackage by function
– user basic description class package pojo
– user operation interface dao
– user operation class package dao.impl
– user test classtest

The project directory structure is shown in the figure
Project directory structure


Three, realize

User basic description class 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;
    }
}


User operation interface 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);
}


The specific implementation of the user operation class 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);
    }
}


Guess the number game 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;
            }
        }
    }
}


Implementation of user test class 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. Demonstration

Registered three users: Zhao Meng, Yu Wenwen, Liu Lian
user registration

User Zhao Meng logs in, chooses whether to play the number guessing game, chooses to play
Log in
the number guessing game
guess the number
and ends
Finish


References:

Refer to Liu Yi's JavaSE video

Guess you like

Origin blog.csdn.net/qq_39691492/article/details/130000498