ASP在线测试系统.docx
- 文档编号:6439643
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:18
- 大小:160.37KB
ASP在线测试系统.docx
《ASP在线测试系统.docx》由会员分享,可在线阅读,更多相关《ASP在线测试系统.docx(18页珍藏版)》请在冰豆网上搜索。
ASP在线测试系统
基于B/S结构的ACM竞赛在线测评系统
02计本2陈江勇
摘要
ACM/ICPC是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。
我国自从1996年开始参加ACM/ICPC亚洲区预赛以来,越来越多大学参与到竞赛中,并相继开发出自己的ACM竞赛在线测评系统。
拥有属于自己的ACM竞赛在线测评系统对于一个想积极参与到ACM竞赛中的大学来说是十分必要的。
在这种背景下,我们开发了基于B/S结构的ACM竞赛在线测评系统。
本系统主要实现了ACM竞赛试题在线测评功能。
本文首先阐述了ACM竞赛在线测评系统在国内外的发展现状,接着介绍本系统应用到的开发工具和相关技术,根据广东技术师范学院的具体情况确定本在线测评系统的系统需求和设定运行环境要求。
本文重点研究系统总体结构的设计思想和各主要功能的实现,包括系统运流程图、数据库的设计和创建、竞赛题目资料的录入和管理、在线测评、成绩统计发布等,同时附上部分主要源代码加以说明和系统运行的截图对本系统的业务流程进行说明。
最后提出本在线测评系统的下一步研发的重点,对系统完善工作的进一步展望。
关键词:
ASPACM竞赛试题录入管理在线测评
Abstract
ThisACMcontestonlinejudgesystemisthecoresubsystemsoftheGuangdongpolytechnicnormaluniversity(GDIN)ACMcontestnet,it’smainfunctionistoschoolandmanagetheACMcontestinformation,onlinejudgeifthesourcecodesubmittedbytheparticipantsistrueorfalse,statisticsandissuedparticipants’scores.ACM/ICPC(ACMInternationalCollegiateProgrammingContest)issponsoredbythefamousandauthorityorganizationACM(AssociationforComputingMachinery),whichbeacceptedtobethelargestandhighestlevelInternationalcollegiateprogrammingcontestoftheworld,manyfamouscompaniesanduniversitieshadbeenconcerningitforalongtime.ChineseuniversitiestookpartintheACMcontestsince1996.Fromthenon,moreandmoreChineseuniversitiesjointheACMcontest,andsuccessivelydevelopvariousACMcontestonlinejudgesystem.It’snecessarytohastheownACMcontestonlinejudgesystemforauniversitywhichwanttoactivelyparticipateintheACMcontest.Forthis,wedevelopthisACMcontestonlinejudgesystem.ConsideringtheactualconditionsofGuangdongpolytechnicnormaluniversity,wedesignthesuitablefunctionmodules.ThisthesisintroducestheACMcontestonlinejudgesystem’sdevelopmentsituations,andtheusingdeveloptool,relatedtechnologyofthissystem’s.ItfocusstudytheGDINACMcontestonlinejudgesystem’soverallstructuredesignconceptsandvariousfunction’smethodstoachieve,includingdataflow,database’sdesignandcreate,ACMcontestInformation’sschoolandmanage,onlinejudge,StatisticsandIssuedparticipants’scores.Besides,additionalsomeofthesourcecodestoexplain.Inthispart,focusdetaileddescribedthecoreonlinejudgefunction’sdesignconceptsandmethodstoachieve.Atlastaddsomepicturesthatshowthebusinessprocessofthesystem,detailintroducethewholebusinessprocess.
KeywordASPACMcontestschoolandmanageofinformation
onlinejudge
目录
第1章引言1
1.1ACM竞赛介绍I
1.2ACM竞赛在线测评系统的发展现状1
第2章需求分析及开发环境3
2.1项目背景及开发目的3
2.2开发工具3
2.3运行需求3
第3章结构设计5
3.1数据库的创建与设置5
3.2功能模块设计5
第4章功能模块代码设计7
4.1试题录入和管理模块设计思路7
4.1.1试题录入和管理流程7
4.1.2内容编辑设计思路及实现示例8
4.2竞赛答案在线测评(核心部分)8
4.2.1竞赛答案在线测评的设计实现思路8
4.2.2竞赛答案在线测评的主要源代码及注释9
4.3系统运行的一些界面举例13
4.3.1编辑竞赛信息13
4.3.2参赛者进入竞赛题目列表页面选择竞赛题目来做14
第5章结论15
参考文献17
致谢19
第1章引言
1.1ACM竞赛介绍
ACM/ICPC(ACMInternationalCollegiateProgrammingContest,国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(AssociationforComputingMachinery,美国计算机协会)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。
此项赛事不单是培养参赛选手的创造力,团队合作精神以及他们在软件程序开发过程中的创新意识,同时也是检测选手们在压力下进行开发活动的能力的最好平台。
可以说,ACM国际大学生程序设计竞赛是参赛选手展示计算机才华的广阔舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。
该项竞赛从1970年举办至今,一直受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注,在过去十几年中,APPLE、AT&T、MICROSOFT和IBM等世界著名信息企业分别担任了竞赛的赞助商。
可以说,ACM国际大学生程序设计竞赛已成为世界各国大学生最具影响力的国际级计算机类的赛事,是广大爱好计算机编程的大学生展示才华的舞台,是著名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。
1.2ACM竞赛在线测评系统的发展现状
正因为ACM竞赛在全国各计算机院系普遍受到越来越多的重视,所以不少高校相继开发或已经开发出自己的ACM竞赛在线测评系统,提供给ACM竞赛的爱好者和准备参赛的广大学生一个相互交流、在线做题、模拟练习的平台。
一般的高校ACM竞赛网都包括新闻发布、ACM论坛、在线测评、在线比赛、成绩公布查询等基本功能。
其中,在线测评功能(OnlineJudge)是系统的核心,是ACM竞赛系统区别于其他新闻消息发布类系统的标志。
这些站点提供了大量的题库并支持在线判卷,你只需要把程序源码提交上去,马上就可以知道自己的程序是否正确,运行所使用的时间以及消耗的内存等等状况。
目前,主要的建立了ACM在线测试网站的大学有:
俄罗斯的Ural州立大学、西班牙Valladolid大学(UniversitydeValladolid)、浙江大学、杭州电子科技大学、北京大学、同济大学,它们都有各自的特点。
第2章需求分析及开发环境
2.1项目背景及开发目的
自从中国内地从1996年开始参加ACM/ICPC亚洲区预赛,中国各大学自己的ACM竞赛在线测评系统如雨后春笋般不断涌现,为广大ACM爱好者和学生提供了一个网上做题和交流的平台,这对于提高我国的ACM竞赛的参赛质量来说是十分重要的。
而拥有自己的ACM竞赛在线测评系统,对于一个学校积极参与到ACM竞赛中也是十分必要的。
正因如此,我们做了这个ACM竞赛在线测评系统,供广东技术师范学院的广大学生和其他ACM爱好者使用。
2.2开发工具
本系统应用了ASP平台和Access数据库,开发工具方面运用DreamweaverMX。
2.3运行需求
在C:
\ProgramFiles\MicrosoftVisualStudio目录下安装MicrosoftVisualC++6.0,本系统中的在线测评功能是针对VC++语言的,运行时要调用该文件夹中的编译文件cl.exe来编译。
在目录C:
\中创建.bat文件Create.bat和Action.bat,在在线测评功能中要调用到批处理文件执行指定操作,没有这两个文件则在线测评功能将无法实现。
第3章结构设计
3.1数据库的创建与设置
本系统设计的数据库选用MicrosoftAccess数据库。
相对其它的数据库来说,它的操作简单容易些,而且功能强大,适合本设计的具体需求。
数据库设计思路:
设置三个表MatchInfo、MatchQues、MatchDetail和一个视图Vscores,分别记录竞赛基本信息、竞赛题目信息和竞赛成绩信息。
作为记录实体(竞赛、试题)信息的表MatchInfo、MatchQues,分别设置MatchID(竞赛ID)和MquesID(题目ID)作为逻辑主键,MatchName(竞赛名称)、MquesNO(题目序号)为业务主键。
3.2功能模块设计
本系统主要分试题录入和管理、参赛者选择比赛参与做题、成绩统计与发布这三大模块。
其中试题录入和管理分为竞赛列表编辑、题目列表编辑、题目内容设置编辑三个部分。
参赛者选择比赛参与做题分为选择竞赛、做题两部分。
成绩统计与发布分为成绩统计、成绩发布和查询两部分。
第4章功能模块代码设计
4.1试题录入和管理模块设计思路
4.1.1试题录入和管理流程
为了试题管理的规范性和条目的清晰,本系统的试题的录入和管理分三个层次三个页面来实现,分别是竞赛列表、竞赛题目列表、竞赛题目内容。
其中,竞赛列表和竞赛题目列表是一对多的关系,竞赛题目列表和竞赛题目内容也是一对多的关系,采用由竞赛名称找到竞赛题目列表进而着到竞赛题目的设计方案。
本模块分为后台管理和前台选题,双线并列。
这种一一对应的方式也有利于后台管理的直观性也提高了代码的重复利用率。
模块结构如图4-1所示:
(编辑具体内容
和输入参数、答案)
(创建,输入
题号、分值)
(创建,输入
名字、时间)
选择进入
选择进入
前台显示
前台显示
前台显示
选择进入
选择进入
图4-1试题录入和管理流程
4.1.2内容编辑设计思路及实现示例
页面编辑设计主要采取的思路是:
打开数据库表,用循环语句把信息按照倒序显示出来(使最新的信息放在最前面)。
设置selectcasefunctiondo语句,通过设置不同的按钮来把new、update、delete这三个值传给functiondo来执行指定的新增、修改更新、删除操作,然后返回显示最新内容。
设计思路如图4-2所示:
进入
读出显示
择
选
Update
操作
Delate
New
图4-2内容编辑设计思路
4.2竞赛答案在线测评(核心部分)
4.2.1竞赛答案在线测评的设计实现思路
先把参赛者提交的代码存放到一个叫做Testcode.cpp的临时文件中,编译它。
如果编译不成功,则返回错误报告;如果编译成了Testcode.exe,则把对应题目的测试参数从数据库中取出来放到一个叫arameter.txt的临时文件中,把参数定向到Testcode.exe中执行Testcode.exe,得到的结果放到一个叫Answer.txt的临时文件中。
从数据库中取出相应的答案跟Answer.txt中的结果对比,如果相同,则判断为对,否则就判断为错,把做题的结果存到数据库中。
最后就是把临时文件都删除掉。
在这个过程中要设置两个.bat文件create.bat和action.bat,执行批处理操作来实现功能。
其中create.bat负责设置环境变量和编译代码以及删除临时文件,action.bat负责把系统测试参数读入到TestCode.exe中执行再把结果重定向到answer.txt中。
下面的图4-3画出了竞赛答案在线测评的实现过程:
编译失败
提交
存放
编译成功
对比
结果
生成
同则对
异则错
重定向
读入
图4-3在线测评实现过程
4.2.2竞赛答案在线测评的主要源代码及注释
1、打开数据库连接
--#includefile="conn.asp"-->
2、获取做题信息和预设值
<%
‘获得做题的信息,包括竞赛名称、竞赛的第几题、加上队伍ID,可以得到一个确定的做题信息。
session("sesMatchName")=Request("matchname")
matchname=session("sesMatchName")
session("MQuesNO")=request("MQuesNO")
MQuesNO=session("MQuesNO")
Session("SesTeamID")=Request("TeamID")
%>
<%
‘预设TextAreaValue、IsTrue、AnswerString、Code的默认值为空。
TextAreaValue=""
IsTrue=false
AnswerString=""
Code=""
‘设Path的值为地址"c:
\ProgramFiles\MicrosoftVisualStudio\VC98\Bin",简化代码。
Path="c:
\ProgramFiles\MicrosoftVisualStudio\VC98\Bin"
3、把提交的代码存放在临时生成的文件中
Code=Request.QueryString("txtCode")
setfs=createobject("scripting.filesystemobject")
setmytextfile=fs.createtextfile(Path&"\TestCode.cpp",true)
mytextfile.writeline(Code)
mytextfile.close
SetWshShell=server.CreateObject("Wscript.Shell")
4、执行Create.bat批处理文件
IsSuccess=WshShell.Run("c:
\Create.bat",1,true)
注:
Create.bat批处理文件的作用是设置环境变量和编译代码以及删除临时文件。
其编辑如下:
‘设置环境变量
setinclude=C:
\ProgramFiles\MicrosoftVisualStudio\VC98\atl\include;C:
\ProgramFiles\MicrosoftVisualStudio\VC98\mfc\include;C:
\ProgramFiles\MicrosoftVisualStudio\VC98\include
setlib=C:
\ProgramFiles\MicrosoftVisualStudio\VC98\mfc\lib;C:
\ProgramFiles\MicrosoftVisualStudio\VC98\lib
setMSDevDir=C:
\ProgramFiles\MicrosoftVisualStudio\Common\MSDev98
PATH=C:
\ProgramFiles\MicrosoftVisualStudio\Common\Tools\WinNT;C:
\ProgramFiles\MicrosoftVisualStudio\Common\MSDev98\Bin;C:
\ProgramFiles\MicrosoftVisualStudio\Common\Tools;C:
\ProgramFiles\MicrosoftVisualStudio\VC98\bin
setCLASSPATH=C:
\ProgramFiles\MicrosoftVisualStudio\VC98\mfc\lib;C:
\ProgramFiles\MicrosoftVisualStudio\VC98\lib
‘删除临时文件
c:
cd\ProgramFiles\MicrosoftVisualStudio\VC98\Bin
delTestCode.exe
delTestCode.obj
delParameter.txt
delAnswer.txt
delReport.txt
‘调用cl编译TestCode.cpp把结果存放在Report.txt中
clTestCode.cpp>Report.txt
‘Create.bat至此编辑完,下面的代码还是acmcontestshow.asp页面的代码。
5、如果可以编译成TestCode.exe文件,则执行下面的进一步操作
iffs.FileExists(Path&"\TestCode.exe")then
6、从数据库中读取相应的测试参数和答案
setReadAdors=server.CreateObject("adodb.recordset")
sqlstr="select*fromMatchQueswhereMQuesNOlike'"&session("MQuesNO")&"'andmatchnamelike'"&session("sesMatchName")&"'"
ReadAdors.opensqlstr,connkng,1,3
ParameterValue=ReadAdors("Parameter")
AnswerValue=ReadAdors("manswer")
ReadAdors.close
7、把测试参数写入一个新创建的临时文件Parameter.txt中
setmytextfile=fs.createtextfile(Path&"\Parameter.txt",true)
mytextfile.writeline(ParameterValue)
mytextfile.close
8、执行Action.bat批处理文件
WshShell.Run"c:
\Action.bat",1,true
注:
Action.bat批处理文件的作用是把系统测试参数读入到TestCode.exe中执行再把结果重定向到answer.txt中。
其编辑如下:
c:
cd\ProgramFiles\MicrosoftVisualStudio\VC98\Bin
TestCode
‘Action.bat批处理文件至此编辑完,下面的代码还是acmcontestshow.asp页面的代码。
9、对比Answer.txt文件和数据库设定的答案,看看是否一样
setMyTextFile=fs.OpenTextFile(Path&"\Answer.txt")
AnswerString=""
whilenotMyTextFile.AtEndOfStream
AnswerString=AnswerString&MyTextFile.readline
wend
ifAnswerString=AnswerValuethen
‘因为这是竞赛,所以不返回正确与否的结果给参赛者,如果把代码移植到平时的在线测评中,则下面这一行可以不注掉。
'Response.Write("正确")
IsTrue=true
TextAreaValue=Code
else
IsTrue=false
‘因为这是竞赛,所以不返回正确与否的结果给参赛者,如果把代码移植到平时的在线测评中,则下面这一行可以不注掉。
'Response.Write("错误")
TextAreaValue=Code
endif
else
10、如果一开始就编译不成功,则返回错误报告给参赛者
setMyTextFile=fs.OpenTextFile(Path&"\Report.txt")
whilenotMyTextFile.AtEndOfStream
Response.Write(MyTextFile.readline)
Response.Write("
")
wend
MyTextFile.close
TextAreaValue=Code
endif
endif
%>
4.3系统运行的一些界面举例
4.3.1编辑竞赛信息
包括修改竞赛时间、进入题目列表编辑菜单、删除竞赛的操作,如图4-4所示:
图4-4竞赛编辑菜单
4.3.2参赛者进入竞赛题目列表页面选择竞赛题目来做
每个竞赛题目都有相应的分值显示,参赛者对竞
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP 在线 测试 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)