毕业论文——电路网上考试系统_第1页
毕业论文——电路网上考试系统_第2页
毕业论文——电路网上考试系统_第3页
毕业论文——电路网上考试系统_第4页
毕业论文——电路网上考试系统_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

毕 业 论 文( 计算机网络技术 专业 )题 目: 电路网上考试系统 学生姓名: 导师姓名: 学校名称: 年 月 目录一 课题背景6二 方案设计71 系统设计相关原理7 2 系统需求分析13 3 系统总体设计14三 方案实施15 1 系统流程15 2 各文件功能介绍及详解16 3 详细设计19 4 调试过程中遇到的主要问题和解决方法23 5 系统测试及实现后主要界面24四 结论28参考文献 29一方案设计1系统设计相关原理(1) ASP技术介绍Microsoft Active Server Pages 即我们所称的ASP,其实是一套微软开发的服务器端脚本环境。Active Server Page 是创建动态网页的一个很好的工具,它起一种编程语言的作用,可以利用它编写动态产生HTML的程序代码。因此,只要用户浏览Web站点并请求一个ASP页,Web服务器就可以处理相应的ASP代码,生成HTML代码,然后将它传递到用户浏览器并显示出网页。ASP内含于IIS3.0和4.0之中,通过ASP我们可以结合HTML网页、ASP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。有了ASP就不必担心客户的浏览器是否能运行所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。以下罗列了ASP所独具的一些特点:a.使用VBScript 、JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。b.无须编译,容易编写,可在服务器端直接执行。c.使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。d.与浏览器无关,用户端只要使用可执行HTML码的浏览器,即可浏览ASP所设计的网页内容。ASP所使用的脚本语言(VBScript 、Jscript)均在WEB服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。e.ASP能与任何ActiveX scripting语言相容。除了可使用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如REXX、Perl、Tcl等。脚本引擎是处理脚本程序的COM(Component Object Model)物件。f.ASP的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。g.可使用服务器端的脚本来产生客户端的脚本。h.物件导向(Object-oriented)。i.ActiveX Server Components(ActiveX服务器元件)具有无限可扩充性。可以使用Visual Basic 、Java 、Visual C+ 、COBOL等编程语言来编写你所需要的ActiveX Server Component。j.另外,ASP技术的处理速度相当快,并且其安全性也很高。ASP最重要的优点是能够建立对诸如时间、地点、用户标志、以前的选择和活动等因素敏感的页面。换句话说,可针对每个用户的个别需求,用ASP定制网页,能够满足用户的各种需求。总之,ASP包含三方面含义:a.Active:ASP使用了微软的ActiveX技术。ActiveX(COM)技术是现在Microsoft软件的重要基础。它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作。ASP本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用组件。只要你可以在服务器上安装这些组件,通过访问组件,你就可以快速、简易地建立自己的WEB应用。b.Server:ASP运行在服务器端。这样就不必担心浏览器是否支持ASP所使用的编程语言。ASP的编程语言可以是VBSCRIPT和JSCRIPT。VBSCRIPT是VB的一个简集,会VB的人可以很方便的快速上手。然而Netscape浏览器不支持客户端的VBSCRIPT,所以最好不要在客户端使用VBSCRIPT。而在服务器端,则无需考虑浏览器的支持问题。Netscape浏览器也可以正常显示ASP页面。c.Pages:ASP返回标准的HTML页面,可以正常地在常用的浏览器中显示。浏览者查看页面源文件时,看到的是ASP生成的HTML代码,而不是ASP程序代码。这样就可以防止别人抄袭程序。由此可以看出,ASP是在IIS下开发WEB应用的一种简单、方便的编程工具。在了解了VBSCRIPT的基本语法后,只需要清楚各个组件的用途、属性、方法,就可以轻松编写出自己的ASP系统。 运行 ASP 所需的环境如下:Microsoft Internet Information Server version 3.0/4.0 on Windows NT ServerMicrosoft Peer Web Services Version 3.0 on Windows NT WorkstationMicrosoft Personal Web Server on Windows 95/98与一般的程序不同,ASP程序无须编译。ASP程序的控制部份,是使用VBScript、JScript等脚本语言来设计的,当执行ASP程序时,脚本程序将一整套命令发送给脚本解释器(即脚本引擎),由脚本解释器进行翻译并将其转换成服务器所能执行的命令。当然,同其他编程语言一样,ASP程序的编写也遵循一定的规则,如果你想使用你所喜爱的脚本语言编写ASP程序,那么你的服务器上必须要有能解释这种脚本语言的脚本解释器。当你安装ASP时,系统提供了两种脚本语言:VBSrcipt和JScript,而VBScript则被作为系统默认的脚本语言。ASP程序其实是以扩展名为.asp的纯文本形式存在于WEB服务器上的,可以用任何文本编辑器打开它,ASP程序中可以包含纯文本、HTML标记以及脚本命令。只需将.asp程序放在Web服务器的虚拟目录下(该目录必须要有可执行权限),就可以通过WWW的方式访问ASP程序了。要学好ASP程序的设计,必须掌握脚本的编写,那么究竟什么是脚本呢?其实脚本是由一系列的脚本命令所组成的,如同一般的程序,脚本可以将一个值赋给一个变量,可以命令Web服务器发送一个值到客户浏览器,还可以将一系列命令定义成一个过程。要编写脚本,你必须要熟悉至少一门脚本语言,如VBScript。脚本语言是一种介于HTML和诸如JAVA、Visual Basic、C+等编程语言之间的一种特殊的语言,尽管它更接近后者,但它却不具有编程语言复杂、严谨的语法和规则。如前所述ASP所提供的脚本运行环境可支持多种脚本语言,譬如:JScript、REXX、PERL等等,这无疑给ASP程序设计者提供了广泛的发挥余地。ASP的出现使得广大Web设计者不必在为客户浏览器是否支持而担心,实际上就算在同一个.asp文件中使用不同的脚本语言,都无须为此担忧,因为所有的一切都将在服务器端进行,客户浏览器得到的只是一个程序执行的结果,而你也只需在文件中声明使用不同的脚本语言即可。ASP的对象和组件:a.ASP有7个固有对象这7个固有对象分别是Request、Response、Server、Application、Session、ASPError和ObjectContext。Request对象用来处理用户做出的请求,就是处理用户要求浏览器查看特定的网页或Web应用时做出的请求。此请求可以HTML的形式输入或仅以URL的形式作出。Response对象用来处理从Web服务器向用户发送信息并对此信息进行控制。Serve对象用来代表服务器自身。因此它提供几个与Web服务器可能要完成的任务相关的常用功能,诸如建立新对象和设置脚本的超时特性等。还有通过将不合法字符转化为合法字符,把字符串转换为URL和HTML正确的使用格式的方法。Application对象用来代表应用,可用它来管理诸如应用目录这一类的东西。Session对象用来代表用户会话,并存储该会话的信息。可利用Session对象来管理如Web服务器在用户“请求”之间等待的时间等。ObjectContext对象用来管理事务处理。它目前已经集成到Windows2000操作系统中了。它包含了所有ASP其他对象,可通过ObjectContext引用ASP的每个对象。ASPError对象包含ASP脚本或asp.dll本身产生的任何错误的详细内容。b.Microsoft Data Access ComponentMDAC作为操作系统的组成部分的组件,与ASP一起提供。此组件中包含一组称为ActiveX Data Object(ADO)的对象,他们对于查看不同平台上的各种数据(数据库、表单、文本文件)是必不可少的。ADO主要有3个对象,分别是Connection、Command和Recordset。Connection对象就是使ADO与数据库之间建立一个通道,也就是实现与数据库的连接。Command对象就是对数据库进行发号施令,比如建立新的索引,执行查询等,它可以通过标准的SQL数据库操作语言得以实现。Recordset对象是一个数据记录集,它包含了我们检索出来的记录数据,通过它可以直接对数据库进行修改。c.活动服务器组件活动服务器组件是与ASP一起免费带来的组件或DLL,他们有着广泛的用途。主要包括AD Rotator、Browser Capabilities、Content Link、Content Rotator、Counters、logging Utility、MyInfo、Page Counter、permission Checker、tools等组件。由于本次设计用到的不多,在此就不详细介绍了d.ASP脚本对象他们分别是Dictionary、FileSystemObject和TextStream.由于本设计用到的也不多,在此就不详细介绍了。(2) SQL 语句介绍SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。Structured Query Language包含4个部分:数据查询语言DQL-Data Query Language SELECT据操纵语言DQL-Data Manipulation Language INSERT, UPDATE, DELETE 数据定义语言DQL-Data Definition Language CREATE, ALTER, DROP数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK 首先介绍SQL的优点SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。a.非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。 b.统一的语言SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括:查询数据在表中插入、修改和删除记录 建立、修改和删除数据对象 控制对数据和数据对象的存取 保证数据库一致性和完整性 以前的数据库管理系统为上述各类操作提供单独的语言,而SQL将全部任务统一在一种语言中。c.是所有关系数据库的公共语言由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。SQL是PostgreSQL(和大多数其它关系型数据库)用做查询语言的语言。它是可以移植的,并且容易学习使用。但是所有SQL语句都必须由数据库服务器独立地执行。这就意味着客户端应用必须把每条查询发送到数据库服务器,等待它处理这个查询,接收结果,做一些运算,然后给服务器发送另外一条查询。所有这些东西都会产生进程间通讯,并且如果客户端在另外一台机器上甚至还会导致网络开销。如果使用了 PL/pgSQL,那么可以把一块运算和一系列查询在数据库服务器里面组成一个块,这样就拥有了过程语言的力量并且简化SQL的使用,因而节约了大量的时间,因为用不着付出客户端/服务器通讯的过热。通过使用PL/pgSQL,应用可以获得可观的性能提升。 其次说明SQL的使用a. ASP与Access数据库连接:b. ASP与SQL数据库连接:建立记录集对象:setrs=server.createobject(adodb.recordset)rs.openSQL语句,conn,3,2c. SQL常用命令使用方法:数据记录筛选:sql=select*from数据表where字段名=字段值orderby字段名descsql=select*from数据表where字段名like%字段值%orderby字段名descsql=selecttop10*from数据表where字段名orderby字段名descsql=select*from数据表where字段名in(值1,值2,值 3)sql=select*from数据表where字段名between值1and值2更新数据记录:sql=update数据表set字段名=字段值where条件表达式sql=update数据表set字段1=值1,字段2=值2字段n=值nwhere条件表达式删除数据记录:sql=deletefrom数据表where条件表达式sql=deletefrom数据表(将数据表所有记录删除)添加数据记录:sql=insertinto数据表(字段1,字段2,字段3)values(值1,值2,值3)sql=insertinto目标数据表select*from源数据表(把源数据表的记录添加到目标数据表)数据记录统计函数:AVG(字段名)得出一个表格栏平均值COUNT(*字段名)对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名)取得一个表格栏最大的值MIN(字段名)取得一个表格栏最小的值SUM(字段名)把数据栏的值相加引用以上函数的方法:sql=selectsum(字段名)as别名from数据表where条件表达式setrs=conn.excute(sql)用rs(别名)获取统的计值,其它函数运用同上。数据表的建立和删除:CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)DROPTABLE数据表名称(永久性删除一个数据表)d. 记录集对象的方法:rs.movenext将记录指针从当前的位置向下移一行rs.moveprevious将记录指针从当前的位置向上移一行rs.movefirst将记录指针移到数据表第一行rs.movelast将记录指针移到数据表最后一行rs.absoluteposition=N将记录指针移到数据表第N行rs.absolutepage=N将记录指针移到第N页的第一行rs.pagesize=N设置每页为N条记录rs.pagecount根据pagesize的设置返回总页数rs.recordcount返回记录总数rs.bof返回记录指针是否超出数据表首端,true表示是,false为否rs.eof返回记录指针是否超出数据表末端,true表示是,false为否rs.delete删除当前记录,但记录指针不会向下移动rs.addnew添加记录到数据表末端rs.update更新数据表记录(3) VBscirpt 语言介绍Microsoft Visual Basic Scripting Edition是程序开发语言Visual Basic家族的最新成员,它将灵活的Script应用于更广泛的领域,包括Microsoft Internet Explorer中的 Web 客户机 Script 和 Microsoft Internet Information Server 中的 Web 服务器 Script。VBScript使用ActiveX Script与宿主应用程序对话。使用ActiveX Script,浏览器和其他宿主应用程序不再需要每个Script部件的特殊集成代码。ActiveX Script使宿主可以编译Script、获取和调用入口点及管理开发者可用的命名空间。通过ActiveX Script,语言厂商可以建立标准Script运行时语言。Microsoft将提供VBScript的运行时支持。Microsoft正在与多个Internet组一起定义ActiveX Script标准以使Script引擎可以互换。ActiveX Script可用在Microsoft Internet Explorer和Microsoft Internet Information Server中。VBScript只有一种数据类型,称为Variant。Variant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为Variant是VBScript中唯一的数据类型,所以它也VBScript 中所有函数的返回值的数据类型。最简单的Variant可以包含数字或字符串信息。Variant用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理。这就是说,如果使用看起来象是数字的数据,则VBScript会假定其为数字并以适用于数字的方式处理。与此类似,如果使用的数据只可能是字符串,则VBScript将按字符串处理。当然,也可以将数字包含在引号()中使其成为字符串。除简单数字或字符串以外,Variant可以进一步区分数值信息的特定含义。例如使用数值信息表示日期或时间。此类数据在与其他日期或时间数据一起使用时,结果也总是表示为日期或时间。当然,从Boolean值到浮点数,数值信息是多种多样的。Variant包含的数值信息类型称为子类型。大多数情况下,可将所需的数据放进Variant中,而Variant也会按照最适用于其包含的数据的方式进行操作。声明变量的一种方式是使用Dim语句、Public语句和Private语句在Script中显式声明变量。另一种方式是通过直接在Script中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行Script时出现意外的结果。因此,最好使用Option Explicit语句显式声明所有变量。 在VBScript中,过程被分为两类:Sub过程和Function过程。 a.Sub过程Sub过程是包含在Sub和End Sub语句之间的一组VBScript语句,执行操作但不返回值。Sub过程可以使用参数(由调用过程传递的常数、变量或表达式)。b.Function过程Function过程是包含在Function和End Function语句之间的一组VBScript语句。Function过程与Sub过程类似,但是Function过程可以返回值。Function过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Function过程无任何参数,则Function语句必须包含空括号()。Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是Variant。VBScript中可使用下列循环语句:Do.Loop:当(或直到)条件为True时循环。While.Wend:当条件为True时循环。For.Next:指定循环次数,使用计数器重复运行语句。For Each.Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。在VBScript中可使用以下条件语句:If.Then.Else 语句Select Case 语句2系统需求分析 (1)系统需要解决的主要问题首先,因为考试是面向特定的某些对象的,所以考试者进入系统应该进行身份验证。考试者进入考试系统后,应该能根据自己的需要选择考试科目,所以该系统还应具有考试科目选择的功能。在线考试于一般的单机考试是不同的。鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。在线考试基于网络环境,试卷应该从服务器的数据库随机抽取试题后动态生成的。另外,系统还应该对考试时间进行控制,时间到了会要求考试者交卷。考试者选择答案提交后,应该由计算机自动判卷,得到成绩后显示出来。考试完毕后,可以返回登录界面或继续考试。此外,应该能够方便、快捷的对在线考试系统管理,此外,用户还应能进行远程注册。 (2) 系统应该具备的基本功能用户注册:用户可以进行注册,然后登录。用户信息的管理:管理员可以增删用户试题模型设置:设置各科目试题的每种题型的数量和分值。试题库管理:分科目,对单选、多选两种题型试题库的管理,使试题的增删、编辑更为简便。试卷生成:可以指定试卷的各题型的数量,从试题库里随机抽取试题生成一份原始试卷。在线考试:系统严格控制整个考试过程,实行时间的监控与权限的控制,考生需要在限定的考试时间内交卷。 计算机自动阅卷:本系统只考虑客观题,要求计算机能自动阅卷,然后马上显示出考生分数。成绩查阅:考生考完以后,管理员应该能对所有纪录进行查询,并应该可以删除指定纪录。除了实现上述功能以外,在线考试系统还应该具有友好、简洁的界面,安全性要高,稳定性要强,能够满足人以上同时及进行在线考试。3系统总体设计 (1) 运行环境与系统结构为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求如下:软件环境:客户端: Windows95/98/Windows2000/WindowsXP,Internet Explorer(IE)等服务器端:Windows NT/Windows2000/WindowsXP,Internet Information Server (IIS)4.0及其以上版本,IE等;或者Windows98,Personal Web Server(PWS),IE等。数据库:采用access,运行于服务器端。硬件环境:服务器 CPU:PIII 500以上 ,内存:256M以上客户机 CPU:P200MMX以上,内存:32M以上 (2) 系统结构图 是否正确管理员管理界面学生进入测试、修改密码管理题库上传题目成功加入题目删除指定题目修改密码管理员管理界面开始测试修改密码修改成功两次输入密码不同显示分数修改密码学生进入测试、修改密码登陆界面登陆界面图3.1 在线考试系统结构图二方案实施在进行了整体设计以后,就开始进行详细的设计及编码工作。也就是设计文件和把他们有机地组织在一起实现所有功能。1 系统流程 根据系统总体设计,首先系统要有一个登录界面,用户可以从该界面登录参加考试。管理员也应该有一个进入管理登录界面的通道。此外,这个界面上还应该有一个用户注册的通道。在考生正确输入用户名和密码以后,接着应该进入考试科目选择界面。在该界面上,考生选择参加考试的科目,这个人机交互的过程是必不可少的。考生确定考试科目以后,进入开始考试界面,由计算机随机提取试题,显示出来组成试卷,并开始进行计时。考生再次进行考试,答完试题后交卷,进入下一个界面。考生提交答卷后,由计算机进行处理-判卷,得出考试分数,显示出来,并把该生考试记录存入数据库。在这个界面上应该可以返回继续进行考试或回到登录界面。以上是系统进行考试功能的部分,要对系统进行管理,如试题管理、科目管理、用户管理等就需要设计一些管理界面。下面就来逐步进行设计。要进行管理首先要有管理员登陆验证,这里另外设计了一个界面,使它与用户登录区别开来。这个界面与用户登录界面表面上很相似,但是他们是从不同的表中提取数据进行验证的,以便于系统扩充和增加安全性。管理员登录以后,应该有一个管理项目选择界面,其中包括管理用户选项、管理管理员选项、管理考试科目选项、管理考试纪录选项以及管理各科试题选项。管理用户的界面可以实现用户的增加、和删除的功能,管理员在此可以对用户进行管理。管理管理员的界面,功能和管理用户的差不多,实现对管理员的增加和删除功能。管理考试科目界面用来增加或删除考试的科目,以方便对各科试题的管理和查询。管理考试纪录界面可以对考生的每次考试进行纪录,管理员科可以对考生成绩、考试科目、时间及考试各相关纪录进行查询和删除。最后是试题库管理界面,它根据各科进行分类。通过这个界面管理员可以对题库中的某科试题进行增加、修改或删除。这样就十分方便灵活的对试题库进行管理。2 各文件功能介绍及详解该文件实现的是连接数据库和断开连接的功能。文件中主要是定义了两个过程conn_init()和endConnection()。第一个是连接数据库,第二个是实现断开连接。其中conn_init()过程中的连接是通过下面语句实现的:connstr=DBQ=+server.mappath(data.mdb)+;DefaultDir=;DRIVER=Microsoft Access Driver (*.mdb);set conn=server.createobject(ADODB.CONNECTION)conn.open connstrconnstr确定了数据文件的路径和数据库驱动程序。Conn的含义是定义了一个变量用,来存放数据库连接所创建的对象。conn.open connstr则真正实现了数据库的连接。该文件主要被包含在其他文件中实现数据库的连接和断开功能。该文件的功能是系统登陆的入口,在此可以实现用户注册入口,管理员管理入口以及用户进入考试系统登陆界面的功能。该文件的功能使这样实现的:表单提交给文件本身。再由HTML上面的ASP程序对提交信息进行处理。最上面的表示脚本语言是VBScript。表示包含conn.asp文件。以下的程序进行了选择判断,如果提交的表单中的submit值为“登录”,就继续判断看student表中是否存在与该用户输入的用户名和密码相同的记录,如果存在就转到selectsubject.asp页进行考试科目选择。不存在就返回“对不起,请输入正确的用户名和密码。”如果submit值为“注册”,就转到register.asp页进行用户注册。如果submit的值为“管理”就转到admin文件夹中的login.asp页。重点程序如下:set rs = server.createobject(adodb.recordset)rs是一个变量,用来存放一个recordset对象。sql=select*fromstudentwherestudentname=&equest.Form(studentname)&andstudentpassword= & Request.Form(studentpassword) & 变量sql代表一个SQL语句,功能是从表student中选出用户名和密码与考生提交的用户名和密码都相同的记录。rs.open sql,conn,1,1该语句的功能是执行sql语句并把记录集结果存储在变量rs中。rs.close的作用是关闭纪录。session(studentname)=request.form(studentname)该句的意思是把表单提交的变量studentname的值赋给一个session对象studentname。这个对象用来存储用户名,它在该用户对每个页面的访问中有效。set rs=nothing含义是清空rs变量。call endConnection()是调用conn.asp中的过程,用来关闭于数据库的连接。该文件实现了用户注册的功能,用户只要填写想要注册的用户名及密码,文件首先查看用户名是否已经存在,如果存在就提示该用户名已经存在,否则就将用户输入的信息添加到数据库中的student表内。然后用户就可以使用自己注册的用户名和密码登录在线考试系统进行在线考试。在文件中,表单提交给registerAsp自身进行处理,如果submit值为“注册”首先进行判断看用户名或密码是否为空。如果为空就显示“错误!用户名或密码不能为空!”的信息。如果不为空,进行下一步判断,看student表中是否已经存在用户想要注册的用户名,如果存在,就显示信息“错误!该用学生存在!”,如果不存在就将要注册的用户名和密码写入student表。代码如下:sql=insert into student(studentname,studentpassword) values( & cstr(trim(request(studentname) & , & cstr(trim(request(studentpassword) & )conn.execute sql最后,用一个Vbscrip语言编写的消息框显示注册成功信息。该文件是实现用户登录在线考试系统后进行考试科目选择的功能,选择科目后进入考试界面。该文件首先是将subject表中所有的纪录都以单选项的方式选出来,如果没有纪录,则显示“对不起,暂时没有任何考试科目。”用户按提交后,表单仍然提交给文件自身。处理程序首先判断用户是否选择了一个考试科目,如果没有选择显示“你没有选择考试科目,请选择考试科目!”如果选择了某个考试科目,先把该科目赋值给一个session变量selectsubjectname,然后从subject表中选出该科的相关信息,并也都设成session变量。Singlenumber表示单选试题数量,multinumber表示多选试题数量,singleper表示单选试题分值,multiper表示多选试题分值,testtime表示考试总时间。接着进入考试界面。该文件就是考试界面,实现真正的动态随机选题,并对每个考生的考试时间进行监控,到结束时间后自动给出提示。该文件的总体构架是使用了if else 语句进行了一个选择,刚进入该页面submit1得值肯定不等于“开始考试”,所以先显示出“开始考试”的按钮。按下以后,首先把当前时间以分种为单位存储在session的变量starttime中。然后进入随机抽取试题部分,单选题和多选题的抽取很相似,只不过一个是单选按钮,一个是多选按钮罢了。这里只解释单选题的部分。strid1=是定义了一个字符串变量,并先赋值为空。Randomize是产生随机种子,在使用rnd()函数之前一定要先用Randomize产生随机种子才能实现其产生01之间随机数的功能。for i=1 to session(singlenumber)直到next是选择singlenumber(代表某科目的单选题数量)个单选题。下面的代码实现了从数据库中随机不重复的选题:set rs=server.createobject(adodb.recordset)sql=select * from question where subjectname=&session(selectsubjectname) & and type=单选题 and haveselect=0 rs.open sql,conn,3,2count=rs.recordcounttemp=fix(count*rnd(10)rs.move temprs(haveselect)=1rs.update strid1=strid1 & rs(ID) & ,其中haveselect标志某题是否已经被选过。Count变量用来存放所有未被选过的单选题的总数。temp变量用来存放0Count之间的随机整数值。rs.move temp是将当前记录移到第temp条纪录。rs(haveselect)=1是将当前选出的纪录的标志位设为1,然后用rs.update把数据库中的相应标志位改为1。strid1=strid1 & rs(ID) & ,是将所有选出的试题的id号用逗号分割后存储在strid1一个变量中,以方便的把所有选出的试题的id号传到resultAsp文件中,这也是本设计的一个独特的地方。需要说明的是strid1变量的最后是一个逗号,在下一个文件中会详细说明如何进行处理。set rs=server.createobject(adodb.recordset)sql=select * from question where haveselect=1 rs.open sql,conn,3,2rs.movefirstdo while not rs.eof rs(haveselect)=0rs.updaters.movenextloop上面一段程序是在选完题之后将所有已经设成1的haveselect改写成0,这样自己下次或别人就仍可以选择所有的试题。最后一段程序是用来计时的,考试时间到了之后自动给出提示。考生提交答卷以后,该文件就把考生的答案同question表中的正确答案进行比较,最后得出考生的得分。首先是变量赋值,取得session对象的一些变量值,以方便使用。endtime=now()是去的考试结束时间。selectstr1=request.form(hidQuestID1)和selectstr2=request.form(hidQuestID2)是获取存放被选单选和多选试题的id号的两个字符串。len1=len(selectstr1)和len2=len(selectstr2)是取得两个字符串的长度。str1=left(selectstr1,len1-1)str2=left(selectstr2,len2-1)是把两个字符串的结尾(也就是逗号)取掉。dim id1,id2id1=split(str1,)id2=split(str2,)是用split()函数将存有id号的字符串拆开并存放到数组当中,以便调用。以上就实现了所有被选中的试题的id号的传递。下面这段程序就实现了单选试题的答案于正确答案的比较,并得出单选题应得分数。for i=1 to singlenumberresult=request.form(no&id1(i-1)if not isempty(result) thensql=select * from question where id=& clng(id1(i-1)set rs=server.createobject(adodb.recordset)rs.open sql,conn,3,2 if result=rs(answer) thenscore=score+cint(singleper)end ifrs.closeset rs=nothingelseend ifnext多选题与单选题程序基本相同,这里就不赘述了。接着就是将考试结果纪录存入ACCESS的score表中,并在浏览器上对考生显示出考试成绩。上面是在线考试系统考试部分的程序及其解释,该部分是系统最主要的部分,所以解释得比较详细。管理部分很多文件功能都很相似,这里就只挑功能最全又比较重要的文件作以解释。(这些文件都放在admin文件夹下)该文件实现的功能是管理员选择进行管理的项目,也就是管理主界面。该文件实现对用户进行管理(删除或添加)的功能。该文件实现对管理员进行管理(删除或添加)的功能。该文件的功能是实现对考试科目及相关参数(如考试时间、单选及多选题量)进行管理。该文件的功能是对考试记录进行查询或删除。 和两个文件和起来实现对试题库进行删除修改和添加的功能。subjectname=trim(request(subjectname)是将上一个界面传来的科目名称赋值给subjectname变量。set rs=server.createobject(adodb.recordset)rs.open select * from question where subjectname= & cstr(trim(request(subjectname)& order by id desc ,conn,1,1上面这段代码是从question表中将所有其科目名与所选科目相同的问题都选出来。a href=mgquestion.asp?type=&subjectname=&action=edit&id=&page=编辑 a href=javascript:SureDel()删除上面这段代码的的作用是将删除的参数传给文件自身或将编辑的参数传给SureDel(id,subjectname)函数。如果实执行删除操作就转到SureDel(id,subjectname),提示是否真的要删除,如果选择确定就执行如下代码:sql=delete from question where id=&request(id)conn.execute sql执行删除该问题的操作,将question表中的相应记录删除。否则,如果选择取消就不执行删除操作。如果执行编辑同样将参数传给文件自身,先执行下面代码将i

温馨提示

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

评论

0/150

提交评论