孙雪
摘要: 在一些大型活动中,为了吸引参与者,通常会有抽奖环节。随着计算机的普及,电视、网络等媒体的广泛传播,“电脑抽奖”的方式越来越多地出现,而“电脑抽奖软件”也有着很好的使用价值。该文通过分析这种软件的实现原理,利用SQL Server 2000和VB设计并实现了一个电脑抽奖软件,为读者提供了设计和实现这种软件的思路。
关键词:SQL Server 2000;电脑抽奖;VB
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)25-0003-02
1引言
在一些大型活动中,为了吸引参与者,通常会有抽奖环节。传统的抽奖方式是将能唯一标识参与者的号码,比如身份证号、参会的顺序号等,打乱顺序地放入一个抽奖箱中。在活动的抽奖环节中,由组织者监督,抽奖嘉宾随机地在抽奖箱中抽出一个或几个号码,那么这些号码对应的参与者就是获奖者。如今,随着计算机的普及,电视、互联网等媒体的广泛传播,越来越多地出现了电脑抽奖的方式。特别是在一些大型的电视活动中,通常会通过抽出参与观众的身份证号或电话号码来产生幸运观众。电脑抽奖的方式想必读者都见到过,并且有许多人也参与过类似的活动。那么,像这种电脑抽奖的软件是如何设计和实现的呢?本文笔者通过自己设计的电脑抽奖软件,来为大家提供一个设计和实现这种软件的思路。
2电脑抽奖软件的总体设计
电脑抽奖的过程就是把传统的抽奖过程用计算机实现了。传统的抽奖是把参与者的信息放进抽奖箱,而电脑抽奖则是要把其数据放到数据库中;在传统的抽奖中由抽奖嘉宾在抽奖箱中随机地抽出获奖者,而在电脑抽奖中则是由抽奖嘉宾通过按键或点击按钮进行“开始”和“暂停”,随机地从数据库中提取幸运者的。
由此可见,设计电脑抽奖软件的总体思路是:
(1)首先组织者通过信息的录入界面,向数据库中录入参与者的信息。
(2)当数据库中有了数据以后就可以进行抽奖了,这时需要有一个抽奖界面,抽奖嘉宾通过按键或点击“开始”按钮进行抽奖。在抽奖中,通常屏幕上会有号码在不停地翻动,这些号码就是实时地在数据库中随机读取的数据。当抽奖嘉宾再次按键或点击“暂停”按钮时,会有一个号码停在屏幕上,那么这个号码所对应的参与者就是这个环节的幸运者。
(3)产生了获奖者后需要将获奖者的详细信息记录下来,为了活动以后方便联系;同时还要将获奖者信息从数据库中删除,为了下一环节的抽奖时不至于重复抽取。
由设计思路可知,电脑抽奖软件有两大部分组成:后台数据库和前台用户界面。
后台数据库主要用来存储参与者的信息,包括参与者的标识号、姓名、年龄、性别、电话、联系地址等。
前台显示界面是为用户提供一个良好的人机界面平台,方便用户操作。它主要由信息录入界面和电脑抽奖界面组成。“信息录入界面”是为了方便组织者向数据库中输入数据而设计的,“电脑抽奖界面”是用来展示抽奖的过程和结果。
3电脑抽奖软件的实现
根据软件的设计思路,在实现中,选用SQL Server 2000作为后台数据库,选用比较容易掌握和方便使用的面向对象的高级语言VB来做前台显示界面,这里使用了Visual Basic 6.0作为设计工具。
3.1 数据库的设计实现
在SQL Server 2000查询分析器中使用T-SQL语句建立数据库和数据表。用下面语句建立数据库InfoDB:create database InfoDB。在InfoDB中建立数据表Information:
create table InfoDB.dbo.information
(
userid varchar(26) primary key,
username varchar(30) not null,
usersex varchar(5) not null check (usersex in(男,女)),
userage varchar(10) not null check (userage between 1 and 150),
usertel varchar(30) not null,
useraddr varchar(50) not null
)
其中userid为主键,表示参与者的标识号;username、usersex、userage、usertel、useraddr分别表示参与者的姓名、性别、年龄、电话、联系地址。
3.2 利用VB设计实现前台界面
利用VB设计前台界面,需要设计两个界面,分别是“信息录入界面”和“电脑抽奖界面”。在界面的设计中用到的主要控件有:标签(label)、按钮(button)、文本框(textBox)、计时器(timer)。
界面布置好以后,就要设计程序。程序设计有两个关键点,一个是VB和SQL Server 2000数据库的连接,另一个是timer控件的使用。
VB和SQL Server 2000数据库的连接,这里采用了ADO的方式来连接SQL Server数据库。若要在VB中使用ADO对象,需要在工程中添加ADO控件,具体方法是单击“工程”菜单上“部件”命令,打开“部件”对话框,在列表中选择“Microsoft ADO Data Control 6.0 (OLEDB)”,点“确定”,此时ADO控件就显示在工具箱中。将“ADO控件”拖动到需要连接数据库的界面上,由于两个界面都需要连接数据库,所以两个界面都需要有ADO控件。设置ADO控件的属性,通过在“数据库链接属性”中选择数据库服务器、登陆方式以及所用数据库的名称,经过“测试连接”后测试成功,则返回如图1属性对话框中的连接字符串。由于两个窗体都需要和数据库进行操作,所以在每个窗体的Form_load事件中都需要首先打开与数据库的连接,语句如下:
Set con = New ADODB.Connection
con.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=InfoDB"
con.Open
其中“con.ConnectionString”就是图1对话框中生成的连接字符串。
下面就可以使用语句来操作数据库。在“信息录入界面”中需要向数据库中插入数据,则需要在插入数据的按钮cmdInsert的click事件中写入如下程序来向数据库中插入数据。
Set com = New ADODB.Command
com.ActiveConnection = con
com.CommandText = "insert into information values
(" & txtUserid.Text & ",
" & txtUsername.Text & ",
" & cboUsersex.Text & ",
" & txtUserage.Text & ",
" & txtUsertel.Text & ",
" & txtUseraddr.Text & ")"
com.Execute
在“电脑抽奖界面”中,当抽奖嘉宾点击“开始”按钮时开始抽奖,这时需要从数据库中随机地读取数据,并能在界面上显示数据变化的效果,此时就需要VB中制作动画效果的一个很重要的控件——Timer控件。Timer控件的重要属性有,“Enabled”表示计时器是否工作以及“Interval”表示给定的时间间隔,这里是以毫秒(ms)为单位。Timer控件的一个最重要的事件是Timer事件,表示每过一个Interval就会自动地激发Timer事件。在本程序中,由于要不停地从数据库中随机读取userid,所以需要用到Timer控件,使用时要适当设置Interval属性的值,这里根据需要将Interval设置成了50ms,Timer的Enabled属性初始化为“False”。当嘉宾按“开始”按钮时,计时器开始工作,即在开始按钮cmdStart的click事件中要将计时器设置为可用“tmrCount.Enabled = True”。开始抽奖即每过50ms随机地从数据库中读取一个userid并显示,则在Timer事件中需要写如下代码:
Private Sub tmrCount_Timer()
Dim strsql As String
Dim str As String
Randomize
strsql = "select top 1 * from information order by newid()"
Set rs = New ADODB.Recordset
rs.ActiveConnection = con
rs.LockType = adLockOptimistic
rs.CursorType = adOpenDynamic
rs.Source = strsql
rs.Open
lblRandom.Caption = rs.Fields(0)
End Sub
程序利用随机函数Randomize首先进行初始化。接着要执行一个查询语句“select top 1 * from information order by newid()”,这条语句的作用是在sqlserver中随机读取一条记录。执行完查询后需要利用“lblRandom.Caption = rs.Fields(0)”语句将userid显示到界面上。此程序每过50ms运行一次,这样界面上就会显示出号码在不停翻动的效果。
当抽奖嘉宾点击“暂停”按钮时,计时器停止工作,这时就会有一个userid显示在界面上,那么这个userid对应的参与者就是获奖者。最后程序要做的收尾工作是,将显示在界面上的userid所对应的用户信息写入到一个记事本文件中,同时将对应的信息从数据库中删除,并关闭数据库的连接。所以暂停按钮cmdPause的click事件的代码如下:
Private Sub cmdPause_Click()
Dim strsql As String
tmrCount.Enabled = False
Open App.Path + "\result.txt" For Append As #1
Print #1, filestr & rs("userid") & " " & rs("username") & " " & rs("usersex") & " " & rs("userage") & " " & rs("usertel") & " " & rs("useraddr")
Set com = New ADODB.Command
com.ActiveConnection = con
strsql = "delete from information where userid =" & rs("userid") & ""
com.CommandText = strsql
com.Execute
Close #1
rs.Close
End Sub
4结束语
在计算机网络、电视等媒体如此发达的今天,电脑抽奖具有很强的实用价值,与传统的抽奖方式相比,它既能节约资源又能提高效率。本文笔者分析了电脑抽奖软件的原理,并利用SQL Server 2000数据库和Visual Basic 6.0设计并实现了一个电脑抽奖程序,为读者提供了设计并实现这种软件的思路。
参考文献:
[1] 张俊玲,王秀英.数据库原理与应用[M].清华大学出版社,2010,7(2).
[2] Daniela F,Donald K,Ioana M.Integrating Keyword Search into XML Query Processing[J]. Computer Network,2000,33(6):25-28.