Java项目——双色球管理模拟系统

代码说明

为方便刚接触Java编程不久的朋友阅读学习,下面代码很多重复的模块未使用面向对象的知识对其进行封装,代码显得有些冗余,希望大牛们手下留情。若对该代码有什么好的意见或建议的,欢迎在评论区指出,大家互相交流学习!

代码菜单功能

这里就不写文字说明了,做了张思维导图直接放下面:

Java代码

DoubleChromosphere.java

import java.util.Random;
import java.util.Scanner;

public class DoubleChromosphere {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("************欢迎使用双色球管理系统************");
		//创建控制台输入对象
		Scanner scanner = new Scanner(System.in);
		//随机数工具类 
		Random random = new Random();
		//用来存储用户信息的数组
		String[][] user = new String[5][2];
		//定义变量记录用户的注册量
		int userCount = 0;
		//记录用户登录状态
		boolean isLogin = false;
		//定义一个二维数组,存储用户买的彩票
		int[][] lottery = new int[5][7];
		//记录购买彩票的数量
		int buyCount = 0;
		while (true) {
			
			System.out.println("1-注册  2-登录  3-机选  4-自选  5-查看  6-开奖  0-退出");
			System.out.println("请输入您的选项");
			int choose = scanner.nextInt();
			
			switch (choose) {			
			case 1:
				//System.out.println("注册");				
				//先判断用户的注册量
				if (userCount == 5) {
					System.out.println("对不起,超过最大注册人数");
					break;
				}
				
				//可以注册
				//存储用户名
				String username = null;
				while (true) {
					System.out.println("请输入用户名:");
					username = scanner.next();
					//定义boolean变量,记录用户名是否已经存在
					boolean isSave = false;
					//根据用户的注册决定比较次数
					for (int i = 0; i < userCount; i++) {
						//取出已注册用户的用户名
						if (user[i][0].equals(username)) {
							System.out.println("用户名已存在,请重新输入");
							isSave = true;
							break;
						}
					}
					//如果循环结束isSave中还是false,说明没有发现重复的用户名
					if (!isSave) {
						System.out.println("用户名可以使用");
						break;
					}
				}
				//定义变量存储用户的密码
				String password = null;
				while (true) {
					System.out.println("请输入密码:");
					password = scanner.next();
					System.out.println("请重新输入密码:");
					String repeat = scanner.next();
					if (password.equals(repeat)) {
						//如果两次密码相等,就停止while循环
						break;
					} else {
						System.out.println("两次输入的密码不同,请重新输入");
					}
				}
				//使用user存储用户名和密码
				user[userCount][0] = username;
				user[userCount][1] = password;
				userCount++;
				System.out.println("注册成功!");
				break;
				
			case 2:
				//System.out.println("登录");
				if (isLogin == true) {
					System.out.println("已经有用户登录");
					break;
				}
				//提示用户输入用户名
				System.out.println("请输入用户名");
				String name = scanner.next();
				//提示用户输入密码
				System.out.println("请输入密码");
				String pwd = scanner.next();
				//根据用户名和密码去user数组中校验,根据用户注册量来设置校验次数
				for (int i = 0; i < userCount; i++) {
					//用户名和密码都要一致才能登录成功
					if (name.equals(user[i][0]) && pwd.equals(user[i][1])) {
						System.out.println("登录成功!");
						//登录状态改为true
						isLogin = true;
						break;
					}
				}
				if (isLogin == false) {
					System.out.println("用户不存在或密码错误,请重新登录");
				}
				break;
				
			case 3:
				//System.out.println("机选");
				//先判断用户是否已登录
				if (isLogin == false) {
					System.out.println("您还未登录,请先登录!");
					break;
				}
				//再判断是否已达购买上限
				if (buyCount == 5) {
					System.out.println("已达到购买上限");
					break;
				}
				//定义数组,存储双色球
				int[] current1 = new int[7];
				//机选红球6个[1,33]
				for (int i = 0; i < 6; i++) {
					int red = random.nextInt(33) + 1;
					//定义变量存储当前号码是否已在数组中出现
					boolean isFlag = false;
					for (int j = 0; j < 6; j++) {
						if (red == current1[j]) {
							isFlag = true;
							break;
						}
					}
					if (isFlag) {
						i--;
					} else {
						current1[i] = red;
					}
				}
				//机选蓝球1个[1,16]
				current1[6] = random.nextInt(16) + 1;
				//展示机选结果
				System.out.println("机选结果为:");
				for (int i = 0; i < current1.length; i++) {
					System.out.print(current1[i] + "\t");
				}
				System.out.println();
				
				//存储机选结果
				lottery[buyCount] = current1;
				buyCount++;
				System.out.println("购买成功!");
				break;
				
			case 4:
				//System.out.println("自选");
				//先判断用户是否已登录
				if (isLogin == false) {
					System.out.println("您还未登录,请先登录!");
					break;
				}
				//再判断是否已达购买上限
				if (buyCount == 5) {
					System.out.println("已达到购买上限");
					break;
				}
				//定义数组接受用户手动输入的双色球
				int[] current2 = new int[7];
				for (int i = 0; i < 6; i++) {
					System.out.println("请输入红色球号码:");
					int red = scanner.nextInt();
					//定义变量存储当前号码是否已在数组中出现
					boolean isFlag = false;
					for (int j = 0; j < 6; j++) {
						if (red == current2[j]) {
							isFlag = true;
							break;
						}
					}
					if (isFlag) {
						i--;
						System.out.println("输入的号码重复");
					} else {
						//当用户输入的号码如果不在1-33之间,此号码不能用
						if (red >=1 && red <= 33) {
							current2[i] = red;
						} else {
							i--;
							System.out.println("输入的号码有误,请输入1-33之间的号码");
						}
					}
				}
				while (true) {
					System.out.println("请输入蓝色球号码:");
					int blue = scanner.nextInt();
					if (blue >= 1 && blue <= 16) {
						current2[6] = blue;
						break;
					}else {
						System.out.println("号码不可用,请重新输入1-16");
					}
				}
				//展示自选结果
				System.out.println("自选结果为:");
				for (int i = 0; i < current2.length; i++) {
					System.out.print(current2[i] + "\t");
				}
				System.out.println();				
				//存储自选结果
				lottery[buyCount] = current2;
				buyCount++;
				System.out.println("购买成功!");
				break;
				
			case 5:
				//System.out.println("查看");
				if (isLogin == false) {
					System.out.println("您还未登录,请先登录!");
					break;
				}
				System.out.println("购买结果有:");
				for (int i = 0; i < buyCount; i++) {
					for (int j = 0; j < 7; j++) {
						System.out.print(lottery[i][j] + "\t");
					}
					System.out.println();
				}
				break;
				
			case 6:
				//System.out.println("开奖");
				//先判断用户是否已登录
				if (isLogin == false) {
					System.out.println("您还未登录,请先登录!");
					break;
				}
				//系统生成中奖号码
				int[] win = new int[7];
				//机选红球6个[1,33]
				for (int i = 0; i < 6; i++) {
					int red = random.nextInt(33) + 1;
					//定义变量存储当前号码是否已在数组中出现
					boolean isFlag = false;
					for (int j = 0; j < 6; j++) {
						if (red == win[j]) {
							isFlag = true;
							break;
						}
					}
					if (isFlag) {
						i--;
					} else {
						win[i] = red;
					}
				}
				//生成一个蓝色中奖号码
				win[6] = random.nextInt(16) + 1;
				System.out.println("中奖号码为:");
				for (int i = 0; i < win.length; i++) {
					System.out.print(win[i] + "\t");
				}
				System.out.println();
				System.out.println("您的中奖情况:");
				//根据中奖规则给用户开奖
				for (int i = 0; i < buyCount; i++) {
					int[] mine = lottery[i];
					//记录红色球中奖个数
					int redCount = 0;
					//记录蓝色球中奖
					int blueCount = mine[6] == win[6] ? 1 : 0;
					for (int j = 0; j < 6; j++) {
						for (int k = 0; k < 6; k++) {
							if (mine[j] == win[k]) {
								redCount++;
								break;
							}
						}						
					}
					//红色中奖个数和蓝色中奖个数都获取到了 
					if (redCount == 6 && blueCount == 1) {
						System.out.println("一等奖");
					}else if (redCount == 6 && blueCount == 0) {
						System.out.println("二等奖");
					}else if (redCount == 5 && blueCount == 1) {
						System.out.println("三等奖");
					}else if ((redCount == 5 && blueCount == 0)
							|| (redCount == 4 && blueCount == 1)) {
						System.out.println("四等奖");
					}else if ((redCount == 4 && blueCount == 0)
							|| (redCount == 3 && blueCount == 1)) {
						System.out.println("五等奖");
					}else if ((redCount == 2 && blueCount == 1)
							|| (redCount == 1 && blueCount == 1)
							|| (redCount == 0 && blueCount == 1)) {
						System.out.println("六等奖");
					}else {
						System.out.println("很遗憾,下次再来");
					}
				}
				//清空中奖号码
				lottery = new int[5][7];
				buyCount = 0;
				break;
				
			case 0:
				//System.out.println("退出");
				//先判断用户是否已登录
				if (isLogin == false) {
					System.out.println("您还未登录,请先登录!");
					break;
				}
				//退出后把登录状态置为false
				isLogin = false;
				//清空该用户彩票数组
				lottery = new int[5][7];
				buyCount = 0;
				System.out.println("欢迎再次登录");
				break;
				
			default:
				System.out.println("您的输入有误,请重新输入");
				break;
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/u010993514/article/details/82713052