基于Access數據庫的抽獎系統設計
來源:程序員人生 發布時間:2014-05-29 19:10:41 閱讀次數:3887次
摘 要 介紹了抽獎信息管理系統的設計思路和基本原理結合Access通過軟件系統開發實現了具有隨機性和相對均衡性的抽獎
關鍵詞 抽獎系統 Access VBA 隨機 相對均衡性
引言
當今社會各種各樣的抽獎活動相當普遍抽獎活動的基本原則和主要特征是隨機性但對于某一團體內部的抽獎活動來說還有一個相對均衡的問題所謂相對均衡就是指讓各個部門的中獎概率和其人數占總人數的比重大致相等基于Access結合其內置VBA語言通過程序設計實現抽獎的隨機通過算法研究實現抽獎的相對均衡本文主要介紹了系統原理以及主要程序的設計
系統組成及原理
抽獎系統主要由來賓登記獎票管理幸運抽獎獲獎查詢四個基本模塊構成登記模塊登記參加抽獎人員獎票管理模塊初始化參加抽獎人員名單抽獎模塊實現抽獎功能獲獎查詢模塊查詢獲獎結果其中抽獎模塊中可以實現獎勵等級總抽獎數每一次抽獎數的控制系統架構框圖如圖

圖 系統架構
系統初始化
來賓登記模塊中已經收錄了參加抽獎的人員名單以及所屬部門在獎票管理模塊中當點擊初始化按鈕時通過內部程序設計首先把上次的抽獎結果清空同時利用 Rnd在參加抽獎的人員名單前隨機生成一系列的序號為幸運抽獎模塊中的隨機抽獎做準備[]主要初始化程序代碼如下:
DoCmdSetWarnings False
DoCmdOpenQuery "刪除對獎票號" acNormal acEdit
DoCmdOpenQuery "追加對獎票號" acNormal acEdit
DoCmdSetWarnings True
Set qrs = CurrentDbOpenRecordset("對獎票號")
qrsMoveFirst
i =
Do While Not qrsEOF
qrsEdit
qrs!序號 = Int(( ) * Rnd)
qrs!對獎號碼 = i
qrsUpdate
i = i +
qrsMoveNext
Loop
MsgBox ("對獎名單初始化完畢")
qrsClose
抽獎功能的實現
通過抽獎模塊實現最終抽獎功能
通過獎勵等級組合框控制抽獎等級通過抽獎數量組合框控制每批次抽獎數量通過總抽獎數組合框控制總抽獎數當獎勵等級分別為一二三等獎時抽獎數量和總抽獎數默認值分別
為和各組合框的具體數值也可以通過上下箭頭控制抽獎界面如圖

圖 抽 獎 界 面
其程序設計比較簡單主要程序如下:
……
If Me!獎勵等級Value = Then
Me!總數量Value =
End If
If Me!獎勵等級Value = Then
Me!總數量Value =
End If
If Me!獎勵等級Value = Then
Me!總數量Value =
End If
Forms!抽獎Q_抽獎統計Requery
If Me!獎勵等級Value = Then
Me!抽獎數量Value =
End If
If Me!獎勵等級Value = Or Me!獎勵等級Value = Then
Me!抽獎數量Value =
End If
……
通過點擊開始按鈕開始抽獎同時按鈕標題變為停止再次點擊停止此批次抽獎同時按鈕標題變為開始繼續點擊開始下一批次抽獎如此反復直至完成總抽獎數此時提示“抽獎總數已到”如果未完成總抽獎數就開始另外一輪抽獎則提示“抽獎限制”
內部抽獎主要解決隨機性和相對均衡兩個問題系統初始化在參加抽獎人員名單前隨機生成了序號通過查詢“號碼重排序”將參加抽獎人員名單按照序號升序排列抽獎時按照序號順序抽獎實現了隨機的要求相對均衡要求大致按照各個部門人數占總人數的百分比來分配中獎人數本系統采用各個部門占總人數的百分比乘以抽獎總數的方法來大致確定各個部門的中獎人數有小數的數字通過程序設計進行四舍五入處理需要注意的是若使所有的部門中獎人數都要用四舍五入的方法進行處理則可能出現錯誤為了避免這種情況需要選定一個部門使其中獎人數等于總抽獎數減去其他各個部門中獎人數之和[]抽獎模塊的主要程序代碼如下:
……
N =
cnt = Me!電科Value + Me!電氣Value + Me!自動化Value + Me!通信Value + Me!院辦Value + Me!退休Value
Do While Me!抽獎數量Value > N And Not qrsEOF And cnt < Me!總數量Value
電科抽獎
’四舍五入確定電科中獎數
If Me!電科Value < (Int(((unit姓名之Count / cnt) * Me!總數量Value + ))) And N < Me!抽獎數量Value And cnt < Me!總數量Value Then
If qrs單位 = "電科" And qrs!批次Value = Then
Me!電科Value = Me!電科Value +
qrsEdit
qrs!獎勵等級Value = Me!獎勵等級Value
qrs!批次Value = Me!批次Value
qrsUpdate
N = N +
End If
Else
End If
……
退休抽獎
cnt = Me!電科Value + Me!電氣Value + Me!自動化Value + Me!通信Value + Me!院辦Value + Me!退休Value
cnt= Me!電科Value + Me!電氣Value + Me!自動化Value + Me!通信Value + Me!院辦Value
剩余數量分配給退休
If Me!退休Value < Int((Me!總數量Value – cnt) And N < Me!抽獎數量Value And cnt < Me!總數量Value Then
If qrs單位 = "退休" And qrs!批次Value = Then
Me!退休Value = Me!退休Value +
qrsEdit
qrs!獎勵等級Value = Me!獎勵等級Value
qrs!批次Value = Me!批次Value
qrsUpdate
N = N +
End If
Else
End If
……
’判斷是否完成抽獎
cnt = Me!電科Value + Me!電氣Value + Me!自動化Value + Me!通信Value + Me!院辦Value + Me!退休Value
If cnt = Me!總數量Value Then
MsgBox ("抽獎總數已到")
Me可抽獎Value =
Else
MsgBox ("抽獎限制")
End If
……
結論
本系統利用Access數據庫結合其內置VBA語言探討了系統初始化抽獎的隨機性和相對均衡性等關鍵問題滿足了抽獎的要求進行適當調整該系統可以應用于多種抽獎場合
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈