摘 要: 通过分析现有无纸化考试系统的特点,采用遗传算法,设计了一套计算机应用基础考试系统。实现了自动组卷、评分、成绩回收等功能。将该系统应用于实际考试中,有效减少监考老师的工作强度。实践表明系统整体稳定、高效,具有较高的应用价值。
关键词: 遗传算法;考试系统;自动评分
1 研究现状
从工业化向信息化迈进过程中,IT技能成为当今人们能力素质的标志之一。计算机基础普及教育的宣传持续升温,相关应用能力的考核形式多种多样。从实际情况看,高校计算机基础考试形式基本实现了无纸化[1]上机操作。但现行的无纸化考试系统暴露出一些缺陷,如:(1)虽然采用无纸化考试,但有些仍需人工方式阅卷评分;(2)有些考试系统虽能实现自动评分,但仍存在如下问题:首先,系统试题库不能动态更新;其次,评分结果不能自动回收;再次,考试过程中出现的异常情况不能做到自动处理。现有的无纸化计算机基础考试系统存在的上述问题,背离了无纸化考试的初衷。
2 计算机基础考试系统的框架
系统包括三部分:服务器端、教师客户端和学生客户端。
服务器端包括:(1)教师信息管理模块,包括对教师信息的增加、修改、删除和查询操作;(2)回收考试成绩模块,负责从学生客户端回收自动评分的成绩;(3)数据备份模块,完成数据库数据的备份与恢复功能。
教师客户端包括:(1)考试信息管理模块,包括设置考试班级、考试日期及时长、试卷组成及分值的分配等信息;(2)学生信息管理模块,包括对学生基本信息的增加、修改、删除和查询操作;(3)试题维护模块,包括对试题的增加、修改、删除和查询操作;(4)考试状态管理,包括对学生未参加考试、正在考试和已经交卷三种状态的管理,通过此模块教师可以实时监控考生的考试状态。
学生客户端包括:(1)试题下载模块。当学生成功登录考试系统,该模块将相应的考试题下载到学生机;(2)自动评分模块。当学生单击“交卷”按钮或当考试时间倒计时为零时,系统调用自动评分模块对考生所做试题进行阅卷,并将最终评分结果发送到服务器端。
系统结构图如图1所示。
3 关键技术
3.1 Office自动阅卷
Microsoft office是微软公司推出的办公应用程序,目前被广泛使用的版本是Microsoft office 2003和Microsoft office 2007。作为微软公司推出的重量级开发语言,C#中提供了对大部分Office文件和应用的支持。下面以word 2003和excel 2003中对字体的设置为例介绍如何实现操作题的自动阅卷[2]功能。
实例1:设置word文档a.doc中第1段文字的字体为宋体。
分析:从题目中提取有效信息。文档:a.doc;段落:1;字体:宋体。
首先,从考生目录中打开a.doc,方法如下:
public static Microsoft.Office.Interop.Word.Application
start(string path)
{
wapp=new Microsoft.Office.Interop.Word.Application();
wapp.Visible=false;
object filename=path;
object isread=true;
object isvisible=true;
object miss=System.Reflection.Missing.Value;
doc=wapp.Documents.Open(ref filename,ref miss,ref isread,ref miss,ref miss,ref miss,ref miss,ref miss,ref miss,ref miss,ref miss,ref isvisible,ref miss,ref miss, ref miss,ref miss);
return wapp;
}
其次,将考生设置的第1段的字体与“宋体”进行比较,成功给分,否则不给分。方法如下:
public static bool paragraphsValidataNameFarEast(int
paragraphs,string script)
{
try
{
if (Doc.Paragraphs.Item(paragraphs).Range.Font.
NameFarEast==script)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
}
实例2:设置excel工作簿b.xls中Sheet1工作表G3单元格的字体为楷体。
分析:从题目中提取有效信息:文档:b.xls;工作表:Sheet1;单元格:G3;字体:楷体。
首先,从考生目录中打开b.xls文档,方法如下:
public static Microsoft.Office.Interop.Excel.Application
start(string path)
{
try
{
xlApp=new Microsoft.Office.Interop.Excel.Application();
xlApp.Visible=false;
object filename=path;
object isread=true;
object isvisible=true;
object Nothing=System.Reflection.Missing.Value;
xlWorkBook=xlApp.Workbooks.Open(path,Nothing, Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing, Nothing,Nothing);
return xlApp;
}
catch
{
eturn null;
}
}
其次,将考生设置的Sheet1工作表中G3单元格的字体与“楷体”进行比较,成功给分,否则不给分。方法如下:
public static bool judgeFontType(string fontType,int
rows,int column,string require)
{
try
{
bool result=false;
Microsoft.Office.Interop.Excel.Sheets sheets=xlApp.Worksheets;
xlWorkSheet=(Worksheet)xlApp.Worksheets[require];
Range rg=(Range)xlWorkSheet.Cells[rows,column];
if(rg.Font.Name.ToString()==fontType)
{
result=true;
}
else
{
result=false;
}
return result;
}
catch
{
return false;
}
}
3.2 试题模板库随机组卷
系统包含多套试题,每套试题包括Windows、Word和Excel 3个模块的题目。生成试卷时可以按照成套试题进行选择,这种方法优点是抽取速度快,缺点是不能控制试题选取,不够灵活。
为了灵活控制试题的选取也可以将试题打乱顺序重新组卷。本系统的试题库采用基于遗传算法[3]的随机组卷[4]方式。遗传算法是一种模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,通过模拟自然进化过程搜索最优解。其实现思路如下:从可能存在问题解集的一个种群开始,初始化种群后,按照优胜劣汰和适者生存的原理,逐代进化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将产生更加适应于环境的后生代种群,末代种群中的最优个体经过解码,作为问题近似最优解。
基于遗传算法的组卷流程图如图2所示。
基于遗传算法的试题组卷步骤如下:
(1)随机从试题库中抽出一组试题,进行试题编码;
(2)生成初始群体;
(3)判断是否满足终止条件,如果满足则生成试卷并结束程序,否则转(4);
(4)采用轮盘选择原理实现,并将个体复制到配对库,以备配对繁殖;
(5)按照一定的交换概率对配对库中的个体进行随机交叉配对形成新个体;
(6)按照一定的变异概率对个体进行基因突变,产生新的个体;
(7)完成以上选择、交叉和变异步骤后,将配对库中新产生的个体和原有的群体放在一起组合成新种群,转(3)。
在遗传算法的实现过程中,编码方法、适应度函数、遗传算子、初始群体、群体大小和停止标准等都是影响算法效率的非常关键的因素。
4 系统实现
4.1 类依赖关系图
按照软件复用原则和UML的设计思想,尽量使系统具有通用性和独立性,降低类之间的耦合度和依赖性。采用面向对象的技术实现本系统,将各种问题细化为多个类,把系统设计原型分解为一系列类的对象。学生客户端类之间的依赖关系如图3所示。
4.2 场景实现
考试系统设计了计算机基础中3个常用模块的基本操作,每个模块的试题包含了该模块的主要操作知识点。生成试卷的方式有两种。一是按班级生成试卷,即考试时同一个班生成同一套试卷;二是按照考生学号生成试卷,即学号为单号的考生生成一套试卷,学号为双号的考生生成另一套试卷。这保证相邻考生所做的试题不同,有效防止考生在考试过程中相互商量抄袭。
教师可以对试题进行修改。生成试卷的同时会在桌面上自动创建考试文件夹,考试过程中系统自动将操作结果保存在该文件夹。这样既方便考生操作,又可有效避免因保存位置的错误导致零分的出现。
另外考试过程中,考生客户端显示考试剩余时间,考生可以灵活把握自己的时间。当时间倒计时为零时,系统提示考生时间到,考生不能继续答题。此时,系统自动将考生的操作结果进行保存并进行后续的自动评分。
本文对现有无纸化考试系统中存在的缺陷进行了分析,结合我校计算机基础课程的教学现状,设计了一套相对有效的计算机应用基础考试系统。经过我校计算机基础期末考试的实际应用,表明系统具有应用简单、实用性强等特点,能够节省大量时间和工作量。
参考文献
[1] 郭新顺,刘雪芬.无纸化考试系统研制[J].计算机应用与软件,2005,22(8):131-133.
[2] 周艳丽.基于改进遗传算法的自动组卷问题的研究[J].计算机仿真,2010(9):319-322.
[3] 孟朝霞.基于自适应免疫遗传算法的智能组卷[J].计算机工程,2008,34(14):203-205.
[4] 朱剑冰,李战怀,赵娜.基于混合遗传算法的自动组卷问题的研究[J].计算机仿真,2009,26(5):328-331.