Java那些事儿

抽奖系统

2017-08-31  本文已影响0人  文艺小年青

如下是功能实现的代码:

import java.lang.invoke.SwitchPoint;
import java.util.Arrays;
import java.util.Scanner;

//抽奖系统
public class Test01 {

    static String userName = "";  //用户名
    static String password = "";  //密码
    static int i = 0;  //登录次数
    static boolean islogin = false;   //登录状态,默认是没有登陆的

    public static void main(String[] args) {

        while (true) {
            System.out.println("*****欢迎进入抽奖系统*****");
            System.out.println(" 1,注册 \n 2,登录 \n 3,参加抽奖");
            System.out.println("********************");
            System.out.println("请选择:");
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();

            //根据用户输入,进行相关的操作
            doSome(num);
            System.out.println("是否退出:(exit)");
            String string = sc.next();
            if ("exit".equals(string)) {
                return;
            }
        }
    }
    //根据用户输入,进行相关的操作
    static void doSome(int num) {
        if (num > 3 || num < 1) {   //只能输入1,2,3
            System.out.println("输入错误,请重新输入");
            return;
        }
        switch (num) {
        case 1 : {   // 注册
            System.out.println("抽奖 > 注册");

            //1,判断是否已经注册过了,如果是,就不需要在注册
            boolean regist = isRegist();
            if (regist) {
                System.out.println("已经注册过了,请执行其他操作");
                return;
            }else {
                //2,用两个变量来保存一下用户名和密码
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入用户名");
                userName = sc.next();
                System.out.println("请输入密码");
                password = sc.next();
                //3,注册成功,用户名...
                System.out.println("注册成功,用户名:" + userName);
            }
            break;
        }
        case 2 : {   // 登录
            System.out.println("抽奖 > 登录");
            //1,判断是否注册过,如果是,就可以登录,否则返回注册
            if (islogin) {
                System.out.println("已登录");
                break;
            }
            boolean regist = isRegist();
            if (regist) {  //注册过
                login();
            }else {   // 没有注册过
                System.out.println("请先注册...");
            }
            break;
        }

        default: {   // 抽奖
            System.out.println("抽奖 > 抽奖");
            //判断是否登录状态
            if (islogin == false) {
                System.out.println("未登录,请先登录");
                return;
            }

            //如果是登录状态,抽奖,否则,返回登录
            //代码到这里,表明已经登录成功了
            System.out.println("请输入您的幸运编号(4位):");
            Scanner scanner = new Scanner(System.in);
            int luckNum = scanner.nextInt();

            //获取随机出来的随机数字
            int[] arr = getArr();

            for (int i = 0; i < arr.length; i++) {
                if (luckNum == arr[i]) {
                    System.out.println("恭喜你中奖啦");
                    return;
                }
            }
            System.out.println("努努力,恭喜下次中奖");

            //抽奖  1,输入4位幸运数字    2,随机一个数组  
            //如果输入的数字在数组中,就中奖了,否则谢谢惠顾
            break;
        }
        }
    }

    //判断是否注册过   true是注册过   false是未注册过
    static boolean isRegist () {
        //字符串写在前面,null没有equals方法
        if ("".equals(userName) || userName == null ||
                "".equals(password) || password == null) {
            return false;
        }
        return true;
    }
    //判断用户名和密码与存储的是否相等.
    static boolean login(String name,String passwd) {
        if (Test01.userName.equals(name) && (Test01.password.equals(passwd))) {
            //每次登录成功以后归零
            i= 0;
            return true;
        }else {
            return false;
        }
    }
    //登录
    static void login () {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String userName = sc.next();
        System.out.println("请输入密码");
        String password = sc.next();
        //判断用户名和密码与存储的是否相等
        boolean login = login(userName, password);
        if (login) {  //登录成功
            System.out.println("登录成功");
            Test01.islogin = true;  //把当前的状态标记成登录成功
        }else {  //登录失败
            System.out.println("请重新登录");
            //输入三次以后退出
            if (i >= 3) {
                System.out.println("登录次数过多,明天再试吧");
                System.exit(-1);  //虚拟机终止
                return;
            }
            i++;
            //调用自己本身
            login();
        }
    }
    //抽奖环节随机数组的函数
    static int[] getArr() {
        //初始化数组
        int[] numArr = new int[5];
        //随机1000-9999数字放到数组中
        //调用test02的rand方法
        int index = 0;
        boolean tag = false;
        //如果数组的下标为4的元素是0,说明数组没有装满,可以继续执行
        while (numArr[4] == 0) {
            tag = false;
            int num = Test02.rand(1000, 9999);
            //循环判断,每次生成的随机数不与之前放进数组中的数重复
            for (int i = 0; i < index; i++) {
                //如果重复,tag改为true,并且跳出本次循环,
                if (num == numArr[i]) {
                    tag = true;
                    break;
                }
            }
            //如果tag = true,返回继续执行,不走下边的代码
            if (tag) {
                continue;
            }
            //如果不为true,则把随机数放到数组中.
            numArr[index] = num;
            index++;
        }   

        return numArr;
    }
}

上一篇下一篇

猜你喜欢

热点阅读