摘 要:将计算机技术应用到体育运动会的管理当中,研制出体育运动会计算机管理系统,显著提高运动会的现代化管理水平。本文主要阐述在具体实现过程中使用到的一些关键技术。
关键词:体育运动会 计算机管理系统 智能分组分道
2010年,沈阳药科大学体育部提出加强体育运动会现代化管理技术的需求,与我校计算机中心联合共同研制了体育运动会计算机管理系统,该系统投入使用后,显著提升运动会管理者的工作效率,与传统人工实现相比,在准确性、及时性、智能化和高效率等方面占有绝对优势;系统还受到沈阳市某事业单位的关注和使用。在研发和完善系统的过程中,运动员注册、分组分道、成绩录入、数据导出和打印报告单/成绩单等的功能设计部分都涉及不同的关键技术。
1 关键技术
1.1 智能分组分道
所谓智能分组分道技术,是指由计算机按一定规则对某项目的报名数据进行分组分道,模拟人工实现的过程效率高、速度快、准确无误。技术算法实现如下:
(1)将某项目报名数据所有运动员号码读取到动态数组c中,并进行排序。
Set g = Grid1
ReDim c(1 To g.rows - 1)
For i = 1 To g.rows - 1
c(i) = g.Cell(i, 3).Text
Next i
排序代码省略。
(2)定义二维动态数组s,其中第一维大小为小组数,第二维大小为道数。
ReDim s(1 To lblXZS.Caption, 1 To lblDS.Caption)
(3)开始分组。这一步是将前面排好序的运动员号码以道次为优先,为每小组分配一个队员,这样保证了同一参赛单位的队员尽量不出现在一个小组当中,如图1所示。
For j = 1 To lblDS.Caption
For i = 1 To lblXZS.Caption
If (j - 1) * lblXZS.Caption + i > UBound(c) Then Exit For
s(i, j) = c((j - 1) * lblXZS.Caption + i)
Next i
If i <= lblXZS.Caption Then Exit For
Next j
其中,(j - 1) * lblXZS.Caption + i > UBound(c)判断是否分配完毕。
(4)重新随机分道。针对此问题,我们在设计中采用类似约瑟夫环问题解决:对某小组i分道时,统计该组运动员数量ecount,随机生成一个位置j,并将该位置的号码s(i,j)移动到s(i,ecount)位置去,其j位置之后直到ecount位置的号码前移,该组运动员数量ecount减1;重复此操作ecount-1遍,VB中的For循环终值一旦确定不会再改变。
For i = 1 To lblXZS.Caption
ecount = 0
For j = 1 To lblDS.Caption
If s(i, j) <> "" Then ecount = ecount + 1
Next j
For k = 1 To ecount - 1
j = Int(Rnd * ecount + 1)
t = s(i, j)
For M = j + 1 To ecount
s(i, M - 1) = s(i, M)
Next M
s(i, M - 1) = t
ecount = ecount - 1
Next k
Next i
1.2 生成秩序册
赛前数据准备结束之后,生成秩序册是赛前最后的工作,也是传统手工工作中最为繁琐的过程。通过体育运动会计算机管理系统自动将数据库中的数据按一定规则编排保存到Word文档中是非常重要的,在实现过程中关键的技术在于动态创建Word文档并添加内容。
1.2.1 创建Word文档
Dim wdApp As Word.Application, wdDoc As Word.Document
Set wdApp = CreateObject("word.application")
Set wdDoc = wdApp.Documents.Add
1.2.2 向文档中追加段落及内容
wdApp.Selection.TypeText Text:="生成秩序册"
wdApp.Selection.TypeParagraph
1.2.3 保存文档
wdDoc.SaveAs strDesktop & "生成秩序册.doc"
wdApp.Quit:Set wdDoc = Nothing:Set wdApp = Nothing
秩序册生成过程中,小组、道数的标题和运动员名单等问题,在这里暂时不做详细讨论。
2 结语
本文针对沈阳药科大学体育运动会计算机管理系统中在智能分组分道关键技术中所采用的方法做了详细的讨论,并对秩序册的生成技术进行了简单的介绍,希望能够对进行此类设计工作的程序设计人员提供帮助。