1、 本科 毕业 设计 (论文 ) (二零 届) 在线判题系统设计与实现 所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 - 1 - 摘要: 计算机编程学习过程中,单单只接受老师所传授的知识是不够的 ,而要在课后自己进行编程练习和巩固老师教的知识。而 Online Judge系统很好的为我们提供了一个学习和练习的平台。它可以对程序原代码进行编译和执行,并通过预先设计的测试数据来检验程序原代码的正确性。 本课题结合计算机学科编程语言教学中的需求,利用 Visual Studio 2010 功能强大的集成开发环境,使用 ASP.NET 和 SQL Server
2、后台数据库,开发了一个能够实现C/C+程序在线自动评判的网上编程学习系统。系统包括前台管理模块和后台判定模块。本系统很好的为用户提供了一个学习编程、掌握编程与编程交互的平台。 关键词: 程序设计 ;在线判题 ;API;编译器 - 2 - Design and implementation of the Online Judge Abstract : Computer programming learning process, just only accepted the knowledge taught by the teacher is not enough, but to practice
3、 program and the consolidation of their teachers knowledge in the after-school. The Online Judge system provides a good platform for learning and practicing. It can compile the program and execute source code, and test data through pre-designed to test the correctness of program source code. This su
4、bject combines the needs of learning computer programming, using Visual Studio 2008 which provides a powerful integrated development platform, ASP.NET and SQL Server 2005, to build this E-Learning system which can judge C/C+ programs. This system is divided into two parts: Front Management Module an
5、d Background Judgment Module. Key words: Program; Online Judge ; API ; Compiler - 3 - 目 录 1 引言 . 1 1.1 课题背景、意义 . 1 1.2 系统开发语言 C+ . 1 1.3 相关技术 简介 . 3 1.3.1 .Net简介 . 3 1.2.3 Visual Studio简介 . 4 1.2.3 SQL server 简介 . 4 2 研究的基本内容及解决方法 . 错误 !未定义书签。 2.1课题 的基本内容 . 错误 !未定义书签。 2.2 要解决的技术难点及解决方法 . 错误 !未定义书签。
6、2.2.1 登陆信息管理 . 错误 !未定义书签。 2.2.2 题库的设计实现 . 错误 !未定义书签。 2.2.3 编译的实现 . 错误 !未定义书签。 3 系统 总体设计与目标 . 10 3.1 系统 设计的原则 . 错误 !未定义书签。 3.2 系统 设计 方法 . 12 3.3 系统 结构 . 8 3.4 系统 结构图 . 8 3.1 系统 设计目标 . 9 4 系统 详细设计 . 错误 !未定义书签。 4.1 用户注册与登录 . 错误 !未定义书签。 4.2 题库的具体实现 . 11 4.3 后台程序算法的实现与分析 . 12 4.4 判题的实现 . 错误 !未定义书签。 4.5 系
7、统 测试 . 21 结束语 . 23 致谢 . 24 参考文献 . 25 1 1 引言 1.1 课题背景、意义 随着信息化进程的飞速发展以及计算机技术的普及,高等院校开设了越来越多的计算机课程。和传统的课程比较,计算机课程具有实践性很强的特点。学生要学好这些课程不但要认真学习理论知识,还需要大量的实践训练。例如, C 语言课程的学习,就需要编写大量的程序,才能够积累足够的经验,真正掌握程序设计的方法,编写出正确、高效的程序。对传统课程的考核多采用笔试的方式,但是,对于计算机方面的课程,特别是程序设计语言类课程这是不够的,因为它并不能促使学生在平时的学习中加强实践的锻炼。如何对这些课程进行有效的
8、考核,成为一个长期工作在第一线的计算机教育工作者反复思考和不断探索的问题 1。 在目前的教学方式中,多数高等院校基本上还是采用基于传统方式的笔试来考核学生的计算机课程水平,然后在此基础上稍 作补充。在上机实践考试中,学生采用 FTP, Email,甚至手写的方式提交编程作业,老师需要对他们的作业进行一一批阅,相当多的时候,任课教师从学生处得到的是一些低效的,甚至不能运行通过的源代码,可是却要花费不少时间来判断分析学生程序到底在什么地方出错,然后给出相应的得分。这需要老师和学生花费很多的精力,效果也不是很好。学生更无法得知自己所编写的程序存在哪方面的问题,因而不能有效及时地进行更正 2。而 On
9、line Judge可以自动批阅作业并给出成绩,并且直接统计学生作业的提交情况,以及成绩的登记。这给老师带来了很大的方便,同时学生也可以通过 Online Judge直接查询答题状况。 采用 Online Judge 后,老师可以通过对参数进行设置,限制学生提交的编程作业的类型、文件大小、运行时间长短和空间大小。学生在提交编程作业时能够很快的得到作业是否正确的反馈。一方面, Online Judge 可以对作业进行自动编译,检查出程序是否存在语法错误;另一方面,它还能验证程序是否能得到正确结果,以及所花费的代价(时间和空间上的)。根据后处理的结果与相应的参数设置, Online Judge 能
10、自动给出学生此次编程作业 的成绩。这大大地减小了学生提交错误程序的概率,还能给出与程序相应的成绩。当然老师也可以进行再次审查,对学生的作业提出评语,修改成绩等。这种方式完全模拟了使用程序设计语言解决实际问题的过程,编写程序、不断测试修改、根据结果反馈修改程序 2。这样的考试方式对学生的学习过程具有很好的指导作用。与此同时,还消除了老师在检查作业的过程中的主观因素,增加了学生之间的公平性。 Online Judge 的实现,能很快地运用到现实的学习生活中去,有效的考核学生的真实水平,促使学生更好的学习计算机知识,强化学生的实践能力, 给学生和老师带来立竿见影的效果;极大地提高了学生和老师双方面的
11、效率,减轻了老师在教学管理上的负担 3;还使学生将来能更好地适应快速发展的信息化时代;进一步发挥出计算机网络对当今教育领域甚至其他行业的突出贡献。2 1.2 系统开发语言 C+ 系统采用的主要开发技术是 C+。 C+这个词在中国大陆的 程序员 圈子中通常被读做 “C加加 ”,而西方的程序员通常读做 “C plus plus”, “CPP”。 它是一种使用非常广泛的 计算机编程语言 。 C+是一种静态 数据类型 检查的,支持多重编程范式的通用 程序设计 语言。它支持过 程化程序设计、 数据抽象 、面向对象程序设计、制作图标等等 泛型 程序设计等多种 程序设计风格 。 C语言之所以要起名为 “C”
12、,是因为它 是主要参考那个时候的一门叫 B的语言,它的设计者认为 C语言是 B语言的进步,所以就起名为 C语言;但是 B语言并不是因为之前还有个 A语言,而是 B语言的作者为了纪念他的妻子,他的妻子名字的第一个 字母 是 B; 当 C语言发展到顶峰的时刻,出现了一个版本叫 C with Class,那就是 C+最早的版本,在 C语言中增加 class关键字 和类,那个时候有很多版本的 C都希望在 C语言中增加类的概念;后来 C标准委员会决定为这个版本的 C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以 C语言中的 +运算符来体现它是 C语言的进步,故而叫 C+,成立了
13、C+标准委员会。 美国 AT&T贝尔实验室 的本贾尼 斯特劳斯特卢普( Bjarne Stroustrup)博士在 20世纪 80年代初期发明并实现了 C+(最初这种语言被称作 “C with Classes”)。一开始 C+是作为 C语言的增强版出现的,从给 C语言 增加类开始,不断的增加新特性。 虚函数 ( virtual function)、 运算符重载( operator overloading)、 多重继承 ( multiple inheritance)、 模板 ( template)、异常( exception)、RTTI、命名空间( name space)逐渐被加入标准。 199
14、8年 国际标准组织 ( ISO)颁布了 C+程序设计语言 的国际标准 ISO/IEC 1988-1998。 C+是具有国际标准的 编程语言 ,通常称作 ANSI/ISO C+。 1998年是 C+标准委员会成立的第一年,以后每 5年视实际需要更新一次标准,下一次标准更新原定是在2009年,目前我们一般称该标准 C+0x,但是由于对于新特性的争端激烈,除了在 Technical Report 1( tr1)中的新增修改被基本确定外,完整 的标准还遥遥无期。况且遗憾的是,由于 C+语言过于复杂,以及经历了长年的演变,直到现在( 2010年)都没有有一个编译器完全符合这个标准。 目前最符合和接近 C
15、+标准的编译器有为 GNU GCC 4.6.1 和 Visual Studio 2010 sp1 等。 另外,就目前学习 C+而言,可以认为他是一门独立的语言;他并不依赖 C语言,我们可以完全不学 C语言,而直接学习 C+。根据 C+编程思想 ( Thinking in C+)一书所评述的, C+与 C的效率往往相差在正负 5%之间。所以有人认为在大多数场合 C+ 完全可以取代 C语言 (然而我们在 单片机 等需要谨慎利用空间、直接操作 硬件 的地方还是要使用 C语言 )3。 1. C+设计成 静态类型、和 C 同样高效且可移植的多用途 程序 设计语言。 2. C+设计成直接的和广泛的支援多种
16、 程序设计风格 (程序化程序设计、资料抽象化、 面向对象程序设计 、泛型程序设计)。 3. C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。 4. C+设计成尽可能与 C 兼容,籍此提供一个从 C 到 C+的平滑过渡。 3 5. C+避免平台限定或没有普遍用途的特性。 6. C+不使用会带来额外开销的特性。 7. C+设计成无需复杂的程序设计环境。 1.3 相关技术简介 本系统是基于 Visual Web Developer和 SQL Server开发环境下的毕业设计过程管理系统,是以Visual Web Developer为前台开发工具,以 SQL Server 作为后台数
17、据库开发的 B/S(浏览器 /服务器)结构的应用系统。 1.3.1 .Net 简介 系统采用的主要开发技术是 .Net技术。 .Net首先是一个平台,它定义了一种公用语言子集( Common Language Subset, CLS),这是一种为符合其规范的语言与类库之间提供无缝集成的混合语。 .Net统一了编程类库,提供了对下一代网络通讯标准,可扩展标记语言( Extensible Markup Language, XML)的完全支持,使应用程序的开发变得更容易,更简单。 Microsoft.Net计划还将实现人机交互方面的革命,微软将在其软件中添加手写和语音识别的功能,让人们能够与计算机进
18、行更好的交流,并在此基础上继续扩展功能,增加对各种用户终端的支持能力。最为重要的是 .Net将改变因特网的行为方式:软件将变为服务。与 Microsoft的其他产品一样, .Net与 Windows平台紧密集成,并且与其他微软产品相比它更进一步:由于其运行库已经与操作系统融合在了一起,从广义上把它称为一个运行库也不为过。 .Net框架是 .Net平台的基础架构。其强大功能来自于公共语言运行时( Common Language Runtime, CLR)环境和类库。 CLR和类库紧密结合在一起,提供了不同系统之间交叉与综合的解决方案和服务。 .Net框架创造了一个完全可操控的、安全的和特性丰富的
19、应用执行环境。这不但使得应用程序的开发与发布更加简单,并且成就了众多种类语言间的无缝集成。 .Net的核心组件包括: 一组用于创建互联网操作系统的构件块,其中包括 Passport.Net(用于用户认证)以及用于文件存储的服务、用户首选项管理、日历管理以及众多的其他任务。 构建和管理新一代服务的基本结构和工具,包括 Visual Studio.Net、 .Net企业服务器、 .Net Framework和 Windows.Net。 能够启用新型智能互联网设备的 .Net设备软件。 .Net用户体验。 .Net结构包括: 虚拟对象系统( Visual Object System ,VOS)类型系
20、统 元数据 4 公用语言规范( Common Language Specification, CLS) 虚拟执行系统( Visual Execution System,VES) 简而言之, .Net是一种面向网络、支持各种用户终端的开发平台环境。微软的宏伟目标是让 .Net彻底改变软件的开发方式、发行方式、使用方式等等,并且不止是针对微软一家,而是面向所有开发商与运营商。 .Net的核心内容之一就是搭建第三代因特网平台,这个网络平台将解决网站之间的协同合作问题,从而最大限度地获取信息。在 .Net平台上,不同网站之间通过相关的协定联系在一起,网站之间形成自动交流,协同工作,提供最全面的服务。
21、1.3.2 Visual Studio 简介 Visual Studio 2008 Express Editions包括 Visual Web Developer 2008 Express Edition、Visual Basic 2008 Express Edition、 Visual C# 2008 Express Edition、 Visual C+ 2008 Express Edition和 Visual J# 2005 Express Edition。 Visual Web Developer是一种简便的、易学易用的开发工具,重点专注于使用 ASP.NET 3.5进行网络开发,构建动
22、态网络应用。通过具有易用的拖拽界面的可视化设计器、功能强大的代码编辑器、嵌入式数据控制和到 SQL Server的集成入口、以及对 Visual Basic, C#和 J#等多种语言的支持,创建并管理网络应用。 Visual Web Developer内置完备的开发套件,可以 快速进行 Web应用开发。通过所见即所得的拖拽界面就可以创建出美观、易用的网站。内置 60余种控件、上百段代码片断,可以幅度降低创建互动式 Web应用的时间。支持页面模板,从而统一地管理网页的排版与布局。通过 IntelliSense,可以更快的访问资源库和方法。 并 可以通过 Common Tasks和 Smart T
23、ags调用最常用的 Web开发功能。 此外 , Visual Web Developer 2008 Express 提供使用 ASP.NET 3.5开始构建网络应用的所有材料。它包括: 通过易用的拖拽界面使创建网络应用更加容易的 Visual Designer。 功能丰富的强大的代码编辑器,例如 Intellisense,它可以使编写代码和 HTML变得更加迅速。 使用嵌入式数据控制和到 Microsoft SQL Server 2005 Express的集成入口,快速创建数据驱动的网络应用。 支持多种语言: Visual Basic, C#和 J#。 使用嵌入式的 全功能的初学者套件来起步,
24、如 Personal Web Starter Kit。 1.3.3 SQL server 简介 Microsoft SQL Server 2005 Express Edition(SQL Server Express)是基于 Microsoft SQL Server 2005的数据库平台。它也可用于替换 Microsoft Desktop Engine(MSDE)。与 Microsoft Visual Studio 2005集成之后的 SQL Server Express使得能够轻松开发数据 驱动的应用程序,这些应用程序功能丰富、提供了增强的存储安全性并可快速进行部署。 Microsoft具有
25、高级服务的 SQL Server 2005 Express Edition(SQL Server Express) 是 SQL 5 Server Express的一个版本,包括新的图形管理工具、报告功能和基于文本的高级搜索功能。这两个 SQL Server Express版本可以根据协议重新进行分发。其中每个版本都可以充当客户端数据库和基本服务器数据库。 SQL Server 2005 Express Edition是适用于负载较小的网站的一种轻型数据库服务器。它作为可选组件提供,可以在 Visual Web Developer安装过程中进行安装。与 Microsoft Access相似,可以使用 SQL Server 2005特定的强大功能,将数据库作为独立的文件进行创建和部署。这为构建网站提供了不可估量的数据库功能和管理功能。 6 2 研究的基本内容及解决的问题 2.1 课题的基本内容 1. 用户注册的实现 。 2. 用户信息的管理 。 3. 题目的设计与算法实现 。 4. 建立数据库保存信息 。 5. 编译器的调用于实现 。 6. 调用后台源程序 。 7. 判断输入程 序的真确性 。 2.2 解决的问题 2.2.1 登录信息管理 表 1 权限信息表 表 2用户角色信息表