论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Access数据库教程
Tag:2000,2003,2007,查询,sql,,教程,安全,转换,排序,复制,删除,修改,视频教程

基于Access数据库的抽奖系统设计

文章类别:Access数据库 | 发表日期:2008-10-5 18:45:04

 摘 要 介绍了抽奖信息管理系统的设计思路和基本原理,结合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
……


  通过点击开始按钮开始抽奖,同时按钮标题变为停止,再次点击停止此批次抽奖,同时按钮标题变为开始,继续点击开始下一批次抽奖,如此反复,直至完成总抽奖数,此时提示“抽奖总数已到”,如果未完成总抽奖数就开始另外一轮抽奖,则提示“抽奖限制”。

。抽奖模块的主要程序代码如下:

……
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数据库推荐教程
Access数据库热门教程