互联网资源的虚拟OJ系统的研究
2017-11-15胡春玲
胡春玲,吕 刚
(合肥学院 计算机科学与技术系,合肥 230601)
互联网资源的虚拟OJ系统的研究
胡春玲,吕 刚
(合肥学院 计算机科学与技术系,合肥 230601)
从训练需求出发、设计并实现基于互联网资源的虚拟OJ系统。该系统采用Spring+Struts2+Hibernate框架搭建系统总体框架 ,使用JavaScript脚本语言完成前台页面与后台服务器之间的数据转换。该系统使用爬虫技术,根据实体OJ的URL获取网页地址,再根据实体在线测评系统的网页设计格式使用正则表达式获取网页内容。子系统一共包括四个模块:爬虫模块,比赛模块,任务模块和教程模块。该系统具有功能完善、易使用、易拓展、框架模块化等特点,具有很高的实用价值。
OJ; 虚拟OJ; 爬虫技术;正则表达式
现在的在线测评系统已经很完备和完善,再设计同样的在线测评系统意义不大,设计虚拟的在线测评系统可以综合现有的在线测评系统优势,达到资源共享的目的。[1-3]因此,设计了基于在线测评系统的虚拟OJ (Online Judge)系统的训练子系统。
系统设计的目的是让本校的学生使用该系统,完成算法编程的基础训练,帮助老师辅导教学。当同学正在学习排序算法时,老师可以布置各种用排序算法解决的问题,像基数排序、二路归并排序、希尔排序、冒泡排序、选择排序、快速排序、堆排序等等,虽然都是排序,但是思路各不相同,对于解决不同类型的数集的效率也不同。通过加强代码编程训练,帮助同学更加熟练地掌握各种算法的思想和精髓,对学生不管是以后的考研还是就业地帮助都是显而易见的。本系统还有一个优点就是让学生进行正规的OJ题目训练,要求学生思考问题更加周到,代码编写更加规范,因而高效快速地提高学生的编程能力。
系统可以帮助老师完成教学,提高教学质量,也可以用于算法类的创新学习小组,组员可以基于系统制定学习计划,安排学习流程,让组员的算法学习更加合理更加科学高效。
1 系统分析
1.1系统需求分析整个系统共分为6个模块,主要完成的4项功能,分别是:(1)对实体OJ的资源进行获取;(2)对获取到的资源按照训练的需求进行整理;(3)对训练者的收获进行收集和积累,用于后来者的训练;(4)对训练者的训练进行管理、统计和分析,用于训练的设计。
第1项功能对应爬虫模块,第2项功能对应训练题模块,而第3项功能:训练者的收获与收集分为三类,分别对应于标签模块、简意模块、教程模块;第4项功能对应任务与总结模块。
1.2主要研究的问题(1)爬虫模块的代码需要根据源OJ的网页格式进行调整,源OJ频繁更换可以使系统维护频率大大提高,如何解决;(2)系统由于比普通OJ多了提交到远程,再从远程爬取的过程,[4-5]可能会比普通OJ慢,如何解决;(3)任务与总结模块如何设定合理的任务,总结过程设计哪些步骤;横向对比训练者的信息时如何根据训练者的强弱衡量任务的难度。
1.3系统设计的基本思路(1)首先需要完成爬虫模块,将从网页上爬取的题目下载到本地数据库。(2)训练模块在爬虫模块的基础上建立,有题目的提交和提交题目的状态获取。(3)比赛模块所使用的题库从已经爬取到本地数据库中添加,中间穿插训练题模块的内容,比如题目的提交和提交题目的状态,在此基础上需要加上比赛的排名。(4)教程模块使用WIKI插件辅助完成。
2 基于互联网资源的虚拟OJ设计
2.1设计原则系统开发需要符合本课题的需求分析,完成对网页的搜索和题目的爬取,完成比赛的设计和训练任务的设计。用户可以添加比赛、参加比赛,比赛需要有问题的提交状态和选手的排名。用户可以根据自己的需求添加任务。
2.2设计策略本系统的设计是严格按照系统框架MVC(Model View Controller)格式设计,[6]每个模块都有前台界面JSP(Java Server Pages)、后台动作类Action和后台服务类Service。每个模块都有对应的表,如爬虫模块是问题表和提交表,比赛模块是比赛表和比赛问题表,任务模块是任务表。虽然每个模块是有关联的,成链条依赖,但是模块之间相互依赖的都是彼此的数据库。只要数据库中的数据存在该模块就能正常运行,该数据库中的表在每个模块中都是可以重复使用的。[9-11]
图1 系统数据库E-R图
2.3数据库设计本系统一共有7个表,分别是 t_problem,t_description,t_submission,t_user,t_contest,t_cproblem、t_user_task,E-R图如图1。
本系统将采用Spring+Struts2+Hibernate框架。[7-9]本系统界面设计力求良好,采用AJAX技术,将一个页面分成很多部分编写,其他采用HTML、CSS技术做界面的框架设计,HTML中嵌入了JavaScript脚本语言,为网页提供了动态的功能,为用户提供更流畅更美观的浏览效果。在后台设计中Action类的编写依赖于后台Service服务器的编写,Service服务器依赖于Hibernate中Basedao的编写,后台设计层层相扣,只可分模块不可分阶层。
3 基于互联网资源的虚拟OJ实现
3.1爬虫模块实现爬虫模块分为基础模块、远程账户管理模块、题目爬取模块、语言爬取模块、登录模块、查询模块、状态管理模块、题目提交模块。实现对题目相关信息的爬取工作。题目爬取模块,首先要获取爬取对象的URL,这部分在基础模块里有每个在线测评系统对应的url。例如poj是北京大学的在线测评系统,URL为poj.org。[10]其次要获取对应用户搜索需要的problemId,转换对应题目描述信息的页面。根据页面的CSS框架设计使用正则表达式获取题目信息,[11]包括题目的标题、题目的时间限制、题目的内存限制、题目的描述和题目的源码。
3.2比赛模块的实现Contest模块(class ContestAction):处理比赛的添加、查看、编辑、删除、提交、列表、提交列表等操作。比赛页面较多,有14界面,addcontest.jsp界面是添加比赛界面,当执行addContest.action动作时转向该页面,在contestaction.java类中toAddContest()函数功能是转向添加比赛界面时所执行的动作,添加比赛必须是已登录的用户,该页面的所有内容置空(见图2),比如比赛的标题、比赛的描述、比赛的宣告和比赛的密码,还有就是生成一些数组列表如比赛的序号、比赛题目所使用的OJ、比赛的题目的个数和比赛的标题,申请数组空间。设置比赛的进度条,由比赛开始时间减去比赛结束时间再按时分秒划分。
3.3教程模块设计教程模块通过系统嵌套WIKI模式实现(见图3)。[12]
图3 文本编辑图
3.4设计任务模块实现任务模块分为两类,一类教程类,可以映射到教程任务,一类是题目类,可以映射到比赛模式(见图4)。
图4 任务列表
4 虚拟OJ系统测试
测试环境:系统进行测试,需要统一环境,系统才能正常运行,测试环境需要从用户的角度出发。本系统用户所处的环境是:DB是MYSQL,服务器是Tomcat 7.0,JDK版本是1.7,浏览器是QQ浏览器,操作系统是Windows7。
测试方法:系统测试采用黑盒测试,由用户进行操作和输入数据,系统反馈结果,如果结果符合要求即为通过,不需要考虑内部运行情况,只关注结果。
测试对象:对虚拟在线测评系统进行爬虫模块、比赛模块和任务模块测试。图5是根据用户搜索进行题目爬取的题目列表。
图5 爬虫模块爬取的题目列表
测试结果:所有的测试用例是通过黑盒测试进行,得到实际测试结果与期望基本保持一致,从而确定系统达到初始设计期望。
5 结 论
该系统从最初的设想到实现经历了一个漫长的过程,因为该系统比较复杂,该系统采用了Spring+Struts2+Hibernate框架。系统界面设计力求良好,采用AJAX、HTML、CSS技术做界面的框架设计,为网页提供了动态的功能,为用户提供更流畅更美观的浏览效果。后台设计层层相扣,只可分模块不分阶层。
程序设计和算法训练是计算机相关专业学生能力培养的重要核心内容,程序和算法设计能力的提高的必不可少的环节是大量科学的编程训练,本系统的设计目的是给程序设计和算法学习提供一个友好高效的学习平台。本系统的设计、完成和应用将极大的方便算法的学习和训练,使算法学习的效率更高,效果更好。
[1] 苗桂君, 刘勇, 许南山,等. 在线评测系统在程序设计类教学中的应用研究[J]. 计算机教育, 2016, 261(9):157-162.
[2] 张浩斌. 基于开放式云平台的开源在线评测系统设计与实现[J]. 计算机科学, 2012, 39(s3):339-343.
[3] 王俊强. 在线评测系统的设计开发和应用研究[D].北京:北京化工大学信息科学与技术学院, 2015.
[4] 夏火松, 李保国. 基于Python的动态网页评价爬虫算法[J]. 软件工程, 2016, 19(2):43-46.
[5] 郭梅. 深度网爬虫及更新策略研究[D].北京:北京化工大学信息科学与技术学院, 2010.
[6] 张敏, 陈静, 王娟. 基于MVC模式的Web系统自动化单元测试方案[J]. 微型电脑应用, 2016, 32(2):78-80.
[7] 孟琼. Spring框架事务处理技术研究[J]. 计算机与现代化, 2012(12):204-206.
[8] 李刚. Struts 2权威指南:基于WebWork核心的MVC开发[M].北京:电子工业出版社, 2007.
[9] 孙卫琴. 精通Hibernate:Java对象持久化技术详解:let java objects hibernate in the relational database.[M].2版. 北京:电子工业出版社, 2010.
[10] 李文新, 郭炜. 北京大学程序在线评测系统及其应用[J]. 吉林大学学报(信息科学版), 2005(s2):170-177.
[11] 邵翔宇, 刘勤让, 谭力波. 基于规则模板的正则表达式分组算法[J]. 电子学报, 2016, 44(1):236-240.
[12] 黄悦深, 代晓飞. 基于Wiki模式的企业信息服务平台构建研究[J]. 图书馆学研究, 2012(24):68-71.
TheResearchandImplementationofVirtualOJSystemBasedonInternetResources
HU Chun-ling1,LV Gang1
(Department of Computer Science and Technology, Hefei University, Hefei 230601,China)
For the trainer needs, the system designs and implements the needed function. The system uses the Spring + Struts2 + Hibernate framework to build the overall framework of the system. The system uses JavaScript script language to complete data conversion between front page and background server. The system uses crawler technology to obtain the web page address from the URL of the entity OJ, and then use regular expressions to obtain web content according to the web design format of the entity online evaluation system. The system consists of four modules, which is the crawler module, the contest module, the task module and the tutorial module. The system has the characteristics of complete function, easy to use, easy to expand, and the framework is modular, so it has high practical value.
Online Judge; virtual Online Judge; crawler technology;regular expression
2017-07-05
2017-09-20
合肥学院教学研究项目(应用型本科院校算法类课程教学模式研究),合肥学院人才项目(13RC01),安徽省教育厅自然科学重点项目(KJ2014A212)资助。
胡春玲(1970— ),女,安徽枞阳人,合肥学院计算机科学与技术系副教授,博士;研究方向:智能智能,数据挖掘。
TP393
A
2096-2371(2017)05-0080-04
[责任编辑:张永军]