Moodle试题批量制作的Web应用开发设计

2018-02-12 12:24沈涵飞
软件导刊 2018年12期
关键词:试题库

摘要:试题库建设是基于Moodle平台建设网络课程的重要工作之一,快速将现有Word格式试卷转换为网络课程的可用试题库具有十分现实的意义。因此,使用阿里云服务器 ECS 与LAMP架构搭建开发环境,借助正则表达式及Eloquent ORM等技术,设计并实现了一个简便易用的可分类型批量制作 Moodle 试题的Web应用。用户使用浏览器,通过复制/粘贴、预览、保存、下载等简单步骤即能生成兼容Moodle XML格式的试题文件。该应用在转换效率上较现有方案提升了一个数量级。

关键词:试题库;Moodle;Web应用;批量制作;EloquentORM;正则表达式

Design and Development of Web Application for Batch Production of Moodle Questions

SHEN Han fei

(Suzhou Industrial Park Institute of Services Outsourcing, Suzhou 215123, China)

Abstract:The construction of test question bank is an important work in the construction of online courses based on Moodle platform. It is of great practical significance to quickly convert the existing Word format test paper into the test question bank for online courses. Therefore, by using Aliyun server ECS and LAMP architecture to build a development environment, a simple and easy Web application for batch production of Moodle test questions is designed and implemented with the help of regular expressions and Eloquent ORM. By using a browser, users can generate a Moodle XML compatible question file through simple steps such as copy/paste, preview, save, download, etc. The conversion efficiency is about an order of magnitude faster than the existing solutions.

Key Words:question bank;Web application;Moodle;batch production;EloquentORM;regular expression

0 引言

Moodle是全球排名第一的開源课程与学习管理系统,它是由澳大利亚教师Martin Dougiamas基于建构主义教育理论与PHP/MySQL技术开发的免费开源软件[1]。据Moodle官网统计, 截至2018年8月22日, 已有230个国家的99 642个站点取得了注册资格,上面共有15 271 903门课程,用户总数达到131 368 177人[2]。试题库建设是基于Moodle平台建设网络课程的重要环节。采用试题库系统进行组卷考试,能有效避免人工组卷过程中命题与评分的主观随意性,充分发挥课程考试的引导、评价、反馈和激励作用,调动教学双方积极性[3 4]。

Moodle支持的试题题型非常丰富,包括单选题、填空题、判断题、多选题、完形填空、拖放填空、计算题、简答题等,并支持以插件方式添加更多试题类型[5]。如何快速、高效地将已有大量Word格式试题转换为适合在Moodle环境下使用的试题,是网络课程建设面临的一个重要问题。Moodle试题制作大体上可以分为两类:①在线录入;②通过各类工具生成Moodle XML格式文件,然后导入系统。Moodle默认的在线试题输入方式是通过在Web页面直接编辑题目,然后提交至服务器。输入题目步骤为:首先选择题型,然后输入题干和答案,并进行详细设置,包括题目分数、各答案选项反馈以及整体反馈等,最后提交保存。但该方式处理效率很低,适合小批量输入题目或对已有题目进行修改与补充,而不适合大批量导入题目。Moodle官网提供了由Vyatcheslav Yatskovsky编写的“Quiz authoring template for Microsoft Word”插件[6], 该插件将 Word 作为试题输入界面,并由VBA 生成XML格式的试题文件。

由于Moodle平台在国内应用广泛,目前已有很多学者对Moodle试题的批量导入方法进行了深入研究。曹新社[7]提出在 Word 中使用表格制作 Moodle 试题,再转换为XML格式;代永平[8]提出使用HTML 应用程序(HTAs)进行编写,并利用 XML DOM 对象生成 XML 文件;李飞等[9]介绍了利用Excel强大的宏录制与VBA编程功能, 在Excel工作表里批量建立试题, 然后转换为XML文件。这些方式本质上是在新界面中逐题录入已有试卷中的题目,然后导出为XML格式。尽管该方式较在线录入方式效率有了很大提升,但仍存在自动化程度低、劳动强度高、环境使用受限等问题。

本文介绍一个简便易用的分类型批量制作 Moodle 试题的Web应用,运行于阿里云ECS平台。该应用基于LAMP架构,采用正则表达式与EloquentORM技术开发,用户通过复制/粘贴、预览、保存、下载等简单步骤即能生成兼容Moodle XML格式的试题文件,在转换效率上较现有方案提升了一个数量级。

1 应用设计思路、开发环境与关键技术

1.1 设计思路

结合长期Moodle试题制作实践,分析了现有大量真实试卷结构,并借鉴龚春亚等[10]提出的将整卷试题一次性批量导入数据库的思想, 开发一个简便易用的可分类型批量制作 Moodle 试题的Web应用。该应用设计目标是能将现有试卷的客观题部分快速转换为Moodle XML格式后再导入系统。用户在现有试卷基础上通过几个简单步骤(复制/粘贴、预览、保存和转换)即能完成格式转换。

应用采用B/S架构,操作简单,维护和升级也十分方便[11],而且具有分布式特点,可以随时随地处理业务[12]。在应用處理目标上,首先选择各类考试中应用最为广泛的单选题、多选题、判断题和填空题,其它类型题目如英语考试中的完形填空、匹配题等作为下一步开发目标,从而简化应用实现逻辑,实现快速开发。

1.2 开发环境

在综合考虑国内公有云服务的安全性、价格、运维能力和可伸缩性后,平台选择了阿里云的ECS(Elastic Compute Service)服务,该服务能自动调整其弹性计算资源,有助于提升运维效率并降低成本,使开发者只需专注于自身核心业务[13]。在软件配置上,采用免费开源软件LAMP架构,这是一组用来搭建动态网站服务器的开源软件组合[14],操作系统为Ununbu 16.04,Web服务器为Apache 2.4,脚本语言为PHP 7.0,数据库服务器为MySQL 5.7。该架构技术已非常成熟,且部署简单,运行与维护成本低。

1.3 关键技术

在开发过程中,采用的两个关键技术是正则表达式和ORM工具Eloquent。Moodle系统支持多种题目格式,其中既可导入又可导出的题目格式只有两种:Moodle XML和GIFT。相比而言,Moodle XML支持的题目信息更完整,适合用来与Moodle交换题目数据[15]。开发主要工作是将试题文本转化为MoodleXML格式文件,开发过程中需要大量使用正则表达式进行文本处理。正则表达式是由美国数学家Stephen Kleene[16]于1956年提出的, 主要用于描述正则集代数。它是一串由特定意义字符组成的字符串, 表示某种匹配规则。正则表达式能够应用于多种操作系统中,并支持几乎所有程序设计语言[17]。正则表达式最基本的3种功能是匹配、替换和提取。

为了简化数据库操作,在开发中采用来自Laravel框架[18]的Eloquent ORM。Laravel框架是目前应用最为广泛的PHP框架,其遵循Model-View-Controller(MVC)架构模式,提倡模型、视图与控制器的分离[19]。由于本文架构并不复杂,所以只采用其内置的Eloquent ORM 。ORM是关系型数据库和对象之间产生的自动映射,因此在具体数据库操作中不需要与繁琐的SQL语句打交道。软件开发人员只需关注业务逻辑中的对象架构即可,而不底层重复性的SQL语句。据统计,采用ORM可将软件开发时间与成本减少40%,并且由于其将业务层与实际数据存储分离,简化了代码优化与调试[20]。Eloquent ORM 提供了简洁的ActiveRecord 实现方式,每张数据表对应一个与该表进行交互的模型,从而简化了数据查询、插入、更新、删除等常用操作[21]。

2 用户界面及使用

用户界面由前缀、题目类型、题干、答案等组成。由于是批量制作试题,同一批试题标题由用户统一指定前缀。如图1所示的试题来自江苏省2015年普通高校专转本选拔考试《计算机基础》科目,标题前缀为ZZB-2015,表示2015年的专转本(ZZB)题目,前缀结合每道题序号即生成最终标题,如第21题的最终标题为ZZB-2015-021。标题在整个试题库中最好能够保证其唯一性,从而在试题需要配图的情况下,可由工具将图片自动插入题目中。

应用在使用时,每次转换的试题要求是同一类型,从而有助于简化程序的逻辑判断设计,增强程序健壮性。在保存题目之前,用户可使用“预览”查看题目解析效果,如图2所示。

由于试题的复杂性及试题来源本身可能存在错误,程序解析出的结果可能不符合用户预期,采用“预览”功能有助于帮助用户识别并改正错误。用户确认无误后,再点击“保存”按钮将题目保存到数据库中。在将多个批次题目全部保存完毕后,用户可以点击“下载”获取所有题目。

3 应用详细设计

3.1 处理流程

Web应用处理流程分为两个阶段:①试题保存到数据库;②从数据库中提取试题,经格式化转换后导出为XML文件。

第1阶段具体流程如图3所示。

切分输入即将输入的题干、答案等根据题号特征进行切分,然后将每题的题干和答案合并为单个题目;类型判断是指根据用户输入判断题型类别;效果预览是指将试题解析后的结果输出为网页,由用户确认是否与预期一致。如果符合要求,则保存到数据库,否则由用户调整文本输入。用户可以输入多个批次的题目,每次输入题目类型必须相同。

第2阶段具体流程如图4所示。

当用户完成所有题目的输入后,可以点击“导出”按钮请求下载试题文件;提取试题是指从数据库中提取该用户多次输入的所有题目;格式转换是指根据题目类型,利用程序转化为单题的XML格式;合并 XML是指将所有题目的XML内容合并后,再添加XML的头部和尾部,形成完整文件供用户下载。

3.2 数据库设计与初始化

应用的数据库设计相对简单,包含数据表question,各个字段如表1所示。

其中字段名 choices仅用于保存单选题和多选题的各个选择分支,保存格式选择XML,在读取时再解析XML为各个选项。对于填空题和判断题,该字段为空。

在使用EloquentORM模型前,需要初始化配置,代码如下:

require_once '/var/www/common-libs/Laravel/vendor/autoload.php';

use Illuminate\Container\Container;

use Illuminate\Database\Capsule\Manager as Capsule;

MYMcapsule = new Capsule;

MYMcapsule->addConnection(MYMdatabase); // 创建链接

MYMcapsule->setAsGlobal(); // 設置全局静态可访问

MYMcapsule->bootEloquent(); // 启动Eloquent

use Illuminate\Database\Eloquent\Model as Eloquent;

class Question extends Eloquent

{

protected MYMtable = ‘question';

public MYMtimestamps = false;

}

将这些配置单独保存到数据库配置文件 db.php 中,使用时引用该文件即能通过ORM进行数据库操作。

3.3 主要模块设计

在两个阶段的流程处理中,切分输入、效果预览、格式转换、XML合并与XML导出是关键模块,下面对这些模块进行说明。

切分输入包含两部分:切分试题与切分答案。通常试卷题目都是以题目序号和标点符号(如点或顿号)为开头,可使用正则表达式进行识别并采用 preg_split函数进行切分;答案切分则根据单选题、多选题、填空题、判断题等类型分别进行处理。以单选题为例,首先将答案输入一律转换为大写字母,然后使用正则表达式提取出其中字母。如图5所示,无论对于哪一种输入都能正确切分。切分完成后,再将相应题目和答案合并到一个PHP关联数组。

效果预览需要将题目的题干、答案和解析填充到相应题目类型的HTML模板后,再合并所有题目的HTML输出,显示在浏览器中供用户查看。

格式转换是指将题目的题干、答案和解析填充到单题题目类型的XML模板中。由于Moodle官网对题目类型格式的解释很少,笔者采用的方式是从题库中将各种类型题目导出为XML格式后,在此基础上创建各类型题目的单题模板。图6为一道判断题的XML格式输出。

合并XML是将同一批所有单题的XML输出合并后,在头部前添加<?xml version="1.0" encoding="UTF-8"?><quiz>,在尾部添加 </quiz>,从而形成一个完整符合Moodle XML规范的文件提供给用户下载。

导出XML的要点是设置Web页面的header为attachment,浏览器获取内容后会提示用户将其保存到磁盘,而不是在浏览器中显示为HTML,关键代码如下:

MYMfilename = "questions.xml";

header("Content-type: text/xml;charset=utf-8");

header('Content-Disposition: attachment;filename='.MYMfilename);

4 使用效果

为评估应用转换效率,以江苏省2015年普通高校专转本选拔考试《计算机基础》科目试卷为例进行转换。试卷全部为客观题,包括20道判断题、50道单项选择题、10道多项选择题和20道填空题,共计100题。如果采用Moodle在线录入方式制作试题,按照平均每道题2min计算,共需200min。采用本文应用后,分别按照判断题、单选题、多选题和填空题分4次导入,并1次下载,除填空题答案需要略微调整外,其它操作都是直接从Word文件复制后粘贴到Web页面。试题转换可以在10min内完成,时间主要花费在预览转换过程中是否有异常状况,从而使效率提升了约20倍。由于应用支持批量导入,每批题目数量越多,效率提升越显著。

5 结语

Moodle平台可支持多种类型试题,将现有试卷快速导入系统是课程信息化建设的关键环节。本文基于LAMP平台,采用正则表达式与EloquentORM等技术开发了一个可分类型批量制作 Moodle 试题的Web应用。该应用运行于阿里云ECS服务器,且界面友好,操作简单,主要包含切分输入、效果预览、格式转换、XML合并、XML导出等功能。用户使用浏览器,通过复制/粘贴、预览、保存、下载等简单步骤即能生成兼容Moodle XML格式的试题文件,在转换效率上较现有方案提升了一个数量级。

参考文献:

[1] History MoodleDocs. Moodle history [EB/OL]. https://docs.moodle.org/35/en/History.

[2] Moodle Statistics.Moodle统计[EB/OL].https://moodle.org/stats/.

[3] 曾任仁,林宇洪,吕义勇.通用试题库管理系统的设计与实现[J].福建农林大学学报:自然科学版,2008(3):324 328.

[4] 任爱华,武新利.题库建设的目标及数学模型[J].山东师范大学学报:自然科学版,1998(4):82 86.

[5] Question MoodleDocs. Question types[EB/OL].http://docs.moodle.org/35/en/Questions.

[6] YATSKOVSKY V. Quiz authoring template for Microsoft Word[EB/OL]. https://moodle.org/mod/data/view.php?d=13&rid=578.

[7] 曹新社.如何批量制作Moodle试题[J].电脑知识与技术,2011,7(35):9285 9286.

[8] 代永平.用HTAs编写Moodle试题导入文件生成工具[J].中国教育信息化,2010(21):85 88.

[9] 李飞,廖捷.基于Moodle平台网络课程试题库建设的研究[J].广西广播电视大学学报,2017,28(1):28 31.

[10] 龚春亚,张国华.基于C#的题库批量录入算法研究[J].电脑知识与技术,2010,6(27):7545 7547.

[11] 王心路,赵文耘,余春. C/S向B/S系统迁移的技术[J]. 计算机工程, 2004(3):71 73.

[12] 程英蕾,殷肖川,吴丰.从C/S模式转向B/S模式[J].空軍工程大学学报:自然科学版,2000(2):48 51.

[13] 沈涵飞.基于云计算的高可用性英语学习平台的构建[J].信息与电脑:理论版,2017(24):213 214,217.

[14] 沈莉.基于Moodle+LAMP技术构建网络课程管理系统的实践研究[J].软件导刊,2011,10(12):211 213.

[15] 王耀,徐鹂.关于Moodle XML结构的题目及其离线编辑器设计[J].中国医学教育技术,2013,27(5):523 526.

[16] 沙金.精通正则表达式[M].北京:人民邮电出版社, 2008.

[17] 瓦特.正则表达式入门经典[M].李松峰,译.北京:清华大学出版社, 2008.

[18] OTWELLT.Laravel[EB/OL].https://laravel.com.

[19] 李莹,王甲民.一种基于Petri Net的新型MVC模式及实现[J].计算机工程与应用,2007(17):202 205.

[20] 黄建.基于ThinkPHP框架的ActiveRecord技术应用与研究[J].现代计算机:专业版,2010(4):195 197.

[21] 许日丹, 杨俊.基于Rails框架的ActiveRecord[J].算法与语言, 2007(7):127 129.

猜你喜欢
试题库
病理学与病理生理学试题库建设探讨
石油炼制技术课程试题库建设的探讨
职业院校旅游专业试题库建设的实践与反思
——以导游资格笔试科目为例
C语言考试题库在教学中的重要性研究
高校试题库建设新探讨
高校试题库建设方案探索
基于网络的试题库系统建设研究
基于Quiz Creator的“机械图样的绘制与识读”随机组卷试题库的制作与研究
基于校园网的电磁学试题库建设
教考分离模式下课程试题库的建设研究——以高职院校数学课程为例