通用试题库与自动组卷系统的模块化技术实现
2013-09-04胡晓萍钟叶龙王宛苹
胡晓萍,钟叶龙,王宛苹
(1.杭州电子科技大学电子信息学院,浙江杭州310018;2.华数传媒网络有限公司,浙江杭州310023)
0 引言
随着计算机应用的普及,传统手工出卷的方式无法满足教学和科技发展的需求,自动组卷系统在这种背景下被提出[1]。国内各种类型的组卷系统非常多,但是传统的试卷生成系统通常只能针对某一门课程或学科进行组卷,无法综合多门课程的知识点进行出卷[2],或者用户除了利用系统中的题库进行出卷,很难自由改变系统的题库内容,如:增加新的课程、新的题型或试题等。为解决这一弊端,本文提出模块化的设计理念,基于Powerbuilder10.0开发环境下实现的题库与自动组卷系统,能够灵活添加新的课程及其相应的试题题库、新题型等;既能对各门课程单独出卷,又能交叉组合多门课程的知识点综合出卷;且本系统具有强大的题库和试卷库管理功能,有较大的通用性和实际应用价值。
1 系统功能的模块化设计
考虑到要实现题库管理与自动组卷系统的可扩展性、可移植性等多种功能,将系统分解为4个功能模块,各个模块都具有一定的独立性和通用功能,系统功能模块如图1所示。
图1 通用试题库与自动组卷系统的功能模块框图
1.1 试题库管理子系统
试题库管理子系统是为能顺利组卷而设计的,既具有传统试题库的功能,如实现不同题型试题的输入、修改、删除,统计以及对题库进行条件浏览等功能[3];又具有强大的通用性,系统对每门课程建立独立的数据库,以保存该课程的试题。其最大的特点是可以任意添加新课程以及新题型,或者删除系统中已建立的某一课程的试题库等。本系统已建立完成的试题库包含了4门电子信息类专业课程的试题,设置的试题难度有容易、提高、较难和难4个级别,题型分为选择题、填空题、判断题和计算题等。
1.2 试卷生成子系统
模块分手工组卷和自动组卷两种功能,能同时生成试卷及相应的参考答案和详细的解题过程。手工组卷需要对课程名、题型、难度系数、每题的分数值等均进行设定方能组卷。自动组卷则只需设定课程名和总体的知识点分配比例就能进行选题组卷,题型、难度系数等则按照系统默认值设定。两种方式生成的试卷均保存为Word文档,而不是仅显示在电脑屏幕上。这种功能设计便于教师进行试卷管理,且与目前各个高校多数课程仍采用纸质试卷的考试方式相适应。
1.3 试卷库管理子系统
为了便于对试卷进行管理,设计的试卷库管理子系统能够实现对所有Word格式的试卷及其参考答案进行保存、删除、检索、打印预览、打印等功能。系统的通用性体现于即使不在本系统生成的试卷也能导入该试卷库中进行统一管理;同时也能将试卷库中的试卷导出为Word格式的文件。系统能根据试卷ID号或年份、学期、考试对象、专业等各种组合模式查询试卷库,有利于教师了解不同阶段或不同专业学生的考试情况,为再次组卷提供了有效的参考价值。
1.4 模拟自测模块
模拟自测子系统主要是针对学生自主学习而设计的,具有自我打分评测功能。系统根据章节内容、题型、难度等条件设置进行选题,或者完全随机选题。模拟练习后,系统能给出试题的答案、详细分析过程等相关信息。
2 系统总体设计
2.1 数据库的设计
数据库设计的合理与否,直接影响数据的完整性、安全性、程序运行的效率和程序设计的复杂程度等。本系统程序是在PowerBuilder10.0环境下编写的,因此试题库和试卷库均采用由PB自带的ASA本地数据库;结合PowerScript语言与嵌入式SQL语句进行编程,实现对数据库的各项功能操作[4]。
目前本系统由5个数据库组成,其中4个数据库分别存放不同课程的试题,第5个数据库用来存放试卷。若增加新的课程,则系统能自动增加新的数据库,即数据库可以动态建立。每门课程的数据库中分配7张表,分别为选择题表、填空题表、判断题表、计算题表、电路单元表、题数表和已用ID表,电路单元表中放的是这个科目中所有的电路单元名,题数表用于存放科目中每种题型中的题数,已用ID表中存放的是用过的但被删除的ID号。试卷库由5张表构成,用于存放试题、专业名和专业数、考试对象名/考试对象数、相关项目的数量和已用的ID列表等。
2.2 试卷生成系统子模块的通用性分析
根据已经输入题库的试题,本系统目前可针对4门课程进行独立出题或综合出题。用户按照条件设置组卷信息,组卷功能考虑周全,有较强的通用性,系统充分考虑教学需求,主要实现以下功能:
(1)可以对某一课程进行单独组卷,也可以任意组合多门课程的知识点按照比例设置进行自动组卷,或选择手工逐题选题组卷。若需对别的课程组卷,则首先需要添加新的试题库;
(2)在生成试卷后,如对某题不满意,系统可以根据条件设置自动替换该题;甚至让系统重新生成新的试卷;
(3)系统可以根据相同设置的条件生成B卷,并有两种模式可供选择。一是允许和A卷有重复,重复率可以选择;二是不允许和A卷有重复;
(4)能同时生成试卷的参考答案和详细的解答过程。
3 模块功能实现的难点与策略
系统功能实现的难点很多,主要如:试题的图形显示、试卷中试题以及其它试卷信息的拼接等;如何实现组卷参数的获取,并能保证易于操作;如何使用OLE控件,并对内嵌的WORD应用程序进行控制;如何使组卷的题目不重复等均为关键难点。
3.1 试题的图形显示
考虑到试题中会有大量的电路图和公式等,所以仅用纯文本的方法来保存和显示试题是无法满足要求的。在此通过调用Microsoft Office Word文字编辑器来实现该功能[5]。PowerBuilder 10.0提供了很好的软件接口,通过加载OLE控件实现对Word外挂程序的链接,实现在PB应用程序内部调用和使用Word[6]。公式、图片等试题信息通过Word文档的处理,用户可以在熟悉的环境下查看生成的试题,也可以在Word中输入、更新、删除和浏览题库。
3.2 试卷中试题以及其它试卷信息的拼接
试题库中的试题是以题为单位的,如何按照用户意愿将查询到的题目组合起来,以整张试卷的形式显示出来是系统开发的一个难点。在系统中内嵌Word组件实现对试卷内容的管理是个不错的选择,但如何在PB中控制Word,如实现试卷的拼接、标题插入、显示、打印等操作就比较困难。使用Word中自动生成VBA程序功能是解决该难点的一个主要途径。
Microsoft Word是一个集成化环境,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。Microsoft Visual Basic在Word中的代码即Word的宏,通过编写Word宏,实现一些文档处理的自动化,如实现文档的自动备份、存盘等,扩展Word文档的功能。因此,本系统充分利用Word的特性,使用Word的VBA功能获得“插入文件”的VBA代码,将从数据库中查找的题目以文件的形式存储,然后使用“插入文件”的VBA代码将各个题目拼接成一张试卷。同样的,利用VBA程序插入试卷标题、题号和分值等试卷信息。系统最终生成的试卷格式为Microsoft Word文档文件。
实现试题拼接的 VBA 函数为:OLE_1.Object.Application.Selection.InsertFile(filename)。
3.3 组卷参数的获取
组卷参数是系统默认或者由用户设定的,如何满足用户各种组卷要求、用尽量人性化和简易化的程序界面获取各种组合的组卷参数也是一个技术难点。问题的关键是如何权衡参数设置的多样化和程序操作的简易化间的矛盾。本设计中,选择以“向导”的形式和使用视图树(TreeView)控件的方法,使参数的设置既符合人的一般思维习惯,又使得需反复设置的参数能在尽量少的界面上方便地设置。组卷参数分为宏观参数和具体参数,宏观参数确定组卷的科目范围和题目数量等;具体参数是每个题目的参数,如科目、电路单元、题型和难度等。组卷参数设置的系统框图如图2所示。
3.4 试题的随机抽取且不重复
图2 组卷参数设置的子流程图
如何随机抽取试题,且使得试卷中的题目不重复是自动组卷系统的关键难点[7]。重复表现为同一份试卷中相同的试题重复出现,或者A、B两份试卷中有相同的试题出现。同时同一组卷条件有可能查询到多个结果。解决的办法是,在可行性分析check()函数中,设立用于存放所有符合条件的试题的ID数组为my_id[],将已经抽到的试题的ID号放在动态数组used_ID[]中,选题时将符合条件的试题的ID和used_ID中的比较,如果该ID在used_ID中不存在,就将该题目ID放入my_id[]中,再用随机数产生函数rand()随机选取一个ID作为该题所选用题目的ID,然后再将该ID写入到used_ID中。循环执行上面步骤,直至抽完所有的题目,如此实现不重复抽题,且具有较大的随机性。当然,试题库中有一定数量和分级难度的试题是有效生成高质量试卷的前提保证。
4 结束语
本文实现的基于PowerBuilder10.0开发的通用试题库与自动组卷系统在实际教学应用中获得一定的成功,关键在于PB对数据库操作的强大功能和其对软件接口的广泛支持。应用程序通过OLE技术嵌入Word应用程序,共享不同的应用程序信息资源,实现文本、图形、公式等为一体的复合文档和文档的编辑,以及对试题库、试卷库的实时管理和试卷、答案的控制输出。有效获取用户组卷的参数,并简化参数的设置,同时使用组卷向导和视图树相结合的方法,使得题库管理、试卷库管理、组卷过程等更符合人的一般思维方式,更人性化。由于模块化设计,本系统具有较大的通用性,较好地保证了系统的有效性、可扩展性、开放性和可移植性。本系统已经在本校相关专业的教学中应用近两年,为教师出卷提供了方便高效的工作平台,提高了教学效率,具有较好的实用和推广价值。
[1]丁秀丽,林坚.基于DAO技术的中学信息技术等级考试考务管理系统的开发[J].计算机应用研究,2005,19(6):130-131.
[2]潘应晖.通用题库管理系统开发[J].电脑知识与技术,2009,5(5):1 035-1 037.
[3]陈加粮.试卷自动生成系统的开发与实践[J].怀化学院学报,2010,29(11):75-78.
[4]解亚萍.基于PB开发环境中应用软件重用技术[J].陇东学院学报,2009,20(5):16-18.
[5]陈特放,方斌.VC平台下基于OLE的Word自动化操作应用[J].计算机应用与软件,2009,26(9):123-125.
[6]陈石友.利用OLE技术实现数据库与Office文档间的数据交换[J].电脑编程技巧与维护,2011,(5):179-180.
[7]董晨,李继芳,冒秉文.基于ASP随机抽取自动组卷系统设计与实现[J].计算机系统应用,2008,(12):88-91.