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:

  • 变量等级逐级提升,作用范围只用扩大一次就行
原文地址:https://www.cnblogs.com/zzz1zzz/p/14249042.html