项目描述 运用Java变量、数组、选择结构、循环结构等知识为某商场开发一套幸运抽奖系统,客户必须首先注册成为商场会员,登录后,参加抽奖活动。
功能实现:1、注册;2、登录;3、抽奖
准备: 实现菜单的输出显示。 如果编号选择错误,输出“你的输入有误!”
import java.util.Scanner;
/**
* Lucky_people class
* 抽奖系统
* @author Huanghao
* @date 2022/04/09
*/
public class Lucky_people {
static Scanner input = new Scanner(System.in);
static String userName = "";
static String passWord = "";
/**存放生成的幸运号码*/
static int[] luckNum = new int[5];
static int vipCard = 0;
/**用来判断是否登录*/
static boolean isRes = false;
/**
* 模拟用户抽奖,相同的用户只能抽一次
*/
static int[] vip_sys = new int[100];
static int count = 0;
public static void main(String[] args) {
lucky_num();
while (true) {
System.out.println("*****欢迎进入奖客富翁系统****");
System.out.println("\t1.注册");
System.out.println("\t2.登录");
System.out.println("\t3.抽奖");
System.out.println("**************************");
System.out.print("请选择菜单:");
Scanner input = new Scanner(System.in);
int item = input.nextInt();
switch(item){
case 1:
System.out.println("奖客富翁系统 > 注册");
regitSys();
break;
case 2:
System.out.println("奖客富翁系统 > 登录");
LoginSys();
break;
case 3:
System.out.println("奖客富翁系统 > 抽奖");
vip_Luck();
break;
default:
}
if(item<1||item>3) {
System.out.println("您的输入有误!");
}
System.out.println("继续吗?(y/n)");
String choose = input.next();
if(choose.equalsIgnoreCase("y")){
System.out.println();
continue;
}
System.out.println("即将退出....");
return;
}
}
/**
* 用户注册
*/
private static void regitSys() {
System.out.println("请填写个人信息:");
System.out.print("用户名:");
userName = input.next();
System.out.print("密码:");
passWord = input.next();
isRes = true;
vipCard = (int)(Math.random()*9000)+1000;
for (int i = 0; i < vip_sys.length; i++) {
if(vip_sys[i]==0){
vip_sys[i] = vipCard;
break;
}
if(i ==vip_sys.length-1){
System.out.println("vip系统已满,等待更新系统");
return;
}
}
System.out.println("注册成功,请记住您的会员卡号");
System.out.println("用户名\t密码\t\t会员卡号");
System.out.println(userName+"\t"+passWord+"\t\t"+vipCard);
//只要有新用户登录,就重置这个计数器
count = 0;
}
/**
* 用户登录
*/
private static void LoginSys() {
if(!isRes){
System.out.println("您还未注册,请先注册后再登录!");
return;
}
int count = 3;
while (true) {
System.out.print("请输入用户名:");
String logName = input.next();
System.out.print("请输入用户名:");
String logPwd = input.next();
if(logName.equals(userName)&&logPwd.equals(passWord)){
System.out.println("欢迎您:"+logName);
break;
}else {
if(--count<1){
System.out.println("无法登录,请重新操作");
break;
}
System.out.println("输入的用户名或密码不匹配,您还有"+count+"次机会");
}
}
}
/**
* 会员抽奖
*/
private static void vip_Luck() {
if(vipCard==0){
System.out.println("您还未登录,请先登录后再抽奖!");
return;
}
/**
* 模拟用户抽奖,相同的用户只能抽一次
*/
for (int vip_sy : vip_sys) {
if(vip_sy == vipCard && count != 0){
System.out.println("您已经抽过奖了,请不要重复操作!");
return;
}
}
System.out.println("您的初识卡号是:"+vipCard);
System.out.print("本日的幸运数字:");
for (int i : luckNum) {
System.out.print(i+" ");
}
System.out.println();
boolean isLucky = false;
for (int i : luckNum) {
if(i==vipCard){
isLucky = true;
break;
}
}
for (int i : luckNum) {
if(!isLucky){
System.out.println("抱歉,您不是本日幸运会员");
count++;
return;
}
if(isLucky){
System.out.println(userName+"恭喜您,中奖了!!");
count++;
return;
}
}
}
/**
* 生成幸运数字
*/
private static void lucky_num(){
for (int i = 0; i < luckNum.length; i++) {
luckNum[i] = (int)(Math.random()*9000)+1000;
}
}
}
运行截图
总结:
本次编写比较顺利,基本上没有需要很多的思考,只是在一些时间逻辑上需要更加严谨的时候,做了很多优化,这个会比较花时间
比如:
1.会员系统的当天的中奖号码唯一
2.抽过奖之后不能再次抽奖
3.新用户进来之后还是能够继续抽奖
4,要先注册才能登录,先登录才能抽奖