基于ACM/ICPC在线测评系统的设计

时间:2022-08-25 01:08:11

基于ACM/ICPC在线测评系统的设计

摘要:针对ACM国际大学生程序设计竞赛培训教学中程序评测的需求,开发程序在线测评系统。系统基于Apache服务器,采用PHP和MYSQL数据库技术运行于Windows Sever 2003平台。采用软件工程黑盒测试的思想对用户提交的程序进行测评,系统主要分为三个部分:网站部分,数据库部分及测评部分。数据库部分对系统提供数据存储支持;网站部分则是系统与用户的交互接口;测评部分则是对用户提交程序运行的主要控制部分,它将控制提交程序的运行时间以及内存,并对运行程序的结果进行判断。

关键词: 在线测评;ACM;Apache;PHP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)22-5004-03

ACM/ICPC国际大学生程序设计竞赛始于1970年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事。竞赛是展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的比赛。经过近 30 年的发展,竞赛规模的迅速扩大对阅卷工作的自动化、高效性、合理性和公正性提出了更高的要求,建立一套准确、高效的程序评测系统成为非常迫切的需求。通过对在线评测系统相关知识的学习,以及对目前已有软件系统的功能分析,该文在总结以往系统开发设计经验并结合当今系统发展趋势的基础上,设计了一个基于B/S结构的多用户在线测评系统,允许用户在线提交自己的解题代码,系统自动编译运行给出裁判结果,并根据用户解题数和用时排出名次。

1 需求分析

设计本系统的主要目的是给学习计算机程序设计的学生提高程序设计能力和对ACM/ICPC兴趣浓厚的学生提供一个学习、练习和交流的平台。为了设计出一个高效、稳定、实用的在线测评系统。我们结合程序设计的需要和ACM/ICPC的特点,认为系统应具有以下功能需求:

用户需要认真填写资料进行注册,未注册用户只能浏览不能进行提交或者参与比赛。用户可以通过页面浏览题目,查询题目,找到自己感兴趣或者比较新的题目,然后进行提交。用户做题目时可以选择提交的语言,此系统支持的语言有C++、C、Pascal、Java等。用户可以随时查看自己和他人的提交情况,做了哪道题目、做题结果是AC还是一些常见的错误,如结果错误、运行时间和运行空间超过题目要求运行的时间和空间,以及用户提交时用的是什么语言、提交时间、提交的序号等等。用户可以查看整个做题数的一个排名,做的题目越多排名越在前,若做出同样的题目,则花费时间少的排名靠前。用户可以通过添加比赛用于举行比赛或者考察学生的编程能力。管理员可以对用户信息的进行管理,添加、修改和删除题目或比赛,以及对数据库进行备份。

2 体系结构及技术分析

2.1体系结构

2.2实现技术

本系统采用Apache服务器、MYSQL数据库和PHP技术。

Apache全称为Apache HTTP Server,是一个开放源码的网页服务器。可以在大多数计算机操作系统中运行,是最流行的Web服务器端软件之一。因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache具有简单、快速、多平台性、扩展性和性能稳定等特点,有着非常广泛地应用。

MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,增加了速度并提高了灵活性。特点:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性,为多种编程语言提供了API,支持多线程,充分利用CPU资源 ,优化的SQL查询算法,既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中,支持多种存储引擎。

PHP为 "PHP: Hypertext Preprocessor"的缩写,是一种HTML内嵌式的语言,一种在服务器端执行的嵌入HTML文档的脚本语言。 PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C++进行程序的扩展。PHP站点保存的数据一般都存在 MYSQL 数据库里。和MYSQL“关系”非常的好。故采用PHP+MYSQL的配合使用完成此次项目设计。

3 系统设计

3.1 功能设计

用户模块主要包括由用户自行操作的用户注册和登录、更新用户信息的功能及由管理员对用户进行管理的一些操作主要有添加用户、删除用户、更新用户等。

在线评判模块是系统的一个核心, 对于应用层的用户来说主要包括查看竞赛题目、提交竞赛代码、查看排名、查看竞赛状态等功能。

在线比赛模块,用户能参与竞赛查看比赛信息及规则,看看往届比赛题目等。

题库模块是主要是用户能打开相关问题集进行练习,也可以通过站内搜索功能通过输入问题ID直接找到问题。

后台管理模块主要负责创建比赛、修改比赛、管理比赛题目、增加问题、修改问题、管理测试数据、修改用户权限、数据库备份等功能。

3.2数据库设计

合理正确的数据库结构不仅有助于系统实现,而且可以提高系统的整体性能和可扩展性。系统由用户模块,在线评判模块,在线比赛模块,题库模块,后台管理模块等五个模块构成,这些模块之间有着紧密的关系,其中用户于题目、用户与比赛、比赛与题目之间是多对多的关系。

通过以上分析我们得出以下核心数据库表:用户表、试题表、提交记录表、比赛表、比赛排名表。用户表,试题表,提交记录表定义了三个实体,它们之间是互为多对多关系。比赛表与比赛排名表为一对一的关系。

3.3测评设计

4 结束语

本文首先对ACM/ICPC在线测评系统进行需求分析,然后阐述了系统体系结构与技术分析;最后描述了系统的整个设计方案,该应用系统可以帮助学生提高编程能力,为ACM爱好者提供了一个练习和交流的平台。同时系统使用模块化设计,有助于编程人员的维护和系统的再次开发。

参考文献:

[1] 秦越磊,彭四伟.源代码在线测评系统的设计与实现[J].福建电脑,2008(6):64-65.

[2] 丁永生,张桂新,赵超,等.基于Web的ACM国际大学生程序设计竞赛教学系统开发[J].东华大学学报,2001(4):108-109.

[3] 赵惊,李玮,汪维富.基于网络计算的ACM系统构架研究[J].科技咨询,2008(24):282-283.

[4] 刘畅,黄晓宇.基于WEB的分布式在线程序自动评测系统的设计与实现[J].企业技术开发,2010(1):150.

[5] 田冲,李兴国.Web软件系统事务处理模型设计[J].计算机技术与发展,2009(10):185-187.

[6] 郑传生.基于B/S结构的程序设计竞赛自动测评系统的设计[J].计算机与现代化,2007(12):58-61.

[7] 尤枫,史晟辉. ACM在线测评在编译原理实践教学中的应用探讨[J].计算机教育,2009(20)30-31.

上一篇:智慧校园建设的方案与探索 下一篇:基于EXCEL的资产条码管理实践探索