基于B/S的网上考试系统的设计与实现

时间:2022-07-31 04:17:33

基于B/S的网上考试系统的设计与实现

论文关键词: b/s 网络考试系统 数据库

论文摘要:随着网络的普及和对教育的重视,各院校各学科的网上考试都具有了必要的使用环境。但是,目前国内的一些网络教学系统的主要功能是教学,不能单独作为考试平台,通用性差,而且系统中对主观题的评阅多是采用人工评阅方式,没有实现真正意义上的自动评分。另一方面,我们所在院校的计算机基础课已开设了多年,但尚在沿用传统的考试形式或使用单机版的考试系统。基于web的网上考试系统的设计与实现就是基于上述目的开发设计的。

本系统采用b/s架构作为系统的总体结构,以web数据库技术为依托,利用微软的技术,结合ado,实现了对web数据库的访问和查询。该设计实现了按题型随机抽题组卷、在线考试、题库管理、系统管理的功能,能够对客观题在线评分。学生用学号登录成功后,阅读考试须知,之后选择考试科目进入考试页面,完成相应科目考试,自动给出考试成绩。系统管理,实现了对题库、考生信息、考试成绩、考试科目的管理。题库管理,实现了对试题的添加、编辑、删除功能;考生信息管理可以添加、修改、删除、查询考生信息,成绩管理可以删除成绩信息,科目管理主要是修改考试科目信息。

基于web的网上考试系统本身是一个很大的系统,尤其试题库部分需要许多人的参与以及大量的投入才能建成。该系统虽然仅仅是完成《计算机文化基础》和《操作系统》课程的考试,但却具有良好的实用性与通用性,提供友好的人机界面,具有较好的可扩充性和开放性。

1 绪论

1.1 网上考试系统的现状分析

在信息技术迅速发展的今天,网络对于大多数人已不再陌生,并且其应用在人们的工作、学习和生活中越来越多地发挥着不可替代的作用。近年来随着软件工程技术、信息通信技术的快速发展以及计算机网络技术的日趋成熟,网络教育在人们的教育活动中逐步得到普及。网上考试是网络教育不可缺少的组成部分,是网络教育的一个重要环节。

网上考试在国外一些国家已经得到了蓬勃发展,人们选学课程和考试都是通过网上进行的。例如国外一些著名的考试,如microsoft公司的mcse(microsoft系统工程师认证考试)、gmat(工商管理硕士入学考试)、托福考试、gre(美国研究生入学考试)等,都是采用网上考试的形式进行的。

在国内,目前绝大多数考试还停留在传统考试方式上,对互联网的真正应用仅限于一些考试的网上报名工作和网上成绩查询,还没有真正形成网上考试规模。网上考试系统作为现代教育的一个子系统,是保证教育教学质量的重要手段。在传统的考试方式下,组织一次考试要经过出题、考试、评卷、试卷分析等步骤,随着考试类型的增加及考试要求的提高,教师的工作量将会越来越大,并且其工作非常容易出错,在一定程度上说,传统的考试方式已经存在着改革的必要了。internet技术的发展使得考试的技术手段和载体发生了划时代的变化,考试从传统的纸笔考试到计算机辅助考试再发展到基于web的网上考试成为现实。

现阶段,网上考试系统的主流开发技术已经相当成熟,且很好地适应了动态站点设计和基于web的数据库访问的要求,是当前网上考试软件实现的主流技术之一。在对大量关于网上考试系统资料的研究和学习后,根据工作的需要,针对本校实际情况特别是教学的需求,利用学校校园网已有的基础条件,研究开发适合本校使用的基于web的网上考试系统。

1.2 选题的背景及研究意义

随着计算机科学、网络技术的迅猛发展,在教育领域里,实现网上考试可以充分利用学校现有的计算机软、硬件资源和网络资源实现考试;对于客观题由计算机来完成阅卷,可以将减少人工阅卷的工作量。

目前常用的网上考试系统主要有两种基本模式:传统的c/s(客户机/服务器)模式和新型的b/s(浏览器/服务器)模式,所谓c/s模式,即数据库(比如,试题库)内容放在远程的服务器上,在客户机上安装相应软件;c/s结构在技术上虽然很成熟,但该结构的程序往往只局限在小型的局域网内部,不利于扩展。并且,该结构的每台客户机都需要安装相应的客户端程序。当拥有用户量比较多时,如果采用该结构,系统的安装与维护工作比较繁重。同时,由于应用程序直接安装在客户机,客户机直接和数据库服务器交换数据,系统的安全性也受到一定影响。与传统的基于c/s模式的网上考试系统相比,b/s体系将应用逻辑与用户界面和数据访问相分离,使系统的维护变得简单(只需要改变网页,即可实现所有用户的同步更新),同时简化了客户端的功能,用户只需浏览器即可使用此考试系统,更适宜于互联网上的考试。

在信息网络化的现实面前,我们提出一种基于web的网上考试系统,并用sql sever 2000数据库与技术结合进行了该系统的开发。

1.3 系统基本简介

我们课题组所做的工作不仅仅是参与开发一个完整的在线考试系统,也是一个引导性的基础研究,是对.net平台下基于b/s结构的软件体系结构、关键技术、实现技术、框架解决方案进行的探索。

本系统采用、html、javascript、vbscript、图形编辑与数据库等工具,通过基于web服务器访问web页面,可以不受地点,时间限制,通过宽带上网或其它上网方式,借助internet这一强大、方便的工具,考生可以在互联网上通过浏览器来选择科目、参加考试,管理员可以在互联网上通过浏览器来添加、修改学生信息,添加、修改、删除试题,修改考试科目信息,管理学生成绩;同时还实现有学生信息查询功能:按班级、学号、姓名等关键字查询,实现对整个系统的管理功能。

系统的主界面主要有考生、管理员入口,根据用户类型,分别进入考试和管理两个不同的页面。其最大的特点是开放性、方便性和灵活性。

2 系统的关键技术及介绍

在《基于web的网上考试系统》的设计过程中,主要考虑了以下几方面的问题:

(1) 技术;

(2) 建立数据库,使用sql sever 2000来建立;

(3) 选择系统的开发模式,b/s模式;

(4) 对象模型;

(5) 系统数据库设计。

2.1 技术概况

是微软公司推出的一种internet编程技术,它采用效率较高的、面向对象的方法来创建动态web应用程序。在原来的asp技术中,服务器端代码和客户端html混合在一起,常常导致页面的代码冗长而复杂,程序的逻辑难以理解。是一种独立于浏览器的编程模型,可以在最新版本的ie、netscapenavigator以及诸如opera等被广泛使用的浏览器上运行。

是一种建立在通用语言上的程序构架。一个已编译的、基于.net的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,比asp即时解释程序速度上要快很多。微软公司了包括visual 、c#.net、visual c++.net等与.net兼容的语言来创作应用程序。

2.1.1 的优势

是在服务器上运行的编译好的公共语言运行库代码,它可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。

1)世界级的工具支持

框架补充了visual studio集成开发环境中的大量工具箱和设计器。wysiwyg编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。

2)威力和灵活性

由于基于公共语言运行库,因此web应用程序开发人员可以利用整个平台的威力和灵活性。框架类库、消息处理和数据访问解决方案都可从web无缝访问。也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到时保留基于com的开发中的现有投资。

3)简易性

使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似visual basic的简单窗体处理模型中处理事件并不相同。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。

4)可管理性

采用基于文本的分层配置系统,简化了将设置应用于服务器环境和web应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了框架应用程序的部署。只需将必要的文件复制到服务器,即可将框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。

5)可缩放性和可用性

在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。

6)自定义性和扩展性

随附了一个设计周到的结构,它使开发人员可以在适当的级别“插入”代码。实际上,可以用自己编写的自定义组件扩展或替换吉林大学硕士学位论文运行库的任何子组件。

7)安全性

借助内置的windows身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。

2.1.2 常用到的内置对象

application对象:对整个执行环境而言,一个虚拟目录下的所有程序构成了一个web应用程序。在多任务执行的情况下,来自四面八方的众多用户可能执行同一个web应用程序,这便依赖application对象。常用到的场合:聊天室、网页计数器等。

request对象:获取从客户浏览器传给服务器端的数据,如接收来自表单的数据。

response对象:request对象与response对象就像一般程序语言里的input及output命令,若要让服务器端的程序能够接收来自客户端的信息,须用request对象;若想将服务器端的信息传递给客户端,须用response对象。

session对象:session对象和application对象极为类似,但session对象的信息只适用于同一位用户,换句话说,一个session对象只属于一位用户。常用到的场合:虚拟购物车、用户登陆网站时用户名的临时存储等。

2.2 利用sql sever 2000来建立数据库

microsoft sql server 2000 是一种关系型数据库。此种数据库采数据分类表格化的架构,将相关的数据组成表格,表格和表格之间可以有关联性,因此称为关系型数据库。系统管理员可透过应用程序进入服务器,更改数据型态,管理及处理服务器资源。sql server 也是一种具备延展性的数据库(scalable database),亦即 sql server 可以支持多位使用者同时进入数据库中处理大量的数据。如图2-1所示:

图2-1 sql server 2000工作方式

2.3 browser/server模式—本系统的开发模式 2.3.1 browser/server模式简介

随着网络规模的日益扩大,应用程序的复杂程度不断提高,传统的数据库应用架构已经不能胜任。为了充分利用网络资源,越来越多的信息需要在 www(woridwideweb)上,实现信息最大程度的共享。browser/serve结构伴随着intemet的发展而很快地发展起来。browser/serve体系结构是一种三层结构,其三级结构组成如图2-2所示:

图2-2 b/s结构示意图

第一层,浏览器是表示层,完成用户接口功能。在客户端向url(uniform resourcelocator)指定的web服务器提出服务器请求,web服务器用http协议把所需文件资料传给用户,客户端接受并显示在www浏览器上。

第二层,web服务器是功能层,完成客户的应用功能。即web服务器接受客户请求,以cgi或asp与数据库连接,进行申请处理,而后数据库结果返回web服务器,再传至客户端。

第三层,数据库服务器是数据层。数据库服务器应客户请求独立地进行各种处理。browser/server系统中的browser作为一种通用的浏览器,一般没有任何应用程序; browser/server系统中的中间层是b/s结构中相当关键的部分,中间层在browser/serve:系统中充当着双重身份:从browser的角度看,它是 webserver,而从 dbserve的角度看,它是一个功能丰富的client。

2.3.2 browser/server模式的特点

b/s系统的这三层体系结构的特点:

·友好、统一的图形用户界面

在browser/server系统中,由于遵循了统一的标准协议,而且使用浏览器作为统一的客户软件,用户无须再花费大量的时间与精力去学习和熟悉不同的系统的使用方法,用户可以把大部分的精力集中在系统的内容上,而不是去记住系统的使用说明书。

·减少网络中的数据流量

在browser/server系统中,由于数据的处理工作是由服务器来执行的,因此在读取数据和保存数据时,这些数据只在几台服务器之间传输,不需要通过浏览器与服务器之间的网络。一般来说,浏览器与服务器之间的网络大都是距离较长而且速度较低的,而服务器与服务器之间的网络则是距离较短而且速度较高的,因此采用browser/server后,可以充分地利用服务器之间的高速连接通路,而减少在浏览器与服务器之间的长距离低速网络中的数据流量。

·更好的开放性

开放性是发挥分布式系统优势的基本保障,它为不同厂商生产的产品协同工作创造了条件,但是这些产品还应当遵循统一的标准。在browser/server系统中,采用了一致的http协议以及其他一些共同的规则,不同系统之间的冲突将会大大减少。

·平台无关性

在browser/server系统中,程序的主体分布在mid-server上,客户机上只有一个标准的浏览器,它与服务器之间采用标准的tcp/ip及http等协议进行通信,因此客户端的平台是相对独立的,它不依赖于服务器方所采用的软硬平台。用户可以自由地选择自己熟悉的平台进行工作。

·有效地解决异种数据库联合使用的问题

在browser/serve系统中,由于采用了 browser/mid-server/server的三层体系结构,只需在中间层服务器上安装数据库的驱动程序,或者使用专门的服务器用作与数据库连接的桥梁。因为程序的主体是运行在中间服务器上的,客户端只是一个浏览器,避免了在客户端重复安装数据库驱动程序的问题,从而可以有效地解决异种数据库联合使用的问题。

·客户端的维护工作简单

brower/serve系统中,由于采用了通用的客户软件,维护工作主要集中在服务器端,而服务器是由专门的管理人员集中管理的,对系统的维护相对简单得多。

基于b/s结构的web应用体系有如此多的优势,因此本网上考试系统的主体就采用这种b/s体系结构。

2.4 对象模型

对象模型中有五个主要的组件,分别是connection对象、command对象、dataadapter、dataset以及datareader。这些组件中负责建立联机和数据操作的部分我们称为数据操作组件(managed providers)分别由connection对象、command对象、dataadapter对象以及datareader对象所组成。数据操作组件最主要是当作dataset对象以及数据源之间的桥梁,负责将数据源中的数据取出后植入dataset对象中,以及将数据存回数据源的工作。

对象模型如图所示:

图2-2 对象模型

connection组件

connection对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。

command组件

command对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在connection对象上,也就是command对象是透过连结到数据源的connection对象来下命令的。所以connection连结到哪个数据库,command对象的命令就下到哪里。

dataadapter组件

dataadapter对象主要是在数据源以及dataset之间执行数据传输的工作,它可以透过command对象下达命令后,并将取得的数据放入dataset对象中。这个对象是架构在command对象上,并提供了许多配合dataset使用的功能。

dataset组件

dataset这个对象可以视为一个暂存区(cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。dataset的能力不只是可以储存多个table而已,还可以透过dataadapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。dataset对象可以说是中重量级的对象,这个对象架构在dataadapter对象上,本身不具备和数据源沟通的能力,也就是说我们是将dataadapter对象当做dataset对象以及数据源间传输数据的桥梁。

datareader组件

当我们只需要循序的读取数据而不需要其它操作时,可以使用datareader对象。datareader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为datareade在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用datareader对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。

2.5 系统数据库设计 2.5.1 数据库结构及说明

数据库结构是网上考试系统设计方案中的一个重要组成部分,目的在于满足考生、管理员用户实现其操作功能。数据库中表的设计:

1)管理员信息表(admin),如图2-3:

图2-3管理员信息表

2)学生信息表结构(student) ,如图2-4:

图2-4学生信息表结构

3)试题信息表结构(question),如图2-5:

图2-5 试题信息表

4)考试科目信息表结构(subject),如图2-6:

图2-6考试科目信息

5)考生成绩表结构(score),如图2-7所示:

图2-7 考生成绩表

2.5.2 用户权限简介

1.管理员

在此系统中系统管理员具有管理用户、管理试题和试卷的权力。他不需注册,在数据库有一个表来存放相关信息。

2.一般用户主要是指考生,参加在线考试。

3 系统的整体分析与设计

3.1 需求分析 3.1.1 系统需要解决的主要问题

考生进入系统应该进行身份验证。考生进入考试系统后,需要选择考试科目,所以系统还应有考试科目选择的功能。鉴于考试环境一般为机房,考试者之间的距离很近,为了避免考试做弊,试卷的试题和题量都应是相同的,但试题并不相同。在线考试基于网络环境,试卷应该从服务器的数据库随机抽取试题后动态生成的。另外,系统还应该对考试时间进行控制,时间到了会要求考试者交卷。考试者选择提交答卷后,应该自动判卷,给出考生分数。

本系统是为了满足在线考试的需求而设计开发的,可在internet上进行实时考试。所以本考试系统应具备的考试系统功能,包括:题库设计和管理,试卷的随机组卷能力,用户在线考试及记录,系统自动评卷,系统数据库管理维护,系统管理和维护。

3.1.2 系统功能模块划分

本在线考试系统可分为两个主要功能模块进行设计,这两个功能模块分别为:

(1)考生功能模块:考生功能模块可以实现考生登录、选择考试科目、在线考试、完成考试给出分数,如果已经考过,则不能登录考试。

(2)管理员功能模块:管理员功能模块可以实现管理员登录、考生信息管理、考试科目管理、题库管理、考试成绩管理。

系统统由一个登陆界面登陆,在登陆时是如果是学生,则用户名为考生学号,如果是管理员登陆,用户名为管理员名,分别从各自己的数据库中查询帐户,并核对登陆密码,然后根据不同的角色进入不同的界面。系统功能模块划分如图3-1所示:

图3-1 系统功能模块划分图

3.2 总体设计

本部分介绍了《基于web的网上考试系统》的总体设计,主要包括公用登陆模块的设计,学生功能模块的设计,管理员功能模块的设计。程序总体流程图如图3-2所示:

图3-2 程序总体流程图

3.2.1 公共登陆模块设计

所有用户都从本模块登陆,登陆界面(login/)上包括一个文本框用于输入用户名,一个文本框用于输入密码;包括两个按钮,用来区分考生登录,还是管理员登陆。点击登陆后,根据不同按钮的单击事件,连接到不同的

数据库,从相应的数据库表中查询用户名和密码,如查询到,则进入相应的页面,如未查询到,则弹出出错信息,用户点击确定重新输入用户名和密码登陆,图3-3示:

图3-3 用户登录界面

3.2.2 在线考试模块设计

考生登录后,进入考试须知页面(know1/),选择考试科目后,若未参加该科目的考试,则进入相应科目考试页面;否则,不能进入考试页面。该页面主要提供了一个考生选择考试科目的功能,以简单的超链接进入不同的科目考试页面。考试须知页面如图3-4示:

图3-4 考试须知页面

3.2.3 管理员功能模块设计

管理员登录后进入后台管理主页面(classintro/),由该页面可以登录到学生信息管理、科目管理、试题管理、成绩管理页面。如图3-6所示:

图3-6 后台管理主页面

4 部分页面实现详解

4.1 考试页面的实现

考试页面(exampage/)可以进行单选、多选、填空题这些客观题的考试。每一类型题都以一个web用户控件来实现题目显示,试题是随机生成的,每次考试都不同的试卷,如图3-5所示:

图3-5 考试页面

系统以随机抽题来生成试卷,使用了一个随机函数。先在题库question表中得到每种题型在每次抽题供抽取的总题数count= subjectinfo(subject),随机选题时应在1-count之间选取,temp = fix(count * rnd(10))。由于试卷是考前随机抽题而得,考生在第一时间开启试卷,减少了接触试题的人员间环节,也在一定程度上防止了考生将试题传出考场,增强了试题的保密性其次,为了避免由于得到的随机数相同,而在一份试卷中抽到相同的考题,在设计题库结构时设置了haveselect标记字段,标记字段取值为0时,该题未被抽取,haveselect标记字段取值为1,表示该题已被抽取,不能再用。这统在抽题时,首先判断haveselect标记字段是否为0,如果该题已被抽过,则必取新的随机数重新抽取。下面以单选题为例来说明。

//将haveselect置为1,标记该题为已选

public function setreaded(byval questionid as string)

strsql = "update question set haveselect=1 where id=" & cint(questionid)

exesql(strsql)

end function

//将haveselect置为0,该课程所有的考题初始化

public sub setread()

strsql = "update question set haveselect=0 where subjectname='" & subject & "'"

exesql(strsql)

end sub

//用随机函数rnd()来生成试题号

public sub databingtorep()

strsql = "select top " & 1 & " * from question where subjectname='" & subject & "' and type='单选题'and haveselect= 0 "

randomize()

count = subjectinfo(subject)

temp = fix(count * rnd(100))

if qds.tables(0).rows.count > 0 then

getrowinfo(qds.tables(0).rows(temp))

else

lblqesname.text = "暂时没有" & subject & "的单选题!"

end if

end sub

//统计课程考题的数量, 获得count值

function subjectinfo(byval name as string) as integer

strsql = "select * from question where subjectname='" & name & "' and type='单选题'and haveselect=0 "

dim cmd as new sqldataadapter(strsql, appconn)

cmd.fill(qds, "info")

return qds.tables("info").rows.count

end function

4.2 管理主页面的实现

管理主页面是管理员进入后台管理后所看到的第一个页面,在该页面上有label控件显示了管理员名,登录时间信息,一组超链接实现各个页面之间的跳转,以一个表格中加入超链接图片也可以在不同页面之间跳转,该页面主要是管理员欢迎界面,没有什么关键代码,只是超链接的使用。

4.3 学生信息管理页面(manstudentinfo/)的实现

该页面用datagrid控件显示了学生信息,并实现了分页显示,同时以下拉列表事件来实现按班级查询学生信息,其中班级是从数据库里查询出来的不重复的班级,还以下拉列表提供了按序号、学号、姓名进行的关键字查询,以超链接实现了跳转到添加、修改学生信息页面。如图4-1所示:

图4-1 学生信息管理页面

关键代码解释:

//定义数据库连接字符串,

dim conn as new sqlconnection(configurationsettings.appsettings("connectionstring"))

//使用distinct关键字搜索出数据库中的不同班级,class_name为下拉列表控件

comdstr2 = "select distinct class from student"

class_name.datasource = studs.tables("student1")

class_name.databind()

class_name.items.insert(0, new listitem("全部", "全部"))

//使第一项显示为“全部”

class_name.selectedindex = class_name.items.indexof(class_name.items.findbytext("全部"))

//使用response.redirect可以将网页转移至另外的网页上,使用的语法结构是:response.redirect网址,其中网址可以是相对地址或绝对地址,在此使用response.redirect("addstudentinfo/")跳转到修改学生信息页面

session("studentid") = s_datagrid.datakeys(cint(e.item.itemindex))

//使用下拉列表控件的selectedindexchanged事件,实现下拉列表改变,自动按不同班级查询学生信息

public sub class_name_selectedindexchanged(byval sender as system.object, byval e as system.eventargs) handles class_name.selectedindexchanged

dblstr = request.form("class_name")

ifsub()

end sub

//根据不同的查询条件生成不同的查询字符串

sub ifsub()

//使用like '%" & key & "%'实现按关键字查询,以下输入学号关键字为来实现查询

if skey = "s_no" then

comdskey = " where s_no like '%" & key & "%' "

comdstr = "select * from student " & comdskey

end if

session("str") = comdstr

adp = new sqldataadapter(comdstr, conn)

ds = new dataset

adp.fill(ds, "student")

s_datagrid.datasource = ds.tables("student").defaultview

s_datagrid.databind()

end sub

4.3.1 添加、修改学生信息(addstudentinfo/)

添加学生信息与修改学生信息共用一个页面,在执行不同操作时,传递不同的参数editstudent,当editstudent为空值时,显示添加学生信息页面,不为空显示为修改学生信息,并根据参数绑定数据库中的对应的学生信息,显示在相应的文本框或下拉列表中。如图4-2所示:

图4-2 添加、修改学生信息页面

关键代码解释:

//根据不同editstudent参数值显示不同的页面标题,其中editstudent为学生id

<%if editstudent = "" then%>添加学生信息

<%else%>修改学生信息<%end if%>

//根据不同editstudent参数值显示不同的按钮文本

<%if editstudent = "" then%>

<%else%><%end if%>

//该句的功能是把表单提交的变量editstudent的值赋给一个session对象studentid。这个对象用来存储学生id,它在用户对每个页面的访问中有效。

editstudent = session("studentid")

//点击修改学生信息事件,使用request对象的form获得页面上表单的内容

nums = request.form("num")

names = request.form("name")

pwds = request.form("pwd")

grades = request.form("grade")

stra = "update student set s_no='" & nums & "',s_name='" & names & "',s_pwd='" & pwds & "',class='" & grades & "' where id=" & editstudent

4.4 科目管理页面(managesubject/)的实现

该页面主要是对考试科目信息的修改,包括各类型题的总分和题量以及考试时间设置,其中序号和科目名称是不可修改的。用一个datagrid控件实现了显示科目信息,以一个隐藏的panel控件放上一个表格来绑定相应科目信息,当点击修改时,panel控件显示,并将相应科目信息以表格形式显示,以供修改。如图4-3所示:

图4-3 科目管理页面

关键代码解释:

//使用panel控件的visible属性,当点击修改时,panel.visible = true,

comdstr1 = "select * from subject where id=" & s_datagrid.datakeys(cint(e.item.itemindex))

objcomd = new sqlcommand(comdstr1, conn)

objcomd.connection.open()

studr = objcomd.executereader

//当读出该记录时,将相应字段的值显示在页面上的相应控件上

if studr.read() then

id.text = studr("id").tostring

end if

4.5 试题管理页面(manexampage/)的实现

该页面以repeater控件实现了试题的显示,每一题都用一个表格来显示,每一题都有一个操作,放了三个链接,点击添加,则跳转到添加试题页面,点击修改,则跳转到试题修改页面,点击删除,则删除该题。此外该页还进行了分页,可以到上一页,下一页,直接到达首页和尾页,并显示了总页数和当前页码。如图4-4所示:

图4-4 试题管理页面

关键代码解释:

manadp = new sqlclient.sqldataadapter

manadp.selectcommand = objcomd

mands = new dataset

//填充dataset数据集

manadp.fill(mands, "mana")

//设置分页显示试题的数量

dim manpd as pageddatasource = new pageddatasource

manpd.datasource = mands.tables("mana").defaultview()

manpd.allowpaging = true

manpd.pagesize = 4

//定义当前页变量curpage

dim curpage as integer

//设置当前页的页码索引为当前页码减一

manpd.currentpageindex = curpage - 1

lblcurrentpage2.text = " <共:" & curpage.tostring() & "/" & manpd.pagecount & "页>"

//如果是上一页,跳转到前一页

if not manpd.isfirstpage then

lnkprev2.navigateurl = request.currentexecutionfilepath & "?page=" & convert.tostring(curpage - 1) & "&mana=" & server.urlencode(session("mana")) & ""

lnkfirst2.navigateurl = request.currentexecutionfilepath & "?page=1" & "&mana=" & server.urlencode(session("mana")) & ""

end if

//如果是下一页,跳转到后一页

if not manpd.islastpage then

lnknext2.navigateurl = request.currentexecutionfilepath & "?page=" & convert.tostring(curpage + 1) & "&mana=" & server.urlencode(session("mana")) & ""

lnklast2.navigateurl = request.currentexecutionfilepath & "?page=" & manpd.pagecount & "&mana=" & server.urlencode(session("mana")) & ""

end if

4.5.1 添加、修改试题页面(addquestion/)

添加和修改试题共用一个页面,在执行不同操作时,传递不同的参数edittest,当edittest为空值时,显示添加试题页面,不为空显示为修改试题页面,并根据参数所传递的id号来绑定数据库中的对应的试题信息,显示在相应的下拉列表、文本框或单选按钮上。如图4-5所示:

图4-5 修改试题

关键代码解释:

//使用request对象的querystring属性来获取edittest参数的值

edittest = request.querystring("edittest")

if edittest <> "" then

comdstr = "select * from question where id=" & edittest

objcomd = new sqlcommand(comdstr, conn)

objcomd.connection.open()

testdr = objcomd.executereader

if testdr.read() then

txtquestion.text = testdr("question").tostring

txta.text = testdr("a").tostring

txtb.text = testdr("b").tostring

txtc.text = testdr("c").tostring

txtd.text = testdr("d").tostring

txtanswer.text = testdr("answer").tostring

if testdr("type").tostring = "单选题" then

type.items(0).selected = true

else

if testdr("type").tostring = "多选题" then

type.items(1).selected = true

else

type.items(2).selected = true

end if

end if

end if

objcomd.connection.close()

end if

//使用request对象的querystring属性来获取deltest参数的值

deltest = request.querystring("deltest")

if deltest <> "" then

comdstr = "delete from question where id=" & deltest

objcomd = new sqlcommand(comdstr, conn)

objcomd.connection.open()

objcomd.executenonquery()

objcomd.connection.close()

response.redirect("manexampage/?")

end if

4.6 成绩管理页面的实现

该页面主要是对学生考试成绩的管理,结合了学生信息表和成绩表的双表查询,用一个datagrid控件显示学生考试成绩,只能对学生成绩进行删除操作,设计比较简单,如图4-6所示:

图4-6 成绩管理页面

主要代码解释:

//使用datagrid控件的mydatagrid_delete事件,利用strsql字符串实现记录的删除

strsql = "delete from score where id=" & s_datagrid.datakeys(cint(e.item.itemindex))

参考文献

[1]李万伦,何蕾,赵海程序设计.清华大学出版社,2002

[2]求是科技数据库管理系统开发实例导航.人民邮电出版社,2005

[3]张增良程序设计教程.西安交通大学出版社,2006

[4]钱灵.基于.net的网上考试系统的设计与实现[d] .天津大学,2005

[5]张全和.关于考试阅卷系统开发的必要性和可行性.重庆大学计算机基础教学研讨会论文集.2004.4

[6] hoffman k,gabriel j.汪钟鸣,战晓苏译..net framework高级编程[m].北京.清华大学出版社.2002年

[7] 全渝娟,范荣强.基于web的远距离考试系统.计算机应用与软件,2003,7

[8] 蒋元星.基于.net框架的企业应用集成研究和实现.浙江大学硕士学位论文2005,5

[9] 肖金秀,冯沃辉,陈少涌程序设计教程[m].冶金工业出版社,2002,7

[10] 徐世浩.高校教育网站技术应用研究.电化教育研究,2004,1

[11] 陈玉峰.sql server 2000数据库开发教程(第1版)[m].北京:科学出版社,2003.

[12] 金雪云,焦桂英高级开发技术与范例(第3版)[m].北京:科学出版社,2002.

[13] 刘东飞,夏丹.基于.net的网上考试系统设计与实现[j].福建电脑,2006,5:121-122

[14] 张红鹰,基于net平台的网上考试系统的设计与实现,湖北大学成人教育学院学报,2006年第3期。

[15] 高清和.精通的程序设计.中国铁道出版社,2001[10]肖建编程实例与技巧集粹.北京希望电子出版社,2003。

[16] 廖彬山,高峰霞.web数据库开发技术[m].北京:电子工业出版社,2001。

[17] 张莉,王强.sql server数据库原理及应用教程[m].北京清华大学出版社,2003年1月。

[18] 刘红军.基于b/s三层架构的标准化网上考试系统的设计与实现[dl.中国海洋大学硕士学位论文,2005

[19] 孟军《精通网络编成》人民邮电出版社,2002

[20] 杨帆《技术与应用》高等教育出版社,2004

[21] 朱归良基于web模式的网上考试系统安全性研究(《计算机工程与应用》2002年3月)

[22] 夏江林.c/s结构与b/s结构技术特点比较.电脑学习.2001(5) p35-36

[23] 朱忱,宋顺林.基于.砚t的web应用框架的设计与实现[j].计算机工程与设计,2006(8):1446—1447

[24] 黄杰.基于browser/sever模式下的在线网上考试系统【di.武汉大学硕士学位论文,2004

上一篇:Web集群中基于实时概率的容错调度算法研究 下一篇:基于ASP在线测试系统的设计与实现