基于Access数据库的抽奖系统设计总结
今天由小编为大家讲解有关语言编程的文章,相信对大家一定有很大的帮助 |
引言
c语言编程入门当今社会,各种各样的抽奖活动相当普遍,抽奖活动的基本原则和主要特征是随机性,但对于某一团体内部的抽奖活动来说,还有一个相对均衡的问题,所谓相对均衡就是指让各个部门的中奖概率和其人数占总人数的比重大致相等。基于,结合其内置A语言,通过程序实现抽奖的随机,通过算法研究实现抽奖的相对均衡。本文主要介绍了系统原理以及主要程序的设计。
系统组成及原理
抽奖系统主要由来宾登记、奖票管理、幸运抽奖、获奖查询四个基本模块构成,登记模块登记参加抽奖人员,奖票管理模块初始化参加抽奖人员名单,抽奖模块实现抽奖功能,获奖查询模块查询获奖结果。其中,抽奖模块中可以实现奖励等级、总抽奖数、每一次抽奖数的控制。系统架构框图如图1。
图1 系统架构
c语言程序设计系统初始化
来宾登记模块中已经收录了参加抽奖的人员名单以及所属部门,在奖票管理模块中,当点击初始化按钮时通过内部程序设计首先把上次的抽奖结果清空,同时利用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 抽 奖 界 面
其程序设计比较简单,主要程序如下:
在过去三年中 XML 经历了许多反复,所以目前存在不同版本的 Microsoft XML 分析器也不奇怪。Internet Explorer 4.0 包含早期版本的 XML 分析器,它比 XSL、XML 数据或者大多数其他的 XML 技术(并且有完全不同的 DOM 模型)要早。该早期版本的分析器包含在 MSXML.dll 库中。从 MSDN XML 开发人员中心(英文)可将分析器升级到较新的一种。
我们极力建议您升级到新的分析器,因为它要强大得多。Internet Explorer 5.0 包括 MSXML 2.0 分析器,它包含 XSL 和 XML 架构的基本版本。MSXML2 是 SQL Server 2000 附带的分析器版本。MSXML2 包含了许多性能增强的功能,并且在总体上提高了性能和可伸缩性。MSXML3 是当前作为“技术预览”附带的版本。MSXML3 包括 XSLT 和 XPath 支持以及 SAX 接口。
以下为引用的内容: …… 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 …… |
C语言教程通过点击开始按钮开始抽奖,同时按钮标题变为停止,再次点击停止此批次抽奖,同时按钮标题变为开始,继续点击开始下一批次抽奖,如此反复,直至完成总抽奖数,此时提示“抽奖总数已到”,如果未完成总抽奖数就开始另外一轮抽奖,则提示“抽奖限制”。
内部抽奖主要解决随机性和相对均衡两个问题。系统初始化在参加抽奖人员名单前随机生成了序号,通过查询“号码重排序”将参加抽奖人员名单按照序号升序排列,抽奖时按照序号顺序抽奖,实现了随机的要求。相对均衡要求大致按照各个部门人数占总人数的百分比来分配中奖人数,本系统采用各个部门占总人数的百分比乘以抽奖总数的方法来大致确定各个部门的中奖人数,有小数的数字通过程序设计进行四舍五入处理。需要注意的是,若使所有的部门中奖人数都要用四舍五入的方法进行处理则可能出现错误,为了避免这种情况需要选定一个部门,使其中奖人数等于总抽奖数减去其他各个部门中奖人数之和[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 …… |
#p#分页标题#e#
结论
本系统利用ACCESS,结合其内置VBA语言,探讨了系统初始化、抽奖的随机性和相对均衡性等关键问题,满足了抽奖的要求。进行适当调整,该系统可以应用于多种抽奖场合。
看完小编的文章是不是很精彩,更多关于在线教育的文章尽在课课家,希望你们多多关注。 |