zoukankan      html  css  js  c++  java
  • java小项目之:抽奖系统!java初学者必备(内附源码)

    Java】Java摇奖源码,Java抽奖源码,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学习资料的也可以私信我!

    祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!

  • 相关阅读:
    web前端开发最佳实践--(笔记之JavaScript最佳实践)
    web前端开发最佳实践--(笔记一)
    HTML5及CSS3--freeCodeCamp(笔记一)
    javascript系列--函数(一)
    HTML5本地存储
    分享一些好用的设计网站
    .net面试问题总结
    ife_task10--弹性盒子
    WPF--搭建一个简单的demo
    信息技术文集
  • 原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12249340.html
Copyright © 2011-2022 走看看