Java之抽奖系统

分析

    开始工程之前需要分析这个抽奖系统需要几个类

    1.存储用户信息的用户类
    2.注册类类
    3.登录类
    4.抽奖类
    5.游戏开始类
    6.测试类

用户信息类

    /*
     * 用户信息类
     * 1.账号
     * 2.密码
     * 3.卡号
     * 4.是否(布尔型)登录   (两种状态可以用 布尔 3种及以上可以用 int)
     */
    public class User {
        public static String userName = "";
        public static String passWord = "";
        public static int cardNumber = 0;
        // 是否登录
        public static boolean isLogin = false;
        //是否注册
        public static boolean isRegister = false;

    }

注册类

    /*
     * 注册类
     * 1.输入账号 密码
     * 2.产生随机号[1000,2000]
     * 3.保存注册用户信息 到 用户信息类
     * 4.提示注册成功
     */

    public class Register {
        //注册方法
        public static void userRegister() {
            System.out.println("请输入注册账号:");
            Scanner scanner = new Scanner(System.in);
            //接收用户信息
            String userName = scanner.nextLine();
            System.out.println("请输入注册密码:");
            //接收密码
            String passWord = scanner.nextLine();
            //随机生成卡号
            int num = (int)(Math.random() * 1001 + 1000);
            //保存到 用户类中
            User.userName = userName;
            User.passWord = passWord;
            User.cardNumber = num;
            //打印一下抽奖的卡号
            System.out.println("注册成功,请记好你的会员卡号");
            System.out.println("用户名: " + userName);
            System.out.println("密码: " + passWord);
            System.out.println("卡号: " + num);

            //保存注册状态
            User.isRegister = true;
        }
    }

登录类

    /*
     * 登录类
     * 1.输入登录的账号和密码
     * 2.和用户信息 进行匹配
     *   有三次重新输入的机会
     * 3.登录成功
     */
    public class Login {
        //保存登录失败次数
        static int num = 0;

        // 登录方法
        // 静态方法 里面 需要 使用 静态的成员变量
        public static boolean userlogin() {

            //上来先判断 是否注册
            if (User.isRegister == false) {
                System.out.println("请先注册");
                // 没注册 相当于 登录失败
                return false;
            }

            //输入信息
            System.out.println("请输入用户名:");
            Scanner scanner = new Scanner(System.in);
            //接收信息
            String userName = scanner.nextLine();
            System.out.println("请输入密码:");
            String password = scanner.nextLine();
            // 匹配登录信息
            if (userName.equals(User.userName) && password.equals(User.passWord)) {
                //登录成功
                System.out.println("欢迎您:" + userName);
                //返回登录结果
                return true;
            }else {
                //登录失败
                num++;
                //提示用户 还剩几次机会
                System.out.println("用户名或密码有误,请重新输入!");
                System.out.println("您还剩" + (3 - num) + "次机会 请重新输入");
                //判断登录错了几次
                if (num != 3) {
                    //继续登录
                    userlogin();
                }else {
                    //登录失败
                    System.out.println("对不起三次机会用完,请明日再来");
                    //重置记录登录次数的变量
                    num = 0;
                }
                //如果代码走到这里 说明 一定是 登录失败
                return false;
            }
        }
    }

抽奖类

     /*
     * 抽奖类
     * 1.判断是否登录
     * 2.输入抽奖卡号
     *   有3次输入卡号的机会
     * 3.判断是否中奖
     */
    public class CJ {

        //保存输入卡号的次数
        static int cardNumber = 0;

        // 抽奖
        public static void userCJ() {
            // 判断登录状态
            if (User.isLogin == false/*相当于 !User.isLogin */) {
                // 没登陆 直接结束方法
                System.out.println("请先登录");
                return;
            }
            //判断是否输入卡号
            if (!isCardNum()) {
                System.out.println("你输入的不正确");
                return; 
            }

            //匹配账号
            //保存是否中奖的变量
            boolean isCJ = false;
            //随机5个数并且拼接成字符串打印 逗号隔开
            String string = "本日幸运数字:";
            for (int i = 0; i < 5; i++) {
                //随机
                int num = (int)(Math.random() * 1001 + 1000);
                //拼接
                if (i < 4) {
                    string = string + num + ",";
                } else {
                    string = string + num;
                }
                //查看是否中奖
                if (num == User.cardNumber) {
                    isCJ = true;
                }
            }
            //打印中奖号
            System.out.println(string);
            if (isCJ) {
                System.out.println("恭喜你中奖了");
            }else {
                //没中奖
                System.out.println("很遗憾请下次再来");
            }
        }
        //输入卡号的方法
        public static boolean isCardNum() {
            System.out.println("请输入卡号:");
            Scanner scanner = new Scanner(System.in);
            //接收 
            String cardNum = scanner.nextLine();
            //转int
            int num = Integer.parseInt(cardNum);
            //进行比对 
            if (User.cardNumber == num) {
                //匹配正确
                System.out.println("卡号输入正确");
                return true;
            }else {
                //匹配错误
                num++;
                System.out.println("还剩" + (3 - cardNumber) + "次机会");
                if (cardNumber != 3) {
                    isCardNum();
                }else {
                    System.out.println("您的机会已经用完,请下次再来");
                    //重置输入卡号的次数
                    cardNumber = 0;
                }
                return false;
            }
        }
    }

游戏开始类

    /*
     * 抽奖开始类(组装抽奖逻辑)
     */
    public class CJStart {
        //抽奖开始
        public void cjStart() {
            //是否继续主菜单
            String isGoOn = "";
            //循环主菜单
            do {
                System.out.println("*****欢迎进入抽奖系统*****");
                System.out.println("       1.注册");
                System.out.println("       2.登录");
                System.out.println("       3.抽奖");
                System.out.println("**************************");
                Scanner scanner = new Scanner(System.in);
                // 接收菜单选项
                String menuNum = scanner.nextLine();
                // 判断选项
                chooseMenuNum(menuNum);
                //接收是否继续
                System.out.println("是否选择继续? y/n");
                isGoOn = scanner.nextLine();
            } while (isGoOn.equals("y"));

        }

        //判断菜单选项
        public void chooseMenuNum(String menuNum) {
            switch (menuNum) {
            case "1":
                System.out.println("[抽奖系统 > 注册]");
                // 调用注册方法
                Register.userRegister();
                break;
            case "2":
                System.out.println("[抽奖系统 > 登录]");
                /*
                //调用登录方法
                boolean userLogin = Login.userlogin();
                //记录(保存)登录的状态
                User.isLogin = userLogin;
                */
                //上面和下面方法一样 只是 两行写成一行
                //调用登录方法
                //记录(保存)登录的状态
                User.isLogin = Login.userlogin();
                break;
            case "3":
                System.out.println("[抽奖系统 > 抽奖]");
                CJ.userCJ();
                break;

            default:
                System.out.println("请重新选择");
                break;
            }
        }
    }

测试类

    /*
 * 测试类
 */
public class CJTest {
    public static void main(String[] args) {
        CJStart cjStart = new CJStart();
        cjStart.cjStart();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值