|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那时候Sybase已经诞生了6年的时间。至于其他值得关注的开源数据库,PostgreSQL将在2009年达到20岁的生日。虽然MySQL并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。弁言
现今社会,林林总总的抽奖举动相称广泛,抽奖举动的基础准绳和次要特性是随机性,但关于某一整体外部的抽奖举动来讲,另有一个绝对平衡的成绩,所谓绝对平衡就是指让各个部门的中奖几率和其人数占总人数的比严重致相称。基于ACCESS,分离其内置VBA言语,经由过程程序计划完成抽奖的随机,经由过程算法研讨完成抽奖的绝对平衡。本文次要先容了体系道理和次要程序的计划。
体系构成及道理
抽奖体系次要由宾客挂号、奖票办理、侥幸抽奖、获奖查询四个基础模块组成,挂号模块挂号列入抽奖职员,奖票办理模块初始化列入抽奖职员名单,抽奖模块完成抽奖功效,获奖查询模块查询获奖了局。个中,抽奖模块中能够完成嘉奖品级、总抽奖数、每次抽奖数的把持。体系架构框图如。
体系架构
体系初始化
宾客挂号模块中已收录了列入抽奖的职员名单和所属部门,在奖票办理模块中,当点击初始化按钮时经由过程外部程序计划起首把前次的抽奖了局清空,同时使用Rnd在列入抽奖的职员名单前随机天生一系列的序号,为侥幸抽奖模块中的随机抽奖做筹办[1]。次要初始化程序代码以下:
以下为援用的内容:
DoCmd.SetWarningsFalse
DoCmd.OpenQuery"删除对奖票号",acNormal,acEdit
DoCmd.OpenQuery"追加对奖票号",acNormal,acEdit
DoCmd.SetWarningsTrue
Setqrs=CurrentDb.OpenRecordset("对奖票号")
qrs.MoveFirst
i=1
DoWhileNotqrs.EOF
qrs.Edit
qrs!序号=Int((211-1)*Rnd)
qrs!对奖号码=i
qrs.Update
i=i+1
qrs.MoveNext
Loop
MsgBox("对奖名单初始化终了。")
qrs.Close
抽奖功效的完成
经由过程抽奖模块完成终极抽奖功效。
经由过程嘉奖品级组合框把持抽奖品级,经由过程抽奖数目组合框把持每批次抽奖数目,经由过程总抽奖数组合框把持总抽奖数。当嘉奖品级分离为1、2、三等奖时,抽奖数目和总抽奖数默许值分离为5、10、10和10、30、50。各组合框的详细数值也能够经由过程高低箭头把持。抽奖界面如。
抽奖界面
其程序计划对照复杂,次要程序以下:
以下为援用的内容:
……
IfMe!嘉奖品级.Value=1Then
Me!总数目.Value=10
EndIf
IfMe!嘉奖品级.Value=2Then
Me!总数目.Value=30
EndIf
IfMe!嘉奖品级.Value=3Then
Me!总数目.Value=50
EndIf
Forms!抽奖.Q_抽奖统计.Requery
IfMe!嘉奖品级.Value=1Then
Me!抽奖数目.Value=5
EndIf
IfMe!嘉奖品级.Value=2OrMe!嘉奖品级.Value=3Then
Me!抽奖数目.Value=10
EndIf
……
经由过程点击入手下手按钮入手下手抽奖,同时按钮题目变成中断,再次点击中断此批次抽奖,同时按钮题目变成入手下手,持续点击入手下手下一批次抽奖,云云重复,直至完成总抽奖数,此时提醒“抽奖总数已到”,假如未完成总抽奖数就入手下手别的一轮抽奖,则提醒“抽奖限定”。
外部抽奖次要办理随机性和绝对平衡两个成绩。体系初始化在列入抽奖职员名单前随机天生了序号,经由过程查询“号码重排序”将列入抽奖职员名单依照序号升序分列,抽奖时依照序号按次抽奖,完成了随机的请求。绝对平衡请求大抵依照各个部门人数占总人数的百分比来分派中奖人数,本体系接纳各个部门占总人数的百分比乘以抽奖总数的办法来大抵断定各个部门的中奖人数,有小数的数字经由过程程序计划举行四舍五进处置。必要注重的是,若使一切的部门中奖人数都要用四舍五进的办法举行处置则大概呈现毛病,为了不这类情形必要选定一个部门,使个中奖人数即是总抽奖数减往其他各个部门中奖人数之和[2]。抽奖模块的次要程序代码以下:
以下为援用的内容:
……
N=0
cnt=Me!电科.Value+Me!电气.Value+Me!主动化.Value+Me!通讯.Value+Me!院办.Value+Me!退休.Value
DoWhileMe!抽奖数目.Value>NAndNotqrs.EOFAndcnt<Me!总数目.Value
电科抽奖
’四舍五进断定电科中奖数
IfMe!电科.Value<(Int(((unit1.姓名之Count/cnt1)*Me!总数目.Value+0.5)))AndN<Me!抽奖数目.ValueAndcnt<Me!总数目.ValueThen
Ifqrs.单元="电科"Andqrs!批次.Value=0Then
Me!电科.Value=Me!电科.Value+1
qrs.Edit
qrs!嘉奖品级.Value=Me!嘉奖品级.Value
qrs!批次.Value=Me!批次.Value
qrs.Update
N=N+1
EndIf
Else
EndIf
……
退休抽奖
cnt=Me!电科.Value+Me!电气.Value+Me!主动化.Value+Me!通讯.Value+Me!院办.Value+Me!退休.Value
cnt2=Me!电科.Value+Me!电气.Value+Me!主动化.Value+Me!通讯.Value+Me!院办.Value
残剩数目分派给退休
IfMe!退休.Value<Int((Me!总数目.Value–cnt2)AndN<Me!抽奖数目.ValueAndcnt<Me!总数目.ValueThen
Ifqrs22.单元="退休"Andqrs!批次.Value=0Then
Me!退休.Value=Me!退休.Value+1
qrs.Edit
qrs22!嘉奖品级.Value=Me!嘉奖品级.Value
qrs22!批次.Value=Me!批次.Value
qrs22.Update
N=N+1
EndIf
Else
EndIf
……
’判别是不是完成抽奖
cnt=Me!电科.Value+Me!电气.Value+Me!主动化.Value+Me!通讯.Value+Me!院办.Value+Me!退休.Value
Ifcnt=Me!总数目.ValueThen
MsgBox("抽奖总数已到。")
Me.可抽奖.Value=0
Else
MsgBox("抽奖限定。")
EndIf
……
结论
本体系使用ACCESS数据库,分离其内置VBA言语,切磋了体系初始化、抽奖的随机性和绝对平衡性等关头成绩,满意了抽奖的请求。举行得当调剂,该体系能够使用于多种抽奖场所。
能够以较低的成本向客户提供IT所有权,当节约成本成为客户最高优先级时,解决方案提供商可以向更多的客户同时提供服务。虽然有许多来自RDBMS固有的局限性。 |
|