分析
开始工程之前需要分析这个抽奖系统需要几个类
1.存储用户信息的用户类
2.注册类类
3.登录类
4.抽奖类
5.游戏开始类
6.测试类
用户信息类
/*
* 用户信息类
* 1.账号
* 2.密码
* 3.卡号
* 4.是否(布尔型)登录 (两种状态可以用 布尔 3种及以上可以用 int)
*/
public class User {
public static String userName = "";
public static String passWord = "";
public static int cardNumber = 0;
// 是否登录
public static boolean isLogin = false;
//是否注册
public static boolean isRegister = false;
}
注册类
/*
* 注册类
* 1.输入账号 密码
* 2.产生随机号[1000,2000]
* 3.保存注册用户信息 到 用户信息类
* 4.提示注册成功
*/
public class Register {
//注册方法
public static void userRegister() {
System.out.println("请输入注册账号:");
Scanner scanner = new Scanner(System.in);
//接收用户信息
String userName = scanner.nextLine();
System.out.println("请输入注册密码:");
//接收密码
String passWord = scanner.nextLine();
//随机生成卡号
int num = (int)(Math.random() * 1001 + 1000);
//保存到 用户类中
User.userName = userName;
User.passWord = passWord;
User.cardNumber = num;
//打印一下抽奖的卡号
System.out.println("注册成功,请记好你的会员卡号");
System.out.println("用户名: " + userName);
System.out.println("密码: " + passWord);
System.out.println("卡号: " + num);
//保存注册状态
User.isRegister = true;
}
}
登录类
/*
* 登录类
* 1.输入登录的账号和密码
* 2.和用户信息 进行匹配
* 有三次重新输入的机会
* 3.登录成功
*/
public class Login {
//保存登录失败次数
static int num = 0;
// 登录方法
// 静态方法 里面 需要 使用 静态的成员变量
public static boolean userlogin() {
//上来先判断 是否注册
if (User.isRegister == false) {
System.out.println("请先注册");
// 没注册 相当于 登录失败
return false;
}
//输入信息
System.out.println("请输入用户名:");
Scanner scanner = new Scanner(System.in);
//接收信息
String userName = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
// 匹配登录信息
if (userName.equals(User.userName) && password.equals(User.passWord)) {
//登录成功
System.out.println("欢迎您:" + userName);
//返回登录结果
return true;
}else {
//登录失败
num++;
//提示用户 还剩几次机会
System.out.println("用户名或密码有误,请重新输入!");
System.out.println("您还剩" + (3 - num) + "次机会 请重新输入");
//判断登录错了几次
if (num != 3) {
//继续登录
userlogin();
}else {
//登录失败
System.out.println("对不起三次机会用完,请明日再来");
//重置记录登录次数的变量
num = 0;
}
//如果代码走到这里 说明 一定是 登录失败
return false;
}
}
}
抽奖类
/*
* 抽奖类
* 1.判断是否登录
* 2.输入抽奖卡号
* 有3次输入卡号的机会
* 3.判断是否中奖
*/
public class CJ {
//保存输入卡号的次数
static int cardNumber = 0;
// 抽奖
public static void userCJ() {
// 判断登录状态
if (User.isLogin == false/*相当于 !User.isLogin */) {
// 没登陆 直接结束方法
System.out.println("请先登录");
return;
}
//判断是否输入卡号
if (!isCardNum()) {
System.out.println("你输入的不正确");
return;
}
//匹配账号
//保存是否中奖的变量
boolean isCJ = false;
//随机5个数并且拼接成字符串打印 逗号隔开
String string = "本日幸运数字:";
for (int i = 0; i < 5; i++) {
//随机
int num = (int)(Math.random() * 1001 + 1000);
//拼接
if (i < 4) {
string = string + num + ",";
} else {
string = string + num;
}
//查看是否中奖
if (num == User.cardNumber) {
isCJ = true;
}
}
//打印中奖号
System.out.println(string);
if (isCJ) {
System.out.println("恭喜你中奖了");
}else {
//没中奖
System.out.println("很遗憾请下次再来");
}
}
//输入卡号的方法
public static boolean isCardNum() {
System.out.println("请输入卡号:");
Scanner scanner = new Scanner(System.in);
//接收
String cardNum = scanner.nextLine();
//转int
int num = Integer.parseInt(cardNum);
//进行比对
if (User.cardNumber == num) {
//匹配正确
System.out.println("卡号输入正确");
return true;
}else {
//匹配错误
num++;
System.out.println("还剩" + (3 - cardNumber) + "次机会");
if (cardNumber != 3) {
isCardNum();
}else {
System.out.println("您的机会已经用完,请下次再来");
//重置输入卡号的次数
cardNumber = 0;
}
return false;
}
}
}
游戏开始类
/*
* 抽奖开始类(组装抽奖逻辑)
*/
public class CJStart {
//抽奖开始
public void cjStart() {
//是否继续主菜单
String isGoOn = "";
//循环主菜单
do {
System.out.println("*****欢迎进入抽奖系统*****");
System.out.println(" 1.注册");
System.out.println(" 2.登录");
System.out.println(" 3.抽奖");
System.out.println("**************************");
Scanner scanner = new Scanner(System.in);
// 接收菜单选项
String menuNum = scanner.nextLine();
// 判断选项
chooseMenuNum(menuNum);
//接收是否继续
System.out.println("是否选择继续? y/n");
isGoOn = scanner.nextLine();
} while (isGoOn.equals("y"));
}
//判断菜单选项
public void chooseMenuNum(String menuNum) {
switch (menuNum) {
case "1":
System.out.println("[抽奖系统 > 注册]");
// 调用注册方法
Register.userRegister();
break;
case "2":
System.out.println("[抽奖系统 > 登录]");
/*
//调用登录方法
boolean userLogin = Login.userlogin();
//记录(保存)登录的状态
User.isLogin = userLogin;
*/
//上面和下面方法一样 只是 两行写成一行
//调用登录方法
//记录(保存)登录的状态
User.isLogin = Login.userlogin();
break;
case "3":
System.out.println("[抽奖系统 > 抽奖]");
CJ.userCJ();
break;
default:
System.out.println("请重新选择");
break;
}
}
}
测试类
/*
* 测试类
*/
public class CJTest {
public static void main(String[] args) {
CJStart cjStart = new CJStart();
cjStart.cjStart();
}
}