温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java实现抽奖系统

发布时间:2020-06-03 15:05:20 来源:亿速云 阅读:293 作者:Leah 栏目:编程语言

这篇文章给大家分享的java实现抽奖系统的步骤,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。

需求

要求是开发幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了。
注册

用户选择“注册”菜单,进入注册界面。输入用户名和密码后,系统提示注册成功,并给出会员卡号。
登录

注册成功后,用户选择“登录”菜单,进入登录界面。输入注册时的用户名和密码。登录成功,系统提示欢迎信息。如果用户和密码输入错误,提示用户继续输入,最多有3次机会。
抽奖

登录成功后,用户选择“抽奖”菜单,进入幸运抽奖界面。输入会员卡号,系统生成5个4位随机数作为幸运数字。如果会员卡号是其中之一,则成为本日幸运会员。
源代码
import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;
import com.thinkive.base.jdbc.DataRow;
public class TurnTable {

static Object[][] prizeArr = new  Object[][]{  
    //里面的指针转动  
    {1,"一等奖",0.0001},  
    {2,"不要灰心",39.9994}, 
    {3,"祝您好运",20.0},  
    {4,"二等奖",0.0002},  
    {5,"再接再厉",20.0},  
    {6,"运气先攒着",10.0},  
    {7,"三等奖",0.0003},  
    {8,"谢谢参与",10.0} 
};
Object result[] = award(prizeArr);//抽奖后返回奖品等级及奖品描述

//抽奖后返回奖品等级及奖品描述  
public static Object[] award(Object[][] prizeArr){  
    //概率数组  
    float obj[] = new float[prizeArr.length];  
    for(int i=0;i<prizeArr.length;i++){  
        obj[i] = Float.parseFloat(prizeArr[i][2].toString());  
    }  
    Integer prizeId = getRand(obj); //根据概率获取奖项号码  
    String msg = (String) prizeArr[prizeId][1];//奖品信息
    Integer prizeIds = prizeId +1;
    System.out.println("奖品号: "+prizeIds +" 获奖等级:"+msg);  

    return new Object[]{prizeId,msg};  
}

//根据概率获取奖项  
public static Integer getRand(float obj[]){  
    Integer result = null;  
    try {  
        float sum = 0.0f;//概率数组的总概率精度   
        float min = 0.0f;//
        for(int i=0;i<obj.length;i++){
            BigDecimal beforSum = new BigDecimal(Float.toString(sum));
            BigDecimal objValue = new BigDecimal(Float.toString(obj[i]));
            sum = beforSum.add(objValue).floatValue();
        }  
        for(int i=0;i<obj.length;i++){//概率数组循环  
            BigDecimal db = new BigDecimal(Math.random() * (sum - min) + min);
            BigDecimal b = new BigDecimal(Float.toString(obj[i]));
            if(compareMethod(db,b) == -1){//中奖 
                result = i;  
                break;  
            }else{  
                sum -=obj[i];  
            }  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    }
    /**
     * 奖品控制代码,这里可以控制我们的奖品的等级
     * **/
    return result;  
}

public static void main(String[] args) {
    DataRow data = new DataRow();//此处DataRow为封装了的 HashMap
    List<DataRow> resultList = new ArrayList<DataRow>();
    for (int i = 0; i < 10000; i++) {
        int k = 1;
        Object result[] = award(prizeArr);//抽奖后返回角度和奖品等级
        String prize = "";
        String comment = "";
        for (Object object : result) {
            if(k==1){
                prize = object.toString();
            }else if(k==2){
                comment = object.toString();
            }
            k++;
        }
        if(k==3){
            data.set("prize", Integer.valueOf(prize)+1);
            data.set("comment", comment);
            resultList.add(data);
        }
    }
}

public static int compareMethod(BigDecimal a,BigDecimal b){
    return a.compareTo(b);
}}

关于java实现抽奖系统就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI