【PHP开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了PHP开源代码-基于php的在线判题系统的设计与开发 - 毕业设计的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
毕业设计 基于
php的在线判题系统的设计与开发 学 院 计算机科学技术学院 专 业 姓 名 指导老师 计算机科学与技术 1 学 号 职 称 1 1 讲师 XXX XXX毕业设计
毕业设计毕业设计毕业设计 诚信承诺书诚信承诺书诚信承诺书诚信承诺书 本人郑重承诺本人郑重承诺本人郑重承诺本人郑重承诺我所呈交的毕业设计《
PHP在线判题系统》是在指导教师的指导下独立开展研究取得的成果文中引用他人的观点和材料均在文后按顺序列出其参考文献设计使用的数据真实可靠。
承诺人签名 日期 年 月 XXX2011
PHP在线判题系统 摘 要 ACM/ICPCACM International Collegiate ProgrammingContest国际大学生程序设计竞赛是由历史悠久、颇具权威性的组织ACMAssociation for Computing Machinery国际计算机协会主办的是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛项目其目的是促进大学生提高运用计算机分析问题和解决问题的能力 ACM在线评判系统是该项比赛的评判事务处理平台是一个基于B/S结构的多用户在线系统允许用户在线提交自己的解题
代码系统自动编译运行给出裁判结果并根据用户解题数和用时排出名次。
系统的架构采用了目前Internet上流行的网站架构方式LAMPLinuxApacheMySQLPHP即使用Linux作为服务器端的操作系统Apache作为Web服务器MySQL作为数据库
PHP作为服务器端脚本解释器。
ZHBIT ACM Online Judge System的开发环境是在Ubuntu Linux下架设Web服务器Apache同时使用 MySQL作为数据库服务器
PHP作为服务器端脚本解释器在此平台上综合运用
PHP、C语言、html、数据库技术进行系统开发。
由于这四个软件都是遵循GPL的开放源码软件因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
即当这个系统构建起来后可以马上投入使用除考虑标明
开源程序
版权或者其他问题。
关键词关键词关键词关键词ACM/ICPC Online Judge
PHP MYSQL Apache Linux XXX2011
PHP Online Judge System Abstract ACM / ICPC ACM International Collegiate ProgrammingContest International Collegiate Programming Contest is a long history and quite authoritative organization ACM Association for Computing Machinery International Computer Association sponsored recognized as the worlds largest and highest level of international Collegiate Programming Contest which aims to help college students improve the use of computer analysis of issues and problem-solving abilities of the ACM Online Assessment System is a transaction processing platform the contest judge is based on B / S structure of the multi-user online system that allows users to problem solving and their code submitted online the system automatically compiles and runs the referee gives the results of problem solving based on the number of users and the use of rank when discharged. System architecture using the current Internet the popular Web site architecture approach: LAMP Linux Apache MySQL
PHP that the use of Linux as a server operating system Apache as the Web server MySQL as a database
PHP as server-side script interpreter . ZHBIT ACM Online Judge System development environment is set up under Ubuntu Linux Web server Apache MySQL as the database server simultaneously
PHP as server-side script interpreter the integrated use of this platform
PHP C language html database technology for system development. Since this software is to follow the four open source GPL software so do not spend a penny to use this approach can establish a stable free web site system. That when built up after the system put into use immediately without regard to copyright or other issues. Key
words: ACM / ICPC Online Judge
PHP MYSQL Apache Linux XXX2011 目 录 摘 要 ............................................... I ABSTRACTABSTRACTABSTRACTABSTRACT ............................................ II 1 绪论 ............................................ 1 1.1 开发背景 ......................................... 1 1.2 项目概述 ......................................... 1 1.3 开发工具 ......................................... 2 1.3.1 LINUX .......................................... 2 1.3.2 APACHE ......................................... 2 1.3.3
PHP ............................................ 3 1.3.4 MYSQL .......................................... 3 1.3.5 GCC ............................................ 4 1.4 整体架构 ......................................... 4 1.4.1 B/S结构的概念 ................................. 5 1.4.2 B/S结构的优势 ................................. 5 1.4.3 B/S结构的劣势 ................................. 6 1.4.4 前端WEB系统模型 ............................... 6 1.5 源程序黑盒评测 ................................... 7 XXX2011 1.6 守护进程 ......................................... 7 1.6.1 守护进程简介 ................................... 7 1.6.2 守护进程特性 ................................... 7 2 可行性分析....................................... 8 2.1 技术可行性 ....................................... 8 2.2 经济可行性 ....................................... 8 2.3 应用可行性 ....................................... 8 2.4 管理风险及管理可行性 ............................. 8 3 需求分析 ........................................ 9 3.1 需求定义 ......................................... 9 3.2 具体用户分析 ..................................... 9 3.3 判题内核需求分析 ................................ 10 3.3.1 判题内核需要实现功能 .......................... 10 3.3.2 判题内核功能工作流程 ........................ 11 3.4 核心业务用例 .................................... 12 3.4.1 详述用例文本 .................................. 12 3.4.2 核心业务用例图 ................................ 13 4 总体设计 ....................................... 14 4.1 系统结构
设计 .................................... 14 XXX2011 4.2 系统权限划分 .................................... 14 4.3 系统功能划分 .................................... 15 4.4 数据库设计 ...................................... 16 4.4.1 数据表 ....................................... 17 5 详细设计 ....................................... 20 5.1 系统架构 ........................................ 20 5.2 判题内核设计 .................................... 21 5.2.1 守护进程 ...................................... 22 5.2.2 主进程进行编译 ................................ 26 5.2.3 子进程执行测试程序 ............................ 30 5.2.4 系统安全性 .................................... 34 5.3 注册与登录 ...................................... 36 5.3.1 用户
注册 ...................................... 36 5.3.2 登录系统 ...................................... 36 5.4 做题功能 ........................................ 37 5.4.1 题目浏览 ...................................... 37 5.4.2 进入做题 ...................................... 37 5.4.3 提交
代码 ...................................... 38 5.4.4 查看状态 ...................................... 38 XXX2011 5.4.5 查看提交
代码 .................................. 39 5.4.6 重新编辑提交
代码 .............................. 39 5.4.7 查看错误信息 .................................. 40 5.4.8 查看排名 ...................................... 40 5.5 用户相关 ........................................ 41 5.5.1 更改个人信息 .................................. 41 5.6 参加比赛 ........................................ 41 5.7 管理员功能 ...................................... 42 5.7.1 增加特殊权限 .................................. 42 5.7.2 手工增加题目 .................................. 43 5.7.3 添加比赛 ...................................... 43 5.7.4 改变用户密码 .................................. 44 6 测试及优化 ....................................... 45 6.1系统测试 ........................................ 45 6.1.1从测试者来分 .................................. 45 6.1.2从测试内容来分 ................................ 45 7 运行与维护 ....................................... 46 7.1运行所需的环境 .................................. 46 7.2实施相关 ........................................ 46 XXX2011 7.3日常维护 ........................................ 46 总 结 .............................................. 47 参考文献 ............................................ 48 附 录 .............................................. 49 谢 辞 .............................................. 52 XXX2011 1 绪论 ACM/ICPCACM International Collegiate Programming Contest国际大学生程序设计竞赛是由历史悠久、颇具权威性的组织ACMAssociation for Computing Machinery国际计算机协会主办的是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛项目其目的是促进大学生提高运用
计算机分析问题和解决
问题的能力。
ACM在线评判系统是该项比赛的评判事务处理平台是一个基于B/S结构的多用户在线系统允许用户在线提交自己的解题
代码 系统自动编译运行给出裁判结果并根据用户解题数和用时排出名次。
1.1 开发背景 中国大陆高校从1996年开始参加ACM/ICPC亚洲预赛清华大学是中国较早参加国际大学生程序设计竞赛的大学之一。
在2001-2002 ACM/ICPC Asia Regional Contest Shanghai哈尔滨工业大学工业大学获得学校第八的成绩。
XXX市作为珠三角区域的
经济强市市政府和各大企业一向非常重视科技人才的培养和引进。
在XXX市计算机学会的建议和组织运作下在政府相关部门和金山、远光等知名软件企业的大力支持下“ACM/ICPCXXX区域赛”于2008年4月正式举办。
1.2 项目概述 ZHBIT ACM Online Judge SystemPHP 在线判题系统是一个针对广大对ACM/ICPC感兴趣的同学们进行训练的网站主要提供程序设计练习和比赛平台。
在网站中把从网上收集、同学们共享的题目、ACM集训队训练所使用的题库或老师给出的题目发布到网站上同时把相应的测试数据即标准输入和输出保存在相应的位置。
然后当同学们针对相应的题目编写了程序以后可以在ZHBIT Online Judge System 上将程序
代码以相应题号为准提交到服务器端。
服务器接收到提交信息后将该程序的题号、提交时间、相应题目的信息等传送到后台 Linux测试平台后台将根据这些信息对同学们提交上来的程序
代码进行编译执行并做出相应判断将测试结果返回相应的数据库。
在测试过程中编译执行和比较答案过程均为黑盒操作。
程序
代码提交后提交结果将在网页上显示出来同时会有相应的排名数据以及解题信息。
除平常的训练之外将不定时根据需要举行程序设计竞赛如月赛、季赛、XXX2011 校内程序竞赛等。
在程序设计竞赛中将会有一个相应的固定时间段根据参赛者在此时间段内做出的题数、罚时提交次数等进行排名通过排名可获得反映参赛者编程水平的信息。
同时根据校内同学编程水平的不同层次将会有相关的一些指引和教程。
用户在使用过程中有任何问题可以通过论坛或者邮件方式将问题反馈给相应的
系统维护人员和老师。
1.3 开发工具 针对ACM/ICPC的在线评测系统”是基于Internet 的 B/S模式的.客户端可以直接在浏览器中粘贴相关题目的源
代码服务器接受到源
代码之后将记录存入数据库然后编译执行并验证源
代码的正确性.服务器端是采用的UBUNTU 10.10下的Apache2.0
PHP5.0 MYSQLGCC的组合
方案.下面对用到的相关工具做简要介绍. 1.3.1 Linux Linux最早是由计算机业余爱好者Linus Torvalds当时他是芬兰赫尔辛基大学的学生编写的。
他的目的是想设计一个代替Minix是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教
程序的操作系统这个操作系统可用于x86系列CPU的个人计算机上并且具有Unix操作系统的全部功能。
由于Linux是一套自由软件用户可以无偿地得到它及其源
代码可以无偿地获得大量的应用程序而且可以任意地修改和补充它们。
这对用户
学习、了解Unix操作系统的内核非常有益。
学习和使用Linux能为用户节省一笔可观的资金。
Linux是目前唯一可免费获得的、为PC机平台上的多个用户提供多任务、多进程功能的操作系统这是人们要使用它的主要原因。
就PC机平台而言Linux提供了比其他任何操作系统都要强大的功能Linux还可以使用户远离各种商品化软件提供者促销广告的诱惑再也不用承受每过一段时间就升级之苦因此可以节省大量用于购买或升级应用程序的资金。
1.3.2 Apache Apache是世界排名第一的Web服务器根据Netcraftwww.netsraft.co.uk所作的调查世界上百分之五十以上的Web服务器在使用Apache。
1995年4月最早的Apache0.6.2版由Apache Group公布发行。
Apache Group是一个完全通过Internet进行运作的非盈利机构由它来决定Apache Web服务器的标准发行版中应该包含哪些内容.准许任何人修改隐错提供新的特征XXX2011 和将它移植到新的平台上以及其它的工作。
当新的
代码被提交给Apache Group时该团体审核它的具体内容进行测试如果认为满意 该
代码就会被集成到Apache的主要发行版中。
Apache 的特性 1 几乎可以运行在所有的计算机平台上. 2 支持最新的HTTP/1.1协议 3 简单而且强有力的基于文件的配置HTTPD.CONF. 4 支持通用网关接口CGI 5 支持虚拟主机. 6 支持HTTP认证. 7 集成PERL. 8 集成的代理服务器 9 可以通过WEB浏览器监视服务器的状态 可以自定义日志. 10 支持服务器端包含命令SSI. 11 支持安全SOCKET层SSL. 12 具有用户会话过程的跟踪能力. 13 支持FASTCGI 14 支持JAVA SERVLETS. 1.3.3
PHP PHP是一种功能强大的语言和解释器无论是作为模块方式包含到
web服务器里安装的还是作为单独的CGI程序程序安装的都能访问文件、执行命令或者在服务器上打开链接。
PHP是特意设计成一种比用Perl或C语言所编写的CGI程序要安全的语言。
而且
PHP 是
免费的他和免费的MySQLApache搭配被称作黄金组合而且
PHP是开放源
代码的跨平台是asp.net不能抗衡的。
在服务器领域大概有85是用Linux 做系统很少有企业用Windows第一安全性差第二成本高。
因此
PHP被广泛使用。
1.3.4 MYSQL MysQL是瑞典的T.c.X公司负责开发和维护的它是一个真正的多用户、多线程SQL数据库服务器。
MysQL是以一个客户机服务器结构实现其功能的它由一个服务器守护程序
mysqld和很多不同的客户程序和库组成。
SQL是一种标准化的语言它使得存储、更新和存取信息更容易。
MySQL主要特点是快速、健壮和易用。
XXX2011 它使用的核心线程是完全多线程支持多处理器。
有多种数据类型1、2、3、4、和8字节长度自有符号无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、和ENUM类型。
可以在同一
查询中混合来自不同数据库的表。
支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
所有列都有缺省值。
你可以用INSERT插入一个表列的子集那些没用明确给定值的列设置为他们的缺省值。
MySQL可以
工作在不同的平台上。
支持C、C、
Java、Perl、
PHP、Python和TCL API。
1.3.5 GCC Linux系统下的GCCGNU C Compiler是GNU推出的功能强大、性能优越的多平台编译器是GNU的代表作品之一。
GCC是可以在多种硬体平台上编译出可执行程序的超级编译器其执行效率与一般的编译器相比平均效率要高2030。
GCC编译器能将C、C语言源程序和目标程序编译、连接成可执行文件。
1.4 整体架构 本系统采用基于WEB的B/S/DBMS三层结构模式如图1-1所示 Linux
PHP Apache Online Judge MySQL XXX2011 1.4.1 B/S结构的概念 B/SBrowser/Server结构即浏览器和服务器结构。
它是随着Internet技术的兴起对C/S结构的一种变化或者改进的结构。
在这种结构下用户工作界面是通过WWW浏览器来实现部分事务逻辑在前端Browser实现而主要事务逻辑在服务器端Server实现。
这样就大大简化了客户端电脑载荷减轻了系统维护与升级的成本和工作量降低了用户的总体成本TCO。
以目前的技术看局域网建立B/S结构的网络应用并通过Internet/Intranet模式下数据库应用相对易于把握、成本也是较低的。
它是一次性到位的开发能实现不同的人员从不同的地点以不同的接入方式比如LAN WAN Internet/Intranet等访问和操作共同的数据库它能有效地保护数据平台和管理访问权限服务器数据库也很安全。
在跨平台语言出现之后B/S结构管理
软件更是方便、快捷、高效。
1.4.2 B/S结构的优势 维护和升级方式简单。
目前软件系统的改进和升级越来越频繁B/S结构的产品明显体现着更为方便的特性。
B/S架构的软件只需要管理服务器就行了所有的客户端只是浏览器不需要开发者或系统管理员做任何的维护。
无论用户的规模有多大有多少分支机构都不会增加任何维护升级的工作量所有的操作只需要针对服务器进行如果是异地只需要把服务器连接专网即可实现远程维护、升级和共享。
所以客户机越来越“瘦”而服务器越来越“胖”是将来信息化发展的主流方向。
今后软件升级和维护会越来越容易而使用会越来越简单这对用户人力、物力、时间、费用的节省是显而易见和惊人的。
因此维护和升级革命的方式是“瘦”客户机“胖”服务器。
成本降低选择更多。
大家都知道时至今日不管什么操作系统浏览器都成为了标准配置客户端不需要有较高的配置即可流畅使用。
B/S结构不指定客户端操作系统不指定客户端浏览器用户可以有更多的选择。
XXX2011 1.4.3 B/S结构的劣势 应用服务器运行数据负荷较重。
由于B/S架构管理软件只安装在服务器端Server上网络管理人员只需要管理服务器就行了用户界面主要事务逻辑在服务器Server端完全通过WWW浏览器实现极少部分事务逻辑在前端Browser实现所有的客户端只有浏览器
网络管理人员只需要做硬件维护。
但是应用服务器运行数据负荷较重一旦发生服务器“崩溃”等问题后果不堪设想。
因此我们在设计B/S结构应用程序时应充分考虑服务器负载能力尽量以良好的开发思维、稳健的架构和优秀的
代码来减轻服务器负担。
鉴于B/S结构的相对劣势许多单位都备有数据库存储服务器以防万一。
1.4.4 前端Web系统模型 本系统采用Dreamweaver制作基本框架和修饰页面利用
PHP动态网页编程语言与MYSQL网络数据库的完美结合进行Web应用程序的开发。
具体实现流程可以概括为以下四步 1 在MYQL数据库服务器上可借助PHPmyadmin等软件的可视化接口进行数据库操作创建系统所需数据表 2 构造
PHP基本操作包含数据库访问方法 3 编写
PHP主程序。
开发平台是window XP操作系统运行平台是Ubuntu10.10操作系统。
XXX2011 1.5 源程序黑盒评测 本系统采用黑盒测试原理采用B/S模式架构系统客户端通过浏览器发送源程序给评测服务器而评测服务器则完成对源程序的评测工作并返回评测结果给客户端评测的所有数据都存储在数据库中。
黑盒测试Bl.