《ASP在线测试系统.doc》由会员分享,可在线阅读,更多相关《ASP在线测试系统.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于B/S结构的ACM 竞赛在线测评系统02计本2 陈江勇摘要ACM/ICPC是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。我国自从1996年开始参加ACM/ICPC亚洲区预赛以来,越来越多大学参与到竞赛中,并相继开发出自己的ACM竞赛在线测评系统。拥有属于自己的ACM竞赛在线测评系统对于一个想积极参与到ACM竞赛中的大学来说是十分必要的。在这种背景下,我们开发了基于B/S结构的ACM竞赛在线测评系统。本系统主要实现了ACM竞赛试题在线测评功能。本文首先阐述了ACM竞赛在线测评系统在国内外的发展现状,接着介绍本系统应用到的开发工具和相关技术,根据广东技术师范学院的具体情况确定本在线
2、测评系统的系统需求和设定运行环境要求。本文重点研究系统总体结构的设计思想和各主要功能的实现,包括系统运流程图、数据库的设计和创建、竞赛题目资料的录入和管理、在线测评、成绩统计发布等,同时附上部分主要源代码加以说明和系统运行的截图对本系统的业务流程进行说明。最后提出本在线测评系统的下一步研发的重点,对系统完善工作的进一步展望。关键词:ASP ACM竞赛试题录入管理在线测评AbstractThis ACM contest online judge system is the core subsystems of the Guangdong polytechnic normal university
3、 (GDIN) ACM contest net ,its main function is to school and manage the ACM contest information ,online judge if the source code submitted by the participants is true or false , statistics and issued participants scores. ACM/ICPC(ACM International Collegiate Programming Contest)is sponsored by the fa
4、mous and authority organization ACM(Association for Computing Machinery),which be accepted to be the largest and highest level International collegiate programming contest of the world, many famous companies and universities had been concerning it for a long time .Chinese universities took part in t
5、he ACM contest since 1996. From then on , more and more Chinese universities join the ACM contest, and successively develop various ACM contest online judge system. Its necessary to has the own ACM contest online judge system for a university which want to actively participate in the ACM contest. Fo
6、r this, we develop this ACM contest online judge system. Considering the actual conditions of Guangdong polytechnic normal university, we design the suitable function modules. This thesis introduces the ACM contest online judge systems development situations, and the using develop tool, related tech
7、nology of this systems. It focus study the GDIN ACM contest online judge systems overall structure design concepts and various functions methods to achieve, including data flow, databases design and create, ACM contest Informations school and manage, online judge, Statistics and Issued participants
8、scores. Besides, additional some of the source codes to explain. In this part, focus detailed described the core online judge functions design concepts and methods to achieve. At last add some pictures that show the business process of the system, detail introduce the whole business process.Keyword
9、ASP ACM contest school and manage of information online judge目录第1章 引言11.1ACM竞赛介绍I1.2ACM竞赛在线测评系统的发展现状1第2章 需求分析及开发环境32.1项目背景及开发目的32.2 开发工具32.3 运行需求3第3章 结构设计53.1 数据库的创建与设置53.2 功能模块设计5第4章 功能模块代码设计74.1 试题录入和管理模块设计思路74.1.1 试题录入和管理流程74.1.2 内容编辑设计思路及实现示例84.2 竞赛答案在线测评(核心部分)84.2.1 竞赛答案在线测评的设计实现思路84.2.2 竞赛答案在线
10、测评的主要源代码及注释94.3 系统运行的一些界面举例134.3.1编辑竞赛信息134.3.2 参赛者进入竞赛题目列表页面选择竞赛题目来做14第5章 结论15参考文献17致谢19第1章 引言1.1ACM竞赛介绍ACM/ICPC(ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(Association for Computing Machinery,美国计算机协会)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自己分析问
11、题和解决问题的能力。此项赛事不单是培养参赛选手的创造力,团队合作精神以及他们在软件程序开发过程中的创新意识,同时也是检测选手们在压力下进行开发活动的能力的最好平台。可以说,ACM国际大学生程序设计竞赛是参赛选手展示计算机才华的广阔舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。该项竞赛从1970年举办至今,一直受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注,在过去十几年中,APPLE、AT&T、MICROSOFT和IBM等世界著名信息企业分别担任了竞赛的赞助商。可以说,ACM国际大学生程序设计竞赛已成为世界各国大学生最具影响力的国际级计
12、算机类的赛事, 是广大爱好计算机编程的大学生展示才华的舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。1.2ACM竞赛在线测评系统的发展现状正因为ACM竞赛在全国各计算机院系普遍受到越来越多的重视,所以不少高校相继开发或已经开发出自己的ACM竞赛在线测评系统,提供给ACM竞赛的爱好者和准备参赛的广大学生一个相互交流、在线做题、模拟练习的平台。一般的高校ACM竞赛网都包括新闻发布、ACM论坛、在线测评、在线比赛、成绩公布查询等基本功能。其中,在线测评功能(Online Judge)是系统的核心,是ACM竞赛系统区别于其他新闻消息发布类系统的标志。这些站点提
13、供了大量的题库并支持在线判卷,你只需要把程序源码提交上去,马上就可以知道自己的程序是否正确,运行所使用的时间以及消耗的内存等等状况。目前,主要的建立了ACM在线测试网站的大学有:俄罗斯的Ural州立大学、西班牙Valladolid大学(University de Valladolid)、浙江大学、杭州电子科技大学、北京大学、同济大学,它们都有各自的特点。第2章 需求分析及开发环境2.1项目背景及开发目的 自从中国内地从1996年开始参加ACM/ICPC亚洲区预赛,中国各大学自己的ACM竞赛在线测评系统如雨后春笋般不断涌现,为广大ACM爱好者和学生提供了一个网上做题和交流的平台,这对于提高我国的
14、ACM竞赛的参赛质量来说是十分重要的。而拥有自己的ACM竞赛在线测评系统,对于一个学校积极参与到ACM竞赛中也是十分必要的。正因如此,我们做了这个ACM竞赛在线测评系统,供广东技术师范学院的广大学生和其他ACM爱好者使用。2.2 开发工具本系统应用了ASP平台和Access数据库,开发工具方面运用DreamweaverMX。2.3 运行需求在C:Program FilesMicrosoft Visual Studio目录下安装Microsoft Visual C+6.0,本系统中的在线测评功能是针对VC+语言的,运行时要调用该文件夹中的编译文件cl.exe来编译。在目录C:中创建.bat文件C
15、reate.bat和 Action.bat,在在线测评功能中要调用到批处理文件执行指定操作,没有这两个文件则在线测评功能将无法实现。第3章 结构设计3.1 数据库的创建与设置 本系统设计的数据库选用Microsoft Access数据库。相对其它的数据库来说,它的操作简单容易些,而且功能强大,适合本设计的具体需求。 数据库设计思路:设置三个表MatchInfo、MatchQues、MatchDetail和一个视图Vscores,分别记录竞赛基本信息、竞赛题目信息和竞赛成绩信息。作为记录实体(竞赛、试题)信息的表MatchInfo、MatchQues,分别设置MatchID(竞赛ID)和Mque
16、sID(题目ID)作为逻辑主键,MatchName(竞赛名称)、MquesNO(题目序号)为业务主键。3.2 功能模块设计 本系统主要分试题录入和管理、参赛者选择比赛参与做题、成绩统计与发布这三大模块。其中试题录入和管理分为竞赛列表编辑、题目列表编辑、题目内容设置编辑三个部分。参赛者选择比赛参与做题分为选择竞赛、做题两部分。成绩统计与发布分为成绩统计、成绩发布和查询两部分。第4章 功能模块代码设计4.1 试题录入和管理模块设计思路4.1.1 试题录入和管理流程为了试题管理的规范性和条目的清晰,本系统的试题的录入和管理分三个层次三个页面来实现,分别是竞赛列表、竞赛题目列表、竞赛题目内容。其中,竞
17、赛列表和竞赛题目列表是一对多的关系,竞赛题目列表和竞赛题目内容也是一对多的关系,采用由竞赛名称找到竞赛题目列表进而着到竞赛题目的设计方案。本模块分为后台管理和前台选题,双线并列。这种一一对应的方式也有利于后台管理的直观性也提高了代码的重复利用率。模块结构如图4-1所示:(编辑具体内容和输入参数、答案)(创建,输入题号、分值)(创建,输入名字、时间)题目内容选择进入题目列表选择进入竞赛列表后台管理前台显示前台显示前台显示选择进入题目列表选择进入题目内容竞赛列表前台选题 图4-1 试题录入和管理流程4.1.2 内容编辑设计思路及实现示例 页面编辑设计主要采取的思路是:打开数据库表,用循环语句把信息
18、按照倒序显示出来(使最新的信息放在最前面)。设置select case functiondo语句,通过设置不同的按钮来把new、update、delete这三个值传给functiondo来执行指定的新增、修改更新、删除操作,然后返回显示最新内容。设计思路如图4-2所示:内容列表选定内容进入读出显示编辑菜单择选数据库删除内容修改内容新增内容Update操作DelateNewFunctiondo图4-2 内容编辑设计思路4.2 竞赛答案在线测评(核心部分)4.2.1 竞赛答案在线测评的设计实现思路先把参赛者提交的代码存放到一个叫做Testcode.cpp的临时文件中,编译它。如果编译不成功,则返回
19、错误报告;如果编译成了Testcode.exe,则把对应题目的测试参数从数据库中取出来放到一个叫arameter.txt的临时文件中,把参数定向到Testcode.exe中执行Testcode.exe,得到的结果放到一个叫Answer.txt的临时文件中。从数据库中取出相应的答案跟Answer.txt中的结果对比,如果相同,则判断为对,否则就判断为错,把做题的结果存到数据库中。最后就是把临时文件都删除掉。在这个过程中要设置两个.bat文件create.bat和action.bat,执行批处理操作来实现功能。其中create.bat负责设置环境变量和编译代码以及删除临时文件,action.bat
20、负责把系统测试参数读入到TestCode.exe中执行再把结果重定向到answer.txt中。下面的图4-3画出了竞赛答案在线测评的实现过程:编译失败 提交错误报告编译失败Testcode.cpp代码Create.bat存放编译成功对比结果生成Action.bat Answer.txt Testcode.exe 数据库的答案同则对异则错重定向读入Arameter.txt数据库的参数结果图4-3 在线测评实现过程4.2.2 竞赛答案在线测评的主要源代码及注释1、打开数据库连接2、获取做题信息和预设值Report.txtCreate.bat至此编辑完,下面的代码还是acmcontestshow.a
21、sp页面的代码。5、如果可以编译成TestCode.exe文件,则执行下面的进一步操作if fs.FileExists(Path & TestCode.exe) then6、从数据库中读取相应的测试参数和答案set ReadAdors=server.CreateObject(adodb.recordset)sqlstr=select * from MatchQues where MQuesNO like&session(MQuesNO)& and matchname like&session(sesMatchName)&ReadAdors.open sqlstr,connkng,1,3Para
22、meterValue=ReadAdors(Parameter)AnswerValue=ReadAdors(manswer)ReadAdors.close7、把测试参数写入一个新创建的临时文件Parameter.txt中set mytextfile=fs.createtextfile(Path & Parameter.txt,true)mytextfile.writeline(ParameterValue)mytextfile.close8、执行Action.bat批处理文件WshShell.Run c:Action.bat ,1, true注:Action.bat批处理文件的作用是把系统测试参
23、数读入到TestCode.exe中执行再把结果重定向到answer.txt中。其编辑如下:c:cdProgram FilesMicrosoft Visual StudioVC98BinTestCode answer.txtAction.bat批处理文件至此编辑完,下面的代码还是acmcontestshow.asp页面的代码。9、对比Answer.txt文件和数据库设定的答案,看看是否一样set MyTextFile=fs.OpenTextFile(Path & Answer.txt)AnswerString=while not MyTextFile.AtEndOfStreamAnswerStr
24、ing=AnswerString & MyTextFile.readlinewendif AnswerString = AnswerValue then因为这是竞赛,所以不返回正确与否的结果给参赛者,如果把代码移植到平时的在线测评中,则下面这一行可以不注掉。Response.Write(正确)IsTrue=trueTextAreaValue=CodeelseIsTrue=false因为这是竞赛,所以不返回正确与否的结果给参赛者,如果把代码移植到平时的在线测评中,则下面这一行可以不注掉。Response.Write(错误)TextAreaValue=Codeend ifelse10、如果一开始就
25、编译不成功,则返回错误报告给参赛者set MyTextFile=fs.OpenTextFile(Path & Report.txt)while not MyTextFile.AtEndOfStreamResponse.Write(MyTextFile.readline)Response.Write()wendMyTextFile.closeTextAreaValue=Codeend ifend if%4.3 系统运行的一些界面举例4.3.1编辑竞赛信息包括修改竞赛时间、进入题目列表编辑菜单、删除竞赛的操作,如图4-4所示:图4-4 竞赛编辑菜单4.3.2 参赛者进入竞赛题目列表页面选择竞赛题目
26、来做每个竞赛题目都有相应的分值显示,参赛者对竞赛有更好的把握。题目全部做完后,可按“全部完成,提交答卷”按钮来退出竞赛,如图4-5所示:图4-5 竞赛题目列表第5章 结论本系统作为广东技术师范学院ACM竞赛网的核心子系统,基本实现了对参赛者提交的源代码进行在线测评的功能,填补了广东技术师范学院在ACM竞赛在线测评中的空白。在线测评的核心是通过把参赛者提交的代码存放到一个临时文件中并编译成.exe可执行文件,再将对应题目的测试参数从数据库中取出定向到此.exe中执行,把得到的结果跟数据库中取出相应的答案对比,根据是否相同而得到答案正确与否的结果。这个过程的重点主要由两个.bat文件create.
27、bat和action.bat来执行。根据广东技术师范学院的具体情况,我们在设计的过程中注重系统的规范性、管理员和用户操作的方便性和简易性,运用了ASP技术的简单易用和Microsoft Access数据库的强大功能,实现人机的动态交互和对系统庞大数据的有效管理。在这次设计中,本人负责研究开发在线测评的核心功能,此外还有试题的录入和管理查询。主要探讨了在ASP下调用DOS命令来执行在线编译的技术,并借助.bat文件执行批处理的方式实现固定的操作流程,完成在线测评功能的开发任务。由于时间和技术上的原因,本系统的在线测评功能和竞赛功能还有一些需要完善的地方,还未能达到其他出色的在线测评系统的水平。进
28、一步要增加完善的工作包括:在线测评的编译部分,要实现并行编译的功能,并计算编译的时间,如果超过了一定的时限,返回编译超时信息;编译后的程序执行时检测程序占用CPU的资源和占用内存的峰值。初步设想利用多线程的方法来一并实现。在竞赛方面,要添加时效性(实际上在竞赛基本信息中已经预留了begintime和endtime两个字段,描述竞赛的开始和结束时间),设定在竞赛时段内才可以做题,时间到马上自动提交所有信息并退出竞赛状态。在题库管理方面,要增加批量处理功能和更简单快捷的查询题目具体信息功能,使系统的操作更简单有效。我们会继续努力,不断改进系统,添加功能,希望能为广东技术师范学院的广大同学们提供一个
29、功能完善的ACM竞赛在线测试平台。参考文献一 李禹生、刘兵等 ASP实用技术网络数据库应用系统设计. 2004年8月版. 中国水利水电出版社二 邓问渊、陈惠贞、陈俊荣 ASP与网页数据库设计2001年2月版 中国铁道出版社出版三 David Buser、John Kauffman 编著 ASP 3初级编程 钟鸣、张文翻译 2001年6月版 机械工业出版社致谢在这次毕业设计的过程中,我们得到了叶海山指导老师的高度重视和耐心指导,在构建系统框架和遇到瓶颈问题的时候他都提供了不少好的意见和解决方法,使我们的设计顺利地展开。我们在此对他的认真负责和严谨的态度致以衷心的感谢。同时感谢曾超飞等同学对于我的热情解答帮助和鼓励。再次感谢所有关心指导和帮助过我顺利完成这次设计的人,相信通过不断的努力和改善,广东技术师范学院的ACM竞赛在线测评系统会做的越来越好!