《基于ACM程序设计竞赛的在线评测系统设计与实现——前台网站部分》由会员分享,可在线阅读,更多相关《基于ACM程序设计竞赛的在线评测系统设计与实现——前台网站部分(7页珍藏版)》请在金锄头文库上搜索。
1、基于ACM程序设计竞赛的在线评测系统设计与实现前台网站部分计算机科学与技术专业 学生:吴玉培 指导教师:赵磊摘 要:随着Internet的广泛应用和计算机技术的飞速发展,计算机算法在其中发挥着极其重要的作用。为了更好地适应这个社会选拔人才的要求,同学们提高程序设计能力的愿望越发强烈,然而人工评测程序的效率还是很低的。因此ACM在线评测系统应运而生了.这个在线评测系统主要由三个大的部分组成,即数据库部分,网站部分,和编译器的调用部分,三个部分紧密地联系在一起。在用户提交解决方案的同时,在服务器端产生源程序,编译部分负责调用源程序,并把结果写入数据库,然后网站部分再通过数据库查询语句把数据库中的结
2、果显示在网页上。 关键词:在线评测;ACM;网站部分 1 概述1.1 ACM在线评测系统设计背景和研究意义ACM/ICPC国际大学生程序设计竞赛始于1970年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事。ACM国际大学生程序设计竞赛是参赛选手展示计算机才华的广阔舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。ACM国际大学生程序设计竞赛是旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的竞赛。经过近 30 年的发展,ACM 国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。竞赛规模的迅速扩大对阅卷工作的自动
3、化、高效性、合理性和公正性提出了更高的要求,建立一套准确、高效的程序评测系统成为非常迫切的需求。通过对在线评测系统相关知识的学习,以及对目前已有软件系统的功能分析,本系统总结以往系统开发的设计经验,结合当今系统的发展趋势,确定了该项目的设计方案。1.2 ACM在线评测系统设计的开发工具与运行环境系统前台开发工具主要用到Dreamweaver 8、wamp5。(1)Dreamweaver 8简介Macromedia Dreamweaver 8是建立Web站点和应用程序的专业工具。它将可视布局工具、应用程序开发功能和代码编辑支持组合在一起,使得各个层次的开发人员和设计人员都能够快速做出界面吸引人的
4、基于标准的网站和应用程序。语言版本:中文版本:8中文版配置Win9x/Me/NT/2000/XP/2003/win7/。(2)wamp5简介wamp5是一款优秀的wamp集成软件,可以轻松的一下子同时安装PHP5、MYSQL和Apache环境,对初学PHP的学者来说非常方便。同时,wamp5内还集成了PhpMyadmin和SQLitemanager管理工具。语言版本:英文版本Win9x/Me/NT/2000/XP/2003/win7/。 系统网站部分是用PHP语言编写,使用的数据库是MYSQL,而服务器则是现今最流行的Apache服务器,在Windows XP系统上实现。因此系统的运行环境如下
5、: (1) 数据库:MYSQL; (2) 服务器 :Apache; (3) 操作系统:Windows XP。2 需求分析该系统设计的主要目的是希望给学计算机的学生提高编程能力和对ACM编程有兴趣的学生提供一个学习和操练的平台,真正实现一个高效管理和稳定的在线评判系统。结合学习及ACM点,系统具有以下几点功能需求:(1)用户管理:认真填写资料就可以注册了,未注册用户只能浏览不能进行提交或者参与比赛。(2)题目浏览:用户可以通过页面浏览题目,查询题目,找到自己感兴趣或者比较新的题目,然后进行提交。(3)提交:用户做题目时可以选择提交的语言,此系统可以用的语言有C+、C、Pascal、Java等。(
6、4)查看提交状态:提交情况,越在前面的页面在时间上越靠近现在,反映用户做题目时的提交状态、做哪个题目、AC或者一些常见的错误,比如结果错误、运行时间和运行空间超过题目要求运行的时间和空间,以及用户提交时用的是什么语言、提交时间、提交的序号等等。(5)查看排名:显示用户做题数的一个排名,做的题目越多,排名越在前,若做出同样的题目,则以提交次数少者排名靠前。(6)比赛练习:添加比赛用于举行比赛或者考察学生的编程能力。(7)后台管理:包括用户信息的管理,题目的添加和修改,比赛的添加和修改以及数据库的备份等等。3 系统可行性分析此系统从结构的总体上进行划分,可以划分为三个大的模块,即前台网站设计,数据
7、库设计,后台调用评判程序正误的结果。接下来将对上述三大模块的可行性以及服务器的承受力做具体的分析:前台网站设计的可行性:写前台网站代码的主要语言是PHP语言,这门语言已经发展到了相当成熟的地步,从理论上讲完全可以实现该系统的所有功能,其次,制作本系统所使用的PHP技术也已经是一些非常成熟的技术,并且在相关书籍以及网络论坛上有相关的理论和实例可供参考。数据库设计的可行性:首先,本系统所采用MYSQL数据库,这个数据库的管理软件已经经过严格的测试,可供本系统完成相关信息的存取工作。其次是对数据库进行读,写,更改的SQL语言已经发展到非常成熟的地步,此外,PHP与MYSQL的连接技术也已经相当成熟,
8、并且在相关书籍以及网络论坛上有相关的理论和实例可供参考。后台调用评判程序正误的结果的可行性:后台程序代码实现的主要语言是C+,这门语言本身经过开发人员和用户的反复测试,已经变得相当成熟;另外程序实现者对该语言也非常的熟悉,能够运用该语言实现本系统的相关功能模块;此外程序一旦以进程运行起来后,则可以采用Windows所提供的API来对相关的进程进行控制和管理,这位本系统的技术实现提供了可能。并且在相关书籍以及网络论坛上有相关的理论和实例可供参考。服务器的承受力方面的可行性:从访问规模上讲,由于本系统主要是为校内用户提供程序测评服务,虽然今后也可能为部分互联网用户提供程序测评服务。但是就目前的情况
9、而言,每天的用户的登录总量一般是保持在200个用户左右。而且用户提交程序所耗费的运行时间和运行内存都是在规定的时间和规定的内存的严格控制之下。综上所述,本系统前台网站设计,数据库设计,后台调用评判程序正误的结果这三个大的模块从语言到开发技术上讲,可行性的各个条件已经完全具备,不仅如此,在用户所提交的一些极端程序的条件下,本系统也可以对其进行处理,从而保证了程序的正常运行。因此可以开始对本进行设计开发了。4 系统的设计4.1 系统框架即实现流程根据需求分析,ACM在线系统主要包括以下几大模块:用户模块,在线评判模块,在线比赛模块,题库模块,后台管理模块。其中用户模块主要包括由用户自行操作的用户注
10、册和登录、更新用户信息的功能及由管理员对用户进行管理的一些操作主要有添加用户、删除用户、更新用户等。在线评判模块是系统的一个核心, 对与应用层的用户来说主要包括查看竞赛题目、提交竞赛代码、查看排名、查看竞赛状态等功能。在线比赛模块,用户能参与竞赛查看比赛信息及规则,看看往届比赛题目等。题库模块是主要是用户能打开相关问题集进行练习,也可以通过站内搜索功能通过输入问题ID直接找到问题。后台管理模块主要负责创建比赛、修改比赛、管理比赛题目、增加问题、修改问题、管理测试数据、修改用户权限、数据库备份等功能。框架流程如图4-1所示: 开 始登 陆注 册 管理员后台管理用户数据库备份比赛管理题目管理用户管
11、理个人信息浏览题库提交题目提交状态查看排名参加比赛图4-1框架实现流程4.2 系统的数据库设计该系统数据库采用MYSQL,其主要目的是为了与PHP网站更好的衔接,而且PHP的数据库连接技术也是相当成熟。数据库的名称是OJ,包含6张表,这6张表分别是:userinfo,solution,problem,loginlog,contest,standing。这6张表中userinfo表主要是用来储存用户的登录名和密码以及用户的做题的正确个数,提交次数,以及做题的正确率;solution表主要是在用户每次提交的时候记录下用户的提交信息,这些提交信息包括用户的登录名,题号,程序运行的时间,程序运行的内存
12、,运行的结果,提交的时间,以及提交的语言等;problem表中主要是储存每个题目的相关信息,包括题目的题号,题目的内容,题目的类别,题目的难度,以及该题目属于第几次模拟测试等;loginlog表主要是在每一次用户登录的时候,储存用户的登录名,密码,以及用户的登录时间,这样可以知道登录本系统的总人数是多少;contest表主要是用来记录每一次比赛的题目、开始时间、结束时间。Standing表是用来记录每次比赛参见比赛用户的信息,比如做题个数,做题用的总时间,以及用户的排名等等。数据库中的各个表的内容分类及大致功能介绍见表4-1:表4-1 OJ数据库 表名表功能说明userinfo储存登录名和密码
13、信息solution储存用户的提交信息problem储存题目信息loginlog储存用户登录信息contest储存每次比赛的题目standing储存每次参加比赛的用户信息4.3 前台网站部分的设计 该在线提交系统的前台网站的名称是onlinejudge_1.0,该网站包括注册,登录,修改用户信息,浏览问题等等。具体的网页介绍见表4-2:表4-2 网页功能网页名称功能模块Register用户注册Login用户登录ModifUserInfo修改用户信息ProblemList题目列表ShowProblem题目内容SubmitProblem用户提交Status提交状态RankList用户排名Conte
14、sts比赛FAQs常见问题说明AddProblem添加题目AddContest添加比赛ModifyPrivate修改用户权限ModifyProblem修改题目ModifyContest修改比赛5 结束语历经了几个月的奋战,紧张而又充实的毕业设计终于落下了帷幕。回想这段日子的经历和感受,我感慨万千,在这次毕业设计的过程中,我拥有了无数难忘的回忆和收获。脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。在此更要感谢我的导师和专业老师,是你们的细心指导和关怀,使
15、我能够顺利的完成毕业论文。在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。在此我要向我的导师致以最衷心的感谢和深深的敬意。【参考文献】1 王珊,萨师煊. 数据库系统概论(第二版)M.北京: 高等教育出版社, 2011,17-206.2 阳西述,梁小满,周端峰. 网页制作与网站设计M.武汉:武汉大学出版社, 2010,50-186.3 Roger S.Pressman, 郑人杰,马素霞. 软件工程实践者的研究方法(原书第六版)M.北京:机械工业出版社,2009,58-319.4 曹玉峰. 国家信息学奥林匹克竞赛在线评测系统D.吉林:吉林大学出版社,2008,76-122.5 刘楠,孙国道. ACM在线评判系统设计与实现J.计算机时代, 2006,189-242.6 蒋社想,戴书文. 基于J2EE的ACM竞赛在线评判系统的设计J. 安徽理工大学学报,2009, 120-187. 7 车明洙,纪洪波. 一种基于ACM程序设计竞赛在线评测系统解决方案J. 微型机与应用, 2011,106-