• day3幸运抽奖系统


    项目要求

    • 用户注册
      • 新用户输入用户名和密码注册用户。当用户注册成功后,可以为用户分配一个4位随机会员号。
      • 开发时为了方便测试,会员号设置为1位。
    • 用户登录
      • 用户输入用户名和密码登录系统,若无该用户提示用户名密码错误,重新登录。
    • 幸运抽奖
      • 用户登录成功后可以进入抽奖功能进行抽奖,系统随机生成五个幸运数字,若该用户会员号等于某数组则抽奖成功。

    功能升级

    • 用户有三次登录机会,当三次登录全都失败时退出系统。
    • 5个随机数字不能重复。
    • 该系统可以实现多用户注册登录抽奖功能。

    代码(功能升级中实现了三次登录,和5个随机数不重复,没有实现多用户):

    import java.util.Random;//导入随机数包
    import java.util.Scanner;
    public class Day3Project1Lottery {
        public static boolean compare(int[] arry ,int randNum){
            for (int i = 0; i < 5; i++) {
                if (arry[i] == randNum) {
                    return false;
                }
            }
            return true;
        }//比较随机数是否重复
        public static void main(String[] args)  {
    
            Scanner input = new Scanner(System.in);
            String confirm ;                     //confirm存放对是否继续操作的确认
            String registerName = null;          //存放注册用户名
            String registerpassword = null;      //存放注册密码
            int userNum = 0 ;                    //存放会员号
            int userNum2 = 0 ;                   //抽奖测试用号
            int loginTag = 0;                    //用于存放是否已经登录
            int lotteryTag = 0 ;                 //用于存放是否已抽奖
            int registerTag = 0 ;                //用于存放是否已注册
            Random rand = new Random();          //用于生成随机数
    
    
            do {
                System.out.println(" ~~~欢迎进入会员抽奖系统~~~");
                System.out.println(" |      1.注册会员       |");
                System.out.println(" |      2.会员登录       |");
                System.out.println(" |      3.开始抽奖       |");
                System.out.println(" |      4.退出程序       |");
                System.out.println(" ~~~~~~~~~~~~~~~~~~~~~~~ ");
            //界面
            System.out.print("请选择菜单");
            int choose = input.nextInt();//choose存放菜单选择结果
                switch (choose){
                    case 1:
                        if(registerTag == 1){
                            System.out.println("您已注册,不需要再注册啦");
                        }
                        else{
                            System.out.println("会员抽奖系统->注册会员");
                            System.out.print("请输入用户名");
                            registerName = input.next();//待增加用户名格式判断
                            userNum = rand.nextInt(9000)+1000;//int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; 即int randNumber =rand.nextInt(9999 - 1000 + 1) + 1000;
                            // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
                            userNum2 = rand.nextInt(10);//抽奖测试号
                            System.out.print("请输入密码");
                            registerpassword =input.next();//待增加密码格式判断
                            //注册信息输入
                        {
                            System.out.println("注册成功,请记好您的用户信息");
                            System.out.println("用户名:" + registerName);
                            System.out.println("密码:" + registerpassword);
                            System.out.println("会员卡号:" + userNum);
                            System.out.println("(测试)会员卡号:" + userNum2);
                        }//注册信息输出
                        registerTag = 1;
                        }
                        break;
                        //case1注册模块
                    case 2:
                        System.out.println("会员抽奖系统->会员登录");
                        if(loginTag == 1){
                            System.out.println("您已登录");
                        }//判断是否已经登录过(单用户)
                        else {
                            int i;
                            for (i = 0; i < 3; i++) {
                                System.out.println("请输入用户名和密码,你还有" + (3 - i) + "次机会");
                                System.out.print("用户名:");
                                String loginName = input.next();
                                System.out.print("密码:");
                                String loginPassword = input.next();
                                if (loginName.equals(registerName) && loginPassword.equals(registerpassword)) {
                                    break;
                                }//满足条件跳出整个for循环
                            }//3次输入账号密码的机会
                            if (i == 3) {
                                System.out.println("您输入错误次数过多,即将退出系统..");
                                System.out.println("系统退出,感谢使用!");
                                input.close();
                                System.exit(0);
                            }//3次错误退出系统
                            else {
                                System.out.println("登陆成功");
                                loginTag = 1;
                            }//错误次数不够3次,登录成功,并修改loginTag值
                        }//未登录过进行登录操作
                        break;
                        //case2登录模块
                    case 3:
                        System.out.println("会员抽奖系统->开始抽奖");
                        if (loginTag == 0){
                            System.out.println("您还未登录,不能抽奖");
                        }//判断是否已登录
                        else if(lotteryTag ==1){
                            System.out.println("您已经中奖啦,不要贪心哦~");
                        }else if(lotteryTag == -1) {
                            System.out.println("您已经抽过奖啦,虽然没中奖,不要灰心,明天再来哦~");
                        }else{
                            System.out.println("您已登录,欢迎进行抽奖");
                            System.out.println("您的会员号为:" + userNum);
                            int[] randList = new int[5];
                            for(int i = 0; i < 5; i++){
                                int tans = rand.nextInt(9000) + 1000;
                                if(compare(randList,tans))
                                    randList[i] = tans;
                                else
                                    i--;
                            }//使随机值不重复
                            System.out.print("今日中奖会员号为");
                            for(int i = 0; i < 5; i++){
                                System.out.print(randList[i] + ",");
                            }//显示出所有抽奖号
                            int i;
                            System.out.println();
                            for( i = 0; i < 5; i++){
                                if(userNum == randList[i]){
                                    System.out.println("恭喜您,中奖啦!");
                                    //lotteryTag = 1; //为了测试注释这行代码,正式使用解除注释
                                    break;
                                }
                            }if (i == 5){
                                System.out.println("很遗憾,没有中奖");
                                //lotteryTag = -1;//为了测试注释这行代码,正式使用解除注释
                            }//判断是否中奖
    ////////////////////////////////////////以下为测试抽奖代码///////////////////////////////////////
                            int[] randList2 = new int[5];//测试用
                            for( i = 0; i < 5; i++){
                                int tans2 = rand.nextInt(10);
                                if(compare(randList2,tans2))
                                    randList2[i] = tans2;
                                else
                                    i--;
                            }
                            System.out.println("您的测试会员号为" + userNum2);
                            System.out.print("(测试)今日中奖会员号为");
                            for( i = 0; i < 5; i++){
                                System.out.print(randList2[i] + ",");
                            }//测试抽奖号
                            System.out.println();
                            int j;
                            for( j = 0; j < 5;j++){
                                if(userNum2 == randList2[j]){
                                    System.out.println("(测试)恭喜您,中奖啦!");
                                    lotteryTag = 1;
                                    break;
                                }
                            }if(j == 5){
                                System.out.println("(测试)很遗憾,没有中奖");
                                    lotteryTag = -1;
                            }//测试判断是否中奖
    ///////////////////////////////////////以上为测试抽奖代码//////////////////////////////////////////////
                        }//else 已经登录,且未抽过奖进行抽奖
                        break;
                        //case3 抽奖模块
                    case 4:
                        System.out.println("即将退出...");
                        System.out.println("系统退出,感谢使用!");
                        input.close();//结束程序前关闭输入流
                        System.exit(0);//用exit指令退出程序,0表示正常退出,程序正常执行结束退出,1是非正常退出,就是说无论程序正在执行与否,都退出,
                        break;
                        //case4 退出模块
                    default:
                        System.out.println("您的输入有误,请输入1-4之间的数字实现菜单选择");
                }//switch 针对不同选择做出的输出
                System.out.println("是否继续使用系统(y/n)");
                confirm = input.next();
            }while(confirm.equals("y") );//输入y继续进行程序
            if (!confirm.equals("n")) {
                System.out.println("输入错误,默认退出系统");
            }
            System.out.println("即将退出...");
            System.out.println("系统退出,感谢使用!");
            input.close();
            System.exit(0);
        }//main函数
    }//class类
    
    

    tips:

    • 变量等级逐级提升,作用范围只用扩大一次就行
  • 相关阅读:
    设置lable内容不上下居中
    iOS中webView加载URL需要处理特殊字符
    搞一个app需要多久?
    戏说HTML5
    限制UITextField/UITextView的输入字数与中文输入之后的英文换行问题
    iOS6以后的单个控制器横竖屏显示以及旋转屏控制技巧,附带iOS8以后显示电池状态栏
    纯命令行教你Cocoapods的安装和使用
    iOS开发之各种动画各种页面切面效果
    UITextView/UITextField检测并过滤Emoji表情符号
    类里面的大括号{}加载顺序
  • 原文地址:https://www.cnblogs.com/zzz1zzz/p/14249042.html
Copyright © 2020-2023  润新知