抽奖系统

是一个简单的抽奖系统,通过输入的选项执行相关的操作,

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;
	}
}

posted @ 2017-08-31 08:49  煮酒问寒秋  阅读(115)  评论(0编辑  收藏  举报