在线考试系统设计

更新时间:2024-05-18 18:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件开发综合技能训练报告

在线考试系统设计

专业 计算机科学与技术

学生姓名 班学

级 号

指导教师 李萍 完成日期

年 1月9日

信息学院

目 录

1 绪论 .................................................................. 1 1.1 开发的背景和意义 ................................................... 1 1.2 论文结构 ........................................................... 1 2 系统需求分析 .......................................................... 2 2.1 需求分析 ........................................................... 2 2.2 开发环境及工具 ..................................................... 2 2.2.1 网站开发环境 ................................................... 2 2.2.2 服务器端和客户端 ............................................... 2 3 系统概要设计 .......................................................... 3 3.1 系统目标 ........................................................... 3 3.2 系统流程图 ......................................................... 4 3.3 系统功能结构 ....................................................... 4 4 详细设计 .............................................................. 6 4.1 数据库设计 ......................................................... 6 4.1.1 数据库概要说明 ................................................. 6 4.1.2 数据库概念设计 ................................................. 6 4.1.3 数据库逻辑设计 ................................................. 8 4.1.4 公共类的编写 ................................................... 9 4.2 网页设计 .......................................................... 14 4.2.1 网上考试系统登录页面 .......................................... 14 4.2.2 注册页面 ...................................................... 17 4.2.3 在线考试页面 .................................................. 19 4.2.4 后台管理页面 .................................................. 23 4.3 程序运行 .......................................................... 29 5 结论 ................................................................. 31 参考文献 ................................................................ 32

1 绪论

1.1 开发的背景和意义

随着网络技术的飞速发展,现在很多国外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训。现在,计算机硬件技术的发展已经达到了相当高的水平。但是,远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。远程教育包括很多环节,例如教学系统、答疑系统和考试系统等等。其中很重要的一个环节就是在线考试系统,同时它也是最难实现的环节。

考试是教育中的一个重要环节[1]。考试的目的一是为了考查学生的知识掌握情况,二是为教师提供教学分析的依据。传统的考试由于涉及到组织命题、试卷印刷、考场安排、组织阅卷等诸多环节,考试时间周期长、效率低下;同时人工披卷等主观因素也影响到考试的公正性。随着网络技术在教育领域应用的普及,应用现代信息技术构架的网络在线考试系统展现出了越来越多的优越性。

网络在线考试系统旨在探索一种以互联网为基础的考试模式。通过这一新的考试模式,为考试创造一种新的考试环境,提高考试工作效率和标准化水平,使考务管理突破时空限制,使考生可以随时随地通过网络完成考试。网络在线考试系统从根本上解决了传统考试过程中工作量大、效率低、反馈周期长、资源浪费等缺陷,成为技术发展与研究的方向。

“网上考试系统”作为现代远程教育的一部分,以Internet网络作为载体,不受时间、科目和地域的限制,给考生、评卷人和出题者带来巨大的便利,同时也使考试成为真正意义上的平等、公开。它可以杜绝试题泄露、评卷不公、考生作弊。考生可以在规定的期间内选择最佳状态时期参加考试,系统会为每一个考生同样的试卷,同时当场给出成绩, 评卷人和出题者可以在世界任何一个地方进行试题结构、试题内容的维护和进行评卷工作

1.2 论文结构

第一章:对网上考试系统的开发背景和意义进行阐述。 第二章:对网上考试系统作出详细的需求分析。 第三章:会话通信程序的概要设计分析。 第四章:会话通信程序的详细设计分析。 第五章:对整个系统的开发设计作出总结。

2 系统需求分析

2.1 需求分析

随着计算机技术和互联网的快速发展,人类已经进入了信息时代,也有人称为数字化时代。在数字化的网络环境下,学生希望得到个性化的满足,根据自己的情况进行学习,同时也希望能够得到科学的评价;老师希望有效改进现有的考试模式,提高考试的效率;教育机构也希望给网上的学生提供更全面、灵活的服务,全面准确地对学生进行跟踪和评价。网络考试系统正是迎合这一时代需求而开发的,它旨在探索一种以互联网为基础的考试模式。通过这种新的模式,为学校创造一种新的考试环境,提高考试工作效率和标准化水平,是学校管理者、教师和学生可以随时随地通过网络进行考试。

网络考试系统的开发与应用,避免了以往学校里考试纸张、笔、监考和巡考等各种资源的浪费,并且后台管理是管理员单一的管理,确保了程序的安全性。网络考试系统管理员登录后,对考试内容、科目和考试题目等都作了详细的分类,只要考生通过自己的用户名和密码进入前台,按步骤依次进行选题和答题,答题完毕后系统会自动判断考卷,并核对出最后考卷的分数,解决了在学校考试后等待考卷分数通知的问题。

2.2 开发环境及工具

2.2.1 网站开发环境

网站开发环境:Microsoft Visual Studio 2005集成开发环境。 网站开发语言:ASP.NET+C#。 网站后台数据库:SQL Server 2000.

开发环境运行平台:Windows XP/Windows 2000/Windows Server 2003。

2.2.2 服务器端和客户端

操作系统:Windows Server 2003

Web服务器:Internet 信息服务(IIS)管理器。 数据库服务器:SQL Server 2000. 浏览器:IE 6.0。

网站服务器运行环境:Microsoft .NET Framework

浏览器:Internet Explorer 6.0

分辨率:最佳效果1024×768像素

3 系统概要设计

3.1 系统目标

本程序是将传统的考试模式与先进的网络应用相结合开发设计的。主要实现如下目标:

1. 操作简单方便、界面简洁美观。

2. 具有实时性,已注册地用户无论身在何地,通过Internet浏览器,都可登录网络考试系统。

3. 具有严肃性和公正性,系统提供的自动交卷功能使考试到结束时间时,系统将自动交卷。

4. 提供考试时间倒计时动能,让考生随时了解考试剩余时间。 5. 系统自动交卷、阅卷,保证成绩真实、准确。 6. 对考生注册信息进行管理。 7. 系统运行稳定、安全可靠。

3.2 系统流程图

考生 管理员 注 册 登录 在线考试 留 言 选择考试课程和套题 对考生信息、考试信息、管理员信息、考试套题信息和考试题目进行添加、修改、删除等管理 开始考试 提交试卷 查看考试结果

图3.1 网站的流程图

3.3 系统功能结构

根据网上考试系统的特点,可以将其分为前台和后台两个部分进行设计。前台主要用于考生注册和登录系统、在线考试、留言以及退出登录;后台主要用于管理员对考生信息、考题信息、考生成绩信息、考试套题和课程信息等进行管理。

网上考试系统的前台功能结构图如下所示:

在线考试网前台系统 考生注册 考生/管理员登录 找回密码 在线考试 留 言 板 退出系统 考试规则 选择考试课程套题 开始考试 考试结束

图3.2 网上考试系统前台功能结构图

网上考试系统的后台功能结构图如下所示:

在线考试网后台系统 管理员信息管理 注册学生管理 课程信息管理 套题信息管理 学生成绩管理 考试题目管理 退出系统 添加管理员 修改管理员 删除管理员 添加课程 删除课程 添加套题 删除套题 添加题目 删除题目

图3.3 网上考试系统后台功能结构图

4 详细设计

4.1 数据库设计

4.1.1 数据库概要说明

在程序开发过程中,数据库设计师非常重要的一个环节。一个设计良好的数据库结构,可以提高效率,方便维护,并且为以后进行功能的扩充留有余地。

本网站采用SQL Server 2000[2]数据库,名称为mydb,其中包含6张数据表:tb_Administator,tb_Lesson,tb_Questions,tb_Student,tb_StuResult,tb_Taoti.

4.1.2 数据库概念设计

通过对网站进行的需求分析、网站流程设计以及系统功能结构的确定,规划出系统中使用的数据库实体对象分别为“管理员信息”、“课程信息”、“套题信息”、“考生成绩信息”、“用户注册信息”等。

对网站进行有效地管理就要设置一个或多个管理员,管理员实体包括管理员编号、

管理员姓名、管理员密码和注册时间。考试套题实体包括套题名称、所属课程、添加时间等属性。

管理员信息实体E-R图[3]和考试套题实体E-R图分别如下所示:

管理员编号 管理员姓名 管理员 管理员密码 注册时间

图4.1 管理员信息实体E-R图

套题名称 所属课程 考试套题 添加时间

图4.2 考试套题实体E-R图

考生信息实体包括用户名、密码、电子邮件、密码提示问题、密码提示答案等属性。实体E-R图如下所示:

电子邮件 安全问题 用户名 密码 考生 安全答案 加入时间

图4.3 管理员信息实体E-R图

4.1.3 数据库逻辑设计

根据在数据库概念设计中给出的数据库实体E-R图,设计数据表结构。 管理员信息表用于保存管理员信息,tb_Administrator表的结构如下表所示:

表4.1 tb_Administrator表的结构

字段名称 ID Name PWD JoinTime 数据类型 bigint varchar varchar datetime 长度 8 50 50 8 默认值 Getdate() 允许空 否 否 否 是 字段描述 唯一标识 管理员名称 管理员密码 加入时间 考生课程信息表用于保存课程信息,tb_Lesson表的结构如下所示:

表4.2 tb_Lesson表的结构 字段名称 ID Name JoinTime 数据类型 bigint Varchar Datetime 长度 8 60 8 默认值 Getdate() 允许空 否 是 是 字段描述 唯一标识 课程名称 添加时间 注册考生信息表用于保存在网站注册的考生信息,tb_Student表的结构如下所示:

表4.3 tb_Student表的结构 字段名称 ID UserName PWD Email Question Answer JoinTime 数据类型 Bigint Varchar Varchar Varchar Varchar Varchar datetime 长度 8 20 20 20 20 20 8 默认值 Getdate() 允许空 否 是 是 是 是 是 是 字段描述 唯一标识 用户名 密码 电子邮件 密码问题 密码答案 加入时间

考试套题信息表用于保存课程所对应的套题信息,tb_Taoti表的结构如下所示:

表4.4 tb_Taoti表的结构 字段名称 ID Name LessonID JoinTime 数据类型 Bigint Varchar Bigint Datetime 长度 8 50 8 8 默认值 Getdate() 允许空 否 是 是 是 字段描述 唯一标识 套题名称 所属课程号 添加时间

考生成绩信息表用于保存考生的考试成绩,tb_StuResult表的结构如下所示:

表4.5 tb_StuResult表的结构

字段名称 Res_ID Stu_ID Which_Lesson taotiid taotiName Res_single Res_more Res_total Res_subdate 数据类型 Bigint varchar varchar Bigint varchar Int Int Int datetime 长度 8 50 50 8 50 4 4 4 8 默认值 Getdate() 允许空 否 是 是 是 是 是 是 是 是 字段描述 唯一标识 用户名 所属课程名称 所属套题编号 所属套题名称 单选成绩 多选成绩 总成绩 成绩提交时间

考试题目信息表用于保存各套题中所包含的详细考试题目,tb_Questions表的结构如下所示:

表4.6 tb_Questions表的结构

字段名称 ID Que_subject Que_type Que_joindate Que_lessonid Que_taotiid OptionA OptionB OptionC OptinD Que_answer 数据类型 Bigint Varchar Char Datetime Int Bigint Varchar Varchar Varchar Varchar char 长度 8 50 10 8 4 8 50 50 50 50 10 默认值 Getdate() 允许空 否 是 是 是 是 是 是 是 是 是 是 字段描述 唯一标识 考试题目 题目类型 添加时间 所属课程号 所属套题号 选项A 选项B 选项C 选项D 正确答案

4.1.4 公共类的编写

在网站开发项目中通常以类的形式来组织、封装一些常用的方法和事件,公共类的编写可以减少重复代码的编写,有利于代码维护,在编程过程中可以起到事半功倍的效果。

网上考试系统中创建了一个公共类Datacon,在此公共类中共创建了6各方法,具体如下:

1. getcon:用来连接在线考试网的数据库,类型为SqlConnection[4]。

2. eccom:用于执行对数据库操作的SQL语句命令,如删除操作命令、修改操作命令等。

3. ecadabind:用于将数据库数据绑定到表格控件中。 4. ecDropDownList[5]:用于将数据绑定到下拉列表框中。

5. ecadabindinfostring:用于将数据库数据绑定到表格控件中,并获取数据表中的主键字段。

6. ExceRead:用于读取数据库中数据,返回一个SqlDataReader。

1.数据库连接的方法

在此公共类中编写了一个getcon()方法,该方法用来连接数据库,类型为SqlConnection。代码如下:

public SqlConnection getcon()

{

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

string strCon = \ID=sa;PWD=sa\;

//创建一个新的数据库连接

SqlConnection sqlCon = new SqlConnection(strCon); //返回SqlConnection类型的值 return sqlCon;

}

2.执行数据库操作命令的方法

在eccom[6]方法中,首先传一个SQL语句,然后与SQL Server数据库建立连接 ,应用SqlCommand对象执行所传进来的SQL语句,最后应用try-catch-finally语句进行异常处理,如果执行该SQL语句则返回true,反之则返回false。代码如下: public bool eccom(string sqlstr) {

SqlConnection con=this.getcon(); con.Open();

SqlCommand mycommand=new SqlCommand(sqlstr,con); try {

mycommand.ExecuteNonQuery(); return true;

}

catch {

return false; }

finally {

//关闭数据库连接 con.Close(); } } 注释:

1. SqlConnection类:SQL Server数据库一个打开的连接。 2. SqlConnection.Open方法:用于打开数据库连接。

3. SqlCommand类:要对SQL Server数据库执行的一个SQL语句或存储过程。 4. Sqlcommand.ExecuteNonQuery方法:对连接执行SQL语句并返回受影响的行数。 3.将数据绑定到表格控件的方法

在公共类中为了实现该方法,编写了一个ecadabind(GridView gv,string sqlstr4)方法,用来执行SQL语句,返回类型为bool型。该方法主要是执行SqlDataAdapter中的语句,并将其绑定到GridView控件上,相应功能执行成功后返回true,否则返回false。代码如下:

public bool ecadabind(GridView gv,string sqlstrl4) {

//定义新的数据库连接

SqlConnection con = this.getcon(); //打开数据库连接 con.Open();

//定义并初使化数据适配器

SqlDataAdapter mydataadapter[7] = new SqlDataAdapter(sqlstrl4,con); //创建一个数据集mydataset

DataSet mydataset = new DataSet(); //将数据适配器中的数据填充到数据集中 mydataadapter.Fill(mydataset); //将此数据集作为表格控件的数据源 gv.DataSource=mydataset; try {

//绑定数据库中数据 gv.DataBind(); //返回这个数据集 return true; }

catch {

return false; }

finally {

//关闭数据库连接 con.Close(); }

}

4.将数据绑定到下拉列表框的方法

将数据绑定到下拉列表框中主要应用了公共类中的ecDropDownList(DropDownList DDL,string sqlstr3,string DTF,string DVF)方法。

该方法首先传了4个值,分别为DropDownList控件、SQL语句、列表项提供的内容字段和列表项提供值;然后与SQL Server数据库建立连接,应用SqlDataAdapter对象填充数据集并指定DropDownList控件的数据源;最后设置列表项提供的内容字段和列表项提供值所绑定的数据源,应用try-catch-finally语句进行异常处理,如果DropDownList控件执行DataBind方法返回true,反之则返回false。代码如下: public bool ecDropDownList(DropDownList DDL, string sqlstr3, string DTF, string DVF) {

//创建数据库连接

SqlConnection con = this.getcon(); //打开数据库连接 con.Open();

//定义并初使化数据适配器

SqlDataAdapter mydataadapter = new SqlDataAdapter(sqlstr3,con); //创建一个数据集mydataset

DataSet mydataset = new DataSet(); //将数据适配器中的数据填充到数据集中 mydataadapter.Fill(mydataset); DDL.DataSource = mydataset;

[9]

DDL.DataTextField = DTF; DDL.DataValueField = DVF; try {

DDL.DataBind(); return true; }

catch

{

return false; }

finally {

//关闭数据库连接 con.Close(); }

}

5.在表格控件中获取数据主键字段的方法

在表格控件中获取数据主键字段的方法,主要应用了公共类中的ecadabindinfostring(GridView gv,string sqlstr5,string DNK)方法,该方法与ecadabind方法类似。

该方法用来执行SQL语句,返回类型为bool型,主要是执行SqlDataAdapter中的语句,并将其绑定到GridView控件上显示其主键字段的名称,相应功能执行成功后返回true,否则返回false。代码如下:

public bool ecadabindinfostring(GridView gv,string sqlstr5,string DNK)

{

//通过调用公共类中getcon方法,创建一个新的数据库连接对象 SqlConnection con = this.getcon(); //打开数据库连接 con.Open();

//定义并初使化数据适配器

SqlDataAdapter mydataadapter = new SqlDataAdapter(sqlstr5,con); //创建一个数据集mydataset

DataSet mydataset = new DataSet(); //将数据适配器中的数据填充到数据集中 mydataadapter.Fill(mydataset); gv.DataSource=mydataset;

gv.DataKeyNames = new string[] { DNK }; try {

gv.DataBind(); return true; }

catch {

return false; }

finally {

con.Close();

}

}

6.数据读取的方法

数据读取方法主要应用到了公共类中的ExceRead方法。首先调用公共类中的getcon方法创建一个新的数据库连接对象,接着创建一个SqlCommand命令对象,然后应用该命令对象的ExecuteReader方法创建一个数据阅读器,用来读取数据库中的数据,最后返回一个SqlDataReader类对象。代码如下: public SqlDataReader ExceRead(string SqlCom)

{

//通过调用公共类中getcon方法,创建一个新的数据库连接对象 SqlConnection con = this.getcon(); con.Open();

//创建一个SqlCommand对象,表示要执行的SqlCom语句或存储过程 SqlCommand sqlcom = new SqlCommand(SqlCom, con); //创建一个数据阅读器,用来读取数据库中数据 SqlDataReader read = sqlcom.ExecuteReader(); return read;

}

4.2 网页设计

4.2.1 网上考试系统登录页面

考生和管理员需要通过登录页面进入在线考试网。考生在登录在线考试网之前,首先需要通过登录页面进行注册。为了防止考生忘记密码,提供了密码找回功能。在线考试网登录页面的运行效果如下所示

图4.4 网上考试系统登录主页面

很多情况下,考生会将密码遗忘或丢失,这样就无法登录自己的学生账号,为了避免造成不必要的损失,所以设计了找回密码的功能。

找回密码主要分为3个页面来完成。页面1(Findpwd.aspx):输入已注册的用户名;页面2(Findpwdd.aspx):系统会根据输入的用户名把相应的密码问题列出来,然后由考生输入问题答案;页面3(returnpwd.aspx):如果问题答案正确,则成功找回密码。

实现代码:

编写后台代码,在Page_Load事件中,首先调用随机验证码[10],应用验证码技术可以防止用户恶意注册。其事件代码如下:

protected void Page_Load(object sender, EventArgs e) {

Session[\] = this.txtUserName.Text; if (!IsPostBack) //判断是否首次加载 {

//调用随机验证码方法

Random rnd = new Random();

this.labValidate.Text = rnd.Next(1000, 9999).ToString(); }

}

在处理登录页面提交的数据时,首先会根据“管理员登录”复选框的值来判断是

否登录管理员页面,如果该复选框被选中则执行核对用户名、密码和验证码而进入管理员页面,否则进入考生页面。输入完相关的用户名、密码和验证码后,单击“确定”按钮,提交登录信息。代码如下:

protected void btnLogin_Click(object sender, EventArgs e)

{

//判断验证码是否有误

if(txtValidate.Text!=labValidate.Text) {

Response.Write(\验证码有误!');location='javascript:history.go(-1)'\); } else {

//判断是否是管理员登录,如果是则调用getcom方法中的条件1 if(cblAdminLog.Items[0].Selected==true) {

getcom(1); }

//非管理员登录,调用getcom方法中条件2 else {

getcom(2); } }

}

调用自定义方法getcom,判断是管理员还是考生: private void getcom(int i)

{

//打开数据库连接,并调用公共类中的getcon方法 SqlConnection con=dataconn.getcon(); //打开数据库连接 con.Open();

//创建一个新的SqlCommand实例对象 SqlCommand com=con.CreateCommand(); switch(i) {

case 1:

com.CommandText=\Name='\+this.txtUserName.Text+\+this.txtPwd.Text+\; //获取SQL语句的值强制转换成数值类型

int count1=Convert.ToInt32(com.ExecuteScalar()); //判断数据库中是否存在数据

if(count1>0) {

Application[\]=txtUserName.Text; Application[\]=txtPwd.Text; 如果登录成功,则跳转到管理员页面

Page.Response.Redirect(\); } else {

//如果登录失败,则弹出错误信息

Response.Write(\language=javascript>alert('用户名或密码有误!');location='javascript:history.go(-1)'\); }

break; case 2:

//设置SqlCommand命令对象的Text文本属性

com.CommandText=\UserName='\+txtUserName.Text+\+txtPwd.Text+\;

//定义一个int型变量count2,并返回所查询数据表的第一行第一列 int count2=Convert.ToInt32(com.ExecuteScalar()); if(count2>0) {

//应用Application对象保存用户ID及密码 Application[\]=txtUserName.Text; Application[\]=txtPwd.Text; 页面跳转至在线考试页

Page.Response.Redirect(\); } else {

Response.Write(\用户名或密码有误!');location='javascript:history.go(-1)'\); return; }

break; }

}

4.2.2 注册页面

要进入在线考试系统,考生首先需要注册一个用户名。单击在线考试系统登录页中的“注册”,进入考生注册页面。在注册页面中输入考生的基本信息,包括用户名、密码、密码问题、问题答案、电子邮件等。考生注册页面的运行效果如下图所示:

图4.5 网上考试系统考生注册页面

另外,考生注册页应用了AJAX[11]无刷新检测用户名的技术。

AJAX为Asynchronous JavaScript and XML的缩写,用来描述一组技术的集合,囊括Java技术、XML以及JavaScript的编程技术,可以构建基于Java技术的web应用,并打破了使用页面重载的惯例。

AJAX,异步Javascript与XML,是使用客户端脚本与Web[12]服务器交换数据的Web应用开发方法。通过AJAX,Web页面不用打断交互流程就可以进行重新加载,从而实现动态更新。使用AJAX,可以创建类似本地桌面Windows应用程序。

为了防止注册的用户名重复,可以通过单击“检测注册号”按钮进行检测。如下图所示,考生输入注册的用户名后通过检测显示在数据库中无此号,可以注册。

图4.6 检测用户名可以使用

检测完考生注册的用户名,并在注册页面中输入正确的信息后,如下图所示,单击“提交”按钮,如果注册成功就将会显示“注册成功”,并跳转至登录主页面。

图4.7 网上考试系统登录主页面

图4.8 网上考试系统注册成功

4.2.3 在线考试页面

考生在线答卷时首先需要选择套题,系统需要根据考生提交的课程和套题信息从数据库中获取相应题目,然后通过DataList[13]控件显示出来。课程和套题信息是通过Application变量从上一页中获取的。

1.Application对象[14]

Application对象可称之为记录应用程序参数的对象。

Application对象是HttpApplicationState类的一个实例,它可以生成一个所有Web应用程序都可以存取的变量。这个变量的使用范围涵盖全部使用者,只要正在使用这个网页的程序都可以存取这个变量。

每个Application对象变量都是Application集合中的对象之一,由Application对象统一管理。使用Application对象的相关语法如下:

Application[“变量”]=”变量内容”;

Application(“对象名”)=Server.CreateObject(Progld)

一个网站可以有不止一个Application对象。典型情况下,可以针对个别任务的一些文件创建个别个Application对象。例如,可以建立一个Application对象来适用全部公用用户,而再创建另外一个只适用于网络管理员的Application对象

2.Session对象

Session对象可称之为记录浏览器端的变量对象。

Session对象是HttpSessionState类的一个实例,其功能和Application对象类似,都是用来存储跨网页程序的变量或者对象,但Session对象和Application对象有些特性存在着差异。Session对象只针对单一网页使用者,也就是说各个连接的机器都有各自的Session对象,不同的客户端无法互相存取。Application对象中止于停止IIS服务时,而Session对象中止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定的Session变量的有效时间时,Session对象就会消失。

Session对象和Application对象一样都是Page对象的成员,因此可直接在网页中使用。使用Session对象存放信息的语法如下:

Session[“变量名”]=”内容”; 从会话中读取信息的语法如下: VariablesName=Session[“变量名”];

Session对象是与特定用户相联系的。针对某一个用户赋值的Session对象是和其他用户的Session对象完全独立的,不会相互影响。换句话说,这里面针对每一个用户保存的信息是每一个用户自己独享的,不会产生共享情况。

在线考试页的主要功能是允许考生在网站 上针对指定的课程和套题进行考试。在该页中,考试首先需要阅读考试规则,然后选择考试课程和套题;最后进入考试页面进行答题,如下图所示。

当考生提交试卷或者到达考试结束时间时,系统将自动对考生提交的试卷进行评分,并给出最终考试成绩。

图4.9 考试规则

图4.10 选择考试课程和套题

图4.11 考试页面

4.2.4 后台管理页面

首先介绍一下SQL Server试图方面的技术分析。 1. 视图的概述[15]

视图时用户用来查看数据库表中数据的一种常用方式,其作用相当于一个虚拟表。当一些用户需要经常访问数据表中某些字段构成的数据,但从安全角度考虑,又不希望直接接触数据表时,可以利用视图这一数据对象。视图不是数据表,它仅是一些SQL查询语句的集合,使用时按照不同的要求从数据表中提取不同的数据。视图犹如数据表的窗户,管理员定义这些“窗户”的位置后,用户通过它可以浏览表中的部分或全部数据,视图中数据的物理存放位置在数据库的表中,这些表一般称为视图的基表。

2. 视图的创建

在SQL Server中创建视图有3种方法:使用创建视图向导、企业管理器或在查询分析器里执行CREATE VIEW语句。这里主要介绍在查询分析器里执行CREATE VIEW语句。语法格式如下:

CREATE VIEW 视图名[(视图列名1,视图列名2……,视图列名n)] ——对包含CREATE VIEW语句的文本加密 [WITH ENCRYPTION] AS

SELECT 语句

——表示对视图所有数据执行修改操作都必须遵守定义视图SELECT语句的WHERE字句所指定的条件

[WITH CHECK OPTION]

在后台管理中,有很多信息需要删除,删除信息的代码如下[16]: protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {

GridView1.PageIndex = e.NewPageIndex; //调用公共类中的ecadabind方法,

dataconn.ecadabind(GridView1, \\ + DropDownList1.SelectedValue + \ + AdminUserName.Text + \); }

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {

if (e.Row.RowType == DataControlRowType.DataRow) {

e.Row.Cells[2].Text =

Convert.ToString(Convert.ToDateTime(e.Row.Cells[2].Text).ToShortDateString());

}

if (e.Row.RowType == DataControlRowType.DataRow) {

((LinkButton)(e.Row.Cells[4].Controls[0])).Attributes.Add(\, \confirm('确定删除吗?')\); } }

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) {

//调用公共类中的eccom方法,删除管理员信息

dataconn.eccom(\ + GridView1.DataKeys[e.RowIndex].Value + \);

Page.Response.Redirect(\);

}

后台管理页面主要包括管理员信息管理、注册学生管理、课程信息管理、套题信息管理、学生成绩管理、考试题目管理、退出系统7个模块。

管理员信息模块主要是对管理员进行管理,包括添加、删除管理员以及修改管理员密码等。

图4.12 管理员信息管理页面

注册学生管理模块用于管理员管理注册地考生,他们可以通过关键字查询某一个学

生,也可以删除某一个学生。

图4.13 注册学生信息管理页面

课程信息管理模块主要用来添加和删除课程。添加课程时,只需要在文本框中直接输入名称即可,然后进行添加操作。代码如下:

图4.14 课程信息管理页面

考试套题管理页的主要功能包括对考试套题进行添加、查询、修改和删除操作。添

加考试套题信息时,需要首先在文本框中输入所添加的套题名称,并在下拉列表框中选择所属课程名,然后再进行添加操作;在考试套题信息列表页面中,可以通过选择不同德 查询条件(如套题名称和所属课程)并输入相应的关键字,来实现查询操作;根据实际需要,还可以实时更新考试套题中的详细信息或者删除考试套题。考试套题管理页面的运行效果如下图所示:

图4.15 套题信息管理页面

在考试套题信息“查询”按钮事件中主要应用到了SQL Server视图数据处理技术,该页创建的视图名为kecheng_taoti_view,建立该视图的目的主要是从tb_Lesson和tb_Taoti两张表中检索出包括套题名称、所属课程和加入时间的信息。代码如下: protected void Button1_Click(object sender, EventArgs e) {

if (TextBox1.Text == \) {

dataconn.ecadabindinfostring(GridView1, \ORDER BY ID DESC\, \); } else {

dataconn.ecadabind(GridView1, \Where \

+ DropDownList1.SelectedValue + \ + TextBox1.Text + \); }

}

图4.16 学生成绩管理页面

考试题目管理页的主要功能包括对考试题目进行添加、查询、修改和删除操作。添加考试题目信息时,需要选择所属的考试专业、课程和套题;在考试题目信息列表页面中,可以通过选择不同的查询条件(例如,考题类型、所属课程、所属套题和加入时间)并输入相应的关键字,来实现查询操作;根据实际需要,还可以实时更新考试题目中的详细信息或者删除考试题目。在添加考试题目时,需要考虑该考试属于哪门课程、哪一套题,然后单击页面中的“提交”按钮,进行考试试题的添加。

题目插入的代码如下:

protected void Button1_Click1(object sender, EventArgs e) {

if (this.TextBox1.Text != \) {

SqlConnection con = dataconn.getcon(); con.Open();

string sqlstr1 = \

Que_subject='\ + TextBox1.Text.ToString() + \;

SqlCommand mycom = new SqlCommand(sqlstr1, con);

int intcount = Convert.ToInt32(mycom.ExecuteScalar()); if (intcount > 0) {

Page.Response.Write(\language=javascript>alert('对不起!此题目已经添加!');location='timu_Insert.aspx'\); } else {

string m_strTemp = string.Empty;

//读取CheckBoxList 选中的值,保存起来

for (int i = 0; i < CheckBoxList1.Items.Count; i++) {

if (CheckBoxList1.Items[i].Selected) {

m_strTemp += CheckBoxList1.Items[i].Value; } }

dataconn.eccom(\

tb_Questions(Que_subject,Que_type,OptionA,OptionB,OptionC,OptionD,Que_answer,Que_taotiid,Que_lessonid)values('\ + TextBox1.Text + \

+ DropDownList1.SelectedValue + \ + TextBox2.Text + \ + TextBox3.Text + \ + TextBox4.Text + \ + TextBox5.Text + \ + m_strTemp

+\+DropDownList2.SelectedValue+\+DropDownList3.SelectedValue+\); Page.Response.Write(\language=javascript>alert('添加成功!');location='timu.aspx'\); } } }

考试题目管理页面的运行效果如下图所示:

图4.17 考试题目管理页面

4.3 程序运行

说明:

1.本系统管理员用户名为:Admin,密码为:111。

2.本系统共分为二种操作权限,分别学生、管理员: ? 学生:学生只能进行考试及考试成绩查询操作。 注意:每个学生对每一套题只能进行一次考试。

? 管理员:管理员可以对管理员、学生信息、课程信息、套题信息、考试题目等

信息进行管理。

3.使用管理员身份登录时,将“管理员登录”复选框进行勾选。

4.如果您忘登录密码,本程序提供了找回密码功能,根据提示操作,成功将找回密码。

? 操作步骤: ? 学生

首先单击“注册”按钮,注册准考证号和密码,成为本网络在线考生。(详细情况见详细设计)

输入学生证号、密码及验证码后,单击“登录”按钮,进行登录,进入到考生操作页面。在该页面中考生可以在线考试和成绩查询。 ? 管理员

单击“进入后台”按钮,进行登录,进入到管理员作页面(详细情况见详细设计)

(1)单击“管理员信息”按钮,对管理员信息进行添加、修改、查询及删除操作。 (2)单击“注册学生管理”按钮,对注册的学生信息进行查询及删除操作。

(3)单击“课程信息管理”按钮,对课程信息进行添加、修改、查询及删除操作。 (4)单击“套题信息管理”按钮,对套题信息进行添加、修改、查询及删除操作。 (5)单击“学生成绩管理”按钮,对学生成绩进行查询及删除操作。

(6)单击“考试题目管理”按钮,对考试题目信息进行修改、查询及删除操作。 (7)单击“退出系统”按钮,退出当前操作系统。

5 结论

经过一个多月的设计和开发,网上考试系统基本开发完毕。本系统分为前台和后台两部分: 前台主要用于考生注册和登录系统、在线考试、成绩查询以及退出登录;后台主要用于管理员对考生信息、考题信息、考生成绩信息、考试套题和课程信息等进行管理。

在本次设计中,我系统的学习了ASP.NET技术,了解了C#语言,掌握了ASP的基础知识、开发环境、内置对象及其脚本语言等。同时,还学习了SQL Server2000数据库的相关知识和SQL数据库查询语句,可以使用ADO对象与数据库配合工作,进行网络数据库编程。

由于这是我第一次接触ASP.NET这门技术,对asp.net的认识不够深入,对C#的编程技术应用不是特别熟悉,再加上知识水平和设计时间有限,在系统中有很多不足之处,比如:界面不美观;安全性问题考虑不详细;运行速度慢等。

通过段时间的学习,我对C#、asp.net以及SQL Server数据库有了一个初步了解认识。虽然从结构功能方面,该系统满足了设计的要求,但是目前该程序还处于试运行阶段,功能比较单一。在今后的学习中,我一定继续深入学习这方面的知识,进一步完善该程序。

参考文献

[1] 张岭等编著. ASP.NET项目开发全程实录[M]. 北京:清华大学出版社,2008.6 [2] 李应伟,姚素霞,宴丽编著。ASP.NET数据库高级编程(C#篇)[M].北京:清华大

学出版社,2004

[3] 求是科技编著.SQL Server 2000数据库管理与开发技术大全[M].北京:人民邮电出

版社,2004.

本文来源:https://www.bwwdw.com/article/2q17.html

Top