首页 > 范文大全 > 正文

基于VBA的题库算法研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于VBA的题库算法研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:在题库建设中,人工进行题目耗时,费力且错误率高。分析了题目的关键要素并使用Excel中的VBA编程功能和Excel对象模型实现了对题库的自动,对的关键算法和主要程序作了详细介绍。

关键词:Excel;VBA编程;题库;

中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2012)28-6761-03

1 概述

在高校题库建设工作中,由于题库题目数量巨大,出题人在题库建设中要进行大量的添加、删除和编辑等操作,重复使用相同的题目时有发生。另外有些题库需要课程组教师联合出题,也会造成很多重复题目出现。传统解决办法是人工逐题排查,工作强度非常大。因此需要一种自动功能的软件,使教师或管理人员在审查时能快速准确的定位重复题目。本文介绍如何利用Excel中的VBA编程技术,实现对题库中的题目自动。

2 Excel VBA及Excel对象模型

VBA(Visual Basic for Application)是开发Excel应用程序的编程语言,也是内嵌于其他Office套件的应用程序开发语言]。VBA的主要任务是组织或集合Office程序的功能,虽然它无法脱离Office环境独立运行,但却在自动化工作进程、个性化工作界面等方面有着内在的优势。作为Excel中的程序语言或称宏语言,由于Excel自身强大的数据分析与处理功能,使得Excel VBA具有更广泛的应用前景。与所有其它编程语言一样,VBA编程语言也是由类型、变量、数组、函数和流程控制等基本元素组成。在Office编程环境下,所有VBA代码都位于模块中,模块是存储VBA代码的容器。模块有三种类型:对象模块、标准模块和类模块。其中,对象模块是包含对象专用代码的模块,如工作表模块和工作簿模块;标准模块用于存储公用的,共享代码的模块;类模块则可以实现基于对象的编程,创建自己的属性、方法和事件。

Excel中的工作簿、工作表和单元格等都称为对象。在Excel中,像这样的对象共有100多个,这些对象具有层次结构,如图1所示。我们可以通过对象的层次结构概念来理解对象之间的联系:

1)整个Excel的对象可以看做一个层次结构;

2)每一个对象总是处在一个特定的对象层次中;

3)除了Application对象外,每一个对象都是由高层次的对象派生出来的;

4)一个对象可以派生出其他的对象,派生出的对象处于原对象的下一个层次中。

为了在程序中有效地调用这些Excel中的对象,开发人员必须理解这个对象层次结构并熟悉每个对象在这个层次结构中所处的位置。

3 Excel题库结构及算法

本文研究的目标Excel题库模型包括题型、题目、A选项、B选项、C选项、D选项和答案等列。如下图所示。实际上,为了便于题库建设后根据各种需要进行抽题组卷,大部分题库都要比该模型复杂,实际的题库一般还包括章节、知识点、难度系数、性质(记忆、理解和操作等)、分值、命题人和审题人等等。

本文所探讨的是题目,对于选择题,的本质是查找题目列和各选项列是否重复,若某两个选择题的题目列和各选项列完全一致,则可标记为是重题;对于填空题或简答题,由于只有题目列,没有选项列,只要检测题目列是否有重复值即可,使用Excel2010的条件格式即可实现。因此,不管实际题库结构如何,问题可归结为图2所示的关键列,其它列对问题解决并无帮助,可忽略。本文着重探讨选择题中的单选题。由于多选题与单选题的方式相同,不再赘述。

下面给出针对选择题的算法:

第1步:在答案列后添加一列“重复标识”,用于对重复题目进行标识。设置变量rws=总行数;

第2步:设置外循环变量初始值i=2,从第2行开始逐行遍历题库;

第3步:当i=n(n>=2 and n

第4步:设置内循环变量初始值j=i+1,从第i+1行逐行遍历题库;

第5步:当j=m(m>=i+1 and m

第6步:设置i=i+1,若i

4 算法实现及主程序

下面通过部分主程序来说明原理。在以下主程序中,首先清除当前题目格式,并将”H”列设置列标题“重复标识”,该列将用于对重复列进行标识。变量rws用于存储题目总行数,使用变量i控制外循环,从第2行循环至rws-1行,对于外循环中的每一行i,都使用内循环遍历i+1到rws行,使之与i行题目进行比较,一旦发现重复题目,则将对应的“H”列做标记,将i行标记为“Tagi”,将j行标记为“与Tagi重”,同时将重复题目设置背景色以突出显示。当外循环遇到有重复标记的行时不需处理,跳过即可。使用变量repTag记录是否重复,默认为True,使用变量k来控制循环实现对第2列到第6列的比较,只要有一列值不同就将repTag设为False。主过程如下:

结果如图3所示:

5 结束语

本文使用vba编程技术和Excel对象模型实现了题库功能,对于重复题目进行了突出显示并加以文字标注,在实际题库管理工作中应用效果良好,显著减轻了劳动强度。 Excel软件是目前最广泛的办公数据处理和分析软件,但是大部分使用者只使用了它的常规功能而忽略了它的高级编程功能。实际上,在面对复杂数据处理问题时,只要具有初级编程知识,就可开发出自动、高效的自动化数据处理程序。

参考文献:

[1] Microsoft. Office for Developers[OL]. http:///en-us/office/.

[2] Microsoft. Office开发中心[OL]. http:///zh-cn/office/.

[3] John Walkenbach.Excel 2007 Power Programming With VBA[M].Indianapolis:Wiley Publishing,Inc,2007: 133-386.

[4] John Walkenbach.Excel VBA Programming For Dummies 2nd Edition 2010[M].Indianapolis:Wiley Publishing, Inc,2010:213-231.

[5] Excel Home. Excel应用大全[M].北京:人民邮电出版社,2008:785-809.

[6] 毛奔,邹岚.利用VBA在Word中实现自动排版功能[J].应用科技,2005,32(11):37-39.