(计算机软件与理论专业论文)基于数据结构教学网站的在线评测系统.pdf_第1页
(计算机软件与理论专业论文)基于数据结构教学网站的在线评测系统.pdf_第2页
(计算机软件与理论专业论文)基于数据结构教学网站的在线评测系统.pdf_第3页
(计算机软件与理论专业论文)基于数据结构教学网站的在线评测系统.pdf_第4页
(计算机软件与理论专业论文)基于数据结构教学网站的在线评测系统.pdf_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 中文摘要 随着互联网的发展,信息化、自动化、网络化己成为主趋势,高校作为社会 发展动力源泉之一,都致力于校园网络化的建设。辅助教学网站作为校园网络 化的一个部分在教学、科研、管理和信息发布中起着很大的作用。 本文探讨了a s p n e t 及其相关技术、c o m 技术、源码的编译分析技术、当 前应用系统的架构以及系统的开发模式。在此基础上,以数据结构教学网站为 依托,采用a s p n e t 与c o m 技术相结合,以三层架构为系统的总体架构,以 b s 模式为系统开发模式,实现了一个具有良好的可维护性和可扩展性的教学网 站。此外,作者还对程序源码的相似度比较问题进行了研究,并给出了用对源 码模拟编译后生成的语法树进行比较的办法来解决此问题。 本文详细阐述了数据结构教学网站中在线评测系统的分析,设计及其实现过 程。 关键字在线评测、b s 模式、组件对象模型 a b s t r a c t a b s t r a c t w i t ht h ei n t e m e td e v e l o p i n g ,i b m l a t i o n ,a u t o m a t i o na 1 1 dn e t w o r k i n gb e c o m e t 1 1 em a i nt r e n d s t h ec o l l e g e ,a sm eo n eo fm em o s ti m p o r t a n ti m p u l s eo fs o c i a l d e v e l o p m e n t ,d e v o t e st ot h ef o l l i l d a t i o no fc 锄p u sn e t w o r k i n g t h ec o m p m e ra i d e d t e a c h i n gn e n o r k ,a so n eo fc o n t e n t so ft h ef b u n d a t i o no fc 砌p u sn e m o r k i i l g ,a c t sa v e 叮i m p o r t a n tr o l ei ni n s t i u c t i o n ,r e s e a r c h ,m a n a g e m e n ta n di 1 1 b r n l a t i o nr e l e a s e t h i sp a p e ri n t m d u c e sa s p n e ta j l dt h er e l a t e dt e c h n 0 1 0 9 y ,c o m ,t e c h n o l o g yo f s o u r c ec o d ec o m p i i i l l gt h ep o p u j a ra r c h j t e c m r ea i 】dt h es y s t e md e v e j o p j n gm o d e t h r o u 曲a d a p t i n ga s p n e ta 1 1 dc o m ,t 1 1 r e e t i e ss y s t e ma r c h i t e c t l 】r ea n db s d e v e l o p i l l gm o d e ,m es y s t e mw a si m p l e m e n t e dw i t hg o o dm a i m a i l l a b i l i t ya 1 1 d e x p a j l s i b i l i t y m o r e o v e r ,血ea u m o rs t u d i e st t l ep r o b l e mo fs o l 】r c ec o d es i m i l a r i t ya n d g i v e sam e 廿1 0 dt o 1 i sp r o b l e mu s i n g 也et w os y n t a xt r e e s c o m p a r i s o n 1 1 1 i sp 印e re x p o s e st h ep r o c e d u r eo fa 1 1 a l y s i s ,d e s i g na i l dp r o g r 蝴i n go fo n l i n e j u d g e 洒d a t a b a s et e a c h i n gn e tf o u n d a t j o n k e y w o r d o n l i n ej u d g e 、b r o w s e r s e r v e rm o d e l 、c o m p o n e m o b j e c tm o d e l i i 内容目录 图目录 图2 i 数据结构教学网站架构图6 图2 2 网站的用户权限设置7 图2 3 在线评测系统的功能模块8 图2 4b s 三层结构图示。9 图2 5 程序提交模块中的子模块设计1 1 图2 6 在线评测系统简化界面1 2 图2 7a s 只n e t 的数据流向1 3 图2 8 作业提交子模块流程图1 4 图2 9 实时编译子模块流程图1 6 图2 1 0 各模块对数据库操作流程图1 9 图3 1 三层w e b 应用结构2 3 图3 2l e x 功能图4 1 图3 3y a c c 的功能说明4 3 内容目录 表目录 表2 1 学生信息表( t b ls t u d e n t ) 1 7 表2 2 成绩表( t b lr e s u l t ) 1 8 表2 3 作业表( t b lw o r k ) 表3 1a s p 的内置组件2 7 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:孑砌m 年月日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 解密时间:年月 日 各密级的最长保密年限及书写格式规定如下: 厂一一_ j ;内部5 年( 最长5 年,可少于5 年) 秘密1 0 年( 最长1 0 年,可少于l o 年) 机密2 0 年( 最长2 0 年,可少于2 0 年)l 、。一一一。,一一一。一j 南开大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 学位论文作者签名: 年月日 第一章绪论 1 1 1 论文背景介绍 第一章绪论 第一节项目背景 传统教学方式的特点是在固定时间、固定地点教师与学生进行授课与听讲 的交互活动。在这种教学方式下,教师与学生之间、学生与学生之间可以进行 面对面的直接交流,相互影响,相互了解,师生之间可以直接得到信息反馈, 从而可以达到教学相长的效果。这种教学方式长期以来为人们所习惯,而且目 前仍然为教学的主要模式。 但是教师授课、学生吸取知识主要是在课堂上面,这种传统的教学模式注 重的是讲授,忽略了学生自己动手的过程,容易产生学生虽然具备完善的理论 知识,但是无法运用到实践中的情况。 1 1 2 现有教学网站的不足 近年来,信息高速公路的建立,通信、网络、多媒体等新技术的出现,使 得以教学网站的方式进行辅助教学成为现实。计算机网络的使用,使得传统教 学方式有所突破,即在课堂讲授知识点的同时,开始注意培养学生的动手能力。 因此越来越多的高校开始注意到网络在教学中的重要性,尤其在计算机相关专 业的教学中,使用网络进行辅助教学得到了教师和学生的广泛接受。 然而,在现有的以网站为平台的辅助教学系统中,像数据结构、c 语言 程序设计等这类程序设计类课程的网上提交作业功能,仍然存在如下问题: 1 对于课后的程序设计作业,大多数仍然采用以上传课件,发布信息的方 式辅助教学,对于作业的批改方式,也仅限于在远程网络上采用w e b 页面形式 安排练习题,学员通过e m a i l 的途径交付作业,教师通过e m a i l 把作业下载到 本地机器进行评估,再用w e b 页面形式对评估结果进行公布,这样的操作方式 只是解决了异地批改作业的问题,但是显得麻烦、费时,学生也无法及时的对 学习情况进行自我评价,从而不能充分发挥网络的优势。 第】页 第一章绪论 2 教师检查作业仍然不能实现批处理,即检查作业的人仍然需要对每个作 业创建一次工程,然后手动的对其编译、链接。 3 对于作业程序的结果检查,仍然需要检查作业的人在每一份作业源码编 译、链接后,运行程序,再人工输入测试数据,肉眼比对运行结果与正确结果。 4 学生成绩的整理也没有很好的系统的方法,仍然需要人工去整理每一次 的成绩,并录入到网页程序中发布到网上。这种方式费时,且容易出错。 5 现有网站对于相同或相似的源码作业也无法判别,正是由于这种特点, 学生容易存在侥幸心理,以复制别人程序或只作简单的变量名称的替换的方式 来“完成”自己的作业。由于采用人工批改的方式来检查学生程序设计作业的 完成情况,因此很难发现“抄袭”现象。 1 2 1 在线评测系统的产生 第二节系统概述 本文作者参与了数据结构教学网站的搭建工作,思考上面的问题,针对现 有教学网站的不足,对数据结构教学中的作业评测方式进行改革,参与设计和 开发了在线评测系统。针对本科生的数据结构程序作业进行在线编码、提交以 及完成状况的评估。学生可以对自己的数据结构作业程序进行在线评测,并及 时得到反馈结果。 在这里,评测仅对数据结构教学网站的课后作业进行测试、评估。由于数 据结构作业主要是学生提交的程序源码,因此进行评测的过程中,需要对源码 进行编译、链接、运行结果的正确性评定,以及各个提交之间的相似度比较。 由此,我们对在线评测系统作了一个概括性的定义:在线评测系统是一个 程序的在线评估系统。它对程序源码进行实时的编译和执行,通过预先设计的 测试数据来检验程序源码的正确性,并比较现提交源码与已提交源码的相似度, 最后反馈评估结果州。 1 2 2 在线评测系统的作用和意义 针对上节论述的,现有教学网站存在的不足,我们也总结了开发这个以数 第2 页 第一章绪论 据结构教学网站为平台的在线评测系统的意义: 1 在线评测系统针对学生作业的编译方式进行了修改,由从前的把作业下 载到本地机,然后在本地机编译的方式,改进为学生在浏览器端提交源码后, 服务器直接获取提交,并进行实时的远程编译,编译结果立刻反馈给学生。这 种方式弥补了人工批改作业的不足。 2 对于结果的检查方式,不再需要人工输入测试数据,肉眼对数据结果与 正确结果进行比对,得出正确与否的结论。服务器对编译、链接通过的代码, 自动输入测试数据,来判断提交程序的正确性。把作业结果记录在服务器的同 时及时反馈结果给学生。 3 对于复制别人程序以求蒙混过关的做法,系统设计了源码相似度比较模 块,对学生的源码的唯一性进行检验,以督促学生在程序设计中,养成独立思 维的习惯。这一点,对于当代计算机专业的大学生,对他们日后走上工作岗位, 参与大型软件的开发与编写,都是很必要的。 1 2 3 在线评测系统的构成 在线评测系统分为三个部分: 第一部分,是面向用户的网页设计部分,学生可以通过在线编码和上传源 码两种方式提交作业到服务器端。 第二部分,系统对获取的源码进行后台的编译、链接处理,如果编译、链 接通过,模拟程序的输入,输出结果与正确结果进行比较,评定结果反馈给客 户端,并将源码存入数据库备份。 第三部分,系统对源码进行相似度比较,对源码进行语法分析,得出语法 树,与其他源码的语法树比较,判定是否为抄袭。源码进行模拟编译后的比较, 避免了从字符级的相似度判定可能出现的判定结果不准确的错误,通过对两组 源码的词法分析、语法分析、语法树的对比、匹配,并遵循一定的规则,对匹 配结果进行的分析,得出两组源码的相似程度。 1 2 4 系统使用的理论及关键技术 系统使用了如下技术: asp n e t 程序设计技术:a sp n e t 程序设计是创建教学网站的基础。 第3 页 第一章绪论 本系统中设计到的其他技术,均需要与a s p n e t 设计的客户端连接,例如,数 据库的连接,c o m 组件的调用等。它是连接用户与服务器的桥梁,用户对系统 最直观的感受就是来自这里。 c 0 m 组件的开发技术:c o m 是一种具有交互性的二进制标准,一种与 操作平台无关、分布式的、面向对象的组件模型【4 j 。c 0 m 组件实现了在线评测 系统的主要功能,作业程序的结果检查,源码的相似度比较,都是通过c o m 组 件中的接口函数来实现的。如果说a s p n e t 是一部车的方向盘,那么c o m 组 件就是它的发动机。 数据库技术:数据库处于三层结构中的最底层,负责数据的存储和检索, 也是系统对用户权限、用户文件进行管理的工具。 编译技术:在源码相似度比较时,我们需要使用到词法分析、语法分析、 生成语法树等编译技术。 本文的第三章,将对这些技术在本系统中的应用做更为详细的讨论。 1 2 5 在线评测系统开发过程中的重点和难点 在线评测系统的开发重点是实现对程序源码的实时编译和相似度比较功 能,这两个功能都是对源码的评估从人工的评估转为自动化的评估。在实现上 面存在着如下的难点和相应的解决办法: 学生提交的程序执行的结果将被在线系统捕捉并保存,然后再转交给一 个评测程序。该评测程序或者比较用户程序的输出数据和标准输出样例的差别, 或者检验用户程序的输出数据是否满足一定的逻辑条件。最后系统返回给用户 评测结果。由于程序的执行结果是未知的,也就是说,我们并不会预先知道它 是否会对服务器造成危害,因此我们必须制定一个比较合理的结果的判定规则, 而程序在服务器端执行时也将受到比较严格的限制,包括运行时间限制,内存 使用限制和安全限制等。对于那些算法复杂度过高,内存访问过界的程序,我 们必须采取强制终止程序的办法来避免它对系统造成的灾难性危害【3 “。 在源码的相似度比较时,到底“参考”多少就是“抄袭”是很难把握的, 软件的相似程度不能完全从一般文本的角度考虑,代码的段落结构跟一篇文章 的段落结构不同,因此纯字符级的评定是不明智的,也很难判定两段代码到底 百分之多少相似。因此本文作者认为,把别人设计软件、算法框架整体照搬过 第4 页 第一章绪论 来,仅仅修改界面,或者利用简单的名称替换修改源代码,就是一种“抄袭” 行为。如果语法树的相似程度比例高出我们预先在程序中设定的值,我们就认 为两个的程序设计基本相同,判为抄袭。 第三节本文的内容 1 ,3 1 本文主要研究和实现的内容 本文旨在研究基于b s 三层结构以数据结果教学网站为平台的在线评测系 统的设计思路以及各模块的开发过程。 主要内容有: 1 从功能模块的设计到结构模块的设计,本文讲述了系统的总体设计思 想,以及各个模块之间的关系。 2 详细说明了程序提交模块与相似度比较模块开发思路。 3 ,对于本系统中使用的各种技术,进行了较详细的分析。其中包括 a s p n e t 技术、c o m 技术、编译技术等。 4 阐述了对系统优化方法和改进意见。 1 3 2 本文的组织 论文主要包括: 第一章,项目背景和系统概述,主要论述,开发在线评测系统的原因以及 系统的构成、特点以及使用的关键技术。 第二章,在线评测系统的理论分析,主要论述了系统的设计思想,包括系 统的架构、模块设计、各层的连接方式,各模块功能分述等。 第三章,在线评测系统的实现,在论述了系统设计思想的基础上,对系统 的实现细节加以论述,包括用户层、中间层、数据库层的实现方法,以及他们 之间的调用方法等。 第四章,在线评测系统的改进与优化,包括在原有功能实现的基础上,对 系统的性能优化方法的论述,以及改进建议。 第五章,总结与展望。 第5 页 第二章评测系统的理论分析 第二章评测系统的理论分析 第一节系统的总体设计 2 1 1 系统的总体设计思想 根据本次研究的目标和实现系统功能的需要,对系统实现提出以下方案: 1 ) 以超文本的方式实现课程远程学习的w e b 页面制作; 2 ) 使用目录文件管理的方式来操作作业系统中的作业文件; 3 ) 使用a sp n e t + c 0 m 相结合的技术来实现学生作业程序提交与评测 4 ) 使用简单的编译分析对学生提交的源码相似度进行分析; 5 ) 对用户管理使用权限设置; 2 1 2 功能模块分析 由于该在线评测系统是以数据结构教学网站为主体( 如图2 一】所示) ,是基 于w e b 的多用户评测系统,理解网站用户的权限设置,有利于理解评测系统的 整体运作。 图2 一l 数据结构教学网站架构图 第6 页 第二章评测系统的理论分析 为保证安全,在进入本系统前必须输入用户名和密码进行普通用户或者管 理员登录,若没有使用权限,可以跳转到相应的页面提醒用户注册后再进入该 系统,系统管理员可以对已有用户进行删除操作以取消某个用户的使用权利。 类似于一般的教学网站,根据用户不同的权限及操作目的,我们把该网站 的用户分为三类:系统管理员、教师、学生。系统管理员具有最高权限,具有 添加、删除用户等功能;教师则可以从已有用户中进行学生分类,学生资料查 询,上传、删除课件,布置课后作业,作业成绩查询等操作;学生可以设置和 修改自己的资料,进行在线作业,上传作业源码,查询作业成绩。网站的权限 设定如图2 2 所示。 图2 2 网站的用户权限设置 在了解了网站总的用户权限设置以后,我们便可以进一步对在线评测系统 的功能模块进行分析了。 在线评测系统主要分为:用户管理、课后习题管理、程序提交、代码抄袭 鉴定等4 个功能模块,如图2 3 所示。 第7 页 第二章评测系统的理论分析 :_ 其它模块! 图2 3 在线评测系统的功能模块 用户管理:由于用户的权限设定与管理的作用域是在整个网站中有效 的,而在线评测系统仅仅是整个网站的一部分,用户的管理并不是整个系统的 重点,因此这里就不再赘述了。 课后习题管理:这个模块对于学生是透明的,学生仅能查询课后习题的 内容与作业的格式要求。这个功能的操作者主要是系统管理员和教师。教师以 静态信息的方式发布作业要求,以网页信息的形式发布,这与传统的教学网站 的作业发布形式是相同的,因此在本文中就不累述了。 程序提交:这个模块是整个在线评测系统的特点所在。作用是,学生在 线提交程序源码,并能及时得到源码的运行反馈,学生可以再修改,再提交。 学生有三种方式提交程序: 第种是直接进行在线编码。网页中提供了编码区供学生使用,即 使是本地机器上没有编辑器、编译器,学生仍然可以完成教师在网 上布置的课后程序作业,而且网页中,在编码区左边,提供了许多 学生编码时可能用到的基本数据结构类型,例如,链表结点,二叉 树等基本数据结构的参考源码,学生可以在网页上,通过直接点击 的方式获得源码,并用继承或直接修改的方式用在自己的程序中; 第二种方式,学生也可以直接拷贝已经写好的程序到编辑区: 第三种方式,学生当然也可以上传已经在本地机编辑好的源码文 件,例如,c p p 文件。服务器获取学生提交的代码进行实时编译并 反馈代码的运行结果。 第8 页 第二章评测系统的理论分析 无论采用哪种方式,是否是在线编写代码,并不会影响在线评测,系统可 以很快反馈评测结果给学生。 代码抄袭鉴定:此模块主要针对保存在数据库中的各个学生的源码进行 相似度比较,用以杜绝抄袭现象。 在下面的章节中,我们将陆续详细讲解重点的功能模块与他们所使用的关 键技术。 2 1 _ 3 结构模块分析 在线评测系统采用的b s ( b r o w s e r s e e r ) 三层结构,即浏览器一中间层一服务 器结构。 圜案固 图2 4b s 三层结构图示 如图2 4 ,其中的c o m 组件是中问层,负责对数据进行处理,在本系统中, 对于提交程序的分析,都是在c o m 组件中实现的,包括,编译、链接、执行程 序源码,程序结果的检查,源码的相似度分析等工作。 目前,这种三层结构是大多数网站开发者使用的典型架构。因为它的结构 清晰,便于调用和扩充,数据流向容易掌控。 第9 页 第二章评测系统的理论分析 第二节在线评测系统中程序提交模块的设计与开发 2 2 1 需求分析 在数据结构课程中,传统以课后作业考核学生学习情况,至少要经历四个 步骤:教师在课堂上布置作业、学生在固定的上机时间交作业、人工判作业、 成绩统计和录入。在这种考核方式下,人工判作业的自动化程度不高,学生不 能进行自我评判,可能导致学生只关心作业的最后分数,对于学生程序作业的 编码过程不能起到有效监督作用,然而数据结构的课后作业实际上是考核学生 对课程的理解,传统的作业考核方式恰恰削弱了这方面意义。基于数据结构教 学网站的在线评测系统能够解决这些问题。i m e m e t 蕴藏着极大的教育潜力,为 教学提供了各种辅助手段,最大限度地发挥教师资源,最佳配置教学内容:提 供尽可能简单的、统一的界面,为学生和管理者带来方便。二十一世纪的网络 辅助教学的关键是教学资源建设,为适应远程教育发展的需要,构建一个基于 w e b 的实时交互的课程评测系统,为更多的人提供网络环境,会产生重要的现实 意义。 该系统提供了一个前台的练习系统,后台的管理系统,教师可以利用它进 行课程内容分类和课后作业布置,学生可以利用它实现无软盘的在线编程练习, 作业结果可以直接保存到服务器数据库中,也便于进行相应的数据后期处理, 及时把练习情况反馈给老师,把评测结果反馈给学生,从而有效提高教师教学 和学生学习的质量。这正是本系统的功能目标之一。 2 2 2 子模块设计与各子模块之间的关系 根据数据结构教学网站的需求,我们已将在线评测系统设计为四个功能模 块,用户管理、课后习题管理、程序提交以及源码的相似度比较模块,其中程 序提交模块和源码的相似度比较模块是系统的核心模块。程序提交模块负责获 取学生的作业程序,并进行在线评测;源码的相似度比较模块负责在学生提交 结果正确作业后,鉴定作业是否为抄袭。 下面我们来了解下,在程序提交模块中,都有哪些功能子模块。如图2 5 所示。我们又根据功能,把程序提交模块分为三个功能子模块,分别是网页部 第1 0 页 第二章评测系统的理论分析 分、作业提交子模块、实时编译子模块。 9 数搬瘁 一一一一。一一 :“ ;一一一一一一 l 竺竺竺竺i 广 i 仵l t 握奠- 了收块i j一 c o m 网页部分 图2 5 程序提交模块中的子模块设计 2 2 3w e b 的设计与开发 系统的依托是网站,网站界面化了所有对于用户开放的功能接口。教师布 置作业、学生编辑和提交程序代码都可以在w e b 上进行。因此,w e b 的开发也 是至关重要的。 第二章评测系统的理论分析 我们主要使用h t m l 和j a v a s c i i p t 作为主要的开发语言。对于如何用这些 网页编程语言来实现这个系统的前台部分,我们在后面的技术要点中还会提到。 在这里,我们主要来了解一下,网页部分在整个系统中功能和作用。主界面, 如图2 6 。 。j ! 。一。! 善黧;善魏一一,一。,一。鬟薹要霎翟。一。,一;,匝麓 骶 一_ 。一。# _ _ ”o 删j 。_ ! 一i o :- 二w * 一一4 一嘲一”僦i s “i 一j ? 一辅一”j 一= 1 o i 一 甄氍曩瑟夏i 甄嚣夏吾面焉磊孬磊嚣甄戛曩磊磊甄甄嚣蚕焉焉墨器霹甄彝蚕f 厨氍_ 西谳霹要琴 图2 6 在线评测系统简化界面 网页部分的作用有下面几点: 学生可以在线查看作业要求,包括作业题目,作业程序的输入、输出要 求,提交的期限等信息; 提供学生上传程序代码的接口: 提供编辑区供学生进行在线编辑代码; 如果学生采用在线编辑方式编写代码,还可以继承网页提供的各种基本 数据结构,例如:链表的结点类,链表类,图的结点类等。在编辑区的左边列 出了所有在数据结构课程中涉及到基本的类,学生选中所需要的类和函数,通 过点击左下角的“生成代码”按钮,即可在右侧的编辑区中自动产生这些类和 第1 2 页 第二苹评测系统的理论分析 函数的基本源码。学生只要稍作修改,或者添加这些类的子类,或者重载类的 函数,便可以把这些规范的类与函数归为己用。这项便利的功能并不是让学生 “偷懒”,相反地,它有助于学生养成良好的编码风格,掌握继承、重载、虚类、 基类等基本概念,并更好的把它们应用在自己的程序中; 提供对学生代码进行实时编译、链接、结果反馈的接口。在点击“提交” 按钮后,学生可以马上得到程序的运行结果,如果编译、链接可以通过,系统 还将告诉学生运行结果是否正确,如果运行结果错误或者编译、链接出错,学 生可以得到简单的错误类型,帮助学生修改源码。 图2 7 显示了a sp _ n e tw e b 应用程序与系统中其他子模块的数据流。 疗效且纷箍证涪且的h ,r i 袅s o l 挎勰 旬 r y 客 7 登陆结聚 胃息 a s p 7 带谢结果 户 n n e t 、 测 w e bd b 览 k应用 一一土一 器 , 源* 5 或潞i q 奠转 : 程序# j s q l 盛询语f i j 、 。 c o m 宴时垴昂结果 辆似度比垃雏黎湘姒度1 :l :轻结槊其他。l p 冀仆 2 2 4 作业提交子模块 图2 7a sp n e t 的数据流向 这一部分,是前台的网页端与后台的c o m 端通讯的主要通道。它的输入是 学生提交或上传的程序源码文件,如果文件格式符合规定( 我们的网页目前只 接收c + + 语言的源码文件,即c p p 和h 文件) ,则这一模块负责把源码文件存在 数据库相应的表中。反馈用户提交成功信息,同时,为下一实时编译模块提供 输入。我们主要使用a s p n e t 来完成这一模块的功能。 这一子模块的流程图,如图2 8 。 第1 3 页 第二章评测系统的理论分析 图2 8 作业提交子模块流程图 第1 4 页 第二章评测系统的理论分析 2 - 2 5 实时编译子模块 在线评测系统使得学生对数据结构作业进行在线提交、实时评测得到实现, 学生可以随时完成作业并提交获得评测。对于源码评测所选用的编译环境,目 前仅限于c + + 。由于服务器需要对学生源码进行编译、链接和执行,提交的程 序在运行中可能出现的各种错误,服务器必须都能捕获到,并且服务器对提交 程序具有绝对的控制权力,只有这样才能保证服务器不会因为某个特别的程序 在运行的过程中产生了意外甚至致命的错误而使得整个服务器瘫痪。 每次提交的结果可能有下面几种情况: 1 ) 提交文件类型错误。目前本系统仅对c + + 源码文件进行在线评测,所以 仅接收c p p 和h 文件。 2 ) 提交失败。可能由网络中断、文件过大等原因造成。 3 1 编译出错。 4 ) 运行超时。为防止错误的程序使服务器内存耗尽,我们限定了作业程序 的运行时间。 5 1 程序结果错误。 实时编译子模块的流程图,见图2 9 。 第1 5 页 第二章评测系统的理论分析 图2 9 实时编译子模块流程图 2 2 6 数据库的设计与管理 程序提交模块是本系统中涉及数据库操作比较多的一个模块,我们需要对 学生提交的作业成绩进行记录和查询,因此,在这里,我们来分析一下系统数 据库的设计与管理。 现在的w e b 应用程序中,会大量地用到数据库操作。尽管a s p n e t 可以使 第1 6 页 第二章评测系统的理论分析 用任何0 d b c 兼容的数据库,支持共享文件数据库( 如m i c r 0 s o ra c c e s s 或 m i c r o s o f cf o x p r o ) 作为有效的数据源,但我们建议只将此类数据库引擎用于开 发小型的、且一般同时访问者不会超过1 0 个应用程序系统。共享文件数据库可 能无法很好地满足高需求、高质量的w e b 应用程序的需要。由于性能和可靠性 的原因,一般应用程序都使用带有“客户服务器数据库引擎”的关系数据库管 理系统,这些关系数据库管理系统包括m i c m s o f cs o ls e r v e r2 0 0 0 、o r a c l e 等。 所以,虽然在本系统中,数据库的表结构非常简单,但是为了方便之后系统的 升级以及与其他模块能够更好的结合,我们使用的是s q l s e r 、,e r 2 0 0 0 ,而且,它 也可以更好地与m i c r o s o r 的a s p n e t 合作。 在评测系统部分,主要用到如下三个表: 1 ) 学生信息表( t b ls t u d e n t ) :主要用来存放学生的主要信息,它包括学生 的姓名、学号、性别。 2 ) 成绩表( t b lr e s u l t ) :主要存放学生的学号、作业的题目号、提交作业 的时间、作业在服务器中存放的位置、学生的分数。 3 ) 作业表( t b lw o r k ) :主要存放作业的题目号、布置时间、截至提交时间、 布置人、标准答案文件的位置等信息。 具体见表2 1 ,表2 2 ,表2 3 。 表2 1 学生信息表( t b ls t u d e n t ) 字段名字段描述字段类型字段长度 i d 学号 v a r c h a r2 0 p w d 密码v a r c h a r2 0 n 锄e 姓名 v a r c h a r2 0 s e x 性别 b ”e 1 p e r r n i s s i o n 用户权限 i n t 1 l a s t l o g上次访问时间 d a t e t i m e8 w o r k n 咖提交作业次数i n t4 第1 7 页 第二章评测系统的理论分析 表2 2 成绩表( t b ir e s u l t ) 字段名字段描述字段类型字段长度 r e s u l t i d 成绩i d i n t4 w o r k i d 题目号 i m4 s t u i d学号 v a r c h a r2 0 r e s u l t 分数 i n t4 p o s n l o n 作业存放的位鼍 v a r c h a r5 0 t l m e提交时间d a t e t i m e8 t r e e n o d e 语法树节点数 i n t4 t i e p o s 语法树结构文件位置 v a r c h a r5 0 表2 3 作业表( t b lw o r k ) 字段名字段描述字段类型字段长度 i d 题目号 i m4 c o n t e n t p o s 题目描述文件位置 v a r c h a r 5 0 t l m e 布置时间 d a t e t i m e8 d e a d l i l l e 作业截至时间 d a t e t i m e8 i 、v i i t e r布置人 v a r c h a r2 0 数据库处于b s 三层结构中的最后一层,在本系统中,对数据库的操作主 要有以下几个方面: 第1 8 页 第二章评测系统的理论分析 图2 1 0 各模块对数据库操作流程图 用户登录。由a s p n e tw e b 应用程序直接连接数据库,基于兼容性的 考虑,我们采用n e t 平台下的a d o n e t 的进行对数据库的连接和访问。 a s p n e t 通过客户网页的表单请求,获得登录名和密码,解析成s q l 查询语句, 对使用学号对数据库的t b ls t u d e n t 表查询( s e l e c t ) ,返回t b ls t u d e m 的p w d 字段,在w e b 应用程序中进行匹配,把成功或失败的结果反馈给用户,并在 a s p n e tw e b 应用程序保存用户线程,记录用户权限。用户登录的操作仅限于 数据的查询操作。没有对数据库的添加、修改、删除的权限。 程序提交。由c o m 组件对数据库进行访问,我们仍然采用a c t i v e x 的 数据对象a d o 对数据库进行操作。在上一步登陆成功并且用户权限为学生的情 况下,接受用户源码提交,并对源码进行处理,并创建与t b lr e s u l t 表的访问连 接,然后对未提交过的用户,对该表进行添加( u p d a t e ) 记录操作,对提交过 ( 即修改上次提交) 的用户,对该表进行修改( u p d a t e ) 操作,如果作业结果 第1 9 页 第二章评测系统的理论分析 正确,对程序进行编译分析,得出语法树结构文件,继续修改t b lr e s u l t 表的相 应记录的t r e e n o d e 和仃e e p o s 字段。 源码相似度分析。由c o m 组件对数据库进行访问。在上步,用户提 交程序源码,作业结果正确的前提下,对比该程序的语法树与同作业题目的 其他已提交语法树,因此c o m 以作业题目号为查询条件,查询t b lr e s u l t 表相 应记录的t r e e n o d e 和t r e e p o s 属性。如果c o m 处理结果有抄袭现象,则修改 t b lr e s u h 表的相应记录的r e s u l t 属性值。 布置作业,在用户登陆操作后,如果a sp n e tw e b 应用程序保留的用 户权限为教师,则为用户开放布置作业的权限,获取作业描述,并为t b lw o r k 表添加作业记录。 详见图2 1 0 ,其中,图中的标号代表了数据的流动顺序。 第三节源码相似度比较模块的设计与开发 2 3 1 需求分析 对于源码的相似度比较问题,在计算机行业一直没有一个规范的标准。之 所以要在本系统对学生提交的源码进行相似度的判定,是为了更好的督促学生 使用独立的思维进行编程,要求独立思维和编码对于计算机专业的学生是非常 必要的。数据结构是门基础课程,也是学生进入编程领域的开端,学好数据 结构也需要动手做大量程序,在实战中提高编程水平。学生虽然在大时期学 过一些程序设计的课程,例如c 十+ ,但是真正开始培养编程思维,学习切实的 算法还是在学习数据结构以后。唯有自己动手写程序,才能打好扎实的编程基 础。该课程的上机作业量很大,如果不对学生的源码进行检查,仅仅用程序的 运行结果对学生的学习情况进行评估,学生也会慢慢的懈怠下来,在惰性的驱 使下,一些学生难免滋生侥幸心理,以复制他人作业的方法,蒙混过关。 因此有必要在评测学生提交程序的正确性的同时,对学生之间的源码进行 相似度比较,判定是否有抄袭行为。 第2 0 页 第二章评测系统的理论分析 2 3 2 源码相似度比较程序的理论分析 仅仅把源码文件看作简单的文本,进行简单的字符匹配是不够的,源码文 件具有一定的特殊性。进行简单的变量名称的替换,普通文本对比程序便不易 发觉了。 本系统的源码相似度比较程序,具体工作分三步骤进行: 1 词法分析:对代码文件进行词法分析,将结果保存在双向链表中。因为 代码文件中的非语法单位,如空格注释等与代码相似度比较没有关系,所以仅 对代码文件中的语法单位进行词法分析,然后将其保存在双向链表中。 2 语法分析:将前一模块的输出作为输入,进行语法分析,并构造语法树。 3 相似度比较:对两组c + + 代码的语法树进行遍历、匹配。 本系统的源码比较程序使用c - 卜+ 实现c 0 m ,并提供相应的接口给a s p n e t w e b 应用程序。 第四节系统特点 本系统主要总结如下: 1 ) 本系统采用b r o w s e r s e r 、r e r 模型,学生和教师通过w e b 进行交互,交互 的主要内容是,在动态的w e b 页面中,进行课后作业的布置、提交与批改。 2 ) 作业的提交方式采用在线编码和上传源码文件两种方式。 3 ) 该系统提供了大多数教学网站缺少的在线评测系统。这也是本系统最重 要的特点。在线评测系统是通过a s p n e t + c o m 的技术来实现的。利用v i s u a l c + + 来编写a s p n e t 的第三方组件。 4 ) 该评测系统面向的正在学习数据结构课程的计算机系学生,用户数目是 己知的,并非对所有人开放注册用户功能。 5 ) 为了杜绝抄袭现象,评测系统增加了对相同题目不同作业的源码相似度 比较功能。对于相似度较高甚至雷同的源码,给与警告或者降低评估分数的处 分。 第三章在线评测系统的实现 第三章在线评测系统的实现 第一节b s 三层体系结构的分析 在线评测系统采用的是基于b s f b m w s e “s e r v e r ) 模式的三层体系结构【1 9 】。 在以b s 为主的系统中,由于浏览器的功能有限,大部分的工作都需要在 服务器端实现,这将造成系统的服务器端过于复杂,负荷过重,而使用三层结 构,使得数据库对于用户是透明的,是否连接数据库,如何连接数据库,用户 都不必理会,如果系统换另一种数据库,只需修改中间层的属性和方法就可以 了,客户端不需作任何改动。 采用三层结构的优点是【】9 】:可实现应用服务级和数据库级的全面分布。较 好实现负载上的平衡。因为有了中问层提高了数据的安全性。 三层结构的特点是在浏览器与服务器两层结构的基础上加入中问层,即应 用服务器层。在本系统中,各层的功能可如下归纳: 1 在该模式中,客户端只负责提供用户界面,当需要进行数据访问或者复 杂计算时,客户端还负责,处理用户的输入和向用户输出,但不负责解释其涵 义,出于效率和安全考虑,它可能在向上传输用户输入前进行合法性验证。在 本系统中,客户端获取用户( 学生) 上传或提交的源码文件,在验证了文件符 合格式要求后( 即文件扩展名是正确的) ,并不需要对源码做出任何处理,便向 应用服务层发出请求。这一层,我们使用的开发工具是a s p n e t 。 2 应用服务器层是上下两层的纽带,根据客户层的请求,对数据进行相应 的处理,有需要的话,还要连接服务器端的数据库,并返回操作结果给客户层。 在本系统中,对源码程序进行实时编译,相似度比较等重要的工作,都是在这 一层进行。这一层通常以动态链接库的形式存在并注册到服务器的注册表中, 它与客户层通讯的接口符合某一特定的组件标准( 如c o m 、c 0 b r a ) ,可以用 任何支持这种标准的语言开发,在本系统中,我们使用由c + + 语言编写的组件 对象模型( c o m ) 完成所需要的工作,并提供给客户层可用的接口。 3 数据库服务器层主要负责数据的存储和检索。本系统中,我们采用的数 据库是s o ls e r 、,e r2 0 0 0 。 第2 2 页 第三苹在线评测系统的实现 用c o m 实现的三层w e b 应用如图3 、1 所示【1 】。从图中我们可以看到,a s p 是与i i s 在同一过程中运行并且还与脚本解释程序( s c r i p te n g i n e ) 在同一过程 运行。虽然脚本的解释会影响程序的执行速度,但是一般的脚本不会太长,并 且可以调用外部的c o m 组来完成大量的处理任务。h t t p 客户的最大优点是易 于配置。通过i m e m e t 连接w e b 服务器( i i s ) 的客户可以在任何地方运行。 图3 一l 三层w e b 应用结构 第二节客户层应用程序的开发 客户层是三层结构系统的最上层,它负责与用户打交道,本系统的客户层 采用了以_ n e t 为平台的a sp n e t 的开发环境。 第2 3 页 第三章在线评测系统的实现 3 2 1a s p :n e t 的应用环境 a s p ( a c t i v es e n ,e rp a g e s ) 例动态服务器网页是功能强大而且易于学习的w e b 服务器端脚本编程技术。a sp n e t 采用了最新的n e t 平台,n e t 平台最大的 优点体现在:传统的a s p 限制程序开发人员使用脚本语言,而a sp i n e t 允许使 用任何支持n e t 的语言( 包括,s u a lb a s i c n e t ,v i s u a lc 拌,j s c r i p t n e t , s u a lc 付和s u a lc + + 的托管扩展) 。因此在a s p n e t 中编写的代码被编译后 将拥有更好的性能,并且可以充分利用高级语言的特性。编写a sp n e t 的i d e 可以有三种:n o t e 口a d 、其他文本编辑器、v i s u a ls t u d i o n e t 。在本系统中,我 们选用v i s l l a ls t u d i o n e t 为开发环境,c 撑为主要语言来创建a s p n e t w e b 应用 程序,因为,v i s u a ls t u d i o n e t 为程序员提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论