java实现双色球福利彩票系统

1.项目需求:
双色球投注区分为红色球号码区和蓝色球号码区,
红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成。
投注时选择6个红球号码和1个蓝球号码组成一注进行单式投注,每注金额2元。
一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;
二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖;
三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖;
四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖;
五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖;
六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。
显示中奖结果的同时显示您一共下注人民币??元,累计中奖人民币??元
工程目录结构:
java实现双色球福利彩票系统_第1张图片

贴上代码:
1.DoubleBallClient.java 客户端类

package com.bjsxt.ball.client;

import java.util.Arrays;
import java.util.Scanner;

//import com.bjsxt.ball.service.DoubleBallService;
//import com.bjsxt.ball.service.impl.DoubleBallServiceImpl;
import com.bjsxt.ball.util.DoubleUtil;

/**
 * 双色球客户端
 *@author 莱格
 */
public class DoubleBallClient {
    static Scanner in = new Scanner(System.in);
    //static DoubleBallService db = new DoubleBallServiceImpl();
    static int input = 0;
    static DoubleUtil du = DoubleUtil.getInstance();
    static int[] arr;
    static int price = 0;
    static int count;
    public static void main(String[] args) {
        do {
            System.out.println("********欢迎进入双色球福利彩票系统********");
            System.out.println("\t"+"1.购买彩票");
            System.out.println("\t"+"2.查看开奖");
            System.out.println("\t"+"3.退出");
            System.out.println("\t"+"4.查看已购买的彩票");
            System.out.println("********************************");
            System.out.print("请选择菜单:");
            input = in.nextInt();
            switch (input) {
            case 1:
                arr = du.select(arr);
                count = du.selectNumber();//购买的注数
                System.out.println("合计金额为"+count*2+"元!");
                //du.selectBall(arr);

                continue;
            case 2:
                if (arr == null) {
                    //System.out.println(Arrays.toString(arr));
                    System.out.println("您还没有选号,请先选号");
                    arr = du.select(arr);
                    count = du.selectNumber();//购买的注数
                    System.out.println("合计金额为"+count*2+"元!");
                }
                    String x = du.selectBall(arr);
                    System.out.println("你购买的彩票是:"+x);
                    price = du.JugeRedBall(arr);//判断是否中奖
                    System.out.println("您的中奖金额为"+juge(count)+"元");
                    arr = null;//开完一次奖将其制空,释放内存,进行下一次购买
                continue;
            case 3:
                System.out.println("谢谢使用!");
                return;
            case 4:
                String s = du.selectBall(arr);
                if (s.equals("null")) {
                    System.out.println("对不起您还没有购买彩票!请先购买!");
                    arr = du.select(arr);
                    count = du.selectNumber();//购买的注数
                    System.out.println("合计金额为"+count*2+"元!");
                }
                    s = du.selectBall(arr);
                    System.out.println("你购买的彩票是:"+s);
                    continue;           
            default:
                System.out.println("输入错误!");
            }
        } while (true);

    }
    /**
     * 
     * 用于判断中了多少钱
     * */
    public static int juge(int count) {
         //int x = du.selectNumber();
         if(price == 1) {
             return 5000000*count;
         }else if(price == 2) {
             return 1000000*count;
         }else if(price == 3) {
             return 20000*count;
         }else if(price == 4) {
             return 2000*count;
         }else if(price == 5) {
             return 200*count;
         }else if(price == 6) {
             return 10*count;
         }else {
             return 0;
         }


    }
}

2.DoubleUtil工具类

package com.bjsxt.ball.util;

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

import com.bjsxt.ball.client.DoubleBallClient;

/**
 * 双色球工具包
 * 
 * @author 莱格
 */
public class DoubleUtil {
    /**
     * 双重检查锁实现单例模式
     */
    private DoubleUtil() {
    }// 私有构造器不让其创建对象

    private static DoubleUtil instance = null;

    // 使用双向检查锁
    public static DoubleUtil getInstance() {
        if (instance == null) {
            DoubleUtil du;
            synchronized (DoubleUtil.class) {
                du = instance;
                if (du == null) {
                    synchronized (DoubleUtil.class) {
                        if (du == null) {
                            du = new DoubleUtil();
                        }
                    }
                    instance = du;
                }
            }

        }
        return instance;
    }

    /**
     * 用于判断是否中奖
     */
    public int JugeRedBall(int[] arr1) {
        //DoubleBallService ballService = new DoubleBallServiceImpl();
        // int[] arr1 = ballService.selectBall();
        System.out.print("本期开奖号码为:");
        int[] arr2 = DoubleUtil.getInstance().newPond();
        int count = 0;
        for (int i = 0; i < arr1.length - 1; i++) {
            for (int j = 0; j < arr2.length - 1; j++) {
                if (arr1[i] == arr2[j]) {
                    count++;
                }
            }

        }
        if (count == 2 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
            System.out.println("恭喜你获得六等奖");
            return 6;
        } else if (count == 3) {
            System.out.println("恭喜你获得六等奖");
            return 6;
        } else if (count == 3 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
            System.out.println("恭喜你获得五等奖");
            return 5;
        } else if (count == 4) {
            System.out.println("恭喜你获得五等奖");
            return 5;
        } else if (count == 4 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
            System.out.println("恭喜你获得四等奖等奖");
            return 4;
        } else if (count == 5) {
            System.out.println("恭喜你获得4等奖");
            return 4;
        } else if (count == 5 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
            System.out.println("恭喜你获得三等奖等奖");
            return 3;
        } else if (count == 6) {
            System.out.println("恭喜你获得二等奖");
            return 2;
        } else if (count == 6 & (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
            System.out.println("恭喜你获得一等奖");
            return 1;
        } else {
            System.out.println("对不起你没有中奖!");
            return 0;
        }

    }

    /**
     * 购买的注数
     */
    public int selectNumber() {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入购买的注数:");
        int in = input.nextInt();
        return in;
    }

    /**
     * 判断中了多少奖金
     */

    /**
     * 生成奖池
     */
    public int[] newPond() {
        int[] arr = new int[7];
        // Random r = new Random();
        // 生成红色球
        for (int i = 0; i < arr.length - 1; i++) {
            int x = (int) (Math.random() * 33 + 1);

            // int x = r.nextInt(32)+1;
            if (x >= 1 && x <= 33) {
                arr[i] = x;
            }

        }
        // 生成蓝色球
        for (int i = 0; i <= arr.length - 1; i++) {
            int y = (int) (Math.random() * 33 + 1);
            arr[i] = y;
        }
        int y = (int) (Math.random() * 17 + 1);
        if (y >= 1 && y <= 16) {
            arr[arr.length - 1] = y;
        }
        System.out.println(Arrays.toString(arr));

        return arr;
    }

    /**
     * 
     * 获得键盘输入,进行自选彩票
     */
    public int[] getInput() {
        int[] arr = new int[7];
        int ticket;
        Scanner in = new Scanner(System.in);
        for (int i = 0; i < arr.length - 1; i++) {

            System.out.print("请输入红色球:");
            ticket = in.nextInt();
            if (ticket > 0 && ticket <= 33) {
                arr[i] = ticket;
            }

        }
        System.out.print("请输入蓝色球:");
        ticket = in.nextInt();
        if (ticket > 0 && ticket <= 16) {
            arr[arr.length - 1] = ticket;
        }

        return arr;
    }

    /**
     * 查看已购买的彩票号码
     */
    public String selectBall(int[] arr) {
        // int[] arr1 = new int[];
        // for (int i = 0; i < arr.length; i++) {
        // arr1[i] = arr[i];
        // }
        return Arrays.toString(arr);

    }

    /**
     * 机选或自选
     */
    public int[] select(int[] arr) {
        System.out.println("\t"+"1.机选");
        System.out.println("\t"+"2.自选");
        Scanner in = new Scanner(System.in);
        System.out.print("请输入:");
        int input = in.nextInt();
        if (input == 1) {
            System.out.println("机选");
            arr = newPond();
        } else if (input == 2) {
            System.out.println("自选");
            arr = getInput();
        } else {
            System.out.println("请输入正确的命令");
        }

        return arr;
    }

}

运行结果:
java实现双色球福利彩票系统_第2张图片

小结:由于水平有限,代码质量不够好,生成的彩票号码会发生重复,bug修复中。。。

你可能感兴趣的:(java基础知识)