日期:2023-01-24 阅读量:0次 所属栏目:软件技术
针对模拟软件开发中的客观题和操作题模块的设计问题进行了探讨,特别剖析其中涉及的关键编程技术。
1 简介
近年来,山东省计算机文化基础考试已成为山东高职院校计算机必考课程。为此便于考试和教学,我们自主开发了《计算机基础模拟软件》。
该模拟软件包括操作题与客观题两部分。我们选择使用VB6开发考试系统的主要模块及界面。操作题编程与Office后台宏语言(Visual Basic)联系密切,录制的宏经简单修改便可形成系统子模块。在数据存储方面,我们选用VB的文件系统对数据文件编程,从而在方便数据加密的同时又可减小系统的大小。
2 Windows操作题与系统打包技术
Windows操作题部分在整个系统中属于最简单的部分,这得益于VB6封装良好的FileSystemObject对象。通过访问此对象的方法与属性,我们可以轻松地实现试题内容的生成与相应的评分。
系统打包方面,我们选用Inno Setup。Inno Setup是一个免费开源的安装制作软件,小巧、简便,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般软件安装任务。
3 基于Office对象模型开发Office操作题模块
微软Office产品中引入了Office对象模型并内置了VBA编程语言,还内置了友好的宏记录器,因此利用0ffice提供的VBA功能,实现Office操作题的自动评分。Word、Excel、PowerPoint三个模块的编程思路极其一致,下面仅Word部分评分模拟的实现原理。
首先,检测考生文件夹下word文档是否存在。如果存在则继续执行;如果不存在则判为分(存储到全局变量iWord中),并退出模块。相关代码如下:
Public Sub Word01(file1 As String)
If bFileExist(file1) = False Then
iWord = 0 ‘存储word部分试题得分
Exit Sub
End If
Dim oWord As New ation
Dim s() As String
Dim iLower As Integer
Dim i As Integer
(file1)
e = False
With aphs(2).aphFormat '定义段落格式
If .LineSpacingRule = wdLineSpace1pt5 Then '定义行距为1.5倍
iWord = iWord + 2
Else
iLower = iLower + 1
ReDim Preserve s(iLower)
s(iLower) = "正文第一段行距设置错误(-2)" & vbCrLf
End If
End With
Call '关闭WORD文档
Set oWord = Nothing
上述过程执行的最后,我们把考生得分及可能的错误信息全部保存到全局字符串变量strWordResult,由评分模块访问这个变量来显示Word部分做题信息。
4 客观题模块的设计
客观题内容的屏幕呈现实现于系统主窗体frmMain后台代码中,通过操作各客观题文件实现,是整个系统开发的关键之一。
(1)动态显示客观题内容。如何显示跨越屏幕边界的大对象,这是系统要动态显示客观题内容必须解决的问题。我们所采用的方案主要了来自MSDN的技巧:引入两个Picturebox控件(父子关系),并使用HscrollBar或VscrollBar(本例中使用)控制作为子控件的Picturebox在父Picturebox中的显示位置,因为作为子控件的Picturebox的某一部分一旦超出了父Picturebox的边界就成为不可见的。在我们的项目中设置了三对Picturebox控件,分别用来实现动态显示单选题、多选题及判断题内容。
(2)加载客观题内容。加载客观题内容是一个极具挑战性和技巧性的问题。问题的关键在于这里的控件是动态生成的。一般地,在VB6中动态生成控件主要有两种方案:一种是使用VB6以前的控件数组,另一种是使用VB6始引入的WithEvents变量。但在本系统环境下需要生成大量的控件,而VB6中是不允许创建WithEvents变量数组的,因此,我们决定使用控件数组方案来生成大量的控件以显示客观题内容,而且这样更便于统一控制控件的事件。
5 小结
总体来看,开发计算机基础模拟软件的主要技术关键有:Office后台宏录制模块及Office DOM对象模型编程;利用Picturebox控件与VscrollBar控件显示客观题与内容的动态定位。
目前,该系统已经成功应用于学院的计算机基础教学及模拟考试。但是,该系统也存在一些不足,例如,系统仅实现了单机版,需手动记录学生成绩,尚待解决。
作者:崔丽娟 来源:电子技术与软件工程 2015年9期
本文链接:http://www.qk112.com/lwfw/jsjlw/ruanjianjishu/229289.html下一篇:C++语言下的跨平台软件开发