admin 管理员组文章数量: 1086019
2024年4月14日发(作者:简述什么是框架技术)
第36卷 第5期
2020年5月
福 建 电 脑
Journal of Fujian Computer
Vol. 36 No.5
May 2020
Moodle平台SQL在线评测系统的实现
曾棕根
(宁波职业技术学院电子信息工程学院 浙江 宁波 315800)
摘 要 SQL编程训练是《数据库原理及应用》相关课程的教学核心部分,如何现场检验学生的SQL编程能力和自动评价学
生的SQL编程作业,是该课程教学的最大痛点。本文应用Git中心和Docker中心提供的免费开源组件,在Moodle网络课
程平台中,使用CodeRunner插件和Jobe后端评测系统,在极短的时间内,快速构建自己的SQL在线评测系统。一个学期
以来,该系统快速稳定可靠,取得了非常好的应用效果。
关键词 Moodle;SQL;自动评测;源代码;Docker;Jobe;CodeRunner
中图法分类号 TP393 DOI:10.16707/.2020.05.030
Realization of SQL Online Evaluation System Based on Moodle
ZENG Zonggen
(School of Electronic Information Engineering, Ningbo Polytechnic, Ningbo, China, 315800)
1 引言
《数据库原理及应用》是计算机及其相关专业
的基础核心课程之一,批改学生提交的SQL编程作
业和考试题历来是一项非常耗时耗力的艰巨工作。
如何能像C、C++、Pascal、Java、Python、PHP、
NoteJS等其它编程语言一样,做到机器在线自动批
改,是广大数据库任课老师一直以来的期盼。
本文采用LNMP + Moodle + CodeRunner +
Docker + Jobe免费开源架构,轻松实现SQL编程
的在线评测的快速构建,并经过实际教学应用,改
善了数据库传统教学模式。
表1 info表
uid
1
2
3
idnumber
201901
201902
201903
name
Rose
Jack
Tom
score
87
58
46.5
2
SQL在线评测原理
SQL
在线评测的采用黑盒测试原理
[1]
,在同一
个数据库的同样的表和相同的记录中,执行学生提
交的
SQL
语句。如果输出结果与题目设定的输出数
据完全相同,那么这些
SQL
语句判定为正确答案。
比如,给定一个表
info
,要求输出成绩小于
60
的所有记录。题目中给出的是表的结构和几个字段
样例,如表
1
所示。
———————————————
那么,学生给出的答案至少可以出现以下几
种:
select * from info where score<60
;
select * from info where score>=0 and score<60
;
select uid,idnumber,name,score from info where
score<60
。
上述答案,提交给数据库系统去运行,通过字
符串比较输出结果与评测系统中设定的结果。如果
与文本内容完全相同,系统就认为学生编写的
SQL
语句是正确的。
3 SQL在线评测系统实现
实现一套
SQL
在线评测系统,难点在于:老师
在出题时,必须先在服务器上创建特定的数据库、
表和记录;另外,开发一套独立的评测系统,工作
量太大。
曾棕根,男,1975年生,硕士,副教授,主要研究领域为软件工程。E-mail:****************。
88 曾棕根:Moodle平台SQL在线评测系统的实现 第5期
3.1 SQLite数据库
SQLite
是一个开源、跨平台、支持
SQL
语法
和遵守
ACID
的关系型数据库管理系统,可以随意
拷贝修改分发,是世界上使用最多的数据库引擎
[2]
。
它最重要的一个特点就是,每个数据库只有一个独
立的、跨平台的文件。该文件包含了该数据库中所
有的表、记录及其它相关特性文件,具有消耗资源
小、存取效率高等优点
[3]
。
由于
SQLite
支持大部分标准
SQL
语句
[4]
,因
此该评测系统除了能进行
SQLite
数据库教学评测
外,也能用于
MySQL
、
MariaDB
、
SQL Server
、
Oracle
等数据库的
SQL
编程教学。在老师的电脑上,可以
使用免费的
SQLiteStudio
等第三方窗口界面工具来
创建和修改
SQLite
数据库。
3.2 CodeRunner + Jobe软件包
新西兰坎特伯雷大学计算机科学系的高级研
究员
Richard Lobb
博士花费数年时间,开发了一个
名为
Jobe
的计算机程序自动评测后端系统和名为
CodeRunner
的安装到
Moodle
网络课程平台的测验
题插件,实现了
C
、
C++
、
Java
、
Pascal
、
PHP
、
SQL
、
NoteJS
等编程语言的实时评测,并把成绩自动统计
在
Moodle
网络课程平台的学生作业得分中。
CodeRunner
插件和
Jobe
映像已经发布在
Git
中心和
Docker
中心的服务器上,供全球下载免费使用。评
测系统的软件结构如图
1
所示。
Chrome浏览器--客户机
Moodle + CodeRunner题型
Nginx
Docker
PHP-FPM:
Moodle + CodeRunner插件
Jobe
MariaDB
CentOS 7操作系统--服务器
图1 SQL评测系统软件结构
从图
1
可以看出,服务器采用了
LNMP
架构,
LNMP
架构运行了
Moodle
网络课程平台和
CodeRunner
编程前端界面插件。
LNMP
架构是当前
最流行的
Web
服务器架构,具有免费开源、开销小
和并发高的特点,技术资料丰富,易于安装部署,
可以下载各组件的源代码到服务器上,进行本地化
的编译、安装和配置
[5]
。
服务器中运行
Jobe
自动判题作业引擎的是
Docker
平台。
Docker
是一个开源的应用容器引擎,
开发者可以打包他们的应用以及依赖包为一个映
像文件,上传到
Docker
中心
.
com/
[6]
。使用者只需要在自己的服务器中使用
dock
pull
命令从
Docker
中心直接将想要的映像下载到本
地,此映像就可以在服务器的
Docker
中的一个容
器直接运行,而无需考虑当前的操作系统环境,也
无需任何配置。如果把
CentOS
操作系统比作大海,
那么
Docker
就是大海中的一艘巨轮,而容器则是
巨轮上的一个个标准化的集装箱,每个集装箱(容
器)中运行的就是某个应用程序和其依赖的全部环
境,容器之间完全是相互独立和隔离的。
Docker
实
现了同一个应用程序在不同操作系统上的零配置
极速部署和运行。
工程具体过程为:在
CentOS 7
操作系统上安装
Nginx 1.17.8
、
PHP 7.3.15
和
MariaDB 10.4.2
服务,
再安装
Moodle 3.6.8+
网络课程平台,接着在
Moodle
中安装
CodeRunner
插件,再在此服务器中安装
Docker 19.03.4
,最后在
Docker
中通过
[docker pull
trampgeek/jobeinabox:latest]
导入最新版的
Jobe
映
像。对于
LNMP
架构的运维人员来说,上述架设工
作一天时间就能完成,稍作适应的配置,系统就能
立即投入到教学应用中。
4 SQL题目出题方法
老师首先在自己的电脑上使用
SQLiteStudio
创
建一个数据库,名为
。再在
数据库中
创建一张名为
info
的表,
SQL
命令为
[CREATE
TABLE info (sid INTEGER PRIMARY KEY
AUTOINCREMENT UNIQUE,sname VARCHAR
(40) NOT NULL,score REAL,inserttime
TIMESTAMP NOT NULL DEFAULT
(CURRENT_TIMESTAMP));]
。这里特别注意的是,
每张表都应该设计一个名称类似
inserttime
的插入
时间字段,类型为
timestamp
,缺省值为
CURRENT_TIMESTAPE
,而且必须勾选“
Not
NULL
”(非空)。这样,这个字段的值不用人工在
前端或后台程序填入,
SQLite
数据库系统会去读取
服务器的当前时间,自动填入。
再输入几条记录,如图
2
所示。
2020年 福 建 电 脑 89
图2 输入记录
这样,在文件夹中就看到一个名为
的单
个文件,它里面就是保存上述创建的数据库、表和
记录。
再登录到
Moodle
网络课程平台中,创建一道
CodeRunner
类型的题型,选择
SQL
类型的评测题。
再在测试案例
1
中的输出部分,输入题目运行
的标准答案。需要注意的是,输出的二维表格式是
固定的,每列默认占用
10
个字符,字段间用两个
空格隔开;字段名下方默认打印
10
个“
-
”号,如
图
3
所示。
图3 输出数据
在支持文件中,将本地的
文件上传到
Moodle
平台中,如图
4
所示。
图4 上传数据库文件
5 SQL编程评测功能测试
从图
5
可以看到,界面中同时显示了期待的输
出结果和学生提交的
SQL
命令输出的结果。若两者
在文本比较上完全一致,那么就判对,否则就判错。
图5 SQL评测界面
参 考 文 献
[1] 曾棕根.源程序在线评测系统技术改进.计算机工程与应用,
2011(4):68-71
[2] 叶清明.基于MDA的SQLite碎片数据清除技术.计算机应用与软件,
2017(1):50-54
[3] 何文才.基于Android平台的SQLite数据库加密研究.计算机应用与软
件,2019(10):310-315,333
[4] 马庆杰.基于SQLite内容雕刻的恢复技术.计算机应用,
2017(2):392-396
[5] 曾棕根.便携式高性能WNMP架构的研制.
计算机应用与软件,
2018(4):168-171
[6] 张浩.RainbowD:一种异构云环境下高效的Docker镜像分发系统.计
算机学报, 2019(12):1-18
版权声明:本文标题:Moodle平台SQL在线评测系统的实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713065796a618155.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论