基于Access数据库的抽奖系统设计
摘要:基于Access数据库的抽奖系统设计
基于Access数据库的抽奖系统设计
摘 要 引见了抽奖信息治理系统的设计思绪和根本原理,联合Access,经过软件系统开发,完成了具备随机性和相对均衡性的抽奖。
要害词 抽奖系统 Access VBA 随机 相对均衡性
引言
当今社会,各种各样的抽奖流动相当普遍,抽奖流动的根本准则和次要特色是随机性,但对于某一集团内部的抽奖流动来说,还有一个相对均衡的成绩,所谓相对均衡就是指让各个部门的中奖概率和其人数占总人数的比严重致相等。基于Access,联合其内置VBA言语,经过程序设计完成抽奖的随机,经过算法钻研完成抽奖的相对均衡。本文次要引见了系统原理以及次要程序的设计。
系统组成及原理
抽奖系统次要由来宾注销、奖票治理、幸运抽奖、获奖查询四个根本模块造成,注销模块注销加入抽奖人员,奖票治理模块初始化加入抽奖人员名单,抽奖模块完成抽奖性能,获奖查询模块查询获奖后果。其中,抽奖模块中可能完成奖励等级、总抽奖数、每一次抽奖数的控制。系统架构框图如图1。
图1 系统架构
系统初始化
来宾注销模块中已经收录了加入抽奖的人员名单以及所属部门,在奖票治理模块中,当点击初始化按钮时经过内部程序设计首先把上次的抽奖后果清空,同时应用 Rnd在加入抽奖的人员名单前随机生成一系列的序号,为幸运抽奖模块中的随机抽奖做预备[1]。次要初始化程序代码如下:
DoCmd.SetWarnings False
DoCmd.OpenQuery "删除对奖票号", acNormal, acEdit
DoCmd.OpenQuery "追加对奖票号", acNormal, acEdit
DoCmd.SetWarnings True
Set qrs = CurrentDb.OpenRecordset("对奖票号")
qrs.MoveFirst
i = 1
Do While Not qrs.EOF
qrs.Edit
qrs!序号 = Int((211 - 1) * Rnd)
qrs!对奖号码 = i
qrs.Update
i = i + 1
qrs.MoveNext
Loop
MsgBox ("对奖名单初始化终了。")
qrs.Close
抽奖性能的完成
经过抽奖模块完成最终抽奖性能。
经过奖励等级组合框控制抽奖等级,经过抽奖数量组合框控制每批次抽奖数量,经过总抽奖数组合框控制总抽奖数。当奖励等级分别为一、二、三等奖时,抽奖数量和总抽奖数默许值分别
为5、10、10和10、30、50。各组合框的详细数值也可能经过上下箭头控制。抽奖界面如图2。
图 2 抽 奖 界 面
其程序设计比较简略,次要程序如下:
……
If Me!奖励等级.Value = 1 Then
Me!总数量.Value = 10
End If
If Me!奖励等级.Value = 2 Then
Me!总数量.Value = 30
End If
If Me!奖励等级.Value = 3 Then
Me!总数量.Value = 50
End If
Forms!抽奖.Q_抽奖统计.Requery
If Me!奖励等级.Value = 1 Then
Me!抽奖数量.Value = 5
End If
If Me!奖励等级.Value = 2 Or Me!奖励等级.Value = 3 Then
Me!抽奖数量.Value = 10
End If
……
经过点击末尾按钮末尾抽奖,同时按钮题目变为中止,再次点击中止此批次抽奖,同时按钮题目变为末尾,持续点击末尾下一批次抽奖,如此重复,直至实现总抽奖数,此时揭示“抽奖总数已到”,假设未实现总抽奖数就末尾另外一轮抽奖,则揭示“抽奖限度”。
内部抽奖次要处理随机性和相对均衡两个成绩。系统初始化在加入抽奖人员名单前随机生成了序号,经过查询“号码重排序”将加入抽奖人员名单依照序号升序陈列,抽奖时依照序号顺序抽奖,完成了随机的要求。相对均衡要求大致依照各个部门人数占总人数的百分比来分配中奖人数,本系统采用各个部门占总人数的百分比乘以抽奖总数的方法来大致确定各个部门的中奖人数,有小数的数字经过程序设计停止四舍五入解决。需求留意的是,若使一切的部门中奖人数都要用四舍五入的方法停止解决则能够出现谬误,为了避免这种情况需求选定一个部门,使其中奖人数等于总抽奖数减去其余各个部门中奖人数之和[2]。抽奖模块的次要程序代码如下:
……
N = 0
cnt = Me!电科.Value + Me!电气.Value + Me!主动化.Value + Me!通讯.Value + Me!院办.Value + Me!退休.Value
Do While Me!抽奖数量.Value > N And Not qrs.EOF And cnt < Me!总数量.Value
'电科抽奖
’四舍五入确定电科中奖数
If Me!电科.Value < (Int(((unit1.姓名之Count / cnt1) * Me!总数量.Value + 0.5))) And N < Me!抽奖数量.Value And cnt < Me!总数量.Value Then
If qrs.单位 = "电科" And qrs!批次.Value = 0 Then
Me!电科.Value = Me!电科.Value + 1
qrs.Edit
qrs!奖励等级.Value = Me!奖励等级.Value
qrs!批次.Value = Me!批次.Value
qrs.Update
N = N + 1
End If
Else
End If
……
'退休抽奖
cnt = Me!电科.Value + Me!电气.Value + Me!主动化.Value + Me!通讯.Value + Me!院办.Value + Me!退休.Value
cnt2= Me!电科.Value + Me!电气.Value + Me!主动化.Value + Me!通讯.Value + Me!院办.Value
'剩余数量分配给退休
If Me!退休.Value < Int((Me!总数量.Value – cnt2) And N < Me!抽奖数量.Value And cnt < Me!总数量.Value Then
If qrs22.单位 = "退休" And qrs!批次.Value = 0 Then
Me!退休.Value = Me!退休.Value + 1
qrs.Edit
qrs22!奖励等级.Value = Me!奖励等级.Value
qrs22!批次.Value = Me!批次.Value
qrs22.Update
N = N + 1
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 = 0
Else
MsgBox ("抽奖限度。")
End If
……
论断
本系统应用Access数据库,联合其内置VBA言语,讨论了系统初始化、抽奖的随机性和相对均衡性等要害成绩,满足了抽奖的要求。停止适当调整,该系统可能运用于多种抽奖场合。
要害词 抽奖系统 Access VBA 随机 相对均衡性
引言
当今社会,各种各样的抽奖流动相当普遍,抽奖流动的根本准则和次要特色是随机性,但对于某一集团内部的抽奖流动来说,还有一个相对均衡的成绩,所谓相对均衡就是指让各个部门的中奖概率和其人数占总人数的比严重致相等。基于Access,联合其内置VBA言语,经过程序设计完成抽奖的随机,经过算法钻研完成抽奖的相对均衡。本文次要引见了系统原理以及次要程序的设计。
系统组成及原理
抽奖系统次要由来宾注销、奖票治理、幸运抽奖、获奖查询四个根本模块造成,注销模块注销加入抽奖人员,奖票治理模块初始化加入抽奖人员名单,抽奖模块完成抽奖性能,获奖查询模块查询获奖后果。其中,抽奖模块中可能完成奖励等级、总抽奖数、每一次抽奖数的控制。系统架构框图如图1。
图1 系统架构
系统初始化
来宾注销模块中已经收录了加入抽奖的人员名单以及所属部门,在奖票治理模块中,当点击初始化按钮时经过内部程序设计首先把上次的抽奖后果清空,同时应用 Rnd在加入抽奖的人员名单前随机生成一系列的序号,为幸运抽奖模块中的随机抽奖做预备[1]。次要初始化程序代码如下:
DoCmd.SetWarnings False
DoCmd.OpenQuery "删除对奖票号", acNormal, acEdit
DoCmd.OpenQuery "追加对奖票号", acNormal, acEdit
DoCmd.SetWarnings True
Set qrs = CurrentDb.OpenRecordset("对奖票号")
qrs.MoveFirst
i = 1
Do While Not qrs.EOF
qrs.Edit
qrs!序号 = Int((211 - 1) * Rnd)
qrs!对奖号码 = i
qrs.Update
i = i + 1
qrs.MoveNext
Loop
MsgBox ("对奖名单初始化终了。")
qrs.Close
抽奖性能的完成
经过抽奖模块完成最终抽奖性能。
经过奖励等级组合框控制抽奖等级,经过抽奖数量组合框控制每批次抽奖数量,经过总抽奖数组合框控制总抽奖数。当奖励等级分别为一、二、三等奖时,抽奖数量和总抽奖数默许值分别
为5、10、10和10、30、50。各组合框的详细数值也可能经过上下箭头控制。抽奖界面如图2。
图 2 抽 奖 界 面
其程序设计比较简略,次要程序如下:
……
If Me!奖励等级.Value = 1 Then
Me!总数量.Value = 10
End If
If Me!奖励等级.Value = 2 Then
Me!总数量.Value = 30
End If
If Me!奖励等级.Value = 3 Then
Me!总数量.Value = 50
End If
Forms!抽奖.Q_抽奖统计.Requery
If Me!奖励等级.Value = 1 Then
Me!抽奖数量.Value = 5
End If
If Me!奖励等级.Value = 2 Or Me!奖励等级.Value = 3 Then
Me!抽奖数量.Value = 10
End If
……
经过点击末尾按钮末尾抽奖,同时按钮题目变为中止,再次点击中止此批次抽奖,同时按钮题目变为末尾,持续点击末尾下一批次抽奖,如此重复,直至实现总抽奖数,此时揭示“抽奖总数已到”,假设未实现总抽奖数就末尾另外一轮抽奖,则揭示“抽奖限度”。
内部抽奖次要处理随机性和相对均衡两个成绩。系统初始化在加入抽奖人员名单前随机生成了序号,经过查询“号码重排序”将加入抽奖人员名单依照序号升序陈列,抽奖时依照序号顺序抽奖,完成了随机的要求。相对均衡要求大致依照各个部门人数占总人数的百分比来分配中奖人数,本系统采用各个部门占总人数的百分比乘以抽奖总数的方法来大致确定各个部门的中奖人数,有小数的数字经过程序设计停止四舍五入解决。需求留意的是,若使一切的部门中奖人数都要用四舍五入的方法停止解决则能够出现谬误,为了避免这种情况需求选定一个部门,使其中奖人数等于总抽奖数减去其余各个部门中奖人数之和[2]。抽奖模块的次要程序代码如下:
……
N = 0
cnt = Me!电科.Value + Me!电气.Value + Me!主动化.Value + Me!通讯.Value + Me!院办.Value + Me!退休.Value
Do While Me!抽奖数量.Value > N And Not qrs.EOF And cnt < Me!总数量.Value
'电科抽奖
’四舍五入确定电科中奖数
If Me!电科.Value < (Int(((unit1.姓名之Count / cnt1) * Me!总数量.Value + 0.5))) And N < Me!抽奖数量.Value And cnt < Me!总数量.Value Then
If qrs.单位 = "电科" And qrs!批次.Value = 0 Then
Me!电科.Value = Me!电科.Value + 1
qrs.Edit
qrs!奖励等级.Value = Me!奖励等级.Value
qrs!批次.Value = Me!批次.Value
qrs.Update
N = N + 1
End If
Else
End If
……
'退休抽奖
cnt = Me!电科.Value + Me!电气.Value + Me!主动化.Value + Me!通讯.Value + Me!院办.Value + Me!退休.Value
cnt2= Me!电科.Value + Me!电气.Value + Me!主动化.Value + Me!通讯.Value + Me!院办.Value
'剩余数量分配给退休
If Me!退休.Value < Int((Me!总数量.Value – cnt2) And N < Me!抽奖数量.Value And cnt < Me!总数量.Value Then
If qrs22.单位 = "退休" And qrs!批次.Value = 0 Then
Me!退休.Value = Me!退休.Value + 1
qrs.Edit
qrs22!奖励等级.Value = Me!奖励等级.Value
qrs22!批次.Value = Me!批次.Value
qrs22.Update
N = N + 1
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 = 0
Else
MsgBox ("抽奖限度。")
End If
……
论断
本系统应用Access数据库,联合其内置VBA言语,讨论了系统初始化、抽奖的随机性和相对均衡性等要害成绩,满足了抽奖的要求。停止适当调整,该系统可能运用于多种抽奖场合。