【PHP开源代码栏目提醒】:网学会员为需要PHP开源代码的朋友们搜集整理了基本Judge Online 的C语言在线实验系统--毕业设计 - 毕业设计相关资料,希望对各位网友有所帮助!
目 录摘 要 ................................................. IABSTRACT ............................................. II第 1 章 绪论 ............................................. 1 1.1 课题背景 .......................................... 1 1.2 国内外研究现状 .................................... 2 1.3 本课题研究的意义 .................................. 3第 2 章 系统开发工具与主要技术简介 ........................ 4 2.1 系统开发工具 ...................................... 4 2.2 Online Judge 在线实验系统开发主要技术................ 4第 3 章 系统分析与数据库设计 ............................. 10 3.1 需求分析 ......................................... 10 3.2 实验系统评判功能 ................................. 12 3.3 数据库设计 ....................................... 13第 4 章 系统整体设计..................................... 17 4.1 系统功能框架 ..................................... 17 4.2 界面布局设计 ..................................... 19第 5 章 系统详细设计..................................... 21 5.1 前台设计 ......................................... 21 5.2 后台设计 ......................................... 27第 6 章 编译运行与系统测试 ............................... 32 6.1 安装命令 ......................................... 32 6.2 系统运行 ......................................... 34 6.3 系统测试 ......................................... 35结 论 ............................................... 38致 谢 ................................................ 39参考文献 ............................................... 40附 件 ................................................ 41 第1章 绪 论1.1 课题背景1.1.1 Online Judge 系统 Online Judge 系统(简称 OJ)是一个在线的判题系统。
用户可以在线提交程序多种程序(如 C、C、Pascal)源
代码,系统对源
代码进行编译和执行,并通过预先设计的测试数据来检验程序源
代码的正确性。
一个用户提交的程序在 Online Judge 系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。
用户程序执行的结果将被 Online Judge 系统捕捉并保存,然后再转交给一个裁判程序。
该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据 是否 满足一 定的 逻辑条 件。
最后 系统返 回给 用户 一个状 态 :通过( AcceptedAC ) 答 案 错 误 Wrong AnswerWA 、 超 时 Time Limit 、ExceedTLE 、 超 过 输 出 限 制 ( Output Limit ExceedOLE 、 超 内 存(Memory Limit ExceedMLE) 、格 、运行时错误(Runtime ErrorRE) 式错误(Presentation ErrorPE、或是无法编译(Compile ErrorCE)并 返 ,回程序使用的内存、运行时间等信息。
Online Judge 系统最初使用于 ACM-ICPC 国际大学生程序设计竞赛和OI 信息学奥林匹克竞赛中的自动判题和排名。
现广泛应用于世界各地高校学生程序设计的训练、参赛队员的训练和选拔、各种程序设计竞赛以及数据结构和算法的学习和作业的自动提交判断中。
1.1.2 在线实验系统 随着 Internet 的迅速发展和广泛普及网络化教学代表了教育改革的一个发展方向已经成为现代教育的一个特征并对教育的发展形成新的推动力。
远程教育成为现代教育技术未来发展的重要方向之一,在线实验作为远程教育的一个子系统也成为一个重要的研究领域。
Internet 技术的发展使得实验操作的技术手段和载体发生了革命性的变化,Internet 的开放性、分布性的特点和基于 Internet 的巨大的计算能力使得实验操作突破了时间和空间的限制。
与传统实验模式相比,在线实验具有无可比拟的优越性,它可以将传统实验过程中的老师布置实验任务、实验题目告知、实验登记签到、实验评判归档等各个环节缩小到一至两个环节,几乎屏蔽了所有人工直接干预实验任务的可能性,不但能够节约大量的时日、人力、物力与财力,而且还可以大幅度增加实验成绩的客观性和公正性,大大提高了实验效率。
传统的实验方式一般要经过老师布置实验内容、学生进行实验、老师检验结果等过程。
对于一些课程来说,随着
课程和学生数量的增加,实验工作量将会越来越大,并且其工作十分烦琐和非常容易出错。
在线实验系统课题产生的背景是当今教育信息化的趋势及我国高校教育信息化系统的建设,目的是充分利用学校现有的计算机软、硬件和网络资源实现无纸化实验以避免传统实验安排时间的不足。
与传统实验模式相比,在线实验渗入了更多的技术环节,对实现安全性的途径、方法也提出了更高的技术要求。
通过 Internet 来实现在线实验,是现代教育技术的一个具体实现,具有很重要的现实意义。
可以实现教育和实验分离以及实验任务工作的全自动化管理,可以有效利用校园网的软硬件资源,使其发挥最大效力,更好的为学校的教学、科研、管理服务,可以大规模的实行实验,实现实验的客观性、公证性,自动化评测可以减轻实验老师的工作强度。
在线实验系统是传统实验的延伸,它可以利用网络的无限广阔空间,随时随地的对学生进行实验知道,加上 Web 数据库技术的利用,大大简化了传统实验的过程。
本文以 Internet 为平台研究了基于 Judge Online 在线实验系统的设计与开发,包括系统需求分析和系统功能设计以及数据库设计。
重点阐述了用户
注册模块、用户登录模块、在线实验模块、实验内容管理模块、实验评测模块、实验成绩管理模块的
设计。
计算机教育是大学教育的极其重要的组成部分,为此我们搭建了这个在线实验系统,学生可以在服务器上选择题目,找到相应的算法,并编码提交,服务器给以评测,学生在此过程中可以训练编程能力,算法等。
本设计旨在提供一个 C/C、JAVA 等程序训练的平台也为希望提高计算机程序设计能力的同学提供一个练习的场所。
1.2 国内外研究现状 现在已有很多高校采用由计算机进行在线实验评判的方式来对学生的
作业、实验等进行实验考核。
但更多的情况下是学生的编程作业通过 FTP ,Email等方式提交给老师后,由老师直接对程序以及程序的相关文档进行阅读,采用计算机对程序直接进行评判还不是很普遍。
总的来说,在对编程实验的提交进行后处理方面已经有了一定程度的研究,而且与此课题相关的一些技术,像对程序的后处理在 ACM 等领域已经普遍运用。
已有相当多的高校建立了实验题库和平台。
大部分平台是基于 ACM 程序设计竞赛规则而开发的,有的平台是基于程序设计题目中的“得分点”而设计的。
1.3 本课题研究的意义 现阶段,学校与社会上的各种实验大都采用传统的实验方式。
随着信息技术与
网络的迅速发展,基于网络的应用越来越受到人们的重视。
基于 WEB 的在线实验方式成为一种新的实验方式,可以减轻教师的工作负担,提高
工作效率。
目前实验时间、地点安排完全归于实验室的安排,不具有普及性和通用性,对于
程序编程也没有比较完善的解决方案。
基于上述考虑,Online Judge 在线实验系统。
系统以高效的事务处理为目标,实现系统的可复用性,可维护性,可扩展性。
对程序语言类实验提供了公平的评判算法和评判规则。
系统很大程度上促进学生的实践能力,引导学生认真进行自我总结和自我评定,给个人充分展现成绩、提升自我的机会,使动手能力考核结果充分发挥其激励功能,提高学校的办学水平,促进高校教学改革的发展,特别是学生的动手能力的训练。
Online Judge 在线实验系统是一个基于程序设计竞赛的实验系统平台。
也可用作程序设计的练习系统,考试系统。
本系统实现对用户提交的源程序( C、C、Java、pascal )自动进行编译、连接、运行、测试,然后给出实验评判结果。
Online Judge 的实现,能很快地运用到现实的学习生活中去,有效的考核学生的真实水平,促使学生更好的学习计算机知识,强化学生的实践能力,给学生和老师带来立竿见影的效果;极大地提高了学生和老师双方面的效率,减轻了老师在实验教学管理上的负担。
因此,开发这样一个面向程序设计语言初学者的 Online Judge 在线实验系统,是很有实际意义的。
第 2 章 系统开发工具与主要技术简介2.1 系统开发工具 目前 Internet 上流行 的网 站构 架方 式是 LAMP( LinuxApacheMySQLPHP)和 LNMP(LinuxNginMySQLPHP即使用 Linux作为操作
系统,Apache 和 Nginx 作为 Web 服务器,MySQL 作为数据库,
PHP 作为服务器端脚本解释器。
针对 Online Judge 的在线实验系统是基于Internet 的 B/S 模式的.客户端可以直接在浏览器中粘贴相关题目的源
代码服务器接受到源
代码之后将记录存入数据库然后编译执行并验证源
代码的正确性.服务器端是采用的 ubuntu11.10 下的 ApachePHP MYSQLGCC的组合
方案.2.2 Online Judge 在线实验系统开发主要技术2.2.1 开发环境 Ubuntu 11.10 Linux 最早是由计算机业余爱好者 Linus Torvalds(当时他是芬兰赫尔辛基大学的学生)编写的。
他的目的是想设计一个代替 Minix(是由一位名叫Andrew Tannebaum 的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于 x86 系列 CPU 的个人
计算机上,并且具有 Unix 操作系统的全部功能。
由于 Linux 是一套自由软件,用户可以无偿地得到它及其源
代码,可以无偿地获得大量的应用程序,而且可以任意地修改和补充它们。
这对用户学习、了解 Unix 操作系统的内核非常有益。
学习和使用 Linux,能为用户节省一笔可观的资金。
Linux 是目前唯一可免费获得的、为 PC 机平台上的多个用户提供多任务、多进程功能的操作系统,这是人们要使用它的主要 就原因。
PC 机平台而言,Linux 提供了比其他任何操作系统都要强大的功能,Linux 还可以使用户远离各种商品化软件提供者促销广告的诱惑,再也不用承受每过一段时间就升级之苦,因此,可以节省大量用于购买或升级应用程序的资金。
Linux 是一种自由和开放源码的类 Unix 操作系统。
目前存在着许多不同的 Linux但它们都使用了 Linux 内核。
Linux 可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。
Linux 是一个领先的操作系统,世界上运算最快的 10 台超级计算机运行的都是 Linux 操作系统。
严格来讲, Linux 这个词本身只表示Linux 内核,但实际上人们已经习惯了用 Linux 来形容整个基于 Linux 内核,并且使用 GNU 工程各种工具和数据库的操作系统。
Linux 得名于计算机业余爱好者 Linus Torvalds。
在线实验系统是基于 ubuntu 11.10 的 Linux 平台下开发的。
Ubuntu 是一个以桌面应用为主的 Linux 操作系统, Ubuntu 11.10 简介:Ubuntu 的开发者与 Debian 和 GNOME
开源社区互相协作,因此其桌面环境采用了 GNOME 的最新版本,并且与 GNOME 项目同步发布。
Ubuntu 十分注重系统的安全性,其采用 sudo 工具,所有系统相关的任务均需使用此指令,并输入密码,比起传统以登入系统管理员帐号进行管理工作有更佳的安全性。
Ubuntu 亦注重系统的可用性,其设计为在标准安装完成后即可以让使用者投入使用的操作系统。
举例来说,完成安装后,使用者不用另外安装网页浏览器、办公室软件、多媒体软件与绘图软件等日常应用的软件,因为这些软件已被安装,并可随时使用。
Ubuntu 不仅仅使用与 Debian 相同的 deb
软件包格式,还和 Debian 社区有著密切联系,其会直接和实时地向Debian 社区作出贡献,而不是只在发布时宣布一下。
许多 Ubuntu 的开发者也负责为 Debian 的关键软件包作出维护。
2.2.2 网站设计语言
PHP 现在主流的网站编写语言有 ASP、
JSP、
PHP、ASP.
NET。
本系统采用
PHP 语言进行网站的设计,下面对
PHP 语言做简单的介绍。
PHP 简介:
PHP,是英文 超级文本预处理语言 Hypertext Preprocessor的缩写。
PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML
文档的脚本语言,语言的风格有类似于 C 语言,被广泛的运用。
PHP独特的语法混合了 C、Java、Perl 以及
PHP 自创的语法。
它可以比 CGI 或者 Perl 更快速的执行动态网页。
PHP 做出的动态页 用面与其他的编程语言相比,
PHP 是将程序嵌入到 HTML
文档中去执行,执行效率比完全生成
HTML 标记的 CGI 要高许多;
PHP 还可以执行编译后
代码,编译可以达到加密和优化
代码运行,使
代码运行更快。
PHP 具有非常强大的功能,所有的 CGI 的功能
PHP 都能实现,而且支持几乎所有流行的数据库以及操作系统。
最重要的是
PHP 可以用 C、C进行程序的扩展!
PHP 特性: (1)开放的源
代码:所有的
PHP 源
代码事实上都可以的到。
(2)
PHP 是
免费的:和其它技术相比,
PHP 本身是免费的。
(3)
PHP 的快捷性:程序开发快,运行快,技术本身学习快。
嵌入于HTML:因为
PHP 可以被嵌入于 HTML 语言,它相对于其他语言,编辑简单,实用性强,更适合初学者。
(4)跨平台性强:由于
PHP 是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS 下。
(5)效率高:
PHP 消耗相当少的系统资源。
(6)图像处理:用
PHP 动态创建图像。
(7)面向对象:在
PHP4
PHP5 中,面向对象方面都有了很大的改进,现在
PHP 完全可以用来开发大型商业程序。
(8)专业专注:
PHP 支持脚本语言为主,同为类 C 语言。
2.2.3 数据库 MySQL 现在主流的数据库有 Access,Oracle,MySQL,
sqlserver 2008,在线式样系统采用的是 MySQL 数据库,下面对 MySQL 数据做相应的简介: MySQL 是一种关联数据库
管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。
这样就增加了速度并提高了灵活性。
MySQL 的 SQL“结构化查询语言”。
SQL 是用于访问数据库的最
常用标准化语言。
MySQL 软件采用了 GPL( GNU 通用公共许可证) 。
由于其体积小、速度快、总体拥有成本低,尤其是开放
源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
它使用的核心线程是完全多线程,支持多处理器。
有多种列类型:1、2、3、 和 8 字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、 4、VARCHAR 、 TEXT 、 BLOB 、 DATE 、 TIME 、 DATETIME 、TIMESTAMP、YEAR、和 ENUM 类型。
它通过一个高度优化的类库实现SQL 函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。
没有内存漏洞。
全面支持 SQL 的 GROUP BY 和 ORDER BY 子句,支持聚合函数COUNT、COUNTDISTINCT、AVG、STD、SUM、MAX和 MIN。
你可以在同一
查询中混来自不同数据库的表。
支持 ANSI SQL 的 LEFT 0UTER JOIN 和 ODBC。
所有列都有缺省值。
你可以用 INSERT 插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
MYSQL 可以工作在不同的平台上。
支持 C、C、
Java、Perl、
PHP、Python 和 TCL API。
MySQL 系统特性: (1)使用 C 和 C编写,并使用了多种编译器进行测试,保证源
代码的可移植性 (2 )支持 AIX、Free
BSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统 (3)为多种编程语言提供了 API。
这些编程语言包括 C、C、Python、Java、Perl、
PHP、Eiffel、Ruby 和 Tcl 等 (4)支持多线程,充分利用 CPU 资源 (5)优化的 SQL 查询算法,有效地提高查询速度 (6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的 Shift_JIS 等都可以用作数据表名和数据列名 (7)提供
TCP/IP、ODBC 和 JDBC 等多种数据库连接途径 (8)提供用于管理、检查、优化数据库操作的管理工具 (9)可以处理拥有上千万条记录的大型数据库 (10)支持多种存储引擎 与其他的大型数据库例如 Oracle、DB2、
SQL Server 等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster 的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。
对于一般的个人使用者和中小 型企业来 说, MySQL 提供的 功能已 经绰绰有 余,而 且由于MySQL 是开放源码软件,因此可以大大降低总体拥有成本。
2.2.4 WEB 服务器 Apache Apache 简介: Apache 是世界使用排名第一的 Web 服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web 服务器端软件之一。
本来它只用于小型或试验 Internet 网络,后来逐步扩充到各种 Unix 系统中,尤其对 Linux 的支持相当完美。
Apache 有多种产品,可以支持 SSL 技术,支持多个虚拟主机。
Apache 是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个 Apache Web 站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
到目前为止 Apache 仍然是世界上用的最多的 Web 服务器,市场占有率达 60左右。
世界上很多著名的网站如 Amazon、Yahoo、W3Consortium、Financial Times 等都是 Apache 的产物,它的成功之处主要在于它的源
代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的 Unix、Windows、Linux 系统平台上)以及它的可移植性等方面。
Apache Web 服务器软件的特性:(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.2.2.5 GCC Linux 系统下的 GCC(GNU C Compiler) GNU 推出的功能强大、 是性能优越的多平台编译器,是 GNU 的代表作品之一。
GCC 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 2030。
GCC 编译器能将 C、C语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,GCC 将生成一个名为 a.out 的文件。
在 Linux 系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。
而 GCC 则通过后缀来区别输入文件的类别。
虽然我们称 GCC 是 C 语言的编译器,但使用GCC 由 C 语言源
代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理也称预编译, Preprocessing 、编译Compilation、汇编Assembly和连接Linking.命令 GCC 首先调用 cpp进行预处理,在预处理过程中,对源
代码文件中的文件包含include、预编 译语句如宏定义 define 等进行分析。
接着调用 cc1 进行编译,这个阶段根据输入文件生成以.o 为后缀的目标文件。
汇编过程是针对汇编语言的步骤,调用as 进行工作,一般来讲,.S 为后缀的汇编语言源
代码文件和汇编、.s 为后缀的汇编语言文件经过预编译和汇编之后都生成以.o 为后缀的目标文件。
当所有的目标文件都生成之后,GCC 就调用 ld 来完成最后的关键性工作,这个阶段就是连接。
在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。
第 3 章 系统分析与数据库设计3.1 需求分析3.1.1 系统功能分析 该系统设计的主要目的是希望能给 C/C、JAVA 等程序设计实验提供一学习和操练的平台, 真正实现一个能高效管理和实现在线实验的稳定的系统。
结合学习需要及程序设计竞赛自身的特点系统具有以下几点需求:(1)为了让学生更清楚的了解自身掌握知识的情况,系统需要为每个学生提供专门的空间用来存放实验任务的相关记录及完成实验情况的统计。
(2)为了给学生提供一个全面且有价值的实验操练平台,在线实验系统需要有大量的实验题目,主要以 C 语言编程实验为主。
最好要有相应的知识点链接及参考解题思路帮助学生学.