双色球彩票系统

双色球彩票系统:

  1. 彩票号码由7位数字组成.6个红球和1个蓝球组成
  2. 6个红球的取值范围[1, 33],并且红球不可以重复!
  3. 1个蓝球取值范围[1, 16]
  4. 一注彩票的最终结果是 6位红球按照升序排序 + 1个蓝球
  5. 有以下7个功能需要围绕彩票系统完成!
    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(“6.开奖”);
    System.out.println(“7.退出”);
package com.lanou;

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

public class LotterySystem {

	public static void main(String[] args) {
		//1.定义二维字符串数组 用于注册功能.存储用户信息
		String[][] users = new String[10][2];
		/* 账号0     密码1
		 * null null
		 * null null
		 * 
		 */
		//2.定义二维整型数组,用于存储多注彩票
		int[][] lotteryArray = new int[100][7];//假设最多存储10注
		/*
		 *  {0,0,0,0,0,0,0,0},
		 *  {0,0,0,0,0,0,0,0},
		 */
		//3.输入
		Scanner scanner = new Scanner(System.in);
		//4.随机
		Random random = new Random();
		//5.定义变量 存储是否退出系统
		boolean isLoop = true;//默认是不退出
		//6.定义变量  存储是否是登录状态
		boolean isLogin = false;//默认是没有登录的
		
		//循环开始
		while (isLoop) {
			 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("6.开奖");
	         System.out.println("7.退出");
	         System.out.println("请选择要进行的操作:");
	         //接收用户选择
	         int choose = scanner.nextInt();
	         //通过选择 判断进入哪一个功能
	         switch (choose) {
			case 1:
				//定义变量 存储账号 密码
				String username = "";
				String password = "";
				//先输入账号
				while (true) {
					System.out.println("请先输入账号:");
					username = scanner.next();
					//定义boolean 判断账号是否注册过
					boolean isExits = false;
					for (int i = 0; i < users.length; i++) {
						if(users[i][0] != null && users[i][0].equals(username)) {
							isExits = true;
							break;
						}
					}
					//遍历结束
					if(isExits == true) {
						System.out.println("账号已存在!重新注册!");
					}else {
						break;
					}	
				}
				//输入密码
				while (true) {
					System.out.println("请输入密码:");
					password = scanner.next();
					System.out.println("再次确认密码:");
					String repeat = scanner.next();
					if(password.equals(repeat)) {
						break;//两次密码一致
					}else {
						System.out.println("两次密码不一致,请重新设置!");
					}
				}
				//-----------------
				//将账号 密码存储
				for (int i = 0; i < users.length; i++) {
					if(users[i][0] == null) {
						users[i][0] = username;
						users[i][1] = password;
						System.out.println("注册成功!");
						//必须停止
						break;
					}
				}
				
				break;
			case 2:
				if(isLogin) {
					System.out.println("已登录!");
					break;
				}
				System.out.println("请输入账号:");
				String name = scanner.next();
				System.out.println("请输入密码:");
				String passwd = scanner.next();
				//判断账号和密码 是否存在
				for (int i = 0; i < users.length; i++) {
					if(users[i][0] != null && users[i][0].equals(name) && users[i][1].equals(passwd)) {
						System.out.println("登录成功!");
						isLogin = true;
						break;
					}
				}
				
				if (isLogin == false) {
					// 等价于  !isLogin
					//isLogin == false
					System.out.println("登录失败!");
				}
				break;
			case 3:
				//必须先登录成功 才可以进行操作
				
				if(isLogin == false) {
					System.out.println("请先登录!");
					break; //相当于直接结束了case 
				}
				
				System.out.println("请输入要购买的注数:");
				int count = scanner.nextInt();
				for(int i = 0; i < count; i++) {
					//机选单注---元素个数为7的一维数组
					int[] smallArray = new int[7];
					for(int j = 0; j < 6; j++) {
						int temp = random.nextInt(33) + 1;
						//判断此随机数 是否已经存在
						boolean isNum = false;//默认不存在
						//循环遍历 判断是否存在
						for(int k = 0; k < 6; k++) {
							if(temp == smallArray[k]) {
								isNum = true;
								break;
							}
						}
						//for循环结束  
						if(isNum) {
							//j循环失效  数字已经存在
							j--;
						}else {
							//随机数 不存在
							smallArray[j] = temp;
						}
						
					}
					//升序排序
					sortArray(smallArray, 6);
					//放入蓝球  7个元素 最大下标是6
					smallArray[6] = random.nextInt(16) + 1;
					//一注彩票 结束
					
					//将一次数组 存储到 lotteryArray二维数组中
					for(int x = 0; x < 10; x++) {
						if(lotteryArray[x][0] == 0) {
							//此行元素值为0  说明还没有放入彩票
						for (int y = 0; y < 7; y++) {
							lotteryArray[x][y] = smallArray[y];
						}
						//循环结束  代表一维数组已经放入
						break;
					}
				}
					
				}
				
				
				System.out.println("购买成功!!");
				
				break;
			case 4:
				//自选(由用户输入,也可以由用户输出要购买的数量)
				if(!isLogin) {
					System.out.println("请先登录!");
					break;
				}
				
				//自选
				int[] customArray = new int[7];
				for(int i = 0; i < 6; i++) {
					System.out.println("请先输入第" + (i + 1) + "个红球号码,范围1-33:");
					int temp = scanner.nextInt();
					//判断是否符合范围
					if(temp < 1 || temp > 33) {
						System.out.println("输入范围有误!红球范围[1,33]");
						i--;
						continue;//结束本次循环 进入下一次循环
					}
					//判断是否存在
					boolean isExits = false;//默认不存在
					for (int j = 0; j < 6; j++) {
						if(temp == customArray[j]) {
							isExits = true;
							break;
						}
					}
					//循环遍历结束 
					if(isExits) {
						//该号码已经存在
						System.out.println("此红球号码已存在!");
						i--;
					}else {
						customArray[i] = temp;
					}
					
				}
				//对红球排序
			     sortArray(customArray, 6);
			     //设置最后的蓝球
			     while (true) {
					System.out.println("输入蓝球的号码:");
					int temp = scanner.nextInt();
				   if (temp < 1 || temp > 16) {
					   System.out.println("输入有误,蓝球范围是[1, 16]");	
				}else {
					customArray[6] = temp;
					break;
				}
			}
				//代码执行到此处!!
			     //存储到二维数组中
			     for (int i = 0; i < lotteryArray.length; i++) {
					if(lotteryArray[i][0] == 0) {
						for (int j = 0; j < customArray.length; j++) {
							lotteryArray[i][j] = customArray[j];
							
						}
						System.out.println("手选号码结束!");
						//一维数组放入完毕
						break;
					}
				}
				
				break;
			case 5:
				//查看 已经购买的彩票
				//循环数组 查看已经购买的彩票
				if(!isLogin) {
					System.out.println("请先登录!");
					break;
				}
				System.out.println("以下是您购买的所有彩票:");
				for (int i = 0; i < lotteryArray.length; i++) {
					if (lotteryArray[i][0] != 0) {
						for (int j = 0; j < 7; j++) {
							System.out.print(lotteryArray[i][j] + " ");
						}
						System.out.println();
					}
				}
				
			    break;
			case 6:
				//开奖  
				//随机一注彩票
				if(!isLogin) {
					System.out.println("请先登录!");
					break;
				}
				int[] showArray = randomArray(6);
			     //排序
				sortArray(showArray, 6);
				//放入蓝球
				showArray[6] = random.nextInt(16) + 1;
				System.out.println("开奖号码为:");
				for (int i = 0; i < showArray.length; i++) {
					System.out.print(showArray[i] + " ");
				}
				System.out.println();
				//------------------------------------------
				//判断是否中奖!!!
				for(int i = 0; i < lotteryArray.length; i++) {
					//只判断有效值
					if(lotteryArray[i][0] == 0) {
						break;
					}
					System.out.println("第" + (i + 1) + "注彩票:");
					//红球中奖数量
					int red = 0;
					//蓝球的中奖数量
					int blue = 0;
					//遍历红球
					
					/*
					 * 对应位置的
					for (int j = 0; j < 6; j++) {
						if(lotteryArray[i][j] == showArray[j]) {
								red++;
							}	
					}
					*/
					//不论位置  只要有号码就算
					for (int j = 0; j < 6; j++) {
						for (int k = 0; k < 6; k++) {
							if(lotteryArray[i][j] == showArray[k]) {
								red++;
								break;//可写可不写	提高效率
								}
						}
					}
					
					
					
					//查看蓝球
					if(lotteryArray[i][6] == showArray[6]) {
						blue++;
					}
				System.out.println("红球中奖数量" + red + ";蓝球中奖数量:" + blue);	
				//中间结果
				if(red == 6 && blue == 1) {
					System.out.println("一等奖");
				}else if(red == 6 && blue == 0) {
					System.out.println("二等奖");
				}else if(red == 5 && blue == 1) {
					System.out.println("三等奖");
				}else if(red == 5 && blue == 0 || (red == 4 && blue == 1)) {
					System.out.println("四等奖");
				}else if(red == 4 && blue == 0 || (red == 3 && blue == 1)) {
					System.out.println("五等奖");
				}else if(red == 2 && blue == 1 || (red == 1 && blue == 1) || (red == 0 && blue == 1)) {
					System.out.println("六等奖");
				}else {
					System.out.println("恭喜你!阳光普照奖!");
				}				
			}
				break;
			case 7:
				//退出系统
				isLoop = false;//结束while循环
				break;
			//----补充  8选项 用于查看注册用户信息
			case 8:
				System.out.println("系统中的用户信息:");
				for (int i = 0; i < users.length; i++) {
					if(users[i][0] != null) {
						System.out.println(users[i][0] + " " + users[i][1]);
					}
				}
				break;

			default:
				break;
			}
		}
		
		
		
		
		
		

	}
	
	//封装红球排序
	public static void sortArray(int[] array, int length) {
		for (int i = 0; i < length - 1; i++) {
			for (int j = 0; j < length - i - 1; j++) {
				if(array[j] > array[j + 1]) {
					int temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
		}
	}
	//封装机选单注彩票
	public static int[] randomArray(int length) {
		int[] tempArray = new int[length + 1];
		Random random = new Random();
		for(int i = 0; i < length; i++) {
			int temp = random.nextInt(33) + 1;
			//判断此随机数 是否已经存在
			boolean isNum = false;//默认不存在
			//循环遍历 判断是否存在
			for(int j = 0; j < length; j++) {
				if(temp == tempArray[j]) {
					isNum = true;
					break;
				}
			}
			//for循环结束  
			if(isNum) {
				//j循环失效  数字已经存在
				i--;
			}else {
				//随机数 不存在
				tempArray[i] = temp;
			}
			
		}
		
		return tempArray;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值