JAVA双色球系统带注册账号,控制台输入输出

    技术2022-07-15  54

     双色球彩票系统: 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.退出");

    共有三个类,一个接口

    user类,用户类

    public class User { private String name; private String pwd; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public User() { super(); // TODO Auto-generated constructor stub } public User(String name, String pwd) { super(); this.name = name; this.pwd = pwd; } }

    user接口

    public interface UserDao { // 注册 public abstract void regist(User user); // 登录 public abstract boolean isLogin(String userName, String passWord); }

    user接口实现类

    import java.util.ArrayList; public class UserDaoImpl implements UserDao { // 创建一个集合,定义为公有的 static ArrayList<User> users = new ArrayList<User>(); // 注册方法:把用户信息存放到集合中 public void regist(User user) { // TODO Auto-generated method stub users.add(user); } // 登录功能:校验用户名和密码是否正确,正确返回true,否则返回false public boolean isLogin(String userName, String passWord) { boolean flag = false; for (User user : users) { if (userName.equals(user.getName()) && passWord.equals(user.getPwd())) { flag = true; break; } } return flag; } // 注册验证账号是否存在 public boolean verify(String userName) { boolean flag = false; for (User user : users) { if (userName.equals(user.getName())) { flag = true; break; } } return flag; } }

    主体代码

    import java.sql.Blob; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class Lottery { public static void main(String[] args) { // 1.存储用户 ArrayList<User> users1 = new ArrayList<User>(); // 创建一个用户操作类 UserDaoImpl udi = new UserDaoImpl(); String[][] users = new String[100][2]; // 2.存储多注彩票 int[][] lotteryArray = new int[10][7]; // 获取控制台 Scanner scanner = new Scanner(System.in); // 4.随机 Random random = new Random(); // 5.是否退出系统 boolean isLoop = true; 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(); User use = new User(); // 通过选择 判断进入哪一个功能 switch (choose) { case 1: String passWord = ""; String userName = ""; System.out.println("欢迎来到注册界面!"); scanner.nextLine(); // System.out.println(use.getName()); while (true) { System.out.println("请输入用户名:"); userName = scanner.nextLine(); System.out.println(udi.verify(userName)); boolean bl = udi.verify(userName); if (false == bl) { System.out.println("用户名通过"); break; } else { System.out.println("用户名重复,重新填写"); } } while (true) { System.out.println("请输入密码:"); passWord = scanner.nextLine(); System.out.println("请确认密码"); String passWord1 = scanner.nextLine(); if (passWord.equals(passWord1)) { break; } else { System.out.println("两次密码不一致,请重新设置!"); } } // 把用户名和密码封装成一个用户类对象 User user = new User(userName, passWord); // 通过用户操作类对象调用注册方法 udi.regist(user); System.out.println("注册成功!"); break; case 2: System.out.println("欢迎来到登录界面!"); scanner.nextLine(); System.out.println("请输入用户名:"); String inputUserName = scanner.nextLine(); System.out.println("请输入密码:"); String inputPassWord = scanner.nextLine(); // 通过用户操作类对象调用登录方法 boolean flag = udi.isLogin(inputUserName, inputPassWord); if (flag) { System.out.println("登录成功,"); isLogin = true; } else { 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++) { 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; 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; } }

     

    Processed: 0.012, SQL: 9