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

news/2024/5/20 1:02:28 标签: java, jvm, 开发语言, idea, gradle

项目场景:

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


分析:

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

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

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

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

项目目录结构如图所示
项目目录结构


实现:

用户基本描述类 User.java

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

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

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

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

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;
            }
        }
    }
}


演示:

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

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


参考引用:

参考刘意JavaSE视频


http://www.niftyadmin.cn/n/221098.html

相关文章

AI+明厨亮灶智能算法 yolo

AI明厨亮灶智能算法通过pythonyolo网络模型分析算法&#xff0c;AI明厨亮灶模型算法可接对后厨实现如口罩识别、厨师服穿戴、夜间老鼠监测、厨师帽识别、厨师玩手机打电话识别、抽烟识别等实时分析监测。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就…

Prophet学习(四)趋势Changepoints

目录 趋势Changepoints&#xff08;Trend Changepoints&#xff09; Prophet中的自动更改点检测&#xff08;Automatic changepoint detection in Prophet&#xff09; 调整趋势灵活性&#xff08;Adjusting trend flexibility&#xff09; 指定变更点的位置&#xff08;Spe…

iOS-2023年最新面试题

Runloop RunLoop 的本质是什么&#xff1f;Runloop和线程是什么关系&#xff1f;Runloop的底层数据结构是什么样的&#xff1f;有几种 运行模式&#xff08;mode&#xff09;&#xff1f;每个运行模式下面的 CFRunloopMode 是哪些&#xff1f;他们分别是什么职责&#xff1f;R…

1.4 Docker Swarm-详细介绍

Docker Swarm 是 Docker 官方推出的容器编排工具&#xff0c;用于管理 Docker 容器集群。Docker Swarm 的主要功能包括容器的部署、扩容、缩容、更新等。本文将详细介绍 Docker Swarm 的相关概念、架构、部署和使用方法。 一、Docker Swarm 概述 Docker Swarm 是 Docker 官方…

MySQL查看与修改数据库字符集

MySQL查看与修改数据库字符集utf8 vs utf8mb3 vs utf8mb4查看字符集和排序规则默认字符集的继承关系修改字符集和排序规则修改数据库的默认字符集修改表的字符集和排序规则utf8 vs utf8mb3 vs utf8mb4 根据MySQL官方文档解释&#xff0c;目前MySQL中的utf8字符集&#xff0c;实…

深入了解网络通信原理

同一个 vlan 同一个网段的 ip 地址能够直接互通&#xff0c;那么同一个 vlan 不同的网段能不能互通呢&#xff1f;海翎光电的小编整理了一篇文章&#xff0c;可以解决大家在网络中遇到的一些奇怪的问题&#xff0c;也是可以加深对网络的理解。 一、同 VLAN 不同网段能否 Ping 通…

mkv视频文件怎么转成mp4,这3个方法很好用

对于那些电脑不是很精通的小伙伴来说&#xff0c; mkv视频文件怎么转成mp4&#xff1f;小编先来介绍一下mkv视频格式&#xff0c;mkv是一种开放标准的自由的容器和文件格式&#xff0c;是一种多媒体封装格式&#xff0c;能够在一个文件中容纳无限数量的视频、音频、图片或字幕轨…

京东pop店铺订单导出

下载安装与运行 下载、安装与运行 语雀 特别提醒 只能导出已登录店铺的订单导出的收件人手机号是虚拟号 功能 主要是方便线下工厂发货的店主 所见即所得的导出自由选择导出项自由排序Excel导出列顺序导出过程中有进度提示&#xff0c;用户可以随时提前中止 什么是所见即所…