冯丽露 康耀龙 高晓晶 王涛
摘要:本文基于JSP、Spring、Mybatis、Mysql等技术,设计实现了基于SSM框架的数据结构在线评测系统。本系统是一个在线评测网站,提供了丰富的算法题目以及必要的交流论坛,用户可以在网站内提交自己的程序代码,系统会自动进行编译并返回结果,管理员可以实现添加题库题目、查看学生答题记录、导出学生成绩等。本系统为用户提供了一个练习数据结构和算法的在线评测平台,方便学生在学习过程中更好地将理论同实践结合,进而充分发挥互联网优势,使学习效益最大化。
关键词:在线评测;信息管理;数据结构
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2021)13-0086-04
数据结构与算法的在线评测系统的主要用途是对用户提交的程序代码进行自动评测,并将评测结果告知用户。在线评测机对用户提交的代码进行编译、链接、执行,并将程序最终执行结果同预期输出进行比较。在线评测系统一般包括判题机、评测样例存储服务器、网页服务器。
● 相关开发技术
本系统采用当下较为流行的JSP、Spring、Mybatis、Mysql技术,这些技术发展较为稳定,安全性高,容易上手编程。
JSP可以访问Servlet、Java Bean,同时支持在网页中直接嵌入Java代码。Spring为Java企业级项目应用程序开发提供了集成的整合框架。Spring利用控制翻转和面向切面编程技术实现了低入侵式编程,降低代码之间的耦合度。[1-2]Mybatis不会对应用程序数据和数据库表中已有结构产生任何的负面影响,SQL语句在配置的Xml文件中管理,解除了原有设计过程中程序代码同SQL语句的耦合,使得业务层逻辑同SQL语句分离,从而提高了代码的可维护性和编程的易实现性。[3]
● 系统需求分析
①为了方便教师和学生通过互联网进行访问,系统采用B/S进行架构,免去了C/S架构安装的麻烦。学生在网络环境良好的情况下就能进行在线提交和在线讨论。
②数据信息的保存需要安全可靠,所以,在数据库选择方面选择关系型数据库Mysql,同时,为了应对后期数据量增多导致查询效率下降的问题,需要对数据进行分类存储,对数据量较大的表另做分库分表的设计。[4]数据库中的表主要用于存放用户信息、题目信息、提交记录、评论内容等。
③对不同登录人员的权限控制。为了确保系统的安全性、稳定性,要避免非授权用户登录后台系统进行的非法操作。
④系统对学生提交代码具有评测功能,能对学生的解答做出校验。同时将信息反馈至学生,以便其能根据反馈有针对性地完善代码,进而通过测试。[5]
⑤系统具有统计、分析功能,能对学生提交的数据做出分析,能自动计算出学生成绩,数据信息应该方便教师查阅和导出。
● 数据结构在线评测系统的设计
本系统从总体框架、基本功能、数据库三方面进行设计。总体框架设计是对系统整体功能的逻辑规划;基本功能设计是对详细功能的设计;数据库设计根据所需数据表建立。
1.系统总体框架
该在线评测系统划分为前台门户页面和教师后台管理两部分,整个系统的网络结构采用的是浏览器/服务器架构模式,用户通过网站域名进行登录访问,如图1所示。
2.基本功能设计
系统前台主要用于学生注册和登录系统、在线评测、查询评测结果、交流讨论、修改个人信息等;后台主要用于教师对学生的学习情况进行查阅,维护题目信息,添加评测数据等。
①网站首页:将网站内容做一个整体的展示,具体包括题库信息、登录、注册模块、个人信息维护、在线评测等。
②题库信息:主要包含待评测的数据结构和算法题目信息,点击相应的题目标题即可查看具体的题目描述。
③交流论坛:该模块为学习者提供了交流平台,在学习的过程中学习者可以通过评论、问答的方式向教师或同伴提问。
④个人信息维护:维护个人的账号信息,包括用户的头像、昵称、邮箱、班级等信息。
⑤后台总体信息概览:查看题库系统总体信息,包括注册人数、题目数量、答题提交总量等。
⑥学生信息管理:管理和查看学生在网站的学习情况,包括学生的答题情况、學期末总成绩等。
⑦题目信息管理:完成对题库的维护,增加新题目或删除旧题目。
3.平台数据库设计
根据系统架构和需求分析,数据库中各类实体可概括为用户实体、题目实体、权限实体、提交记录实体等。用户实体主要用于保存用户个人信息;题目实体主要用于保存题目详细信息;权限实体主要用于记录用户权限信息;提交记录实体用于记录用户的个人提交信息。用户实体与权限实体之间存在权限关系,题目同用户、提交记录之间分别存在提交和答题关系。
● 数据结构在线评测系统的实现
本文只介绍《数据结构》在线评测系统中的部分核心功能,包括题库搭建、评测逻辑、后台管理、答题统计、成绩分析。
1.题库搭建
在题库中展示了所有存储在数据库中的评测题目信息,用户进入题库中点击题目的标题,进入题目的详情页面,进入后即可在题目右侧的答题页面进行解题,如上页图2所示。题库页面核心代码如图3所示。
2.评测逻辑
测试系统以在线动态编译代码的形式对代码的正确性进行校验,代码在线动态编译。当用户在线提交代码后,后台会返回一个评测结果,用户可以根据服务器的返回结果来判断提交的代码是否正确。后台判题业务逻辑核心代码如图4所示。
3.后台管理
教师在后台系统可以查看整个系统中的题目总数、用户注册人数、提交题目数等信息。
4.答题统计
在学生答题信息页面可以看到学生在系统中的具体答题情况,如题目提交数、题目通过数、登录系统的次数等信息。学生答题情况也会以列表的形式展示给教师,方便教师查阅学生答题情况。答题统计的核心代码如下页图5所示。
5.成績分析
根据学生答题数统计学生学期末最后的成绩信息,同时将学生答题信息以图表的形式展示给教师,方便教师掌握学生学习动态信息。
● 结束语
由于逻辑思路的多样性,编程题目的评判一直是困扰教师批阅的一个难题。本系统根据学生提交的代码信息进行自动评判,能够对学生提交的代码进行及时反馈,同时教师也可在后台查看学生的学习记录,减轻了教师的工作负担,同时也提高了学生的编程能力。经过需求分析、设计、开发、测试,该系统的用户模块、题目模块、论坛模块、评测功能模块已经比较完善,基本能满足目前的教学需要,希望能为同类型课程的教学改革提供一定的技术借鉴。
参考文献:
[1]牛怀岗,林关成.基于SSM框架的新闻发布管理系统设计与实现[J].现代电子技术,2020,43(21):127-131.
[2]冯丽露,高晓晶,康耀龙.大数据分析下大学生行为记录和分析系统的设计与实现[J].中国教育信息化,2019(09):73-76.
[3]潘璇,蔡祥睿,温延龙,等.基于深度学习的数据库自然语言接口综述[J/OL].计算机研究与发展.[2021-03-06].http://kns.cnki.net/kcms/detail/11.1777.TP.20210301.1423.002.html.
[4]许谦,李元栋,王彧之.基于SQL Server的高校信息资源管理系统设计[J].现代电子技术,2020,43(20):115-118.
[5]兰振奇,刘炜,张璐思,等.基于C/S模型的在线考试评测系统的设计[J].科学技术创新,2019(19):85-86.
作者简介:冯丽露,(1980.09—),女,汉族,山西省大同市人,讲师,硕士研究生,研究方向为计算机教育应用、数字化学习资源建设。
基金项目:山西大同大学教学改革创新项目“新工科建设下数媒专业《数据结构》课程PBL教学模式的研究”阶段性成果(项目编号:XJG2019202);山西大同大学教学改革创新项目“以竞赛为驱动的创新型应用人才培养模式研究”阶段性成果(项目编号:XJG2019208)。