您的位置:首页 > 编程语言 > Java开发

南哥带你玩转 Java 之 Java 抽奖系统扩展

2018-01-13 16:42 337 查看

Java 抽奖系统

/*
* 测试类
*/
public class CJTest {
public static void main(String[] args) {
CJStart cjStart = new CJStart();
cjStart.cjStart();
}
}
/*
* 抽奖开始类(组装抽奖逻辑)
*/
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("         4.石头剪刀布");
System.out.println("         5.老虎棒子鸡");
System.out.println("*****************************");
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") && !isGoOn.equals("n")) {
System.out.println("输入信息有误,请重新输入!");
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("[抽奖系统 > 登录]");
// 调用登录方法
// 记录(保存)登录的状态
User.isLogin = Login.userLogin();
break;
case "3":
System.out.println("[抽奖系统 > 抽奖]");
// 调用抽奖方法
CJ.userCJ();
break;
case "4":
System.out.println("[石头剪刀布]");
STJDBStart.stjdbStart();
break;
case "5":
System.out.println("[老虎棒子鸡]");
LHBZJStart.lhbzjStart();
break;
default:
System.out.println("输入有误,请重新输入!");
Scanner scanner = new Scanner(System.in);
menuNum = scanner.nextLine();
break;
}
}

}

/*
* 用户信息类
* 1.账号
* 2.密码
* 3.卡号
* 4.是否登录
*/
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("请填写个人信息:");
System.out.println("用户名:");
Scanner scanner = new Scanner(System.in);
// 接收用户信息
String userName = scanner.nextLine();
System.out.println("密码:");
// 接收密码
String password = scanner.nextLine();
// 随机生成卡号
int cardNumber = (int)(Math.random() * (2000 - 1000 + 1) + 1000);
// 保存到用户类中
User.userName = userName;
User.password = password;
User.cardNumber = cardNumber;
// 提示注册成功
System.out.println("注册成功,请记好你的会员卡号");
System.out.println("用户名:" + User.userName);
System.out.println("密码:" + User.password);
System.out.println("卡号:" + User.cardNumber);
// 保存注册状态
User.isRegister = true;
// 整个工程,如果使用多次 scanner 只能关闭一次
// scanner.close();
}
}
/*
* 登录类
* 1.输入登录的账号和密码
* 2.和用户信息进行匹配
*   有三次重新输入的机会
* 3.登录成功
*/
public class Login {
// 保存登录失败的次数
static int num = 0;
// 登录方法
// 静态方法里面需要使用静态成员变量
public static boolean userLogin() {
// 先判断是否注册
if (User.isRegister == false) {
System.out.println("请先进行注册!");
Register.userRegister();
} else {
// 输入信息
System.out.println("请填写个人信息:");

fdf6
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 if (num == 3) {
// 登录失败
System.out.println("三次机会已用完,请明天重试!");
// 重置记录登录次数的变量
num = 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("*****************************");
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") && !isGoOn.equals("n")) {
System.out.println("输入信息有误,请重新输入!");
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("[抽奖系统 > 登录]");
// 调用登录方法
// 记录(保存)登录的状态
User.isLogin = Login.userLogin();
break;
case "3":
System.out.println("[抽奖系统 > 抽奖]");
// 调用抽奖方法
CJ.userCJ();
break;
default:
System.out.println("输入有误,请重新输入!");
Scanner scanner = new Scanner(System.in);
menuNum = scanner.nextLine();
break;
}
}

}


石头剪刀布类

/*
* 石头剪刀布开始类
*/
public class STJDBStart {
public static void stjdbStart() {
do {
System.out.println("请输入: 1.石头 2.剪刀 3.布");
String string = Compare.isWin(Person.personToFist(),Computer.computerToFist());
System.out.println(string);
Score.scoring(string);
if (Score.perNum == 2) {
System.out.println("你获得了最终的胜利");
break;
} else if (Score.comNum == 2) {
System.out.println("电脑获得了最终的胜利");
break;
}
} while (true);
}
}
/*
* 人类
* 人出拳
*/
public class Person {
public static int personToFist() {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
int num = Integer.parseInt(string);
System.out.println("人:" + Fist.toFist(num));
return num;
}
}
/*
* 电脑类
*/
public class Computer {
public static int computerToFist() {
int num = (int) (Math.random() * (3 - 1 + 1) + 1);
System.out.println("电脑:" + Fist.toFist(num));
return num;
}
}
/*
* 拳类
*/
public class Fist {
public static String toFist(int num) {
String string = "";
switch (num) {
case 1:
string = "石头";
break;
case 2:
string = "剪刀";
break;
case 3:
string = "布";
break;
default:
string = "放弃";
break;
}
return string;
}
}
/*
* 比较类
* 判断谁赢了
* 人             电脑
* 石头 -- 1        1
* 剪刀 -- 2         2
* 布   -- 3        3
*
* 人 石头
*     1     --     1      平手  == 0
*     1     --     2      人赢  == -1
*     1     --     3      人输  == -2
*    剪刀
*     2     --     1      人输  ==  1
*     2     --     2      平手  == 0
*     2     --     3      人赢  ==  -1
*     布
*     3     --     1      人赢  ==  2
*     3     --     2      人输  ==  1
*     3     --     3      平手  ==  0
*
*     人赢 两个拳相减 结果  -1 或者 2
*/
public class Compare {
public static String isWin(int num1, int num2) {
//  让双方的拳头 相减
int rel = num1 - num2;
if (rel == -1 || rel == 2) {
return "你赢了";
} else if (rel == 0) {
return "平手";
} else{
return "你输了,电脑胜利";
}
}
}
/*
* 比分类
*/
public class Score {
static int perNum = 0;
static int comNum = 0;
public static void scoring(String string) {
switch (string) {
case "你赢了":
perNum++;
System.out.println("当前比分:" + perNum + ":" + comNum);
break;
case "平手":
System.out.println("当前比分:" + perNum + ":" + comNum);
break;
case "你输了,电脑胜利":
comNum++;
System.out.println("当前比分:" + perNum + ":" + comNum);
break;
default:
break;
}
}
}


老虎棒子鸡类

/*
* 老虎棒子鸡开始类
*/
public class LHBZJStart {
public static void lhbzjStart() {
do {
System.out.println("请输入: 1.虫 2.棒子 3.老虎 4.鸡");
String string = Compare.isWin(Person.personToFist(),Computer.computerToFist());
System.out.println(string);
Score.scoring(string);
if (Score.perNum == 2) {
System.out.println("你获得了最终的胜利");
break;
} else if (Score.comNum == 2) {
System.out.println("电脑获得了最终的胜利");
break;
}
} while (true);
}
}
/*
* 人类
*/
public class Person {
public static int personToFist() {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
int num = Integer.parseInt(string);
System.out.println("人:" + Fist.toFist(num));
return num;
}
}
/*
* 电脑类
*/
public class Computer {
public static int computerToFist() {
int num = (int) (Math.random() * (4 - 1 + 1) + 1);
System.out.println("电脑:" + Fist.toFist(num));
return num;
}
}
/*
* 老虎棒子鸡类
*/
public class Fist {
public static String toFist(int num) {
String string = "";
switch (num) {
case 1:
string = "虫";
break;
case 2:
string = "棒子";
break;
case 3:
string = "老虎";
break;
case 4:
string = "鸡";
break;
default:
string = "放弃";
break;
}
return string;
}
}
/*
* 比较类
* 判断谁赢了
* 人              电脑
* 虫    -- 1            1
* 棒子   -- 2            2
* 老虎   -- 3        3
* 鸡    -- 4            4
*
* 人  虫
*     1     --     1      平手  ==  0
*     1     --     2      人赢  == -1
*     1     --     3      平手  == -2
*     1         --     4      人输  == -3
*    棒子
*     2     --     1      人输  ==  1
*     2     --     2      平手  ==  0
*     2     --     3      人赢  == -1
*     2         --     4      平手  == -2
*    老虎
*     3     --     1      平手  ==  2
*     3     --     2      人输  == -1
*     3     --     3      平手  ==  0
*     3         --     4      人赢  == -1
*     鸡
*     4     --     1      人赢  ==  3
*     4     --     2      平手  ==  2
*     4     --     3      人输  ==  1
*     4         --     4      平手  ==  0
*
*/
public class Compare {
public static String isWin(int num1, int num2) {
//  让双方的拳头 相减
int rel = num1 - num2;
if (num1 > 4) {
return "你输了,电脑胜利";
}else if (rel == -1 || rel == 3) {
return "你赢了";
} else if (rel == 0 || rel == -2 || rel == 2) {
return "平手";
} else{
return "你输了,电脑胜利";
}
}
}
/*
* 比分类
*/
public class Score {
static int perNum = 0;
static int comNum = 0;
public static void scoring(String string) {
switch (string) {
case "你赢了":
perNum++;
System.out.println("当前比分:" + perNum + ":" + comNum);
break;
case "平手":
System.out.println("当前比分:" + perNum + ":" + comNum);
break;
case "你输了,电脑胜利":
comNum++;
System.out.println("当前比分:" + perNum + ":" + comNum);
break;
default:
break;
}
}
}


http://blog.csdn.net/huzongnan/article/list
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: