day4幸运抽奖系统更新

代码:

import java.util.Random;
import java.util.Scanner;

public class Day4ProjectUpdate {
    static String confirm ;                       //confirm存放对是否继续操作的确认
    static String registerName = null;            //存放注册用户名*
    static String registerPassword = null;        //存放注册密码*
    static String loginName = null;               //存放登录用户名
    static String loginPassword = null;           //存放登录密码

    static int userNum = 0 ;                      //存放会员号*
    static int loginFlag = 0;                      //用于存放是否已经登录*
    static int lotteryFlag = 0 ;                   //用于存放是否已抽奖*
    static int registerFlag = 0 ;                  //用于存放是否已注册*
    static Random rand = new Random();            //用于生成随机数
    static Scanner input = new Scanner(System.in);//用于获取输入流
    static int[] rands = new int[5];         //用于存放随机出的抽奖号
    static String[][] users = new String[10][6];
    static int k = 0;
    public static void main(String[] args)  {

        do {
            menu();
            System.out.print("请选择菜单");
            int choose = input.nextInt();//choose存放菜单选择结果
            switch (choose){
                case 1:
                    register();
                    break;
                //case1注册模块
                case 2:
                        login();
                    break;
                //case2登录模块
                case 3:
                    lottery();
                    break;
                //case3 抽奖模块
                case 4:
                    exit();
                default:
                    System.out.println("您的输入有误,请输入1-4之间的数字实现菜单选择");
            }//switch 针对不同菜单选择做出的输出
            System.out.println("是否继续使用系统(y/n)");
            confirm = input.next();
        }while(confirm.equals("y") );
        if (!confirm.equals("n")) {
            System.out.println("输入错误,默认退出系统");
        }
        exit();//对于是否退出系统的判断 其他字符或n 退出系统
    }//main函数


    public static void menu(){
        System.out.println(" ~~~欢迎进入会员抽奖系统~~~");
        System.out.println(" |      1.注册会员       |");
        System.out.println(" |      2.会员登录       |");
        System.out.println(" |      3.开始抽奖       |");
        System.out.println(" |      4.退出程序       |");
        System.out.println(" ~~~~~~~~~~~~~~~~~~~~~~~ ");
    }//界面

    public static boolean judge(int tag){
        switch (tag){
            case 1:
                return true;//case1判断是否注册
            case 2:
                return true;//case2判断是否登录
            case 3:
            case -1:
                System.out.println("您抽过奖啦,不要贪心哦");
                if (tag == 3){
                    System.out.println("上次抽奖结果为:中奖");
                }else
                    System.out.println("上次抽奖结果为:未中奖");
                return true;//case3,4对是否抽奖和抽奖结果进行判断
            default:
                return false;//没有做过返回false
        }//switch
    }//judge方法判断当前用户状态

    public static String inputName(String users){
        do {
            if (users == null)
                System.out.print("请输入用户名(邮箱格式)");
            else
                System.out.println("输入错误,请重新输入(邮箱格式)");
            users = input.next();
        }while (!users.matches("[\\w]+@[\\w]+.[\\w]+") );//用户名格式判断
        System.out.println("用户名格式正确");
        return users;
    }//用户名输入

    public static String inputPassword(String password){
        do {
            if (password == null )
                System.out.print("请输入密码(不小于6位数字)");
            else
                System.out.println("请重新输入密码(不小于6位数字)");
            password=input.next();
        }while (!(password.length() >= 6) );
        System.out.println("密码格式正确");
        return password;
    }//密码输入

    public static void register(){
        if(!judge(registerFlag) ) {
            System.out.println("会员抽奖系统->注册会员");
            users[k++][0] = inputName(users[0][1]);
            registerPassword = inputPassword(registerPassword);
            userNum = rand.nextInt(10);//int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; 即int randNumber =rand.nextInt(9999 - 1000 + 1) + 1000;randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
            //注册信息输入
            printSign();
            registerFlag = 1;
        }else
            System.out.println("您已注册,不需要再注册啦");
    }//register注册方法

    public static void printSign (){
        System.out.println("注册成功,请记好您的用户信息");
        System.out.println("用户名:" + registerName);
        System.out.println("密码:" + registerPassword);
        System.out.println("会员卡号:" + userNum);
    }//输出注册后的信息

    public static void login(){
        System.out.println("会员抽奖系统->会员登录");
        if (!judge(registerFlag)){
            System.out.println("您还未注册,请先注册");
        }
        else if(!judge(loginFlag)) {
            int i;
            for (i = 0; i < 3; i++) {
                System.out.println("请输入用户名和密码,你还有" + (3 - i) + "次机会");
                loginName = inputName(loginName);
                loginPassword = inputPassword(loginPassword);
                if (loginName.equals(registerName)  && loginPassword.equals(registerPassword) ) {
                    System.out.println("用户名密码正确");
                    break;
                }
                System.out.println("输入的用户名或密码错误");
            }//for 3次匹配账号密码的机会
            if (i == 3) {
                System.out.println("您输入错误次数过多,即将退出系统..");
                exit();
            }//3次错误退出系统
            else {
                System.out.println("登陆成功");
                loginFlag = 2;
            }//错误次数不够3次,登录成功,并修改loginTag值
        }//if未登录登录
        else System.out.println("您已登录");
    }//login登录方法

    public static boolean compare(int[] arry ,int randNum){
        for (int i = 0; i < 5; i++) {
            if (arry[i] == randNum) {
                return false;
            }
        }
        return true;
    }//compare函数比较随机数是否重复

    public static void createRands(int[] randList){
        for( int i = 0; i < 5; i++){
            int tans2 = rand.nextInt(10);
            if(compare(randList,tans2))
                randList[i] = tans2;
            else
                i--;
        }
    }//createRands产生不重复随机数

    public static void lottery(){
        System.out.println("会员抽奖系统->开始抽奖");
        if (!judge(loginFlag)){
            System.out.println("您还未登录,不能抽奖");
        }//判断是否已登录
        else if(!judge(lotteryFlag)) {
            createRands(rands);
            System.out.println("您已登录,欢迎进行抽奖");
            System.out.println("您的会员号为" + userNum);
            System.out.print("今日中奖会员号为");
            for (int i = 0; i < 5; i++) {
                System.out.print(rands[i] + ",");
            }//打印测试抽奖号
            System.out.println();
            int j;
            for (j = 0; j < 5; j++) {
                if (userNum == rands[j]) {
                    System.out.println("恭喜您,中奖啦!");
                    lotteryFlag = 1;
                    break;
                }
            }//for 比较是否中奖
            if (j == 5) {
                System.out.println("很遗憾,没有中奖");
                lotteryFlag = -1;
            }
        }//else if登录并为抽过奖可以抽奖
    }//lottery抽奖方法

    public static void exit() {
        System.out.println("即将退出...");
        System.out.println("系统退出,感谢使用!");
        input.close();//结束程序前关闭输入流
        System.exit(0);//用exit指令退出程序,0表示正常退出,程序正常执行结束退出,1是非正常退出,就是说无论程序正在执行与否,都退出,
    }//退出系统

}//class类

现在回看之前的代码.注释冗余

tips :

  • int [] randLIst = createrand (5);//java数组可以
    
  • for(int i : randList){
        System.out.print(i + "\t");
    }//用增强for(for each)打印全部数组元素
    
posted @ 2021-01-12 17:26  zzz2077  阅读(35)  评论(0编辑  收藏  举报