代码:
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 + " "); }//用增强for(for each)打印全部数组元素