APP下载

基于HUSTOJ的高级语言考试系统的设计与实现

2018-04-27卜明磊浙江广厦建设职业技术学院

数码世界 2018年4期
关键词:进程试卷题目

卜明磊 浙江广厦建设职业技术学院

1 引言

自第一台计算机诞生至今,短短数十载,信息时代已然改变人们生产生活方式。本课题就是设计并实现一套基于HUSTOJ的高级语言考试系统。HUSTOJ遵守GPL协议,其开源的特性有利于实现代码的二次开发并能为本系统所用。

通过本高级语言考试系统,管理员可以对教师、学生和题库进行管理,教师可以根据具体情况从已有题库中选择所需题目进行人工组卷,也可对已有试卷进行查看,更也可以查看每次考试的统计信息,而这些统计信息是计算机自动运用数学知识运算所得,即高效又准确。学生可以通过考试系统完成在线评测并第一时间获取自己成绩,实时反馈,促进教育教学良好有序进行。

2 HUSTOJ的分析

HUSTOJ作为一个开源在线评测系统已经被广泛用于计算机程序设计比赛和编程能力测试中。通过分析它的源代码我们可以发现,HUSTOJ由core和web两个文件组成, web主要用于存放数据,core主要用于实现判题功能。其中,core分为三部分:judged(其中最核心部分是服务进程源码judged.cc)、judge_client(其中最核心部分是判题进程源码judged_client.cc)、sim(其中最核心部分是sim.sh,是一个第三方软件,用于检测相似度,防止作弊)。这里主要用到了judged和judge_client,因此在判题源码分析中主要介绍服务进程源码和判题进程源码。

2.1 判题源码分析

2.1.1 服务进程源码分析

服务进程代码(judged.cc)是由519行C语言编写的源代码组成,总大小为13.4KB。该源代码实现的主要功能在第485行至519行的main函数中得以表现。首先创建家目录(默认家目录为home/judge)并进入,在确认输入无误后创建守护进程,然后在确认家目录无误且守护进程尚未运行后配置数据库信息,通过执行SQL语句获取符合要求的题目标记值信息(这里是对应的是题目的主键solution_id),之后计算机一直处于等待返回信息状态,一旦接收到对应信号,则立马结束判题服务进程,如果进程未结束则表示准备就绪。接下来进入循环体,该创建的守护进程就正式成为执行题目的判题守护进程并开始起作用,直到出现错误或题目全部已经答完。

2.1.2 判题进程源码分析

判题进程代码(judge_client.cc)是由1989行C语言编写的源代码组成,总大小为70.8KB。获取题目solution_id并为之编号,在配置数据库配置信息后验证数据库是否运行正常,结果(记录在result中)共有0至13共14种情况,其中, result为4表示AC,即结果正确,其他数字对应代表一种出错情况。判题进程源码采用的是沙箱技术,通过创建一个虚拟环境并在其中运行,待得出结果后删除它。这就保证了系统的安全性。

2.2 数据库分析

HUSTOJ数据库共有17张数据表。中本系统调用的最主要数据表是记录题目提交运行相关信息的表solution solution_id,problem_id,user_id,time,memory,in_date,result,language,ip,contest_id,valid,num,code_length,judgetime,pass_rate)和表 source_code(solution_id,source)。

值得注意的是,HUSTOJ数据表中不存在外键,数据的完整性由web中的PHP代码保证。

3 系统模块设计

4 系统实现

本考试系统功能分为四大模块:用户登录验证模块、系统管理员模块、教师模块和学生模块。

4.1 用户登录验证模块

首先输入正确的姓名、密码,并选择相应的身份,然后单击登录按钮即可。如果输入无误,则进入相应界面,否则显示错误提示信息。

4.2 系统管理员模块

4.2.1 教师管理

根据教师姓名、职称和部门查询教师信息,符合条件的教师信息(教师姓名、密码、职称、部门)以一张表格形式展现,在信息的最后,管理员可以选择修改该教师信息或删除该教师信息。

4.2.2 学生管理

根据学生学号、姓名、专业和年级查询学生信息,符合条件的学生信息(学生学号、姓名、密码、性别、专业、年级)以一张表格形式展现,在信息的最后,管理员可以选择修改该学生信息功能或删除该学生信息

4.2.3 题库管理

根据题目内容、题型、知识点和章节查询题库信息,符合条件的题库信息(题目内容、题型、知识点、章节)以一张表格形式展现,在信息的最后,管理员可以选择修改该题目或删除该题目。

4.3 教师模块

4.3.1 人工组卷

输入试卷基本信息(试卷名称、考试时间、选择题数量、判断题数量、填空题数量、程序题数量、选择题分值、填空题分值、判断题分值、程序题分值)后单击提交,进入组卷界面。单击“选择题”后题库中的所有选择题将显示,教师可任意选取,不过必须与试卷基本信息中的题数相对应,否则最终提交将会无效。其他还有“填空题”、“判断题”和“程序题”,于此类似。最后,单击“提交”,在系统提示完成后组卷工作完成。

4.3.2 人工阅卷

从数据库中选取该教师出的试卷,从中再选取未曾批改过的题目,将信息(学号、试卷编号、题目编号、考生答案、参考答案、机器批阅结果、是否已核对、更正)显示出来。对于已核对的题目,则在“核对”中打钩,并作为最终结果。如果遇到自动批改试卷有出路的地方,则在“核对”中选中之后还需在更正一栏中填入正确得分。

4.3.3 试卷分析

选中条件信息(学号、试卷编号、题目编号)进行查阅试卷。在选中试卷条件之后单击“查询”,可以得到相应学号、试卷编号、题目编号、得分、该题平均分以及排名统计信息。

4.3.4 试卷查询

选中试卷条件信息(试卷编号、题目编号编号)进行查询。在选中试卷条件之后单击“查询”,可以得到相应试卷编号、题目编号、试卷名称、题目内容和删除信息。如果教师对该每一题目不满意欲删除,则可以通过单击左键“删除”来达到目的。

4.3.5 成绩查询

选中条件信息(学号、试卷编号)进行查阅。在选中条件之后单击“查询”,可以得到相应学号、试卷名称、题目编号、得分、平均分信息。

4.4 学生模块

4.4.1 进入考试

单击导航栏中的“进入考试”链接,显示信息分为两部分:功能区以及信息区。功能区位于上方。学生选择试卷编号并单击“进入考试”按钮进入答题页面。而信息区域显示励志故事,旨在激励学生。答题页面是本次考试试卷全部内容。每一道题目由题号、题目内容、题型和考生答案四部分构成。考试在“考生答案”中填写答案后单击页面下方的“提交”按钮即可交卷。本系统采用系统自动阅卷功能,在学生提交答案后系统自动在后台运行批改程序,在第一时间得到结果。

4.4.2 成绩查询

选中条件信息(学号、试卷编号)进行查阅。在选中条件之后单击“查询”,可以得到相应学号、试卷名称、题目编号、得分、平均分信息。

5 总结展望

5.1 总结

因为基于HUSTOJ的高级语言考试系统是一套能够实现计算机自动批改试卷的高级语言考试系统,而本系统的研究重点是在LAMP( Linux + Apache + MySQL + PHP )的框架下,在自动程序判题系统HUSTOJ的基础上进行自行设计并创建一套高级语言考试系统。可以毫不夸张地说,这是一个新的领域,而我就是一个纯粹地探索者——在网络地帮助下(特别是百度、谷歌等搜索引擎的帮助以及CSDN等网站的帮助),功能基本实现。

5.2 展望

此次实现了高级语言考试系统的基本功能。其主要特色是借助HUSTOJ实现对程序的自动判题。由于本系统是开源系统,而且是参照工程化的已有项目搭建完成,所以结构清晰,编程规范,为以后编程人员解读代码或再次开发提供了保障。总之,对于本系统的未来努力方向总结如下:

(1)美观性:增强界面美观设计,使界面更符合大众对审美的需求;

(2)防作弊性:通过数学工具实现数据统计计算,达到防作弊的效果;

(3)数据表现多样性:对于各种统计信息,实现数据与图形图画的转换,实现诸如折线图、圆饼图等功能;

(4)安全性:对于每次用户登录(特别是文本框等数据输入),都要通过多种手段进行安全验证,比如正则表达式等。

[1]张浩斌.基于开放式云平台的开源在线评测系统设计与实现[J]. 计算机科学2012年增刊,第39 卷第11A 期:339-343,348.

[2]何莉辉,梁沧.基于ACM 国际大学生程序设计竞赛的学习模式[J].边疆经济与文化,2008(6):95-96.

[3]网络教育_维基百科[EB/OL]. http://zh.wikipedia.org/wiki/Linux.

[4]车明洙,纪洪波.一种基于ACM 程序设计竞赛在线评测系统解决方案 [J].微型机与应用,2010(4):11-13.

猜你喜欢

进程试卷题目
唐朝“高考”的诗歌题目
债券市场对外开放的进程与展望
本期练习类题目参考答案及提示
改革开放进程中的国际收支统计
Module5 A Trip Along the Three Gorges
Module5 Great People and Great Inventions of Ancient China
Module 4 Sandstorms in Asia
Module 1 Europe
追根求源
社会进程中的新闻学探寻