张艳肖 张静妙 河北经贸大学计算机中心
大学计算机基础是非计算机专业学生大一的必修课程[1],课程理论部分的考核一般采用选择题、判断题形式,而实践部分在课程中是至关重要的,主要包括操作系统、办公软件和网络的应用。目前很多高校正在使用的考试系统存在着试题库不能更新,考核模块所有专业的学生都相同,甚至还存在着手工判卷[2]的现象。结合学校的课程改革,我们开发了基于VBA (Visual Basic for Applications)评分策略的大学计算机基础课程的练习和考试系统。在实践课上学生可以在练习模式下自由选择练习的模块,系统自动抽题[3],并对学生的操作进行评分,并给予详细的步骤评分结果,可以有效提高学生的实践操作能力。考试模式下系统能够根据考试要求进行组卷,考核模块可根据专业特色进行选择。教师能根据教学要求,自主更新Office操作题的试题库。
VBA是Visual Basic的一种宏语言,是微软开发的在其应用程序中执行通用的自动化(OLE)任务的编程语言[4]。Office中的应用程序(WORD、EXCEL、PPT)在VBA中都被看作是一个对象。如Word 的Application对象[5]中包含了Word的文字、段落、页眉页脚、页面设置、图片、文本框、艺术字等对象,每个对象都有它的属性。系统评分时将答案文件中给定对象的正确属性值和学生做题文件的该对象属性值做比较,计算该对象的得分。
我们采用EXCEL工作簿存储每套题的答案文件,好处是每一行存储了一个得分点的所有知识点信息。一个得分点可以由多个知识点组成,也可以有多种正确答案,用“AND”或“OR”标识。
第一行存储了该套题满分的分值,15分。从第二行开始存储该套题所考核的知识点,如:查找文字,知识点关键词标识为“FINDCOUNT”,参数有两个,第一个参数为查找的文字内容,如“玫瑰”,第二个参数为文字的个数,如17。“AND”表示该行所有的知识点都正确才能得分,“OR”表示该行只要一个知识点正确即可得分。每一行的最后两个单元格分别存储了该题的分值和题目的具体描述信息。文件最后用“END”表示结束。
我们对Windows、Word、Excel和PPT常用的知识点进行了归纳梳理。在Word中,常用的对象有文档、文字、段落、页面、页眉页脚、分栏、图片、文本框、艺术字、表格等。Excel常用的对象有工作簿、工作表、单元格、文字、公式和函数、图表等。PPT常用的对象有演示文稿、幻灯片、文字、图片、超级链接、幻灯片切换、幻灯片动画、模板等。这里仅对Word图片、文本框和艺术字的评分用到的属性做一个介绍。
环绕方式为嵌入型的属性:.InlineShapes,非嵌入的:.shapes。.
判断对象是否存在:type属性值6为表示是一个组合对象、13为图片、17为艺术字或文本框。
对象大小和环绕方式:.Width、.Height、.WrapFormat.Type.和 WrapFormat.Side。
对 象 位 置:.Left、.RelativeHorizontalPosition、.Top和.RelativeVerticalPosition。
文 字 环 绕 距 正 文 距 离:.WrapFormat.DistanceTop、.DistanceBottom、.DistanceLeft和.DistanceRight。
文本框或艺术字文字内容:.TextFrame.TextRange.text。
文本框线条和填充颜色:.Shapes(1).line.ForeColor.和.Fill.ForeColor
文 本 框 内 部 边 距:.MarginTop、.MarginBottom、.MarginLeft和.MarginRight
艺术字样式:.TextFrame.TextEffect.PresetTextEffect
系统采用C/S结构,学生端和服务器端功能模块设计如图1所示。
开发环境:vb6.0、Office2010、SQL Server2008。
图 1 系统学生端和服务器端功能模块图
服务器端使用SQL数据库,主要包含的数据库表如下:
学生信息表:存储了学生的考号、姓名、性别、班级、学院信息;主键是考号。
单选题信息表:存储了单选题的类型、类型名称、该类题目总个数、系统抽该类题目个数和每道题分值。主键是单选题类型。
单选题试题表:存储了单选题号,试题类型,正确答案、题目内容以及四个选项。主键是单选题号和试题类型的组合,外码是试题类型。
考试模块设置表:存储了各试题模块名称,考试时在服务器端进行考试模块的选择。
学生所抽单选题表:存储了学生考号、学生考试时抽到的单选题编号、试题号、试题类型、正确答案和学生所做的答案。主键是学生学号和单选题编号的组合。
学生考试成绩表:存储考试模式下每场次学生考号、各模块的满分值和学生得分(word模块分三部分计分:文字处理、图片和表格;excel模块分两部分计分:基本操作和图表)、机器名称、机器IP地址、考试状态、各模块学生所抽试卷号。每场考完,导出考试成绩后可将此表数据备份到总考试成绩表,然后将此表清空。主键是学生考号。
练习模式下,学生可进行单模块练习、综合练习和随机抽题,如图2所示。考试模式下,根据学生考号,判断学生考试状态,首次登陆、二次登陆、还是已完成考试,根据考试状态分别予以不同处理。登陆成功后,首先将在考试盘创建考生文件夹,将考生用到的试题文件复制到考生文件夹下,然后打开试题窗口和考生文件夹窗口。
打开考生文件夹窗口方法:
图 2 学生端练习方式登录
使用windows的API函数ShellExecute,在程序中调用该函数之前,在标准模块先进行原型声明,再调用该函数,调用的命令如下:
其中,driver代表创建考生文件夹的驱动器,user代表考生文件夹名字。
使用API函数MoveWindow可以移动窗口的位置,用来调整试题窗口和文件夹窗口布局合理。
选择题的组卷过程:
首先从单选题信息表中,取出每种类别的单选所抽题目个数及每道题分值,然后产生指定范围内的随机整数,表示所抽单选题的该类别序号,注意所抽题目序号不能重复,如重复,则重新产生随机数。根据产生的序号和类别从单选题试题表中取出该题正确答案,将该学生抽到的单选题类别、题目序号和该题正确答案存储到学生所抽单选题表中。
操作题的组卷过程:
练习模式下,单模块练习和综合练习根据登陆模块学生的选择进行抽题,随机抽题每个考核模块均采用Rnd函数产生0-试题套数之间的一个随机整数。考试模式下,服务器端组卷管理模块中可以选择选择本场考试的模块,然后根据选择模块利用Rnd函数产生随机整数进行抽题。
根据学生单击哪个模块,将该模块所抽试题内容进行显示。试题内容以word文档形式存放,采用口令加密方式进行安全保护。试题显示采用RichTextBox控件,它能显示带格式的word文档。由于采用了口令加密,所以装入RichTextBox时需要转换为.rtf格式,否则将显示乱码。解决方法:将口令加密文件转换为不带口令的.rtf临时文件,临时文件存储在windows安装目录(用windows的API函数GetWindowsDirectory获取),评分时将临时文件删除。单选题显示时,根据组卷模块学生所抽单选题的类别和序号,查找单选题试题表,将题目内容进行显示,将学生所做单选题答案也存储到学生所抽单选题表中。
为了实现通用性,我们编写了Windows、Word、Excel、PPT各模块评分的函数过程,调用函数时需要传递的参数为: 学生做题文件和答案文件。函数调用后返回学生分数。在Word和Excel评分函数中,根据知识点的类别不同,分别统计学生得分。
下面以图1中设置word插入的图片位置,水平距页面右侧13厘米,垂直距段落下侧6厘米为例,介绍实现方法。
定义变量key,存储从答案文件中读到的知识点的关键词,如“OBJLEFTTOP”,它有4个参数存储相关属性值,canshu1存储水平方向度量值13厘米,canshu2存储水平方向度量单位:“距页面”值为1,canshu3存储垂直方向度量值6厘米,canshu4存储垂直方向度量单位:“距段落”值为2,fenzhi存储该题分值2分。如果textcanshu2或textcanshu4值为-1,表示不判断此方向。
我们编写了tuxingweizhi函数,实现判断图形的位置。读取学生的做题文件,将学生文档的图形对象的各个属性值和答案文件的属性值做比较,由于word图形的位置值是以磅值为单位,所以还需要使用CentimetersToPoints函数将答案文件的度量单位厘米值转换成磅值。部分代码如下:
系统实现了单选题、Windows、Word、Excel、PPT 操作试题的添加、删除和修改。图3是添加Excel操作题的界面,添加试题后会自动生成该套题的答案文件和试题文件,可以对其进行修改和删除。我们将Office操作题经常考核的知识点分类整理成菜单形式。下面以题目对“期末成绩”工作表的“a3:k3”单元格填充浅绿色底纹,12.5%灰度为例,介绍系统提供的两种生成答案文件的方法。
第一种方法:我们将常用的颜色、字体、字号、图案格式、预设颜色等属性值做成了菜单。教师按照提示直接输入或使用菜单中的“颜色设置”、“图案格式设置”,写入知识点“单元格底纹”的5个参数值。
第二种方法:只需输入前2个参数值,工作表名和单元格名,然后单击“写部分知识点答案”命令按钮,将打开出题老师做好正确答案的工作簿文件,读取指定工作表和单元格的底纹的另外3个参数值,写入答案文件中。如果教师已经做好了正确的答案文件,推荐使用第二种方法,因为有些知识点的参数值是不太容易直接写的,比如公式和函数、图表绘图区格式等,采用第二种方法,生成答案文件比较容易。
成绩管理模块:可以对学生成绩进行导出和备份等功能。学生信息管理模块:提供下载模板、上传学生名单、添加、修改、删除。单选题管理提供了对单选题的上传、添加、修改和删除等功能。组卷管理模块:可以对单选题每种类型抽取的题目个数和分值进行设置;可以对操作题的考试模块进行选择。数据库维护模块:用户信息维护、数据库初始化、数据库的备份和还原。用户管理模块设计:系统有4类用户,一般用户、一般管理员、题库管理员和超级管理员,分别设置不同的权限。
本系统这个学期在我校大学计算机基础课程的实践课上投入使用。练习模式下教师可以指定模块或同学们自行选取模块进行练习,可以将成绩上传到服务器,教师可以及时掌握学生各模块各部分的学习情况,从而有针对性的进行辅导和讲解。教师也可以根据教学安排,添加新的试题,进入考试模式来进行期中或阶段测验,根据学生掌握情况及时调整教学策略。目前,我们学校使用本系统已经完成了期末考试,部署了16个机房,参加考试人数7000多名学生,效果良好。
[1]檀小璐.大学计算机基础考试系统的分析与设计[D].秦皇岛:燕山大学,2013.李昕.计算机基础考试系统的设计与实现[D].青岛:中国海洋大学,2014.
[2]王剑宇.计算机自适应考试系统的设计与实现[D].天津:天津大学软件学院,2014.
[3]刘颖,荣义,刘伟.基于VBA通用的上机考试制卷与评分系统的实现[J].电脑编程技巧与维护,2010,8:32-34.
[4]金炳尧.基于VB程序设计的自动评阅策略研究[D].金华:浙江师范大学,2013.
[5]高家宝,周娅.Word操作自动评分系统的设计与实现 [J].河池学院学报,2017,37(2):94-100.