1、 毕业设计开题报告 计算机科学与技术 C/C+程序自动评判系统 一、 选题的背景、意义 1. 选题的历史背景 在信息时代的背景下,随着 Internet 的流行和普及,网络带宽增加,以及浏览器性能的增强,基于 B/S 架构的网络应用不断出现,功能也随着相应技术的发展而不断增强。继而出现了基于英特网学习的 E-Learning(电子学习)这种全新的学习方式,引发了一场英特网自学习的热潮。著名的 E-Learning 平台,如 Blackboard 和 Moodle,相继融入传统高校教育中,如今被称为“网络教育”,不仅丰富了高校的教学模式, 更让学生多了一种学习的途径的选择。 2007 年教育部办
2、公厅印发了教育部、 财政部关于教育质量工程的教高 2007 1 号文件 ,谈到“实践教学与人才培养模式改革创新 ”时,指出:“大力加强实验、 实践教学改革 ” ,“开展基于企业的大学生实践基地建设试点,拓宽学生的校外实践渠道 ” 1。计算机编程学习过程中,教师需要及时了解学生的学习情况,现有的教学方式难以满足需要,通过作业的方式了解的不够全面,而且不能做到精确掌握每个学生的学习情况。数据结构课程特点决定了实践教学环节是教学过程的必要组成部分,只有将实 践教学和课堂教学紧密结合,互为补充,才能在最大程度上帮助学生尽快掌握课程知识,并更好地应用于实践,能够编写出结构清楚、正确易读的程序,达到知识和
3、技能两方面的共同提高 2。 在线评测系统能够极大的减少教师花费在检查学生代码的正确性、算法性能、抄袭情况、作业的完成率和正确率统计方面的工作, 使教师有更多的时间与学生交流和答疑,给出比较合理的考核成绩,充分调动学生的学习兴趣和动力 3。 而像 Online Judge(在线评判)和 E-learning 这些新事物的出现,给传统的高校的计算机科学专业的教学方式带来了 新的可能。基于这些现状,决定设计并编写一个用于评判简单计算机语言程序的在线学习与考试系统,用于改善高校计算机系编程课程的教学。 2. 国内外研究现状 如今网络已经成为了一部分人生活中不可缺少的成分,网络给我们带来了越来越多的便利
4、。在国内,在线评判系统已经出现在 ACM 竞赛,和类似在线考试的竞赛系统(如网易的有道难题)等应用中,但是尚未全面普及至大部分高校的编程类课程教学。而在线学习已经成功应用于许多高校的外语类课程中,相对来说比较成熟,这也显示了在线评判系统的可行性以普及至高校编程类课程的可能性。 国内已经有相关方 面人士对在线评判系统做出了定义:在线评判系统是一个在线的判题系统。用户可以在线提交多种语言 (如 C、 C+、 Java)的源代码,系统对源代码进行编译和执行, 并通过预先设计的测试数据来检验程序源代码的正确性。在线评判系统最初使用于ACM/ICPC(国际大学生程序设计竞赛 )和 OI(信息学奥林匹克竞
5、赛 )当中,现广泛应用于世界各地高校学生程序设计的训练、参赛队员的训练和选拔、各种程序设计竞赛以及数据结构和算法的学习和作业的自动提交评判中 4。 在国外,已经出现了如 SPOJ 系统之类的成熟的在线评判系统。不仅用于 编程竞赛,而且已经成功的部署在高校的编程语言教学环节中,随着系统功能的不断增强,为了分离功能和增加可定义性,系统结构被设计成模块化,并且特别注重了安全问题,在各个技术层面上都已经显得非常成熟。 3. 发展趋势 随着计算机网络的不断发展和个人计算机的平民化,传统教育与电子学习的结合是教学方式发展的必然趋势,在不久的未来,编程语言在线自动评判系统势必会普及至中国高校的计算机课程中。
6、 二、 相关研究的最新成果及动态 1. 研究的基本内容 研究的基本内容包括: VS.NET 开发环境的运用; C/C+编译器; AJAX 技术; SQL Server数据库的使用。系统采用 UML 技术进行系统的需求分析、总体设计、详细设计以及系统测试、实施各阶段的主要内容和成果。 UML 图包括:用例图、类图、序列图,活动图,状态图等。 2. 解决的主要问题 a) 性能 系统的所有用户,即计算机系的学生加上辅修计算机的学生,所有人同时在线考试的时候,要保证每个人不会感到系统的延迟,系统一旦有延迟就可能会影响学生的答题情绪,还要考虑延长考试时间;更不能发生系统崩溃,一旦系统崩溃,将会导致教学事
7、故。 b) 安全性 学生提交的程序都在服务器上编译执行,要防止服务器被植入木马或者破坏系统中保 存的数据。学生成绩的安全性也非常重要,在线评判系统的用户分为多种角色,每种角色具有相应的权限,如教师可以查看所有学生的成绩信息,但是不一定有权限修改成绩信息,学生只有浏览自己的成绩信息的权限。 c) 稳定性与可靠性 学生历次作业与考试数据都存储在服务器上,可能会发生操作系统崩溃导致数据无法恢复,如果服务器配置较低,硬盘故障也会导致的数据损坏,因此系统必须要具备数据的备份机制,在发生无法预知的故障后,系统能够及时恢复。 三、 课题的研究内容及拟采取的研究方法(技术路线)、难点及预期达到的目标 1. 研
8、究的方法与技术路线 a) ASP.NET ASP.net 是一种建立在通用语言上的程序构架,能被用于一台 Web 服务器来建立强大的Web 应用程序。 ASP.net 提供许多比现在的 Web 开发模式强大的的优势。 (1) 执行效率的大幅提高 ASP.net 是把基于通用语言的程序在服务器上运行。不像以前的 ASP 即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。 世界级的工具支持 ASP.net 构架是可以用 Microsoft( R)公司最新的产品 Visual S 开发环境进行开发, WYSIWYG( What You See Is W
9、hat You Get 所见即为所得)的编辑。这些仅是 ASP.net 强大化软件支持的一小部分。 (2) 强大性和适应性 因为 ASP.net 是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在 Web 应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000 Server 上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到 ASP.net 的 Web 应用中。 ASP.net 同时也是 language-independent 语言独立化的,所 以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,
10、现在已经支持的有 C#( C+和 Java 的结合体), VB, Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于 COM+开发的程序,能够完整的移植向 ASP.net。 (3) 简单性和易学性 ASP.net 是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如 ASP.net 页面构架允许你建立你自己的用户分界面,使其不同于常见的 VB-Like 界面。另外,通用语言简化开发使把代码结合成软件简单的 就像装配电脑。 (4) 高效可管理性 ASP.net 使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为
11、配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为 “Zero Local Administration“的哲学观念使 A 的基于应用的开发更加具体,和快捷。一个 ASP.net 的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。 (5) 多处理器环境的可靠性 ASP.net 已经被刻意设计成为一种 可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的 ASP.net 应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能
12、,但现在的 ASP确做不到这一点。 (6) 自定义性,和可扩展性 ASP.net 设计时考虑了让网站开发人员可以在自己的代码中自己定义 “plug-in“的模块。这与原来的包含关系不同, ASP.net 可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。 b) AJAX 传统的 Web 应用允许用户端填写表单( form),当送出 表单时就向 Web 服务器发送一个请求。服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分 HTML 码往往是相同的。由于每次应用的沟通都需要向服务器发送请求,应用的回应时间就依赖于服务器的回应时间。
13、这导致了用户界面的回应比本机应用慢得多。 与此不同, AJAX 应用可以仅向服务器发送并取回必需的数据,它使用 SOAP 或其它一些基于 XML 的页面服务接口(介面),并在客户端采用 JavaScript 处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少(大约只有 原来的 5%),结果我们就能看到回应(服务器回应)更快的应用(结果)。同时很多的处理工作可以在发出请求的客户端机器上完成,所以 Web 服务器的处理时间也减少了。 使用 Ajax 的最大优点,就是能在不更新整个页面的前提下维护数据。这使得 Web 应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的
14、信息。 Ajax 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。就像 DHTML应用程序那样, Ajax 应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着 Ajax的成熟,一些简化 Ajax 使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持 JavaScript 的用户提供替代功能。 对应用 Ajax 最主要的批评就是,它可能破坏浏览器后退按钮的正常行为 4。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用
15、户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在 Ajax 应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数 都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的 IFRAME 来重现页面上的变更。(例如,当用户在 Google Maps 中单击后退时,它在一个隐藏的 IFRAME 中进行搜索,然后将搜索结果反映到 Ajax 元素上,以便将应用程序状态恢复到当时的状态。) 2. 研究难点 通过系统程序开发前的问题定义、可行性研究、需求分析等阶段的摸索,预计了在系统研发过程中可能出现的难点如下: a) 管道通信 自动评判系统为通过编译 c 语言
16、源程序生成的可执行程序创建进程,输入适当的测试数据,对输出结果与预设答案进行比较和评判。提出了通 过匿名管道进行数据输入输出的实现方法。 对 C 语言源程序的处理,首先通过调用 vs 系统提供的编译 (CL EXE)和连接 (LI NK EXE)程序完成。由于这两个程序是控制台程序,它们能将编译、连接处理的结果输出到控制台。为了能将控制台输出的编译、连接相关信息传入自动评判系统的进程,可创建评判进程与CL ExE (或 LINK ExE)进程间的通信管道,从通信管道获取编译、连接处理信息。若编译、连接无误,则为已生成的可执行程序创建进程,同样可通过管道输入预设的测试条件,运行源程序后通过管道获
17、取运行结果。接下来只要 对运行结果与正确答案进行匹配检查,决定其正确与否 。 b) 保护服务器不受恶意代码攻击 对编译和执行平台所提交程序的服务器来说,被执行的程序是不被信任的,必须做好对恶意代码的预防工作,才能保证服务器不受各种恶意代码的攻击。 一种方法是根据所提交的编程作业的水平设置系统调用限制。通过黑名单的方式来防止程序恶意使用系统级别的调用。但是像 C 这样的底层语言可能会准备机器代码片段,将其插入并由底层来执行它,所以这种方法只能作为额外安全层,而在操作系统级别的限制才是最重要的,例如 chroot() 一个非常强大的 Linux 系统调用。它允许创建文件系统的沙箱,允许每种不同的编
18、程语言使用。在沙箱中运行提交程序就不会对操作系统有任何威胁。 3. 预期达到的目标 使用 Visual Studio 平台,运用 Visual Studio 的 C 编译器、 ASP.NET 服务器后台技术、 AJAX客户端交互技术和 SQL Server 数据库系统,开发一个 C/C+程序自动评判系统。实现如下功能: a) 用户身份验证。能够验证不同身份的用户群,并赋予相应的权限。 b) 编程作业提交。允许学生用户提交编程作业并将其保存在服务器一端。 c) 编程作业评判。服务器能够编译并且运行学生提 交的编程作业,以便获得结果来评判该编程作业正确与否。 d) 程序 代码 抄袭检测 。在线评判
19、系统能够识别出相似度达到一定程度的两份编程作业,并能够判断出是否为抄袭。 四、 论文详细工作进度和安排 第七学期第 10 周至第 18 周( 2011 年 01 月 06 日前):文献检索和资料收集,完成毕业论文(设计)文献综述、开题报告和外文翻译; 第八学期 第 1 周 至第 3 周( 2011 年 03 月 11 日前):撰写论文提纲,完成毕业论文(设计)初稿、需求分析和概要设计; 第八学期 第 4 周 至第 12 周( 2011 年 05 月 13 日前):详细设计、系统调试、和毕业论文(设计)完成定稿; 第八学期第 13 周( 2011 年 05 月 20 日前):完成应用软件系统的设
20、计和毕业论文(设计)送指导老师和评阅老师评阅,准备答辩; 第八学期第 14 周:参加毕业论文(设计)答辩。 五、 主要参考文献 1 林丕源 ,刘财兴 ,张明武 . 软件工程专业的实践教学改革初探 J. 实验室研究与探索 ,2007(12):238-240. 2 赵越 ,章小莉 .数据结构实践教学模式的设计与探索 J.计算机教育 ,2009(13):194-196. 3 王涛春,罗永龙,左开中 . 基于在线评测的数据结构实 践教学探讨 J. 计算机教育 .2010(5):88-90. 4 陈湘骥,徐东风,杨秋妹 . 在线评判在 C 语言课程设计教学中的应用 J. 计算机教育 .2010(2):9
21、7-100 5 MickeyWilliams.Windows2000 编程技术内幕 M.北京 :机械工业出版社 ,1999.12 6 舒贵洋 ,黄惠 .ASP.NET 网络编程 M.电子工业出版社 ,2006. 7 吴豪编 .SQL Server 2000 基础 M.北京 :希望电子出版社 ,2005. 8 RichardAnderson.ASP.NET 高级编程 M.北京 :清华大学出版社 ,2003. 9 Dave Crane,Eric Pascarello.Ajax 实战 M.人民邮电出版社 ,2006. 10 (美 )阿斯利森 ,(美 )舒塔 ,金灵 .Ajax 基础教程 M.北京 :
22、人民邮电出版社 ,2006. 10 (美 )尼尔森 .Microsoft SQL Server 2000 宝典 M.北京 :中国铁道出版社 ,2004. 11 (美 )Ryan Asleson,Nathaniel,T.Schutta 著 ,金灵等译 . Ajax 基 础教程 M.北京 :人民邮电出版社 ,2006. 12 Jesse Liberty 著 ,刘基诚译 .C#程序设计 (M).中国电力出版社 ,2002. 13 董大伟 . ASP.NET 与 AJAX 深度剖析范例集 M.中国青年出版社 ,2007. 14 Miohael Blaha,James Rumbangh.Object-Oriented Modeling and Design with UMLM.北京 :人民邮电出版社 ,2006. 15 汤成平 .SQL Server 实训教程 M.北京 :交通大学出版 社 ,2005.