“程序设计语言”课程机考系统的研究与实现

2020-07-18 11:28葛思磊
科学大众 2020年5期

摘 要:“程序设计语言”课程机考系统以Eclipse为开发平台,采用JSP和MySQL数据库技术,实现了程序设计语言课程机考系统。针对程序设计语言学科,供教师和学生使用,实现对选择、填空、编程3类题型的自动组卷与自动批改,教师可对学生、试题和考试范围进行管理,学生能够参与考试并查看考试结果。此系统不但能减轻教师工作压力、节约资源,更能保证考试的公平性。

关键词:Java服务器页面;MySQL;编程题;自动组卷;自动批改

互联网技术迅速发展,在各行各业都得到了广泛的应用,对购物、出行、教育等方面作出了巨大贡献。教育是人们密切关注的,在线教育的发展使得在线考试系统得以实现与应用,例如,蓝桥杯、CCF等应用于竞赛、认证的在线机考系统,但此类系统尚未在教学管理中普及,尤其是对于计算机专业的学生而言,该技术的实现是有可行性且有必要的。本系统针对学生学习“程序设计语言”课程,设计基于B/S架构的在线机考系统[1]。

1    “程序设计语言”课程机考系统的功能要求

本系统的总目标是通过JSP、数据库技术和tomcat服务器搭建基于网页的“程序设计语言”课程机考系统,目的在于设计良好的人机交互界面,易于学生、老师的操作;实现无纸化考试,提高考试公平性。本系统针对两类角色,有两个主界面:第一,用于老师登陆,主要负责考试试题、学生信息的管理以及每次考试范围的设定[2]。第二,用于学生登陆,并进行在线考试和最终成绩查询。从总体上考虑,本系统应实现如下功能:

(1)题库管理。老师可以对题库内的所有题目进行修改、删除,添加关于选择、填空、编程3类的新题目。(2)用户注册登录。老师的账号由系统管理员发放,无需注册,可直接在登录界面登录;学生第一次使用时,需在注册页面注册后方可登陆。(3)学生信息管理。老师可以对学生的资料进行查询、修改和删除。(4)考试范围设置。老师可以对每次考试的题目范围进行设置。(5)在线考试。学生点击开始考试后,进入考试界面,所有题目都由系统在数据库内随机抽取,保證考试公平性。学生需在规定时间内提交考卷,否则强制提交[3]。(6)成绩查询。学生提交试卷后,可立即查看自己的成绩。

2    “程序设计语言”课程机考系统的功能实现

对于注册登录和信息、题目管理等页面功能,都是通过基础的JSP技术对数据库内数据的查询、管理实现的,在线考试功能实现的过程如下。

2.1  选择填空部分

(1)实现自动组卷。自动生成的试卷需满足题目是随机抽取且在老师设置的考试范围内。先从数据库中读取考试范围:起始单元(Range1)和终止单元(Range2),再由"select * from store where range<="+Range2+" and range>="+Range1+" order by rand() limit 25"这样一条SQL语句实现对满足条件题目的抽取,其中,“25”表示随机生成的题目数量,最后,依次输出到页面上。

(2)实现题目批改。在页面上,每输出一道题目,就同时创建隐藏的标签用于存放,表示从数据库内读取的该题正确答案的变量,判断学生的答案是否与对应变量存放的正确答案一致,即可完成对题目的批改。

2.2  编程题部分

题目的抽取方式与选择填空部分类似。实现编程题批改的具体过程如下:

(1)在E盘创建一个TXT文档,将学生书写的Java代码写入TXT文档中,并保存为read.java。

(2)运用命令脚本语言实现对该Java程序的编译:

String path = "E:/read.java";

Process p1 = Runtime.getRuntime().exec("javac -classpath E:/ " + path);

若编译成功,则在E盘目录生成字节码文件read.class。

(3)若编译成功,则继续运用命令脚本语言并调用cmd,实现对该Java程序的执行:

String arr[] = {"CLASSPATH=E://","Path=C:\\Program Files\\Java\\jdk-12.0.2\\bin"};

Process p2 =Runtime.getRuntime().exec("cmd /c java read", arr, new File("E://")) ;

执行后可读取运行结果。

(4)将运行结果与数据库内存放的正确答案比对,相同则正确。

3    系统的不足与今后的研究方向

该系统编程题成绩的批改是通过判断编译成功与否和运行结果是否与数据库内存储的正确结果一致来评分,就会导致成绩没有区分度,掌握70%~80%的学生与完全不懂的学生所得的分数很可能是一样的,显然是很不严谨、不够公平的。

对此,本团队查询了相关资料,得到相关解决方案:结合动态检测和静态分析来完成对编程题分数的批改。首先,判断该程序是否能通过编译并运行出答案,若能,则进入动态检测,输入不同测试用例来评分;否则,进入静态分析,判断程序内是否含有相应关键字、关键语句匹配该题考查知识点以及该程序结构是否符合标准来综合获取得分,以有效解决编程题成绩批改不严谨的问题[4]。

4    结语

本系统通过多次细致的测试及鉴定,证明是具有可行性的,能够基本满足初学“程序设计语言”课程学生的需求,但该系统还有待升级,如窗口界面和系统功能不够完善、用户界面不够美观、编程题批改不够严谨等。因此,后续将继续开展工作与研究,完善不足。

[参考文献]

[1]刘畅.《大学计算机基础》无纸化考试系统的设计与实现[D].哈尔滨:黑龙江大学,2010.

[2]程小明.基于B/S模式的网络考试系统设计与实现[D].重庆:重庆大学,2006.

[3]宋雪亚,王传安.基于JSP的在线考试系统设计与实现[J].湖南工程学院学报,2017(2):53-54.

[4]臧双媛.C语言编程题在线评测系统的设计与研究[D].北京:北京交通大学,2017.

基金项目:校级大学生学术科技创新项目“程序设计语言课程机考系统的研究与实现”(X20190404)

作者简介:葛思磊(1998— ),汉族,江苏苏州人,本科生;研究方向:计算机科学与技术。