-
基于
Visual
Basic
的自动抽签评分系统设计
p>
摘要:针对各类竞赛、评比活动中的出场顺序抽签和
评分的实际问题
,通过
Visual Basic
设计了一个各类比赛实
用自动抽签评分系统,增强了抽签的公平和公正性,提高了
评分的效率
。
关键词:
Visual
Basic
;抽签;自动;评分系统
中图分类号:
TP311
文献标识码:
A
文章编
号:
1009-3044(2011)24-5935-03
为丰富业余生活以及开展日常工作
的需要,
学校、
公司、
医院等各个单位
常常举办形式多样的竞赛和评比活动,例如
演讲比赛、歌咏比赛、个人才艺展示大赛等,
这些都涉及到
出场顺序抽签和评委评分的问题,人工抽签和计算得分获奖
情况往往耗时、耗力,且人工抽签的可信度较低。本文基于
Visual Ba
sic
设计编写了一个比赛自动抽签评分系统,
以满足
于各类比赛活动赛前出场顺序抽签的公平公正性以及比赛
时快速评分统分
的要求,该系统设计和操作简单,具有一定
的实用性和推广价值。
1
功能设计
本文设计的自动抽签评分系统包括自动抽签和自动评
分两个模块,主要能完成以下功能:
1)
自
动抽签,
要通过双重随机保证抽签的公平、
公正
(即
操作者先洗签,选手后自主选签)
。在抽签前,参
赛选手的
数量可由操作者设置。
2)
可
满足不同评委数量的评分;
在所有评委对其中一名
选手评分后,
能够马上得到该选手的得分具体情况。
3)
当
所有选手比赛结束后,能够快速统计出获奖情况,
奖项设为一等奖、二等奖、三等奖三个
等级,具体的奖项数
量可由操作者设定。
4)
操作后所有的评分情况、
获奖情况可以查询、
< br>浏览和
输出。
5)
抽签和评分两个模块互不干扰。
2
系统设计
2.1
主窗体的设计
在主窗体中,使用了菜单编辑器设
计了两个菜单“自动
抽签”和“自动评分”
,主窗体的界面如图
2
所示。这两个
菜单分别启动对应的两
个模块。
2.2
自动抽签模块
自动抽签模块重点要解决以下两个
问题。一是产生与选
手个数相匹配的不重复随机数。二是选手可自主随意选签。
其中产生与参赛选手人数相一致的签数的具体算法流程如
下:
step1
设置参数选手人数
Pla
yerNum
;
step2
产生一个
1
~
PlayerNum
的随机整数作为第一个
签;
step3
再产生一个
1
~
PlayerNum
的随机整数作为下一个
p>
签;
step4
判断与以前产生的签是
否相同,相同则到
step3
;
step5
判断总签数是否达到
Pl
ayerNum
个,未达到则到
step3
,达到则结束。
本模块的窗体设计和运行结果如图
3
所示。图
3
(
a
)为
设置选手人数的过程,这里以
1
5
名选手为例,其中“洗签”
按钮为灰色不可用状态主要是防止
操作者的误操作,也就是
洗签前必须经过选手人数的设置;图
3
(
b
)为设置选手人数
和洗签后的抽签过程,鼠标单击“抽签”按钮时,该签消失
不可见,同时在窗体
左下显示该签的出场顺序。
该模块的主要代码如下:
Option Base 1
Dim a(), PlayerNum As
Integer
Private Sub Command1_Click()
Dim
i, j, t As Integer
ReDim a(PlayerNum)
Randomize
a(1) = Int(Rnd() *
PlayerNum + 1)
For i = 2 To PlayerNum
t = i
Randomize
a(i) = Int(Rnd() *
PlayerNum + 1)
For j = 1 To i - 1
If a(i) = a(j)
Then
i = t - 1
Exit For
End If
Next j
Next i
For i = 1 To
PlayerNum
Command2(i).Visible = True
Next i
End
Sub
Private Sub Command2_Click(Index As
Integer)
m = Index
n = n & a(m) &
Command2(m).Visible = False
End Sub
Private Sub Command4_Click()
PlayerNum = InputBox(
请输入参赛选手
的数量:
抽签
End Sub