抽奖系统
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;
}
}