Java简单彩票系统(35选7)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LiGuangLiang_bzu/article/details/48321539

1.用Java做的一个简单的35选7的彩票系统,先上效果图:

手气不好,试了几次都没中奖:

这里写图片描述

这里写图片描述

我感觉最关键的地方在于:从1-35之间随机生成不重复的7个数字,这是最重要的步骤,解决此步,其余都好说了

2.一共用到了三个类:一个LotteryBean用来存储信息、一个LotteryBeanDao用来操作LotteryBean、一个LotteryTest用来测试,项目结构如下图:

这里写图片描述

3.代码如下:

LotteryBean类:

package com.lgl.day03;

/**
* 彩票类
* @author 李广亮
*/

public class LotteryBean {

/**
 * 彩票属性
 */
private String id;
private int[] buyno;
private String buydate;
private int[] winno;
private int winmoney;

/**
 * get和set方法
 * @return
 */
public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public int[] getBuyno() {
    return buyno;
}

public void setBuyno(int[] buyno) {
    this.buyno = buyno;
}

public String getBuydate() {
    return buydate;
}

public void setBuydate(String buydate) {
    this.buydate = buydate;
}

public int[] getWinno() {
    return winno;
}

public void setWinno(int[] winno) {
    this.winno = winno;
}

public int getWinmoney() {
    return winmoney;
}

public void setWinmoney(int winmoney) {
    this.winmoney = winmoney;
}

}

LotteryBeanDao类:

package com.lgl.day03;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

/**
* 彩票操作类
* @author 李广亮
*/

public class LotteryBeanDao {

/**
 * 定义一个Scanner用于输入信息    
 */
Scanner sc = new Scanner(System.in);

/**
 * 输入身份证号
 */
public String id() {
    System.out.println("请输入身份证号:");
    sc = new Scanner(System.in);
    String id = sc.next();
    return id;
}

/**
 * 输入购买号码
 */
public int[] buyno() {
    int[] num = new int[7];
    System.out.println("请输入购买号码: (1-35)之间的7个数字以逗号隔开");

    sc = new Scanner(System.in);
    String str1 = sc.next();
    String[] str2 = str1.split(",");

    //将String类型转换成int类型存放到num数组里
    for(int i=0; i<str2.length; i++) {
        num[i] = Integer.parseInt(str2[i]);
    }

    return num;
}

/**
 * 购买日期
 */
public String buydate() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String strDate = sdf.format(new Date());
    return strDate;
}

/**
 * 开奖号码(随机产生1-35之间不重复的7个元素)
 */
public int[] winno() {
    //利用set集合不能存放重复元素的特点
    Set<Integer> set = new HashSet<Integer>();
    Random ran = new Random();

    boolean flg = true;
    while(flg) {
        //产生1-35之间的整数
        int num = ran.nextInt(35) + 1;
        set.add(num);
        //如果set集合的大小已经满足我们的需要,则跳出
        if(set.size() > 6) {
            flg = false;
        }
    }

    //将set集合转换成一个int类型的数组(用迭代器比较方便)
    int[] winNo = new int[set.size()];
    int i = 0;
    Iterator<Integer> it = set.iterator();
    while(it.hasNext()) {
        winNo[i] = it.next();
        i++;
    }
    return winNo;
}

/**
 * 判断中奖个数
 * @buyno 购买的彩票号码
 * @winno 开奖号码
 */
public int getWinno(int[] buyno, int[] winno) {     
    //设一个变量,记录本次购买的彩票中,中奖号码个数
    int sum = 0;
    //从购买号码的第一个数起开始比较,若中,则sum加1
    for(int i=0; i<buyno.length; i++) {
        int n = buyno[i];           
        for(int s : winno) {                
            if(n == s) {
                sum++;
            }
        }           
    }
    return sum;
}

/**
 * 根据中奖个数兑换奖金
 * 0-4个 :0
 * 5 个 :    100
 * 6 个 :    100,000
 * 7 个 :    5,000,000
 */
public int winmoney(int sum) {
    int money = 0;
    switch (sum) {
    case 0:
    case 1:
    case 2:
    case 4:
        money = 0;
        break;
    case 5:
        money = 100;
        break;
    case 6:
        money = 100000;
        break;
    case 7:
        money = 5000000;
        break;
    }
    return money;

}

}

LotteryTest类:

package com.lgl.day03;

/**
* 彩票测试类
* @author 李广亮
*/

public class LotteryTest {

/**
 * @param args
 */
public static void main(String[] args) {

    LotteryBean lot = new LotteryBean();
    LotteryBeanDao lotDao = new LotteryBeanDao();
    //保存身份证号码、彩票号码、购买日期、开奖号码、奖金
    //1.购买彩票
    System.out.println("------ 购买彩票 ------");
    lot.setId(lotDao.id());
    lot.setBuyno(lotDao.buyno());

    //2.彩票开奖
    lot.setBuydate(lotDao.buydate());
    lot.setWinno(lotDao.winno());
    System.out.println("------ 彩票开奖 ------");
    for(int i : lot.getWinno()) {
        System.out.print(i + " ");
    }
    System.out.println();

    //3.兑奖
    System.out.println("------ 兑奖 ------");
    System.out.println("【购买时间: 】" + lot.getBuydate());
    //先判断一下中奖个数,根据中奖个数兑换中奖金额
    int winNums = lotDao.getWinno(lot.getBuyno(), lot.getWinno());
    int money = lotDao.winmoney(winNums);
    lot.setWinmoney(money);
    System.out.println("中奖个数:" + winNums);
    System.out.println("您的中奖金额为:" + money);

}

}

注:如果想要保存多次购买记录,可以new一个list集合用来保存LotteryBean信息

展开阅读全文

没有更多推荐了,返回首页