基于Excel VBA的讲课竞赛抽签系统设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Excel VBA的讲课竞赛抽签系统设计与实现

作者:周志军窦志强朱春晓

来源:《中国管理信息化》2016年第11期

[摘要] 通过组织讲课竞赛等形式不断提高青年教师教学能力,是高等院校确保人才培养质量稳步提升的重要保证。在高校讲课竞赛等活动中,需要以公正、快捷、直观的方式对参加人员、讲课题目进行抽签,文章通过实例介绍基于Excel VBA设计讲课竞赛抽签系统的实现方法。

[关键词] VBA;讲课竞赛;抽签系统;洗牌算法

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2016. 11. 112

[中图分类号] TP317.3 [文献标识码] A [文章编号] 1673 - 0194(2016)11- 0187- 04

1 引言

在高等院校中,提高青年教师教学能力是不断提升人才培养质量的重要保证。组织以老带新、岗位练兵、讲课竞赛等形式的教学实践活动成为促进青年教师提高教学能力的有效手段。在讲课竞赛活动中,如何保证分组抽签环节的公开、公正、透明,成为参赛人员关注的焦点。由于通用抽签软件无法满足特定的抽签规则,对抽签数据格式和内容的具体需求存在差异,在解放军信息工程大学校2014年组织的青年教员讲课竞赛活动中,为了高效、公正、透明地进行抽签,自行开发了讲课竞赛抽签系统。在全年度的竞赛活动中,抽签系统发挥了重要作用。

2 需求分析

在比赛前,按照竞赛规则,全校各教研室所有符合条件的青年教员均列入参赛备选人员名单,每人准备数个讲课题目。按照学科类别,将所有教研室分为4个大组,全年组织多轮次讲课比赛,每轮次从每组人员中抽取相同数量的选手参赛,讲课题目和出场顺序随机确定。同时,为了确保青年教员广泛参与,需要实现全年每个教研室青年教员参赛比例和覆盖面基本相当。在此规则下,抽签系统既要保证公平、公开,又须符合各项比例要求。系统需要实现以下功能:

(1)按组别抽选参赛选手和讲课题目。

(2)按教研室人员比例进行抽选。

(3)参赛人员和讲课题目随机选定。

(4)抽中人员出场顺序随机确定。

(5)抽选结果填入表格即时打印。

(6)生成各组参赛选手基本信息表用于讲课竞赛工作用表。

3 设计思路

VBA是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程序视觉化的Basic 脚本。Office软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用效率更高。VBA 不但继承了VB 的开发机制,而且VBA 还具有与VB 相似的语言结构,它们的集成开发环境IDE也几乎相同。

由于教员和选题信息是借助Excel 来完成,因此,在 Excel 文件中嵌入 VBA 程序即可直接实现随机抽签。

在数据准备阶段,需将所有教员、分组、课程、选题等信息汇总在一个统一的Excel表格中。在每次抽选时根据教研室所在组别确定选题抽选范围,利用随机函数在抽选范围内随机确定选手和题目。在抽选时需检测所抽选教员是否已在之前被选中过,不能重复抽选同一教员。对检测通过的教员,标记当前教员本次已被抽选,避免后续抽选过程中被重复抽选。为被选中教员利用随机函数确定出场顺序,抽选完成之后保存并显示抽选结果。利用打印按钮对抽选结果信息表进行打印,各教学单位抽签代表签字确认,并同步将各组参赛选手基本信息和选题信息从总表中提取出来,生成参赛选手基本信息表用于讲课竞赛工作用表。

系统程序逻辑结构图如图1所示。

4 软件实现

4.1 程序界面

由于系统功能单一而明确,界面设计应立足实用,尽量简洁。在系统界面上设置必备的选项和按钮。选项用于选择抽选组别,按钮分别设置“抽签”、“重置”、“确定”、“打印”。“抽签”按钮用于实现抽签功能;“重置”按钮用于重置各项参数,使抽签操作可重复;“确定”按钮用于确认抽签结果,将抽签结果汇总至表格,并提取抽中的教员和题目信息填入参赛选手基本信息表;“打印”按钮用于打印抽签结果表格,供抽签人员现场确认使用。在按钮下方设置文本域,用于实时显示各组抽签结果,界面如图2所示。

4.2 主要功能实现

抽签的核心在于随机抽取教员和题目、随机确定出场顺序。由于教员、课程、选题等信息汇总在一个Excel表中,随机抽取教员和题目即可通过随机选择表格行号来实现。使用Randomize函数随机选择行号的实现是很简单的,关键点在于确定选择范围。不同教员归属于不同的教研室,不同教研室分布在不同的组中。使抽选结果符合抽选规则的过程便转化为使抽选范围符合竞赛规则的过程。为了合理确定抽选范围,只需将备选信息汇总表依次按照分组、教研室、教员、课程、选题的顺序排序,便可按照抽选要求确定一个连续的行号范围作为抽选范围赋值给边界变量。

Private Sub confirmRange() '确定抽选范围

Dim i As Integer

totalT = 0'备选教研室选题总行数

startRow = 0'备选教研室选题起始行

For i = 2 To totalRow '从汇总表计算备选教研室jID抽选行号范围

If Cells(i, 20).Value = jID Then

totalT = totalT + 1

If totalT = 1 Then

startRow = i

Else

End If

Else

End If

Next i

End Sub

确定抽选范围后,即可随机抽选教员和选题:

confirmRange

Randomize

相关文档
最新文档