案例结果展示:
思路分析
根据案例得知,
1
我们首先要有一个菜单栏,还有一个while循环(不能让用户输完选项就结束),还有有一个条件用来停止while(这里我们设置的是当输入为“exit”时,满足条件,即退出循环)
2
获取用户输入的值,然后执行相关操作。例如 如果用户输入的1,则我们进入注册的页面。(这里选择用的是switch条件判断)
3
注册
先要有两个变量保存输入的用户名和密码.但是如果这位用户之前注册过,数据会重复,所以我们还要做个判断,判断是否之前注册过.
判断是否注册(regist)
登录
同理,我们也要先判断一下,用户是否之前注册过.
如果注册过,就可以登录,如果没注册,那就去注册
抽奖
判断是否登录,如果用户没有登录,那么先登录
如果用户登录了,那么进行注册
判断登录的方法(islogin)
先随机出4个数,若用户输入的数等于随机出来的数,则中奖了,否则没有.
随机数的方法(rand)
import java.sql.Blob;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
import javax.swing.text.html.HTML.Tag;
//1菜单
public class Menu {
static String userName = "";// 用户名
static String passWord = "";// 密码
static int i = 0;// 登陆次数
static boolean islogin = false;// 登录状态,默认是没有登录的
public static void main(String[] args) {
while (true) {
// \t制表符 \n 换行
System.out.println("********欢迎进入抽奖系统********");
System.out.println("\t1. 注册");
System.out.println("\t2. 登录");
System.out.println("\t3. 参加抽奖");
System.out.println("***********************************");
System.out.println("请选择菜单");
// 用户输入
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 根据用户的输入,进行相关的操作
// 调用函数
doSomeBySelect(num);
System.out.println("是否退出:(exit)");
String str = sc.next();
if ("exit".equals(str)) {
break;
}
}
}
// 2根据用户的输入,执行相应的操作
static void doSomeBySelect(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("已经注册过了,请执行其他操作");
} 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();
}
;
break;
}
case 3: {
System.out.println("[抽奖系统 > " + "抽奖]");
// 判断是否登录状态
// 如果登录状态 抽奖 否则登录
if (islogin == false) {
System.out.println("未登录,请先登录");
return;
}
// 抽奖 1:输入4位幸运数字
System.out.println("请输入您的幸运编号(4位数字)");
Scanner sc = new Scanner(System.in);
int luckyNum = sc.nextInt();
// 获取随机出来的幸运数字
int[] arr = getArr();
// 2:随机一个数组{1234,5455,5464,4785}
// 如果输入的数字 在数组中 中将了 否则谢谢惠顾
for (int i = 0; i < arr.length; i++) {
if (luckyNum == arr[i]) {
System.out.println("恭喜您,中奖了");
return;
}
}
System.out.println("努努力,恭喜下次中奖");
break;
}
default:
System.out.println("请重新选择");
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 password) {
if (Menu.userName.equals(userName) && (Menu.passWord).equals(password)) {
i = 0;// 归0
return true;
}
return false;
}
// 登录
static void login() {
// 执行登录
// 注册
// 2.用两个变量保存一下用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String userName = sc.next();
System.out.println("请输入密码:");
String passWord = sc.next();
System.out.println("注册成功,用户名为" + userName);
// 判断用户名和密码是否相等
boolean login = login(userName, passWord);
if (login) {
System.out.println("登陆成功,请执行其他操作");
Menu.islogin = true;// 把当前的状态标记成登陆成功
} else {// 未注册过
System.out.println("请重新登录");
if (i >= 3) {
System.out.println("登录次数过多,程序终止");
return;
}
i++;
login();
}
}
// 随机一个数组
static int[] getArr() {
// 1初始化一个数组
int[] numArr = new int[5];
// 随机 1000-9999数字放到数组中,不能重复
int index = 0;// 记录下标
boolean tag = false;
while (numArr[4] == 0) {
tag = false;
int num = rand(1000, 1010);
for (int i = 0; i < index; i++) {
if (numArr[i] == num) {
tag = true;
break;
}
}
if (tag) {
continue;
}
numArr[index] = num;
index++;
}
return numArr;
}
// 定义一个函数,生成[min,max]的随机数
static int rand(int min, int max) {
if (min < 0 || max == 0) {
return -1;
}
// 生成随机数
Random rand = new Random();
return rand.nextInt(max - min + 1) + min;
}
}