java小項目之:抽獎系統!java初學者必備!

【Java】Java搖獎源碼,Java抽獎源碼,Java隨機抽獎源碼
任務描述java

本次任務要求爲某商場開發一套幸運抽獎系統,客戶必須首先註冊成爲該商場會員,會員登陸成功後,就能夠參加抽獎活動了。
註冊數組

用戶選擇「註冊」菜單,進入註冊界面。輸入用戶名和密碼後,系統提示註冊成功,並給出會員卡號。
登陸dom

註冊成功後,用戶選擇「登陸」菜單,進入登陸界面。輸入註冊時的用戶名和密碼。登陸成功,系統提示歡迎信息。若是用戶和密碼輸入錯誤,提示用戶繼續輸入,最多有3次機會。
抽獎ide

登陸成功後,用戶選擇「抽獎」菜單,進入幸運抽獎界面。輸入會員卡號,系統生成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學習資料的也能夠私信我!
祝關注個人人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉髮!指針

相關文章
相關標籤/搜索