系列文章目录

Java集合实现简单的用户注册登录并玩猜数字小游戏demoJava用IO实现简单的用户注册登录并玩猜数字小游戏demo



文章目录

  • 系列文章目录
  • 一、项目场景
  • 二、分析
  • 三、实现
  • 四、演示



一、项目场景

简单的用Java集合完整实现用户注册登录并玩猜数字小游戏案例。
(猜数字游戏:系统随机生成一位1-100之间的数字让用户猜,给出猜大了,猜小了,及第几次猜对了的提示)


二、分析

有哪些类?
–用户类
–测试类

每个类有哪些内容?
–用户类:
–成员变量:username(用户名),password(密码)
–构造方法:无参构造
–成员方法:getXxx() / setXxx()
–测试类:
–main()方法

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

按功能分包
–用户基本描述类包 pojo –用户操作接口 dao –用户操作类包 dao.impl –用户测试类 test

项目目录结构如图所示

java模拟登陆需要用户名密码的网站 java模拟用户注册_开发语言


三、实现

用户基本描述类 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;
            }
        }
    }
}

四、演示

注册了三个用户:赵梦、于文文、刘恋

java模拟登陆需要用户名密码的网站 java模拟用户注册_jvm_02

用户赵梦登录,选择是否玩猜数字游戏,选择玩

java模拟登陆需要用户名密码的网站 java模拟用户注册_开发语言_03


猜数字游戏

java模拟登陆需要用户名密码的网站 java模拟用户注册_idea_04


结束

java模拟登陆需要用户名密码的网站 java模拟用户注册_java_05


参考引用:

参考刘意JavaSE视频