小练习:幸运抽奖

 

需求说明:

1.输出菜单

选择菜单编号,输出菜单信息

如果编号选择错误,输出“您的输入有误!

2.系统询问用户是否继续 如果用户选择继续,则可以继 续选择菜单,否则程序结束, 退出系系统

3.输入用户名和密码,系统产生 4位随机数作为卡号。 注册成功,显示注册信息并修 改注册标识为true

4.输入注册时的用户名和密码, 登录成功,系统提示欢迎信息 如果用户名和密码输入错误, 提示用户继续输入,最多有3 次输入机会

5.登录成功后,用户选择幸运抽 奖菜单,进入幸运抽奖功能 输入会员卡号,系统生成5个4 位随机数作为幸运数字 如果会员卡号是其中之一,则 成为本日幸运会员;否则不是 幸运会员

6.可以允许多注册,保存多个用 户注册的信息。 登录只需要登录一次。 注册时,保证用户名唯一性

 

package cn.javasm.demo;

import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.CountDownLatch;

public class LuckyDemo {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str;
        boolean loginFlag = false;
        do {
            System.out.println("*****************欢迎进入幸运抽奖系统*****************\n" +
                    "*********************************************************\n" +
                    "1.注册\n" +
                    "2.登录\n" +
                    "3.抽奖\n" +
                    "*********************************************************");
            System.out.println("请选择要操作的功能:");
            int choice = scanner.nextInt();
            switch (choice){
                case 1:
                    // 注册
                    userRegist(scanner);
                    break;
                case 2:
                    // 登录
                    loginFlag = userLogin(scanner,loginFlag);
                    break;
                case 3:
                    // 抽奖
                    lucky(loginFlag);
                    break;
                default:
                    System.out.println("输入有误!");
                    break;
            }

            System.out.println("是否要继续?y/n");
            str = scanner.next();
        } while ("y".equals(str));

        System.out.println("程序终止");
    }

    // 抽奖方法
    private static void lucky(boolean loginFlag) {
        // 判断用户是否登录
        if (!loginFlag){
            System.out.println("请先登录");
            return;
        }
        // 生成5个随机数字
        int[] luckyNumArray = new int[5];
        for (int i = 0; i < luckyNumArray.length; i++) {
            luckyNumArray[i] = (int)(Math.random() * 9000 + 1000);
        }
        System.out.println("今日的幸运卡号是" + Arrays.toString(luckyNumArray));

        for (int num : luckyNumArray) {
            if (num == cardNoArray[userLoingIndex]){
                System.out.println(cardNoArray[userLoingIndex] + "是今日的幸运会员");
                return;
            }
        }
        System.out.println(cardNoArray[userLoingIndex] + "不是今日的幸运会员");


    }

    private static boolean userLogin(Scanner scanner,boolean loginFlag) {

        // 登录前先注册
        if (nameArray[0] == null){
            System.out.println("请先注册");
            return false;
        }

        if (loginFlag){
            System.out.println("已经登录成功了,是否要切换登录账号?");
            String str = scanner.next();
            if (!"y".equals(str)){
                return true;
            }
        }

        int count = 3;
        do {
            count--;
            System.out.println("请输入用户名:");
            String loginName = scanner.next();
            System.out.println("请输入密码:");
            String loginPwd = scanner.next();

            for (int i = 0; i < index; i++) {
                // 登录的数据和注册的数据进行比较
                if (loginName.equals(nameArray[i]) && loginPwd.equals(passArray[i])){
                    System.out.println("登录成功,欢迎您" + loginName);
                    userLoingIndex = i;
                    return true;
                }
            }

            if (count == 0){
                System.out.println("3次机会已经用完,返回到主界面");
                return false;
            }

            System.out.println("登录失败,还剩下" + count + "次机会,请重新登录");
        } while (true);
    }

    // 全局变量
//    public static String registName;
//
//    public static String registPassword;
//
//    public static int randomNum;
    // 用户名数组
    public static String[] nameArray = new String[1];
    // 密码数组
    public static String[] passArray = new String[1];
    // 卡号数组
    public static int[] cardNoArray = new int[1];

    public static int userLoingIndex = 0;//当前登录用户的索引

    // 数组中的有效数据的个数
    public static int index = 0;


    private static void userRegist(Scanner scanner) {
        System.out.println("请输入注册信息:");
        System.out.println("请输入注册的用户名:");
        String registName;
        do {
            registName = scanner.next();
            // false代表没有重名,true代表重名了
            boolean flag = false;
            for (int i = 0; i < index; i++) {
                if (registName.equals(nameArray[i])){
                    System.out.println(registName + "重名了,请重新输入");
                    flag = true;
                    break;
                }
            }
            if (!flag) break;

        } while (true);

        System.out.println("请输入注册的密码:");
        String registPassword = scanner.next();
        // 生成4位随机数  Math.random  范围是[0,1)
        // [1000,10000)  Math.random() * (最大值 - 最小值) + 最小值
        int randomNum = (int)(Math.random() * (10000 - 1000) + 1000);

        // 判断数组是否需要扩容
        if (index >= nameArray.length){
            // 扩容
            int newLength = (nameArray.length + index) * 2;
            nameArray = Arrays.copyOf(nameArray,newLength);
            passArray = Arrays.copyOf(passArray,newLength);
            cardNoArray = Arrays.copyOf(cardNoArray,newLength);
        }

        nameArray[index] = registName;
        passArray[index] = registPassword;
        cardNoArray[index++] = randomNum;


        System.out.println("注册成功,信息如下:");
        System.out.println(registName + "\t" + registPassword + "\t" + randomNum);
    }
}

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值