




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章 网上测试系统,8.1主要内容 8.2实例过程 8.2.3实例注释及详解,8.1主要内容,网络技术发展到今天,以前许多需要以其它方式通过许多复杂的步骤来完成的事情都可以通过网络,利用计算机的处理来完成。“考试”就是其中的一种,而且是很典型的一种。利用计算机网络进行考试,可以大量采用标准化试题,使用计算机判卷;也可以利用计算机从试题库中随机抽取试题进行测试,避免了考试前的压题与考试中的作弊;还可以直接把程序送到数据库中,进行统计、排序等操作。所以,以前需要花费大量人力物力去做的出题、判卷、排名次和录取工作,现在可以轻松地进行自动处理。采用网上考试或利用计算机进行考试将是以后考试发展的趋势。,8.2实例过程,8.2.1系统需求分析 8.2.2系统总体设计,8.2.1系统需求分析,本系统要实现的主要功能是实现客观题(选择题)的计算机自动出题与阅卷 。,8.2.2系统总体设计,本系统客观题部分总体上可分为超级用户模块、普通用户模块两大模块。其中超级用户模块中又包含两级子模块,超级用户模块中包含学生信息管理、考试科目管理、题库管理几大部分,其中学生成绩管理子模块中又包含修改学生信息、查询成绩、添加学生、删除成绩、删除学生这五个模块。在普通用户模块中,结构比较简单,只包含选择考试科目、参加考试、退出这三个字子功能块。,1.创建数据库,要进行考试,必须有试题。在计算机考试中,试题是存储在数据库中的,必须首先创建应用程序中用到的数据库。“建库”的阶段是制作实例的一个很关键的步骤。本实例采用的是access数据库,库文件为test.mdb。建库为下面几个步骤。,步骤一:为了能够进行计算机判卷,试题必须是标准化的,比如填空题、选择题等。本系统创建了一个数据表question来存储选择题这种题型的题目、答案和考试科目类别。,表1 试题库question表,步骤二,创建学生档案的数据表 studentinfo。这张表用来存储学生的学号、姓名、班级等数据和信息的。,表2 学生信息studentinfo表,步骤三,创建学生的成绩档案数据表 score。它用来存储每一个学生历次考试的成绩数据。由于一个学生很可能不只一个成绩,所以这里还要保存这个学生的每次考试成绩和考试科目,表3 学生成绩score表,步骤四,创建考试科目表subinfo。存储考试课程信息。,表4 考试科目subinfo表,步骤五,创建临时存储表tbanswer,用来存储学生所做的题目答案,表5 临时存储tbanswer表,步骤六,创建教师信息表teacherinfo,原来存储教师信息,表6 教师信息teacherinfo表,2.设定主页外观及添加程序代码,在创建完数据库后,就要开始制作本系统中的每一幅主页文件了。本系统一共包括18个 .asp 文件。作为一个完整的应用程序,除了要实现基本的功能外,一些辅助的功能也是必要的。比如,本系统除了可以进行考试外,还包括允许“超级用户”向题库中输入试题的功能、管理学生和成绩的功能等。,步骤一、制做学生登录slogon.asp和教师登录的主页tlogon.asp,,图8-1 学生登录界面,图8-2 教师登录界面,步骤二、制作学生选择考试科目的主页stselectsub.asp。如图8-3:这此画面中学生,学生已经考过的科目相应的已经给出成绩,并不再给出选择项,若选择未考过的相应考试科目后,单击确定进入考场。系统显示如图8-4,图8-3 学生选择考试科目,步骤三、制作学生考试主页screatefrm1.asp,它包含左右两个帧。左边是显示考试时间等信息的帧smessage.asp和右边的用于显示考试试题及给学生输入答案的帧页面stestmain.asp,如图8-4:这次画面中学生选择答案后单击确定按钮,则系统随机从题库中抽取下一题。当学生做完全部题目或考试时间到,则考试系统结束运行。当考试结束后,程序就转入sevalue.asp文件,对该同学所做答案进行自动判分,并将成绩送入数据库中。,图8-4 学生考试界面,步骤四、制作教师管理主页tcreatefrm2.asp,其也包含左右2个帧页面。左面是用于选择管理功能的帧tleft.asp右边的帧工具用户在左边的帧中所做的选择来显示不同的页面。如图8-5:,图8-5 教师管理主页,步骤五、制作查看学生成绩的主页tselcourse.asp,如图8-6和8-7:在此页面教师选择要查看的课程名称后,该课程所有参加考试的学生的成绩就显示出来如图8-7:,图 8-6 查看学生成绩1,图8-7查看学生成绩2,步骤六、制作编辑学生信息主页taddstudent.asp,如图8-8。这此页面我们可以输入学生的姓名和学号,然后单击“加入”按钮,则可添加新的学生信息进入数据库。若要删除某学生的信息,只要在下面的姓名列表中用鼠标单击选择要删除的学生的姓名,则该学生的 姓名和学号信息就显示在学生信息栏,此时单击删除按钮就可以删除该学生的信息。每个屏幕显示10个学生的信息。可以单击“上一页/下一页”的超级链接实现前后翻页。也可以在跳转按钮后的文本框中输入也查看的页码,然后单击“跳到”按钮则可直接跳转到该页,图8-8 编辑学生信息,步骤七、制作新开/更改考试课程主页taddsub.asp,如图8-9:在此页面,我们可以输入增加的考试科目名称、考试时间及试题的数目。单击“加入”就可以加入新的考试科目。单击“修改”则可修改当前的科目信息。单击“删除”则可删除当前的考试科目。可以单击“前一个/后一个”来前后浏览已经添加到数据库中的考试科目信息。,图8-9 新开/更改考试课程主页,步骤八、制作添加和修改试题内容主页tselectsub.asp,如图8-10和8-11:在图8-11我们可以输入题目的内容,并在a、b、c、d四个单选框中选择一个正确答案。然后单击加入,则该题目的所有信息就被送入数据库中。注意这里添加和修改试题我们用的是同一个asp文件,只是通过提交表单中act的值来判断是添加操作还是修改操作。,图8-10 添加和修改试题内容1,图8-11添加和修改试题内容2,8.2.3实例注释及详解,本例中在前面章节中没有介绍的知识主要有: 1是如何控制考试时间。众所周知一张考卷不可能无限期的答下去的,每次考试都有一个考试时间限制,本系统的考试时间限制由在5分钟。限制考试时间是通过主页中插入的activex控件time object和客户端的vbscript代码来实现的,当时间每过30秒,考试信息页面就刷新一次。到考试时间到,窗体元素就会被提交。在本例中这是由smessage.asp程序来实现。 其中在句就是指定了本网页使用的是自动刷新方法,content是指定自动刷新的时间,单位是秒,2在本例中,有到了一种以前没有用过的方法向数据表中添加或删除记录,这就是利用recordset对象的addnew方法。下面我们详细介绍它的使用方法 首先我们看程序文件stestmain.asp中的一段代码,首先我们创建了一个recordset对象mrs,利用recordset对象来连接数据库。其连接步骤为: (1)利用 set mrs=server.createobject(“adodb.recordset“) 语句创建recordset对象,其中mrs为新创建的对象名,我们可以自己设定。 (2)用mrs.activeconnection=“dsn=testsys“语句为recordset对象设置活动连接,此处设置为连接到系统的名为testsys的dsn,在实际运用时我们也可以将其设置为connection对象名 (3)用mrs.source=“select * from tbanswer“语句设置recordset对象的数据源,我们也可以在此用其他的sql语句,(4)用mrs.open ,1,3语句打开与数据库的连接。recordset对象的open方法的格式为 recordset.open source, activeconnection, cursortype, locktype, options 参数 source 数据源,可以是sql 语句、表名、存储过程调用。如步骤3中的“select * from tbanswer“语句。当设置了recordset对象的source属性后,在其open方法时就可以省略 activeconnection 活动连接,设置所要连接的数据库。设置了recordset对象的activeconnection属性后,在调用其open方法时就可以省略,cursortype 可选,cursortypeenum 值,确定提供者打开 recordset 时应该使用的游标类型。游标决定了你可以对一个记录集进行什么操作。游标还决定了其他用户可以对一个记录集进行什么样的改变。可为下列常量之一(可参见c:program filescommon filessystemado下面的adovbs.inc文件)。,在本例中,我们对游标的取值是1,,locktype 可选。确定提供者打开 recordset 时应该使用的锁定(并发)类型的 locktypeenum 值,可为下列常量之一。,options 可选,长整型值,用于指示提供者如何计算 source 参数(或从以前保存 recordset 的文件中恢复 recordset。可为下列常量之一。在本例中省略。,(5)对后我们再用recordset对象的addnew方法添加一条新的空记录进入数据库。再给新插入的记录更新各个字段的值,最后用update方法保存对当前记录所做的修改。其格式为 recordset对象.addnew recordset对象(“字段名1“)=值 recordset对象(“字段名2“)=值 recordset对象.update,recordset对象相关的操作有: addnew。向记录集中添加一条新记录。 cancelbatch。(当记录集处在批量更新模式时)取消一批更新。 cancelupdate。(调用update之前)取消对当前记录所做的所有修改。 delete。从记录集中删除一条记录。 update。保存对当前记录所做的修改。 updatebatch。(当记录集处于批量更新模式时)保存对一个或多个记录的修改。,2在本例中, 还用到了是 ado 存取数据库时的分页显示技术。如果你使用过目前众多网站上的电子公告板程序的话,那你应该会知道电子公告板程序为了提高页面的读取速度,一般不会将所有的帖子全部在一页中罗列出来,而是将其分成多页显示,每页显示一定数目的帖子数,譬如 20 条。这就是数据库查询的分页显示。下面我们就来看本例中的添加/编辑学生信息模块taddstudent.asp文件中的一段程序。,“ then page=cint(request(“page“) else page=1 end if mrs.absolutepage=page for i=1 to mrs.pagesize if mrs.eof then exit for end if,那么究竟如何才能做到将数据库的查询结果分页显示呢?其实方法有很多,但主要有两种: (1)将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ado recordset 对象所提供的几个专门支持分页处理的属性: pagesize( 页大小 )、 pagecount( 页数目 ) 以及 absolutepage( 绝对页 ) 来管理分页处理。 (2)根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。,两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。,我们可以很明显的感觉到,当数据库中的记录数达到上万或更多时,第一种方法的执行效率将明显低于第二种方法,因为当每一个客户查询页面时都要将所有符合条件的记录存放在服务器内存中,然后在进行分页等处理,如果同时有超过 100 个的客户在线查询,那么 asp 应用程序的执行效率将大受影响。但是,当服务器上数据库的记录数以及同时在线的人数并不是很多时,两者在执行效率上是相差无几的,此时一般就采用第一种方法,因为第一种方法的 asp 程序编写相对第二种方法要简单明了得多。,在这里我们就以本例为例来说明如何实现分页显示功能,由于学生的数据库记录数和同时访问的人数都不会太多,所以以下程序实例是使用的先前所介绍的第一种分页显示方法。 进行 ado 存取数据库时的分页显示,其实就是对 recordset 的记录进行操作。所以我们首先必须了解 reordset 对象的属性和方法: bof 属性:目前指标指到 recordset 的第一笔。 eof 属性:目前指标指到 recordset 的最后一笔。 move 方法:移动指标到 recordset 中的某一条记录。,absolutepage 属性:设定当前记录的位置是位于哪一页 absoluteposition 属性:目前指标在 recordset 中的位置。 pagecount 属性:显示 recordset 对象包括多少“页”的数据。 pagesize 属性:显示 recordset 对象每一页显示的记录数。 recordcount 属性:显示 recordset 对象记录的总数。,下面让我们来详细认识一下这些重要的属性和方法 (1) bof 与 eof 属性 通常我们在 asp 程序中编写代码来检验 bof 与 eof 属性,从而得知目前指标所指向的 recordset 的位置,使用 bof 与 eof 属性,可以得知一个 recordset 对象是否包含有记录或者得知移动记录行是否已经超出该 recordset 对象的范围。 如: ,若当前记录的位置是在一个 recordset 对象第一行记录之前时, bof 属性返回 true,反之则返回 false。 若当前记录的位置是在一个 recordset 对象最后一行记录之后时, eof 属性返回 true,反之则返回 false。 bof 与 eof 都为 false:表示指标位于 recordset 的当中。 bof 为 true:目前指标指到 recordset 的第一笔记录。 eof 为 true:目前指标指到 recordset 的最后一笔记录。 bof 与 eof 都为 true:在 recordset 里没有任何记录。,(2)move 方法 您可以用 move 方法移动指标到 recordset 中的某一笔记录,语法如下: rs.move numrecords,start 这里的“rs”为一个对象变量,表示一个想要移动当前记录位置的 recordset 对象;“numrecords”是一个正负数运算式,设定当前记录位置的移动数目;“start”是一个可选的项目,用来指定记录起始的标签。,所有的 recordset 对象都支持 move 方法,如果 numrecords 参数大于零,当前记录位置向末尾的方向移动;如果其小于零,则当前记录位置向开头的方向移动;如果一个空的 recordset 对象调用 move 方法,将会产生一个错误。 movefirst 方法:将当前记录位置移至第一笔记录。 movelast 方法:将当前记录位置移至最后一笔记录。 movenext 方法:将当前记录位置移至下一笔记录。 moveprevious 方法:将当前记录位置移至上一笔记录。 move n 方法:移动指标到第 n 笔记录, n 由 0 算起。,(3) absolutepage 属性 absolutepage 属性设定当前记录的位置是位于哪一页的页数编号;使用 pagesize 属性将 recordset 对象分割为逻辑上的页数,每一页的记录数为 pagesize( 除了最后一页可能会有少于 pagesize 的记录数 )。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。 与 absoluteposition 属性相同, absolutepage 属性是以 1 为起始的,若当前记录为 recordset 的第一行记录, absolutepage 为 1。可以设定 absolutepage 属性,以移动到一个指定页的第一行记录位置。,(4)absoluteposition 属性 若您需要确定目前指标在 recordset 中的位置,您可以用 absoluteposition 属性。 absoluteposition 属性的数值为目前指标相对於第一笔的位置,由 1 算起,即第一笔的 absoluteposition 为 1。 注意 , 在存取 recordset 时,无法保证 recordset 每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老机构医养结合项目投资分析与运营效益报告
- 自动化测试的成本与效益分析试题及答案
- JAVA网络协议的基础知识试题及答案
- 领导科学与组织管理模式的融合试题及答案
- 四级数据库试题备考及指导
- 2025年教育行业数字化教材开发与历史教育创新研究
- 工业互联网平台入侵检测系统2025年在网络安全防护中的数据安全防护策略
- 优化信用环境助力统一大市场建设的策略及实施路径
- 2025年春七年级下册道德与法治导学案 第二课 第2课时 学会管理情绪
- 2025年工业互联网平台SDN在智能城市基础设施安全监测中的应用报告
- 家庭电梯保养合同协议
- 2025年江西九江市赣鄱砂业集团有限公司招聘笔试参考题库含答案解析
- 2025年上半年度苏州城际铁路限公司管理岗位公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 企业破产重组法律顾问协议
- 2025年高考政治三轮复习:统编版必修二《经济与社会》主观题专题练习题(含答案)
- DB11∕T1478-2024生产经营单位安全生产风险评估与管控
- 2025年高中化学学业水平考试知识点归纳总结(复习必背)
- 土方外运的施工方案
- 制度规章修订说明及执行情况反馈报告
- TCHATA 028-2022 结核分枝杆菌潜伏感染人群预防性治疗规范
- 2025年金融科技发展趋势洞见报告-北京金融信息化研究所
评论
0/150
提交评论