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學習資料的也可以私信我!

祝關注我的人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉發!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM