基于VBA的题库查重算法

时间:2024-03-25 点赞:48992 浏览:97028 作者原创标记本站原创

本文是一篇自动化论文范文,自动化相关大学毕业论文,关于基于VBA的题库查重算法相关学士学位论文范文。适合自动化及题库及对象方面的的大学硕士和本科毕业论文以及自动化相关开题报告范文和职称论文写作参考文献资料下载。

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

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

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

1概述

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

2ExcelVBA及Excel对象模型

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

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

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

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

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

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

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

3Excel题库结构及查重算法

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

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

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

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

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

第3步:当i等于n(n>等于2andn<=rws-1),如果“重复标识”为空,则执行第4步,否则设置i=i+1,此时,若i<=rws-1,则重复执行第3步,否则结束外循环,查重结束.

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

第5步:当j等于m(m>等于i+1andm<=rws),将该行的题目、A选项、B选项、C选项和D选项与i行对应列进行比较,若各对应项全部相同,则i行题目与j行题目重复,将i行“重复标识”列单元格设为“Tagi”(注意,i为实际行值),将j行“重复标识”列单元格设为“与Tagi重”,并将i行和j行突出显示.否则,设置j=j+1,此时若j<=rws,则重复执行第5步,否则结束内循环,执行步骤6;

第6步:设置i等于i+1,若i<=rws-1,则执行第3步,否则结束外循环,查重结束.

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软件是目前最广泛的办公数据处理和分析软件,但是大部分使用者只使用了它的常规功能而忽略了它的高级编程功能.实际上,在面对复杂数据处理问题时,只要具有初级编程知识,就可开发出自动、高效的自动化数据处理程序.


相关论文

基于动态规划的文本查重算法实现

此文是一篇文本论文范文,关于文本论文范文例文,与基于动态规划的文本查重算法实现相关毕业论文开题报告范文。适合不知如何写文本及参考文献。

基于动态规划的文本查重算法实现

本文是一篇文本论文范文,文本相关自考毕业论文开题报告,关于基于动态规划的文本查重算法实现相关毕业论文开题报告范文。适合文本及参考文献。

导游资题库的建设与

本文是一篇旅游管理论文范文,关于旅游管理类毕业论文范文,关于导游资题库的建设与相关专科毕业论文范文。适合旅游管理及导游及教学经验方面。

博士文查重标准招生

本论文为参考文献相关标准论文格式,关于博士文查重标准招生相关毕业论文参考文献格式,可用于参考文献论文写作研究的大学硕士与本科毕业论。

学位文查重申诉书

该文为自己发表类有关毕业论文格式范文,与学位文查重申诉书相关论文参考文献怎么写,可作为参考文献专业自己发表论文写作研究的大学硕士与。

计算机导题库计算机知识,计算机知识

此文是一篇计算机论文范文,计算机类论文范文文献,与计算机导题库计算机知识,计算机知识相关自考毕业论文开题报告。适合不知如何写计算机及。

对某医学杂志一期已发表文再查重的

本文是一篇学术不端论文范文,学术不端相关毕业论文格式模板,关于对某医学杂志一期已发表文再查重的相关毕业论文格式模板范文。适合学术不端。