项目要求
- 用户注册
- 新用户输入用户名和密码注册用户。当用户注册成功后,可以为用户分配一个4位随机会员号。
- 开发时为了方便测试,会员号设置为1位。
- 用户登录
- 用户输入用户名和密码登录系统,若无该用户提示用户名密码错误,重新登录。
- 幸运抽奖
- 用户登录成功后可以进入抽奖功能进行抽奖,系统随机生成五个幸运数字,若该用户会员号等于某数组则抽奖成功。
功能升级
- 用户有三次登录机会,当三次登录全都失败时退出系统。
- 5个随机数字不能重复。
- 该系统可以实现多用户注册登录抽奖功能。
代码(功能升级中实现了三次登录,和5个随机数不重复,没有实现多用户):
import java.util.Random;//导入随机数包
import java.util.Scanner;
public class Day3Project1Lottery {
public static boolean compare(int[] arry ,int randNum){
for (int i = 0; i < 5; i++) {
if (arry[i] == randNum) {
return false;
}
}
return true;
}//比较随机数是否重复
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String confirm ; //confirm存放对是否继续操作的确认
String registerName = null; //存放注册用户名
String registerpassword = null; //存放注册密码
int userNum = 0 ; //存放会员号
int userNum2 = 0 ; //抽奖测试用号
int loginTag = 0; //用于存放是否已经登录
int lotteryTag = 0 ; //用于存放是否已抽奖
int registerTag = 0 ; //用于存放是否已注册
Random rand = new Random(); //用于生成随机数
do {
System.out.println(" ~~~欢迎进入会员抽奖系统~~~");
System.out.println(" | 1.注册会员 |");
System.out.println(" | 2.会员登录 |");
System.out.println(" | 3.开始抽奖 |");
System.out.println(" | 4.退出程序 |");
System.out.println(" ~~~~~~~~~~~~~~~~~~~~~~~ ");
//界面
System.out.print("请选择菜单");
int choose = input.nextInt();//choose存放菜单选择结果
switch (choose){
case 1:
if(registerTag == 1){
System.out.println("您已注册,不需要再注册啦");
}
else{
System.out.println("会员抽奖系统->注册会员");
System.out.print("请输入用户名");
registerName = input.next();//待增加用户名格式判断
userNum = rand.nextInt(9000)+1000;//int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; 即int randNumber =rand.nextInt(9999 - 1000 + 1) + 1000;
// randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
userNum2 = rand.nextInt(10);//抽奖测试号
System.out.print("请输入密码");
registerpassword =input.next();//待增加密码格式判断
//注册信息输入
{
System.out.println("注册成功,请记好您的用户信息");
System.out.println("用户名:" + registerName);
System.out.println("密码:" + registerpassword);
System.out.println("会员卡号:" + userNum);
System.out.println("(测试)会员卡号:" + userNum2);
}//注册信息输出
registerTag = 1;
}
break;
//case1注册模块
case 2:
System.out.println("会员抽奖系统->会员登录");
if(loginTag == 1){
System.out.println("您已登录");
}//判断是否已经登录过(单用户)
else {
int i;
for (i = 0; i < 3; i++) {
System.out.println("请输入用户名和密码,你还有" + (3 - i) + "次机会");
System.out.print("用户名:");
String loginName = input.next();
System.out.print("密码:");
String loginPassword = input.next();
if (loginName.equals(registerName) && loginPassword.equals(registerpassword)) {
break;
}//满足条件跳出整个for循环
}//3次输入账号密码的机会
if (i == 3) {
System.out.println("您输入错误次数过多,即将退出系统..");
System.out.println("系统退出,感谢使用!");
input.close();
System.exit(0);
}//3次错误退出系统
else {
System.out.println("登陆成功");
loginTag = 1;
}//错误次数不够3次,登录成功,并修改loginTag值
}//未登录过进行登录操作
break;
//case2登录模块
case 3:
System.out.println("会员抽奖系统->开始抽奖");
if (loginTag == 0){
System.out.println("您还未登录,不能抽奖");
}//判断是否已登录
else if(lotteryTag ==1){
System.out.println("您已经中奖啦,不要贪心哦~");
}else if(lotteryTag == -1) {
System.out.println("您已经抽过奖啦,虽然没中奖,不要灰心,明天再来哦~");
}else{
System.out.println("您已登录,欢迎进行抽奖");
System.out.println("您的会员号为:" + userNum);
int[] randList = new int[5];
for(int i = 0; i < 5; i++){
int tans = rand.nextInt(9000) + 1000;
if(compare(randList,tans))
randList[i] = tans;
else
i--;
}//使随机值不重复
System.out.print("今日中奖会员号为");
for(int i = 0; i < 5; i++){
System.out.print(randList[i] + ",");
}//显示出所有抽奖号
int i;
System.out.println();
for( i = 0; i < 5; i++){
if(userNum == randList[i]){
System.out.println("恭喜您,中奖啦!");
//lotteryTag = 1; //为了测试注释这行代码,正式使用解除注释
break;
}
}if (i == 5){
System.out.println("很遗憾,没有中奖");
//lotteryTag = -1;//为了测试注释这行代码,正式使用解除注释
}//判断是否中奖
////////////////////////////////////////以下为测试抽奖代码///////////////////////////////////////
int[] randList2 = new int[5];//测试用
for( i = 0; i < 5; i++){
int tans2 = rand.nextInt(10);
if(compare(randList2,tans2))
randList2[i] = tans2;
else
i--;
}
System.out.println("您的测试会员号为" + userNum2);
System.out.print("(测试)今日中奖会员号为");
for( i = 0; i < 5; i++){
System.out.print(randList2[i] + ",");
}//测试抽奖号
System.out.println();
int j;
for( j = 0; j < 5;j++){
if(userNum2 == randList2[j]){
System.out.println("(测试)恭喜您,中奖啦!");
lotteryTag = 1;
break;
}
}if(j == 5){
System.out.println("(测试)很遗憾,没有中奖");
lotteryTag = -1;
}//测试判断是否中奖
///////////////////////////////////////以上为测试抽奖代码//////////////////////////////////////////////
}//else 已经登录,且未抽过奖进行抽奖
break;
//case3 抽奖模块
case 4:
System.out.println("即将退出...");
System.out.println("系统退出,感谢使用!");
input.close();//结束程序前关闭输入流
System.exit(0);//用exit指令退出程序,0表示正常退出,程序正常执行结束退出,1是非正常退出,就是说无论程序正在执行与否,都退出,
break;
//case4 退出模块
default:
System.out.println("您的输入有误,请输入1-4之间的数字实现菜单选择");
}//switch 针对不同选择做出的输出
System.out.println("是否继续使用系统(y/n)");
confirm = input.next();
}while(confirm.equals("y") );//输入y继续进行程序
if (!confirm.equals("n")) {
System.out.println("输入错误,默认退出系统");
}
System.out.println("即将退出...");
System.out.println("系统退出,感谢使用!");
input.close();
System.exit(0);
}//main函数
}//class类
tips:
- 变量等级逐级提升,作用范围只用扩大一次就行