![[硕士论文精品]基于moodle 的编程作业插件pe-plugin的设计和实现 毕业论文_第1页](http://file.renrendoc.com/FileRoot1/2017-12/8/a8861e81-3d90-4df0-87fd-978fe1de35fc/a8861e81-3d90-4df0-87fd-978fe1de35fc1.gif)
![[硕士论文精品]基于moodle 的编程作业插件pe-plugin的设计和实现 毕业论文_第2页](http://file.renrendoc.com/FileRoot1/2017-12/8/a8861e81-3d90-4df0-87fd-978fe1de35fc/a8861e81-3d90-4df0-87fd-978fe1de35fc2.gif)
![[硕士论文精品]基于moodle 的编程作业插件pe-plugin的设计和实现 毕业论文_第3页](http://file.renrendoc.com/FileRoot1/2017-12/8/a8861e81-3d90-4df0-87fd-978fe1de35fc/a8861e81-3d90-4df0-87fd-978fe1de35fc3.gif)
![[硕士论文精品]基于moodle 的编程作业插件pe-plugin的设计和实现 毕业论文_第4页](http://file.renrendoc.com/FileRoot1/2017-12/8/a8861e81-3d90-4df0-87fd-978fe1de35fc/a8861e81-3d90-4df0-87fd-978fe1de35fc4.gif)
![[硕士论文精品]基于moodle 的编程作业插件pe-plugin的设计和实现 毕业论文_第5页](http://file.renrendoc.com/FileRoot1/2017-12/8/a8861e81-3d90-4df0-87fd-978fe1de35fc/a8861e81-3d90-4df0-87fd-978fe1de35fc5.gif)
已阅读5页,还剩47页未读, 继续免费阅读
[硕士论文精品]基于moodle 的编程作业插件pe-plugin的设计和实现 毕业论文.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工业大学本科毕业设计(论文)I摘要本文论述了基于MOODLE的编程作业插件PEPLUGINPROGRAMEXERCISEPLUGIN的设计和实现。MOODLE是一个优秀的网络教学平台。PEPLUGIN能高效地自动处理编程作业,大幅度提高学生和教师在处理编程作业时的效率,充分发挥网络对教学的辅助作用。PEPLUGIN主要实现了两部分的功能教师发布编程作业和学生提交编程作业。发布编程作业包括设定上传的编程作业文件的大小、类型和上传作业的次数,以及选择编译器和判分程序的类型等等;学生提交作业包括判断各类参数,编译执行该作业和最终的判分实现。文中详细介绍了这两部分功能的设计和实现,以及相关的一些关键技术。关键词MOODLE;PEPLUGIN;编程作业;自动评判哈尔滨工业大学本科毕业设计(论文)IIABSTRACTTHEDESIGNANDTHEIMPLEMENTOFTHEPEPLUGINPROGRAMEXERCISEPLUGINBASEDONMOODLEISSTUDIEDINTHETHESISMOODLEISANEXCELLENTNETWORKEDUCATIONPLATFORMSPEPLUGINCANEFFECTIVELYPROCESSPROGRAMMINGHOMEWORK,WHICHGREATLYIMPROVESTHEEFFICIENCYFORSTUDENTSANDTEACHERSTODOSOANDCALLSNETWORKINTOFULLPLAYTOEDUCATIONALORGANIZATIONS,CAMPUSNETWORKSERVICES,EDUCATIONANDMANAGEMENT,ETCMAINLY,PEPLUGINREALIZESTWOFUNCTIONSDELIVERYOFPROGRAMMINGHOMEWORKBYTEACHERSANDSUBMISSIONOFPROGRAMMINGHOMEWORKBYSTUDENTSTHEFORMERONEISTOSETPARAMETERSSUCHASFILETYPEANDSIZE,SUBMISSIONTIMES,COMPILERANDGRADEPROGRAMTYPEANDSOONTHELATTERONEISTODECIDEALLPARAMETERS,PERFORMASPECIFICCOMPILERANDFINALLYREALIZETOGRADETHETEXTINTRODUCESTHEDESIGNANDREALIZATIONOFTHESETWOFUNCTIONSINDETAILMOREOVER,SOMERELATIVEKEYTECHNIQUESAREINTRODUCED,TOOKEYWORDSMOODLEPEPLUGINPROGRAMEXERCISEAUTOMATICGRADING哈尔滨工业大学本科毕业设计(论文)III目录摘要IABSTRACTII第1章绪论111课题背景1111网络教育简介1112MOODLE概述212课题来源213国内外现状综述314主要研究内容415课题研究的目的和意义5第2章需求分析621系统原有功能622用户需求6221管理员6222教师7223学生8224开发人员823PEPLUGIN功能概述824本章小结9第3章体系结构设计1031B/S体系结构与C/S体系结构的比较10311传统的C/S系统的二层体系结构10312新型B/S系统的三层体系结构11313B/S系统结构的特点1232总体设计12321PEPLUGIN的逻辑结构框架13322PEPLUGIN的体系结构设计1333总体研究方案14331用户的角度14哈尔滨工业大学本科毕业设计(论文)IV332开发人员的角度1534本章小结15第4章各个子模块的详细设计1641作业处理过程描述1642接口设计1643编译模块的设计17431GCC编译器简介17432PEPLUGIN对编译器的调用1744判分模块的设计18441判分程序设计18442网络信息处理程序的设计1845数据存储设计1946本章小结19第5章后处理功能的实现2151开发语言和环境的选用21511开发语言21512开发环境2152接口的实现21521作业类型的添加21522接口功能的实现2253编程作业处理的实现22531基本参数模块22532编译模块24533判分模块2554数据存储28541作业设置相关数据操作28542作业后处理的数据操作2855本章小结29结论30致谢31参考文献32附录133哈尔滨工业大学本科毕业设计(论文)1第1章绪论11课题背景在实现计算机运用和信息网络化的今天,效率的大幅提高以及信息交换的深入和扩大,使人类的生活越来越离不开数字化、信息化。信息决定着我们的生存。以多媒体计算机技术和网络通讯技术为主要标志的信息技术,对当代社会产生着重大的影响,改变着我们的工作方式、学习方式和生活方式。信息技术在教育领域的运用是导致教育领域彻底变革的决定性因素,它必将导致教学内容、手段、方法、模式甚至教学思想、观念、理论以及体制的根本变革。111网络教育简介网络教育是随着信息技术的发展而发展的。现代教育技术的广泛应用,使得网络教育具有社会和教育意义上的极大优势教育信息的及时传递,网络教育资源的最充分共享和更有效利用;实时和非实时地任意交流、讨论;学生自主学习、个性化学习及协作学习;教学空间的无限扩展,教育对象的空前膨胀;虚拟技术模拟现实,解决教学难题;促使教育社会化,使教育从学校走向社会与家庭;促进终生教育和全民教育的开展等等。随着信息社会、知识经济的到来,社会对教育有着极大的需求,而目前传统教育由于规模有限、教育资源分配不均、时间、空间固定等原因还远远不能满足社会发展的需要;网络教育的优势和社会对教育的极大需求预示着网络教育有着极大的发展前景。网络教育不仅仅是运用了先进技术手段,提高了教学效率,更重要的是改变了以教师为中心的传统教学模式,形成了以学生为中心的个性化学习方式。这对于提高学生应用语言的能力和自主学习能力,尤其是扩大教学规模,解决师资不足的问题,保证我国高等教育大众化的实现有着极其重要的意义。网络教育使用的平台很多,如CLAROLINE、MOODLE、DOKEOS、BLACKBOARD等。哈尔滨工业大学本科毕业设计(论文)2112MOODLE概述MOODLE是伴随着网络教育的发展而发展起来的一个课程管理系统。MOODLE这个词本是MODULAROBJECTORIENTEDDYNAMICLEARNINGENVIRONMENT(模块化面向对象的动态学习环境)的缩写。它是一个动词,表述的是一个这样的过程遇事不慌不忙,想起什么就做什么,快乐的瞎忙活可也经常会带来一些领悟和创新。MOODLE的开发就是这样,学生与教师在在线课程中学习与教课也是这样。1MOODLE的核心思想是“社会建构主义教育学(SOCIALCONSTRUCTIONISTPEDAGOGY)2”,它允许师生或学生彼此间共同的思考,合作解决问题。从这些过程中,与别人互动,或与教师互动时,学生很自然地就能建立概念,因为他们在交谈时,共同创造出一个可论述的世界,和一个共同架构,在其中可以产生沟通。MOODLE既适合于100在线的课程,又可以作为传统课程的补充。网站管理上,由ADMIN用户管理,包括网站的主题,模块,语言以及新的活动模块插件的增添。学习管理由教师管理,教师对课程进行设置,对特定的学生采取多方面的管理。学生的课程设计也可以通过MOODLE的课程设计模块相互交流、测验、提交和批阅。各类用户可以通过EMAIL、聊天室、BBS发表意见,共同寻找、开发利用网络中丰富的教育资源,充分发挥INTERNET在教学上的作用。3在MOODLE的作业功能中,网上提交作业是一个很重要的功能。网上提交作业是一个基于网络数据库和INTERNET处理的实时处理模块;能够为学生提供一个交流的平台,以促进学生学习能力的相互提高;能够对学生提交的作业进行处理和分析,并且能够将处理的结果反馈给教师,给教师提供参考意见。综上,MOODLE的网上提交作业功能具有降低作业成本,解决繁重的批改工作的优点。它可以免去教师大量的作业布置工作,教师也无须去做批改作业后的统计工作,直接把成绩送到数据库中进行统计、排序、汇总。实现无盘、无纸化作业提交,大大提高了工作效率。基于WEB技术的网络教育平台可以借助遍布全球的因特网,作业提交既可在本地进行,也可在异地进行,大大拓展了作业的灵活性。12课题来源MOODLE为教师提供了一个布置文档作业的模块,教师可以指定作业的哈尔滨工业大学本科毕业设计(论文)3截止日期和最高分。学生用上传文件(可以是任意类型)的方式把作业提交到服务器上。这个模块可以设置成为允许学生迟交作业,但教师可以清楚地看到作业迟交了多久。教师在一个页面可以通过下载学生提交的作业来批改学生的作业,最后为学生的作业打分并给出评语。成绩和评语会显示在每个学生的作业页面上,并伴有EMAIL通知。另外教师还可以选择打分后是否允许学生重新提交作业,以便重新打分。显然,对于编程作业,这需要教师许多的人力和物力去批改。在传统教学与网络教学的结合过程中,学生通过FTP、EMAIL,网络教学平台等网络技术,当然也有通过手写的方式提交编程作业,教师需要对他们的作业一一批阅,或者亲自上机调试,或者让学生演示,然后根据具体的结果给出相应的得分。整个过程需要花费很多的人力,物力,无疑是一项耗时耗力的工作。而且,由于手工操作,难免出现错误和其他人为主观的因素,给作业批判的公正性和严肃性带来影响。因此编程作业的效果不是很好。编程作业是在学习计算机编程艺术里面很重要的一个步骤。然而很不幸的是对编程作业打分是一项单调乏味还有可能出错的一项工作,同时对作业登记也是一个很容易搞混的问题。在这样的情况下,学生往往只给与了很少的编程作业。而且在编程作业的提交过程中,很多学生可能会把一些有语法错误或者结果不正确的程序提交上来,导致浪费教师和学生双方的时间和精力。此次课题MOODLE编程作业插件(PEPLUGIN)就是针对教师和学生提交编程作业时遇到上述的各种情况,能及时地被发现而提出来的。PEPLUGIN通过在学生提交作业时就对作业进行处理来发现学生提交的作业是否合格,以及对学生的作业马上进行判分。这样,MOODLE就能实现编程作业的提交、检错以及编译和判分,并将相关信息反馈给用户,让用户能及时地处理。从而提高教师和学生的效率,发挥网络教学平台的优势。13国内外现状综述1998年中国教育部启动了现代远程教育工程,先后批准了清华大学,北京邮电大学,浙江大学,湖南大学,中央广播电视大学等数十所高校建立网络教育学院,采用网络教学。由计算机进行编程作业评判的方式来考核学生的编程作业情况已经有了一定的应用。哈尔滨工业大学开发了一套主观编程题的自动评判系统,也有不少学校采用了在线提交程序进行评测的方法。哈尔滨工业大学本科毕业设计(论文)4在国外,对编程作业的处理技术也有了一定的研究。2000年,新加坡国立大学首次把应用于程序学竞赛的ONLINEJUDGE平台用在了数据结构与算法这门计算机基础课的程序评测中。4但更多的情况是在学生的编程作业通过FTP,EMAIL等方式提交给教师后,由教师阅读程序以及程序的相关文档然后根据自己的印象和程序执行的结果对作业打分,采用计算机直接对程序判分还不是很普遍。编程题的评判系统有ONLINEJUDGE,QUIVER等等,其中ONLINEJUDGE使用比较广泛。ONLINEJUDGE是一种在线的评测系统,它可以对程序原代码进行编译和执行,并通过预先设计的测试数据来检验程序原代码的正确性。5有很多有名的ONLINEJUDGE在线评测系统,国外有VALLADOLIDOJ,URALOJ,SARATOVOJ等,国内有ZJUOJ,HITOJ,PKUOJ等。2002年,刚成立两年的新加坡IOPT公司推出了“THEEXPERT”软件产品,该软件的主要功能就是搭建ONLINEJUDGE平台,为程序学竞赛和计算机基础课教育提供支持。62002年至2003年间,国内各名牌大学(如浙大,哈工大,同济等)纷纷建立了自己的ONLINEJUDGE平台。其中由PAMWS和XY两位作者开发的HITONLINEJUDGE体现出了很好的性能,作为ACM(ASSOCIATIONFORCOMPUTINGMACHINERY)平台,它在过去的两年多时间里,评测了3000多个程序。就现在而言,对于ONLINEJUDGE平台更多的使用是在为高水平的程序学竞赛提供练习和比赛的平台。QUIVER系统是一个网络服务系统,它可以建立,维护和管理程序测验,跟ONLINEJUDGE很相似。但是他更侧重于作为教学辅助和解决工具用于课堂上的编程测试。它可以提供非常详细的反馈结果,以帮助学生调试程序。714主要研究内容本课题主要是在MOODLE原有功能的基础上增加编程作业处理的功能,以达到方便师生作业管理的效果。PEPLUGIN通过教师对参数的设定,在学生提交作业的时候,自动对程序进行编译,然后调用HITONLINEJUDGE执行程序,对程序的正确性进行判断,并将结果反馈给用户。教师核查的时候,也可以再次提交程序,检验程序。本次课题的主要研究内容包括1设计PEPLUGIN的体系结构;2定义PEPLUGIN为一个功能可扩充的接口;哈尔滨工业大学本科毕业设计(论文)53合理分配与使用各类系统参数;4实现编译和判分功能;5具有高交互能力的用户使用界面;15课题研究的目的和意义采用PEPLUGIN后,教师可以通过设置参数,限制学生提交的编程作业的类型、文件大小、运行时间长短和空间大小。学生在提交编程作业时能够很快的得到作业是否正确的反馈。一方面,PEPLUGIN可以对作业进行自动编译,检查出程序是否存在语法错误;另一方面,它还能验证程序是否能得到正确结果,以及所花费的代价(时间和空间上的)。根据后处理的结果与相应的参数设置,PEPLUGIN能自动给出学生此次编程作业的成绩。这大大地减小了学生提交错误程序的概率,还能给出与程序相应的成绩。当然教师也可以再次审查,对学生的作业提出评语,修改成绩等。与此同时,还消除了教师在检查作业的过程中的主观因素,增加了学生之间的公平性。PEPLUGIN能很快地运用到现实的学习生活中去,给学生和教师带来立竿见影的效果;极大地提高学生和教师双方面的效率,减轻教师在教学管理上的负担;还使学生将来能更好地适应快速发展的信息化时代;进一步发挥出计算机网络对当今教育领域甚至其他行业的突出贡献。哈尔滨工业大学本科毕业设计(论文)6第2章需求分析21系统原有功能在使用了MOODLE这一网络教学平台以后,通过MOODLE的作业模块可以让教师直接发布不同类型的作业,并对作业的一些基本参数做出要求。针对编程作业,教师可以设定“UPLOADASINGLEFILE”作业类型的作业,然后描述作业的要求,并且设定提交的截止时间,文件的大小,是否允许重新提交等参数。学生应该在教师的时间设定内提交按照参数设定的作业。这样教师就可以在线给学生的作业打分,并给给他添加评语。同样,其他的作业类型也可以让教师直接批改给出成绩,并且统计学生作业的提交情况,以及成绩的登记。这样,就把与教师批改作业相关的很多手续都交给了计算机来处理,省去了很多不必要的麻烦,给教师带来了很大的方便。学生也可以通过MOODLE直接提交作业,对不满意的作业可以在教师设定的期限内重新提交,当教师给出成绩以后学生也可以通过MOODLE直接查分。显然,MOODLE没有为用户提供编程作业的后处理功能。根据MOODLE的原有接口开发的编程作业插件PEPLUGIN,就是用于解决用户对编程作业处理的需求的。22用户需求221管理员管理员能够在MOODLE原来的基础上添加新的作业类型,并保证添加的编程作业的完整性。编程作业的完整性包括增添允许的文件类型,增删判分系统以及设置判分系统的相关配置。文件类型可以是单独的一个C语言程序,C程序,JAVA程序以及由多个文件组成的工程。判分系统允许多种判分系统的存在,笔者采用的是ONLINEJUDGE的方式实现的判分系统。因此在网站的配置上需要设置编译器和判分程序的路径。同时针对判分程序需要设定一些参数,比如程序运行时间的最大值,内存空哈尔滨工业大学本科毕业设计(论文)7间的最大值等等。222教师教师除了能描述作业外,还能指定作业的截止时间和最高分,设置作业的提交类型。然后针对不同的作业类型设置不同的参数。笔者设计的是提交一个编程作业类型的插件。因此在教师设定了选择编程作业以后,需要设置最大的文件大小,文件的类型,是否允许重新提交以及允许重新提交的次数,在学生提交了作业以后是否发送EMAIL通知教师,编译器的类型,判分程序运行的参数(包括运行时间和内存大小)和判分程序的测试数据。设置完这些参数以后,教师应当能够对不同的处理结果提供一个合理的判分标准。教师布置作业,应当还能够查看学生作业的提交情况和PEPLUGIN对作业的评判结果。再者,能即时修改作业要求和各类参数,以及测试数据,修改完以后有必要再次对已经提交的作业进行重新处理。以下详细介绍一下各个子模块的功能需求文件大小的最大值由MOODLE的平台语言PHP的配置和管理员在MOODLE的配置文件里面设置,教师只能选择以管理员设置的最大值为上限,根据具体的作业规格,设定教师自认的最大值。文件的类型在由开发人员或者管理员的规定文件类型之内进行选择。对于未支持的文件类型,教师可以设定文件类型无限制,但是相关的作业后处理也就不再进行。对于有重新提交次数限定的作业,一旦判分成功以后就不允许重新提交,否则的话,可以在重新提交次数之内对作业进行再次提交,对于不限定次数的则可以一直提交,直到过了截止日期。判分系统的选择则是根据教师的作业要求来选择,教师也可以不选择判分系统,这样的话就跟提交一个普通作业一个样。如果没有选择编译器,那么显然也不用设置判分程序和其他的相关参数。选择了某个编译器的话,就应该能让教师选择经过该编译器处理后相应的判分程序和判分程序相关的参数和测试数据。同样地,教师也可以不选择判分程序只对作业进行编译,反馈给学生编译是否通过的信息。当教师对作业要求或者测试数据做出改动时,PEPLUGIN能对原来已经提交的作业再次进行处理,得到新的处理结果,提供学生和教师查看。哈尔滨工业大学本科毕业设计(论文)8223学生学生最重要的是能够查看作业的要求和提交上自己的作业并争取能取得满意的成绩。首先要求能够显示完整的作业要求,其次能够保存并及时处理提交的作业,最后能将学生提交的作业的后处理具体结果信息反馈给学生。224开发人员开发人员能在PEPLUGIN的基础上增添新的功能,像编译器的添加,判分程序的改进,甚至整个评测系统的增添。而这一切都是在不改变或者尽可能少的修改原有系统的基础上进行的。因此,PEPLUGIN应该为开发人员提供一个独立的接口,方便扩充新的后处理功能。开发人员添加新的编译器和判分程序后能处理新的文件类型,或者对原有文件类型的后处理进行改进。23PEPLUGIN功能概述PEPLUGIN的总体目标是在计算机网络,数据库和网络教学平台的基础上,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的作业后处理插件,实现对学生编程作业的自动判分,为教师和学生两方面节约人力、物力,并且提供一个公正的评判环境。简要的功能描述如图21所示图21PEPLUGIN功能概述功能增改信息反馈作业提交作业查看学生开发人员系统配置作业描述教师PEPLUGINMOODLE管理员哈尔滨工业大学本科毕业设计(论文)924本章小结本章首先介绍了原有系统的功能,即只能简单的实现作业提交。接着从原有系统的不足,详细分析了各类用户对编程作业插件的需求。最后引入PEPLUGIN的设计目标,从总体上介绍了PEPLUGIN的各项功能。哈尔滨工业大学本科毕业设计(论文)10第3章体系结构设计31B/S体系结构与C/S体系结构的比较80年代末,人们提出了客户/服务器CLIENT/SERVER,简称C/S结构,由于这种结构比较适于局域网运行环境,所以逐渐得到了广泛地应用。随着应用系统大型化及基于INTERNET/INTRANET应用的迅速发展和普及,这种二层结构2TIER的缺陷和不足越来越明显,于是人们又在二层结构的基础上提出了一种具有三层结构3TIER的应用模型浏览器/服务器。8311传统的C/S系统的二层体系结构C/S结构是20世纪90年代末非常受欢迎的一种分布式计算模式,其逻辑结构如图31所示。它的优势在于广泛地采用了网络技术,将系统中的各部分任务分配给分布在网络上的担任不同角色计算机,它把较复杂的计算和管理任务交给网络上的高档机器服务器SERVER,而把一些频繁与用户打交道的任务交给前端较简单的计算机客户机CLIENT,通过这种结构完全实现了网络上信息资源的共享。图31C/S逻辑结构在C/S系统中,将应用程序分为两大部分一部分是由多个用户共享的信息与功能,这部分称为服务器;另一部分是为每个用户所专有,称为客户部分。客户部分负责执行前台功能,如管理用户接口、数据处理和报告请求等;而服务器部分执行后台服务,如管理共享外设、控制对共享数据库的操客户机显示逻辑事务处理逻辑数据处理逻辑数据库请求响应服务器哈尔滨工业大学本科毕业设计(论文)11纵、接受并应答客户机的请求等。这种体系结构由多台计算机分别执行,使它们有机地结合在一起,协同完成整个系统的应用,从而达到系统中软、硬件资源最大限度的利用。客户机和服务器以简单的“请求响应”方式来完成会话过程,这在解决小规模的简单应用时是很有效的,但是当应用规模扩大至企业级或是更大时,这样的体系结构就有无法克服的缺陷,当与服务器连接的客户很多时,服务器会因为负荷严重超载而性能急剧下降。即使是在连接的客户机不多的情况下,如果服务器端业务逻辑太复杂,同样会导致服务器性能的下降。同时基于传统的二级客户机/服务器结构的应用软件往往是一个客户端,一个服务端成对地出现,当应用的业务逻辑放在客户端时,将使得应用系统的可扩充性和可维护性很差,如果访问另一套服务器就需要另一套软件,因此客户端必须配置许多软件。另外,在应用程序有任何变更的时候,必须升级所有的客户软件,这造成很高的时间和资源消耗,大大降低了整个系统得投资回报率;当应用的业务逻辑放在服务器一端时,势必增加服务器的压力,使得服务器的整体性能下降。另外从软件的跨平台性,对硬件成本的要求以及应用系统的安全性多个角度也暴露出了C/S模式的弊病。312新型B/S系统的三层体系结构B/S结构是随着INTERNET技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种编程语言技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。图32显示了B/S结构的逻辑结构。哈尔滨工业大学本科毕业设计(论文)12图32B/S逻辑结构313B/S系统结构的特点B/S结构具有以下特点1开放的,非专用的,经过标准化组织确定的标准,具有通用性和跨平台性。2只需在客户端装有通用的浏览器即可,维护和升级都在服务器端进行,客户端不做任何改变,大大降低了开发与维护成本。3用户界面都统一在浏览器上,易于使用,界面友好,使用其它软件,不需再学习。4客户端不负责数据库的存取和复杂的计算等,只进行显示,大大降低了对客户端的要求,是一个“瘦”客户机5系统的三部分模块相互独立,其中一部分改变不会影响其它部分,系统改变容易,可用不同厂家的产品组成性能更佳的系统。6系统在客户机与数据库服务器之间增加了一层WEB服务器,客户机无法直接操纵数据库,有效地防止了非法入侵。32总体设计根据31节的分析比较,C/S结构和B/S结构互有优点。在设计PEPLUGIN时笔者结合了CS/结构和B/S结构。用户通过浏览器查看页面,需要显示相关的数据,但不进行复杂的数据处理;服务器处理用户提交的数据是一个漫长的过程,不适合即时显示。考虑到以上数据处理过程的特点以及C/S结构和B/S结构的优缺点,前台与用户的交互采用了B/S结构,后台数数据库服务器显示逻辑事务处理逻辑数据处理数据库浏览器WEB服务器请求响应请求响应哈尔滨工业大学本科毕业设计(论文)13据的处理则采用了C/S结构。321PEPLUGIN的逻辑结构框架客户端在浏览器中通过PEPLUGIN对作业进行设置、查看、提交,并将作业设置数据写入数据库中。服务器端则是通过PEPLUGIN的一个守护进程9监听某个端口,来接收用户编程作业的数据请求。该守护进程是一个与WEB服务相独立的进程,只负责端口数据的分析处理。当有请求到来时,守护进程调用一个线程接收数据,另一个线程分析处理数据,然后读取数据库中相关参数,调用编译器和判分程序来处理相关作业,并将数据写入数据库中。WEB服务通过读取数据库来动态地反馈给用户数据。根据以上对PEPLUGIN的客户端与服务端的描述,将PEPLUGIN的逻辑结构设计成如图33所示图33PEPLUGIN逻辑结构322PEPLUGIN的体系结构设计UPLOADSINGLE作业类型是开发编程作业插件的基础。它是MOODLE提供的一个作业类,简单实现了学生提交作业的基本功能,能让教师设定一些简单PEPLUGIN作业设置查看提交客户端作业请求作业响应PEPLUGINWEB服务数据库守护进程接收数据处理作业编程作业处理请求服务器端哈尔滨工业大学本科毕业设计(论文)14的作业要求参数,并在学生提交作业以后批改作业,为作业打分和写评语。因此PEPLUGIN只需要在UPLOADSINGLE作业的基础上添加新的后处理功能即可。其中,后处理的核心功能包括对作业的预处理、编译和判分。根据核心功能模块的需求,PEPLUGIN的体系结构设计如图34所示图34PEPLUGIN结构设计33总体研究方案在PEPLUGIN的整个设计与实现过程中,需要更全面的理解MOODLE的设计理念,更透彻地认识到所要解决的问题的重点和难点。一方面,要从用户的角度出发,既要考虑插件的实用性,又要考虑如何设计版面,使用户使用起来最方便,最顺手。另一方面,也需要从设计者的角度去考虑如何最优化的实现PEPLUGIN,既让该插件有又准确又高效的运行性能,又让插件能设计成一个容易扩充功能的接口,使以后的开发能够基于PEPLUGIN实现更多的功能。这就要求笔者用双重身份去设计实现PEPLUGIN。如何能达到以上的设计要求就是本次课题最需要关注的地方。331用户的角度应充分考虑用户的使用习惯,为用户设计优化的网页版面(包括参数的作业类型编程作业编译器模块判分模块预处理模块类型大小检测自定义预处理GCC,G编译器自定义编译器HITONLINEJUDGE自定义判分工具哈尔滨工业大学本科毕业设计(论文)15选择,文件的提交,数据的反馈显示等),使网页既美观又实用。在开发完成以后,可以进行一定的用户反馈调查,针对其中的不足做出相应的改善。332开发人员的角度本插件基于已有的作业类型进行新的作业类型的设计实现,缩短了开发人员实现该插件的时间。在实现的过程中,不改变或者尽可能少的改变原有的系统代码,将该插件设计成了有较高独立性的功能插件。同时又将插件的后处理定义成一个接口,也为以后增添新的后处理提供方便。34本章小结本章首先详细介绍了传统的C/S体系结构和新型的B/S体系结构,并分析了两个结构的优缺点,为PEPLUGIN设计成B/S结构提供了理论参考依据。接着又描述了PEPLUGIN整体结构的设计和内部功能模块的组织,对PEPLUGIN有一个宏观上的认识。最后从用户与开发人员的双重角色出发,描述了PEPLUGIN的总体研究方案,为整个插件的研究指明了方向。哈尔滨工业大学本科毕业设计(论文)16第4章各个子模块的详细设计41作业处理过程描述在教师设置了一个编程作业以后,对于每一个学生提交的作业都应该进行由教师设定的后处理。由第3章中的内部结构设计可以看出,一个完整的作业处理过程包括预处理,编译和判分三个阶段。1预处理检测文件类型和大小是否符合教师设定的文件类型和大小。2编译在预处理成功以后,对学生提交的作业进行编译处理,并将编译结果保存到数据库。3判分编译完成以后,对编译成功的作业,则进行判分。判分的数据也将被保存到数据库。可以看出,除了预处理,剩下的处理过程都是以前面的成功为前提的。因此当处理过程中间出现错误时,作业的后处理将不再继续,作为处理失败。无论处理成功或失败,所有的信息都将保存到数据库里面,以供学生和教师查询。一个作业的完整的生命周期中,教师有可能改变测试数据,这样就需要重新对原来提交的作业重新处理。因此,PEPLUGIN对作业的处理应该能够实现面向学生和教师两种用户的功能。针对个人用户,实现单独的作业处理功能;针对教师,实现批处理的功能。42接口设计为了能对编程作业增添或修改处理功能,必须为PEPLUGIN设计一个开放接口。MOODLE本身就拥有了良好的模块接口。比如在作业类型的接口方面,开发人员可以自由地添加作业类型,而作业具体的要求设置和后处理功能则都是由作业内部实现的,可以说是完全脱离MOODLE限制的。MOODLE是通过调用不同的作业“类”10来实现不同的作业类型的。同样PEPLUGIN的设计也采用MOODLE的这个设计理念来完成。考虑到整个处理过程中采用的是先编译后判分这一方法,因此笔者只介哈尔滨工业大学本科毕业设计(论文)17绍针对采用先编译再判分这种方式的判分系统的接口设计。编译器和判分程序除了在处理过程的次序上有一定的先后依赖关系,是相互独立的。因此,笔者在设计的时候采用了同一套机制来实现编译器和判分程序的接口功能。方法也与MOODLE的作业类型接口相似,相区别的是PEPLUGIN的功能接口是通过调用不同的文件,而不是采用MOODLE的调用不同的类来实现。43编译模块的设计在PEPLUGIN的功能设计上,对编译器有一个很高的要求,只有一个优秀的编译器来处理编程作业,才能让后面的判分过程实现的更加准确高效。笔者设计的编程作业处理中使用了有名的GCC编译器,来处理C语言程序。431GCC编译器简介LINUX系统下的GCC(GNUCCOMPILER)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高2030。GCC是整个协作软件开发理念的基础,时至今日,GCC的使用范围已不仅仅限于LINUX平台,而是扩展到了包括WINDOWS在内的很多平台。这样,GCC性能的高低,还关系到许多专有软件的核心竞争力。从1999年4月开始,GCC的含义从GNUCCOMPILER变成了GNUCOMPILERCOLLECTION,支持C、C、OBJECTIVEC、CHILL、FORTAN和JAVA等语言。432PEPLUGIN对编译器的调用PEPLUGIN的设计过程中,可以通过直接调用系统函数来执行教师选择的编译器,也可以通过网络通信,发送给服务器编译的消息来实现编译的功能。与编译相关的参数可以由教师来设定,也可由开发人员设定。当然开发人员也可以通过PEPLUGIN的接口功能设计编译模块。哈尔滨工业大学本科毕业设计(论文)1844判分模块的设计PEPLUGIN的第二个核心功能就是能够对成功通过编译的程序做出判分处理。PEPLUGIN采用了B/S体系结构来实现,客户端不负责数据的处理。因此,就需要在服务端实现对作业进行判分的功能。客户端只需要上传待处理的文件和请求服务器采取判分处理的消息即可。根据以上分析,将判分模块设计成两部分判分程序和网络信息处理程序。441判分程序设计由第一章的相关技术简介可知,判分技术已经趋于成熟,应用越来越广泛,尤其是ONLINEJUDGE系统在编程竞赛上的应用。此次PEPLUGIN的判分程序的实现采用了直接调用HITONLINEJUDGE内核来设计。这里将判分程序与PEPLUGIN脱离而设计,也就是说判分程序本设计成一个跟编译器程序类似的独立的程序,而并不需要PEPLUGIN的平台支持。因此可以采用与调用编译器类似的方法来调用判分程序。笔者采用的是通过网络通信在服务器端实现判分功能,然后通过网络通信将判分程序的运行结果发送给WEB服务器。服务器针对不同的结果采取不同的数据处理方法。判分程序通过模拟现有的运行环境,执行待测试程序,产生待测试程序的运行结果。判分能捕获待测试程序的运行信息与输出结果。通过捕获的这些信息,就能判断程序的正确性。442网络信息处理程序的设计PEPLUGIN采用了B/S结构,客户端通过发送消息请求,服务端接收并分析数据,然后执行正确的处理。在网络中计算机相互之间要想正确地传送数据,必须在数据的格式传输顺序及内容等方面有一个约定或规则,这种约定或规则称为网络协议PROTOCOL,它实质上是网络通信时使用的一种共同语言。11网络协议对于计算机网络不可缺少。不同结构的网络、不同厂家的网络产品,各自使用不同的协议,但连入到公共计算机网络时,必须遵循公共的协议标准,否则就不能够互连互通。通俗地说,网络协议就是网络之间沟通、交流的桥梁,只有相同网络协议的计算机才能达到信息的沟通与交流。哈尔滨工业大学本科毕业设计(论文)19PEPLUGIN的处理过程中需要接收用户发送的请求信息,因此笔者设计了一个网络信息处理程序。该程序为一个服务性程序,拥有自定义的网络协议。协议结构很简单,如图41所示,包括头信息和具体信息和尾信息三部分。图41协议结构头信息用来选择处理的方法;协议具体信息则作为判分程序的参数,尾信息作为具体信息结束标志。在判分程序处理结束后,该网络信息处理程序又将具体的处理结果发送给WEB服务器。根据该网络信息处理程序要实现的功能,程序的设计如下1该程序应该为一个网络服务程序,监听客户端发来请求;2在接收到客户端的请求以后,程序根据头信息的不同类型对具体信息采取不同的处理方法;3信息处理完以后,调用判分程序来判分。4将判分的结果发送给WEB服务器进行处理。45数据存储设计MOODLE支持很多种类的数据库,尤其是MYSQL和POSTGRESQL。通过MOODLE内部对数据库函数的封装,使得开发人员在数据库的操作上更加得灵活方便。本次编程作业是基于UPLOADSINGLE作业类型开发的。利用MOODLE的接口功能,在数据设计上PEPLUGIN采用了MOODLE作业模块的数据表结构和数据项。判分模块对数据的需求很多,因此数据项的数目可能不能满足设计人员的使用需求。对于不够的数据项可以采用建立新的表或通过数据文件来存取数据。在对数据库文件进行插入、修改和删除操作时还需要考虑对数据库的互斥和同步等细节。46本章小结本章首先介绍了简要介绍了PEPLUGIN对作业处理的整个过程,为插件的各个子模块设计勾勒出了一个设计轮廓。其次简要介绍了接口的设计方头信息协议具体信息尾信息哈尔滨工业大学本科毕业设计(论文)20案。然后针对处理过程重点介绍了编译器和判分程序两个模块的设计。其中编译模块只是简单的直接调用,判分模块则由核心判分程序和网络信息处理程序构成。最后又从数据库选用,数据结构的设计和数据库的操作上对PEPLUGIN的数据存储做了探讨。哈尔滨工业大学本科毕业设计(论文)21第5章后处理功能的实现51开发语言和环境的选用511开发语言PEPLUGIN是基于MOODLE开发的,因此开发语言选择了MOODLE的平台开发语言PHP。PHP(PHPHYPERTEXTPREPROCESSOR)是一种在服务器端执行的脚本语言12。PHP代码在服务器一端被解释转变成普通的HTML页面内容,送给浏览器一端。这种模式使得我们可以用它来完成相当复杂的功能。数据库与用户端之间的接口使用PHP,PHP和MYSQL这两样东西加在一起,对于开发数据驱动的网站而言是最佳组合。512开发环境MOODLE是在LINUX系统下基于APACHEMYSQLPHP环境开发完成的,在WINDOWS平台下得支持也很好。PEPLUGIN的开发环境也采用了以上组合。HITONLINEJUDGE是基于LINUX平台的评测系统,为了能更方便地实现PEPLUGIN对HITONLINEJUDGE的调用,因此选择了LINUX操作系统作为技术平台。LINUX自问世以来就一直受到人们的关注,并得到了迅猛的发展。目前已经发展为一个支持多用户,多进程,实时性好,功能强大而且稳定的操作系统,同时LINUX具有良好的兼容性和可移植性。这为PEPLUGIN的开发实现以后的移植带来了很大的方便。52接口的实现521作业类型的添加在作业的添加方面,MOODLE提供了一个扩展功能接口,开发人员只需哈尔滨工业大学本科毕业设计(论文)22要根据自己的需求设计好作业类型,然后根据接口的扩展方案直接添加即可。具体实现如下作业模块对不同作业的引入是通过在同一个文件调用不同的作业类来实现的。这些类有一个基类ASSIGNMENT_BASE,该基类中定义了一些子类常用的函数(VIEW、SETUP等),方便子类的继承。不同作业类的调用又是通过用户选择一个变量来传递的。当用户选择PEPLUGIN所使用的UPLOADAPROGRAMEXERCISE作业类型时,就会调用UPLOADPE类生成一个对象。其后的各种作业处理操作都是通过对该对象的成员函数的调用来实现。因此,作业的添加就很方便的实现了。而该作业内部的具体操作则是完全脱离MOODLE的限制的。相反,它还可以灵活地调用MOODLE自带的库函数来实现自己需要的功能,极大地提高了编程效率。522接口功能的实现MOODLE的接口给PEPLUGIN的接口设计做了一个人很的榜样。因此在PEPLUGIN编译功能和判分功能的实现上,笔者采用了与MOODLE类似的方法,即根据用户的选择调用不同的文件来实现。这样,未来的开发者只需要符合PEPLUGIN的开发原则,调用PEPLUGIN提供的接口函数,就能在现在的基础上为PEPLUGIN增添新的编译和判分处理功能。在PEPLUGIN的处理过程过程中,定义了2个接口函数1COMPILE,编译学生提交的程序;2GRADE,为学生的作业判分;程序开发员只须在他们自己设置的作业类型中实现以上的函数即可,而具体的实现方面,PEPLUGIN给了程序员很大的空间来开发自己的作业后处理功能。53编程作业处理的实现531基本参数模块当教师布置一个新的作业类型时,教师需要设置一系列的参数。首先是哈尔滨工业大学本科毕业设计(论文)23作业名称,作业描述,作业的截止时间,作业类型等一些基本的参数。在选择完作业类型以后,就需要选择跟作业类型相关的参数。编程作业是基于UPLOADSINGLE开发设计的,有一部分参数是从UPLOADSINGLE保留下来的,保留的参数包括文件大小的最大值,是否允许重交,是否在学生交完作业以后EMAIL通知教师。根据PEPLUGIN的功能需求,还需要设置的特定参数包括1编译器的类型。通过遍历编译器类型目录来实现动态产生编译器的选择项,以提供给教师选择。2判分程序的类型。同样是通过遍历判分程序类型目录来动态产生判分程序的选择项,以提供教师选择。3判分程序的最大内存限制和最大运行时间。当选择了一个判分程序时,显示内存空间和运行时间提供教师选择,这在作业判分时需要调用。4重新提交的次数。由于学生提交的作业可能无法一次通过,需要重新提交。但出于对系统资源的考虑,不能让学生无限制地提交作业。因此需要对重新提交的次数做出限定。5测试数据。针对每一个编程作业,判分程序需要通过测试数据来评测程序性能。6评分标准。为了扩大教师的自主功能,对每一个程序的评测结果的具体成绩由教师来设定。这里的评分标准设定包括运行结果正确下的设定和运行结果错误下的设定两类。上述参数中,各类编译器和判分程序的路径都由管理员在MOODLE的系统配置页面里面设置。在设置参数的时候,需要动态地出现参数选项。比如教师只选择编译器不选择判分程序时,判分程序的相关参数就无需显示,笔者采用了JAVASCRIPT技术实现动态网页的显示,提高了与用户的交互能力并保证了数据的正确性。具体参数设置如图51所示哈尔滨工业大学本科毕业设计(论文)24图51具体参数设置设置完作业以后,PEPLUGIN根据不同用户的权限,调用不同的函数来显示作业的参数。532编译模块PEPLUGIN的编译模块包括对单个作业的处理和对多个作业的批处理两类。针对学生用户提交的作业,笔者采用了单作业处理的方法。在网页中直接调用执行函数来调用GCC实现对学生作业的编译。同时通过判断函数的返回值来判断是否编译成功。对于编译成功的,则继续进行后处理。为通过编译的,则提示错误信息。针对教师用户在改变了测试数据或评分规则以后,需要对所有已提交的作业编译,是一个比较漫长的过程。把所有的作业都交由网页来执行显然是不实际的,故采用了由服务器后台来执行。重新编译所有作业,一般是在教师更改了跟评分程序相关的数据(包括测试数据和评分规则)以后才进行,哈尔滨工业大学本科毕业设计(论文)25因此后台对作业批处理的实现在判分模块里面描述。533判分模块5331判分程序PEPLUGIN进行判分的核心就是如何准确的对用户提交的作业判分。笔者采用了HITONLINEJUDGE在线评测系统的内核来对作业进行评分。HITONLINEJUDGE能对用户提交的程序进行编译和数据测试,验证程序的正确性。笔者从HITONLINEJUDGE的作者PAMWS那儿取到了实现HITONLINEJUDGE的函数库LIBSANDBOX。通过最基本的函数来实现HITONLINEJUDGE的功能。整个判分过程包括待测试程序的运行产生输出数据和根据输出数据实现判分。首先需要用到PEPLUGIN中的一个重要程序SBOX(SBOX为由编译器产生的一个可执行文件模拟运行环境,然后执行该文件,生成输出数据文件)。SBOX是通过LIBSANDBOX提供的四个函数来安全地产生输出数据,而不是直接在服务器执行待测试程序。先定义一个SANDBOX_T结构体SANDBOX。接着调用函数SANDBOX_INIT对SANDBOX初始化,初始化结束后,将运行时间,内存大小以及待测试程序和相关的测试数据赋值给SBOX的各个数据项。然后依次调用SANDBOX_CHECK、SANDBOX_EXECUTE和SANDBOX_FINI执行具体的程序测试。调用SANDBOX_EXECUTE的返回值就是程序的测试结果。测试结果有以下几种情况1ACCEPTED程序执行成功;2RESTRICTEDFUNCTIONS程序中包含着一些受限制的函数;3OUTPUTLIMITEXCEED程序输出数据太多;4MEMORYLIMITEXCEED程序运行内存超限;5TIMELIMITEXCEED程序运行超时;6RUNTIMEERROR程序运行出错,一般是SIGSEGV(非法引用未分配的内存)或者SIGFPE(除零);7ABNORMALTERMINATION非正常的结束,一般是返回了非0值;8INTERNALERRORSANDBOX执行出错;在经过SBOX处理以后,根据输出结果来对待测试程序判分。笔者实现哈尔滨工业大学本科毕业设计(论文)26的判分流
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拆除工程合同保密与知识产权保护协议
- 出租车大包合同范本:夜间出租车安全运营管理协议
- 2025年综合类-乡村医生-乡村医生综合练习历年真题摘选带答案(5套单选100题合辑)
- 2025年综合类-临床医学检验技术(士)-肾功能及早期肾损伤的检查历年真题摘选带答案(5卷单选题百道集合)
- 2025年综合类-中级数据库系统工程师-操作系统知识历年真题摘选带答案(5卷单选100题合辑)
- 容县摆摊日常管理办法
- 学院安全用电管理办法
- 2025年综合类-中医护理学主管护师-中医护理学基础历年真题摘选带答案(5卷单选100题合辑)
- 宿州学院合同管理办法
- 台商子女学校管理办法
- 2023年突发急性传染病防控和应急处置技能竞赛试题库
- 2025年天津市和平区天津益中学校中考语文模拟试卷(3月份)
- CT增强扫描碘对比剂外渗预防与护理规范 DB45T 2935-2024
- 化学-海南省天一大联考2024-2025学年高三学业水平诊断(三)试题和答案
- 各岗位应知应会“明白卡”(含矿长等)
- 商场餐饮店装修施工方案
- 淤泥泥浆固化施工方案
- 护理实习生急诊科入科宣教
- DG∕TJ08-202-2020 钻孔灌注桩施工标准
- 激光设备调试报告范文
- T-CAMET 05002-2020 城市轨道交通隧道抗风压防火门工程技术规范
评论
0/150
提交评论