您当前的位置:首页 > 计算机论文>计算机应用论文

Excel VBA考试试题设计与评分方法的改善机制

2015-07-18 09:39 来源:学术参考网 作者:未知

  0 引 言
  VBA (Visual Basic for Applications)是基于Visual Basic发展而来的一种宏语言。近年来,在国内一些高校中,开设了VBA的计算机课程。到目前为止,有关VBA课程的考试软件开发和评分方法研究方面的文献报道尚不多见。
  在VBA课程考试软件开发中,如何从Excel文件中获取考生操作的窗体对象和宏代码,是操作题评分中的一个关键性问题。在已有的考试软件基础上[8],经过深入地研究,开发了一个Excel VBA的考试系统。采用Microsoft Visual Studio 2010作为开发平台,应用VBE对象来获取考生操作的窗体对象和宏代码,从而在考试系统中实现了VBA客观题和操作题的计算机评分。
  1 VBE对象  
  在Excel中,VBE(Visual Basic Editor)是VBA的编辑窗口,所有的VBA操作都可在VBE中完成。VBE及其子对象的结构,如图1所示[4]。
  在图1中,椭圆框表示对象,矩形框表示集合。
  Excel VBA考试操作题的评分,主要用到以下VBE及子对象的方法和属性:
  (1)VBE对象:VBE为根对象,具体包含了所有其它可在Visual Basic for Applications中表示的对象和集合。可用VBProjects集合访问VBA工程的集合。
  (2)VBProject对象:VBProject对象表示一个工程。可用VBProject对象设置工程的属性、访问VBComponents集合以及References集合。
  (3)VBComponent对象:VBComponent对象表示一个包含在工程中的部件,例如类模块或标准模块。使用VBComponent对象,可以访问与部件关联的代码或改变部件的属性设置。使用VBComponent对象的Type属性,可以确定出所引用的部件类型;而使用VBComponent对象的Collection属性,则可以确定出所引用的部件在哪个集合中。VBComponent对象的Type属性设置,如表1所示。
  (4)CodeModule对象:CodeModule是代码模块对象,在诸如窗体、类或文档等部件之后表示程序代码。应用CodeModule对象相关联的属性和方法,能够操作并返回有关逐行代码文本的信息。CodeModule对象的主要属性有:
  ① CountOfLines属性,返回代码模块中的总行数;
  ② Lines属性,返回代码模块中指定的代码块。其格式为:.Lines(startline, count);
  ③ CountOfDeclarationLines属性,返回代码模块中公共声明部分的行数;
  ④ ProcBodyLine属性,返回模块中一个过程的起始行数。其格式为:.ProcBodyLine(procname, vbext_pk_Proc);
  ⑤ ProcCountLines属性,返回模块中一个过程的行数。其格式为:. ProcCountLines(procname, vbext_pk_Proc)。
  (5)Property对象:Property对象,用来描述一个对象的属性。可用Property对象的Value属性来返回或设置一个部件的属性值。
  利用VBE及其子对象的属性和方法,可以测试Excel VBA工程中的窗体属性,窗体中的控件对象的过程代码以及模块中的宏代码。因此,可以利用VBE及子对象的方法和属性实现对Excel VBA操作题的评分。
  2 VBA 考试试题设计  
  在Excel VBA考试系统中,考试试题包括理论题和操作题。理论题为客观题,评分比较容易实现。操作题的题型有:基本操作题、程序改错题、程序填空题和编程题。与大多数考试软件一样,编程题的评分采用黑盒测试法,根据程序的运行结果,给出相应的分数。基本操作题、程序改错题和程序填空题,需要利用VBE及其子对象的属性和方法获取考生操作的窗体对象和宏代码进行评分。
  为了实现计算机的自动评分,需要对试题进行标准化。下面,给出基本操作题、程序改错题和程序填空题这三种题型的试题和答案的设计示例。
  2.1基本操作题
  设计基本操作题的主要目的是为了测试考生对窗体操作和简单VBA语句的掌握程度。利用VBE及其子对象的属性和方法,可以检测Excel VBA工程中窗体和控件对象的属性和事件代码,并通过对属性和事件代码的检测,实现对考生的控件掌握程度的测试。
  试题1:
  打开考试文件夹下的工作簿“Test1.xlsm”,并在该工作簿的窗体--UserForm1中完成以下操作:
  (1)将窗体--UserForm1的标题改为“信息查询”;
  (2)将窗体--UserForm1的"Height"属性设置成200,"Width"属性设置成270;
  (3)在窗体--UserForm1中添加一个命令按钮“CommandButton1”,并将CommandButton1的标题设置为"测试",字体设置为“楷体”;
  (4)在CommandButton1的Click过程中,输入以下代码:
  MsgBox "这是我建立的命令按钮", vbInformation, "VBA考试"
  注意:完成以上操作后,请保存文件;
  不能删除窗体--UserForm1或更改窗体--UserForm1的对象名。
  在以上答案中,CheckType=1,表示检测窗体属性;CheckType=2,表示检测窗体中控件的属性;CheckType=3,表示检测控件的事件代码。SimilarAnswers表示相同答案的个数。ScorePoint表示给分点的个数。Score表示该测试点的分值。
  2.2程序改错题
  设计程序改错题的主要目的是为了测试考生对VBA语句和语法的掌握程度。在程序改错题中,一般可设置2~4处错误。为了降低考试的难度,在出错的语句处给出相应的标示。通常情况下,改错题的答案不是唯一的,可能有多个答案,在答案中应尽可能给出所有可能的答案。
  试题2:
  打开考试文件夹下的工作簿“Test2.xlsm”,在该工作簿的模块--模块1中有一段程序代码。功能为:检测档案归还是否逾期。若借阅时间+期限>=归还时间,则为按时归还,否则为逾期。其中有三个错误行。
  2.3程序填空题
  与程序改错题一样,设计程序填空题的主要目的是为了测 试考生对VBA语句和语法的掌握程度。在程序填空题中,一般可设置2~4个空,为了降低考试的难度,在有空的语句处给出相应的标示。通常情况下,程序填空题的答案不是唯一的,可能有多个答案,在答案中应尽可能给出所有可能的答案。
  试题3:
  打开考试文件夹下的工作簿“Test3.xlsm”,在该工作簿中有一个窗体-- UserForm1,其功能是查询并显示Sheet1中相应产品的名称及库存量。
  请完善OK_Click、Cancel_Click过程中的代码。在窗体UserForm1中,实现利用下拉列表框ComboBox1选择相应的产品编号,单击“查询”按钮后,在标签Lname和LNum上显示Sheet1中相应产品的名称及库存量;单击“取消”按钮后,窗体消失[5]。具体如图3所示。
  为了评分程序的正常运行,需要通过修改注册表,开启“信任对VBA工程对象模型的访问”。
  在程序改错题和程序填空题中,考生的答案具有多种多样,存在着不一致(inconsistent)或不确定(uncertain)的问题[9]。对试题进行合理地设计,是减少评分难度的一个主要方面,答案应该选择相对确定和唯一[10]。
  在考生答题的结果中,可能会出现一些多余的字符,例如,空格,注释等,另外存在英文字符的大小写与试题答案不一致等问题。在评分之前,需要对考生的答案进行规格化处理[10]。
 4 结束语
  试题设计与评分方法是考试系统中的关键问题。要根据考试的目的和要求,设计评分算法,同时根据计算机考试和评分的特点设计试题,这样才能使计算机考试优于传统的考试。通过考试系统的开发和应用,表明使用VBE对象来获取考生操作的窗体对象和宏代码,可以很好地解决Excel VBA考试系统中操作题的计算机评分问题。
  参考文献:
  . Wiley publishing, Inc., Indianapolis, Indiana, 2010
  
  [3] Microsoft公司. Microsoft Visual Basic for Applications and Shared Libraries Reference与共享库参考手册(上下)[M]. 北京:希望电子出版社, 1999.
  [4] David Shank等著. Microsoft Office 2000 Visual Basic Programmer's Guide 程序员指南[M]. 北京:希望电子出版社, 1999.
  [5] 《Excel VBA从入门到精通》编委会. Excel VBA从入门到精通[M]. 北京: 中国铁道出版社, 2013.
  [6] 马维峰. Excel VBA应用开发从基础到实践[M]. 北京:电子工业出版社, 2006.
  [7] 王鸿儒. Excel VBA程序设计[M]. 北京:中国铁道出版社, 2005.
  [8] 贾志先. 计算机文化基础考试系统的开发与应用[J]. 计算机应用, 2001,21(7):60-61.
  [9] R.Reiter. A logic for default reasoning [J]. Artificial Intelligence, 1980, 13(1&2):81-132.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页