基于B/S的计算机等级考试系统的设计与实现
摘 要
随着计算机技术的发展及计算机的日益普及,基于B/S结构的考试系统与无纸化办公一样已成为大势所趋。论文详细论述了一个基于B/S结构的计算机等级考试系统的设计过程。软件采用ASP.NET 2005作开发平台,C#作编程语言,SQL Server 2005作数据库管理系统,实现了试题管理、试卷生成、在线考试、试卷评判、权限管理、在线报名及站内公告等功能。系统符合全国计算机等级考试的要求。
论文组织如下:首先阐述了该系统的开发背景、意义;其次介绍了相关的开发工具及技术基础;接着对系统的需求进行了分析,并提出了具体的设计方案和数据库模型;然后展现了整个系统的具体实现,包括数据库的设计和连接,各功能模块的实现;最后对该软件进行了严格的测试。
关键词: B/S结构;计算机等级考试;考试系统
The Design and Implementation of Computer Rank Examination System based on B/S
Abstract
With the development of the computer technology and the popularization of computers, the examination system based on B/S structure has become the trend of the times the same as the paperless office. The paper discusses in detail the development and design process of a computer rank examination system based on B/S structure. It uses ASP.NET 2005 as the development platform, C# as the programming language, SQL Server 2005 as the database management system, and includes test questions management, examination paper production, online examinations, examination paper judgment, authority management, online enrollment and site notice, etc.. It can accord with the requirement of the national computer rank examination.
The paper is organized as following: Firstly, analyzes the background and significance; Secondly, introduces the development tools and the foundation of the technology; Thirdly, analyses the demand of the system, gives a specific design project and a database model; Then shows the implementation of the whole system, which includes the design and linkage of the database and the implementation of every module. Finally gives a test of the system.
Key words: B/S structure; Computer rank test; Examination system
目 录
论文总页数:31页
1 引 言
目前学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻人们的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观,更加激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。
在线考试模拟系统是现阶段研究开发的一个热点。它是建立在国际互联网上的应用系统,客户端的配置可以极为简单,使考试不受地域的局限。一个完备的在线考试模拟系统可以使用户在网上学习过后及时检验自己的学习效果,已发现自己的不足,使得学习效率得到很大提高。在线考试模拟系统中题目的生成、试卷的提交、成绩的批阅等都可以在网络上自动完成。只要形成一套成熟的题库就可以实现考试的自动化。这样一来,教师所要做的只是精心设计题目、维护题库,而不是组织考试,从而大大减轻了教师的负担,这表明其经济性是相当可观的。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在各类考试中发挥高效、便捷的作用,把老师从繁重的工作中解脱出来!
目前,网络应用软件运行的模式主要有二类:Client/server模式,Browser/Web模式。前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展起来的一种技术,它与客户/服务器方式类似,客户端是一个标准的浏览器,服务器端是Web Server ,而Web Server与数据库和应用服务器的紧密结合,使得这种模式的应用范围不断扩大,它已不仅仅用于网上查询,有很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。
另外,考试系统的软件也必将不断的更新;同时软件产品本身就要经过一个不断自我完善的过程。
基于上述考虑,用Browser/Web模式来设计考试系统比较合适,服务器端我们采用SQL Server数据库系统和.Net框架来构成考试的应用服务系统;客户端采用浏览器来完成考试全过程,同时可进行远程系统维护和管理。
利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,应用微软.NET技术,我开发了基于B/S模式的多用户在线考试模拟系统这一程序。它运用方便、操作简单,效率很高(同时,它要求计算机配置也很高,尤其是服务器端)。现阶段虽只实现了试卷的客观题部分,但已具有用户注册、用户个人信息修改、多用户同时在线考试、试卷生成、时间控制、自动判卷,试题录入、修改题库、用户管理、试卷管理、分数管理等重要功能,也就是说实现了真正的无纸化考试,满足任何授权的考生在规定时间内随地考试并迅速获得成绩,同时也大大减轻了教师出题、出题和判卷等繁重的工作量。
2 技术背景
该在线考试系统主要采用Visual C# 2005、SQL Server 2005数据库、JavaScript等技术和工具,整体设计遵循软件工程的方法,经过需求分析、总体设计、文档和代码的编制、模块测试和系统实现几个阶段。下面就对这几种技术和方法做一个概述。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet / Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
2.2.1 Visual C# 2005简介
Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
Microsoft Visual C# 2005(读作 C sharp)是一种编程语言,它是为生成在 .NET Framework 上运行的多种应用程序而设计的。C# 简单、功能强大、类型安全,而且是面向对象的。C# 凭借它的许多创新,在保持 C 样式语言的表示形式和优美的同时,实现了应用程序的快速开发。
Visual Studio 支持 Visual C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过.NET Framework 类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发周期。
2.2.2 SQL Sever 2005简介
SQL Server 是一个关系数据库管理系统,是Microsoft推出新一代数据管理与分析软件。SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。
SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。SQL Server 2005 为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。 通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2005 为不同规模的企业提供了一个完整的数据解决方案。
SQL Server 数据平台包括如下工具:关系型数据库、复制服务、通知服务、集成服务、分析服务、报表服务、管理工具、开发工具。
SQL Server 2005 数据平台为不同规模的组织提供了如下好处:充分利用数据资产、提高生产力、减少IT复杂度、更低的总体拥有成本 (TCO)。
3系统分析
3.1需求分析
因为考试是有特定的对象的,所以考生在进入该系统前应该进行在线报名。报名时填写相应的个人信息(如身份证号、报考科目等),报名后到相关部门进行交费。由管理员进行审核后,考生进入考试系统,根据报名时选择的考试科目,参加相应的考试。鉴于计算机等级考试为全国性统一考试,考试时间有相应的规定。因此要对登录了考试系统进行参考的用户进行考试时间判断,避免在非考试时段参加考试。另外,系统还应该对考试时间进行控制,时间到了会要求考试者交卷。在考试过程中要防止考生作弊,要禁止避免某些按键(如ALT、F5等)的操作。考试者选择答案提交后,应该由计算机自动判卷,得到成绩先保存,在阅卷人审核后在考生信息页面显示出来。考试完毕后,系统关闭考试页面,回到考试前页面。
1.试题管理:管理员利用账号和密码成功登录以后,进入管理页面,管理员可以通过系统做的手动添加试题页面自己手动添加试题,并对相关信息进行添加、修改以及删除。
2.试卷生成:事先设定好考试题目数量,考试日期,分数等信息。
3.在线考试:考生根据准考证号和密码成功登录后,进入考试界面。考生有开始考试,提交试卷,查询成绩权限。考生根据报名时选择的考试科目,在规定时间段内参加相应的考试,点击开始考试后,进行考试界面,并要防止考生刷新及点击右键等操作,对考试时间计时,考试时间到,系统强制提交试卷。
4.试卷评判:主、客观题目均事先由系统自动判断,主观题目阅卷人登陆后,可以根据情况手工判卷并做出相应的分数修改。
5.权限管理:管理员拥有除阅卷外的所有权限,管理员根据账号和密码成功登录后,可以对教师和考生的信息、公告、试题、试卷等进行管理。
6.在线报名:考生通过在线报名页面,获取系统自动分配的准考证号,添加相应的考生信息(包括身份证、性别、考试级别以及相应的科目)完成报名。在相关部门交费后,由管理员审核成功后获取考试资格。
7.站内公告:发布计算机等级考试的相关信息,如考试要求、时间等。管理员通过登录进行相关的添加、修改和删除。
3.2可行性分析
该考试系统的技术可行性,可以从硬件(包括外围设备)的性能要求、软件的性能要求(包括操作系统、程序设计、语言、软件包、数据库管理系统及各种软件工具)、能源及环境条件、辅助设备及备品配件条件几个方面去考虑。计算机硬件要求:
CPU:奔腾1.0GHz以上
内存:256MB以上
显示卡:显存16M及以上
硬盘:2GB以上剩余磁盘空间
驱动器:8倍速CD-ROM以上
高分辨率(1024*768)彩色显示器
软件要求:WINDOWS操作系统或XP操作系统,.Net 2005和Microsoft SQL Server2005
就目前使用的开发技术来说建议系统的功能目标应该能够达到;利用现有的技术在规定的期限内开发工作基本能够完成。
经济可行性分析主要是对开发项目的成本与效益做出评估,即分析新系统所带来的经济效益是否超过开发和维护网站所需要的费用。
用户在使用该系统后只需花一定资金购买一部分计算机与软件就能实现。
本系统仅用于全国计算机等级考试,无法律和政策方面的限制。
4总体设计
基本设计思想:在用户认证之后,系统根据考生的资料随机的从试题库中选取试卷,在考生做完试卷且交卷之后,将会自动在服务器端保存考的答案。要求能保证考生顺利的作答以及考试的保密和安全性。
图1 操作流程图
4.2 系统功能结构图
根据需求分析,在线考试系统的结构图如下:
图2 系统功能结构图
本系统采用ASP.NET应用程序典型的三层架构模式,其结构如图1所示
图3 三层架构模式结构图
各层功能介绍:
数据访问层:系统最低层,提供数据库操作的接口和存储本系统所有数据;
业务逻辑层:处于页面展示层与数据访问层之间,与数据库直接关联,同时又为页面展示层服务。实现业务的具体逻辑,如考生报名、登录参考、试卷试题管理等;
页面展示层:系统最外层,将业务功能在浏览器上显示出来,用户通过界面对系统进行操作。
数据访问层完成所有与数据库交互的工作,本系统只包括一个类SQLHelper。这个类的功能是向数据库提交SQL语句,并返回相应的操作结果。
配置数据库连接:在Web.config文件中指定数据库连接字符串配置信息,代码如下
<connectionStrings>
<add name="ExamDBConn" connectionString="Data Source=.;Initial Catalog=ExamDB;Persist Security Info=True;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>
</connectionStrings>
SQLHelper类成员:
表1 SQLHelper类成员说明
属性/方法 |
功能说明 |
Conn |
保护变量,数据库连接SqlConnection对象 |
ConnStr |
保护变量,数据库连接串 |
Open |
连接数据库 |
Close |
关闭数据库连接 |
Dispose |
释放数据库连接资源 |
ExecutSQL |
执行一条非查询(Select)类型的SQL命令 |
GetDataRow |
根据输入SQL命令,获取一个DataRow对象 |
GetDataSet |
根据输入SQL命令,获取一个DataSet对象 |
GetDataReader |
根据SQL命令,获取一个DataReader对象 |
Insert |
利用一个Hash表存储数据,向数据库插入数据 |
Update |
利用一个Hash表存储数据,修改数据库中的数据 |
科目类—Category.cs
公告类—News.cs
试卷类—Paper.cs
试题类—Question.cs
分数类—Score.cs
用户类—User.cs
公告管理模块—News*.aspx
用户管理模块—User*.aspx
试题管理模块—Question*.aspx
试卷管理模块—Paper*.aspx
试卷评分模块—Score*.aspx
页面首面—Default.aspx
考试页面—Exam.aspx
注册页面—Register.aspx
公告信息页面—NewsInfo.aspx
4.4.1 创建数据库
首先在SQL Server 2005的管理器中创建一个名为ExamDB的数据库。
4.4.2 创建表
数据库ExamDB包含以下6个表:考试科目表(Exam_Category)、用户信息表(Exam_Member)、站内公告表(Exam_News)、试卷信息表(Exam_Paper)、试题信息表(Exam_Question)、分数信息表(Exam_Score)。下面分别介绍这些表的结构。
表2 考试科目表(Exam_Category)
编号 |
字段名称 |
数据结构 |
长度 |
说明 |
1 |
ID |
int |
4 |
考试科目序号 |
2 |
ExamLevel |
int |
4 |
考试级别 |
3 |
ExamSubject |
nvarchar |
20 |
考试科目名称 |
表3 分数信息表(Exam_Score)
编号 |
字段名称 |
数据结构 |
长度 |
说明 |
1 |
ID |
int |
4 |
试题序号 |
2 |
UserID |
nvarchar |
7 |
考试科目序号 |
3 |
TestID |
int |
4 |
试题题目 |
4 |
StartTime |
datetime |
8 |
考试开始时间 |
5 |
EndTime |
datetime |
8 |
考试结束时间 |
6 |
TotalScore |
int |
4 |
考试总成绩 |
7 |
sUserAnswer |
Ntext |
|
用户单选答案 |
8 |
sRightAnswer |
Ntext |
|
单选标准答案D |
9 |
bUserAnswer |
Ntext |
|
用户填空答案 |
10 |
bRightAnswer |
Ntext |
|
填空标准答案 |
11 |
IsCheck |
Bit |
1 |
成绩是否审核 |
12 |
IsExamed |
Bit |
1 |
是否参加考试 |
表4 站内公告表(Exam_News)
编号 |
字段名称 |
数据结构 |
长度 |
说明 |
1 |
ID |
int |
4 |
公告序号 |
2 |
Title |
ntext |
|
公告标题 |
3 |
Text |
ntext |
|
公告内容 |
4 |
Time |
datetime |
8 |
发布时间 |
表5 用户信息表(Exam_Member)
编号 |
字段名称 |
数据结构 |
长度 |
说明 |
1 |
UserID |
nvarchar |
7 |
考生准考证号/登录名 |
2 |
CategoryID |
Int |
4 |
考试科目序号 |
3 |
UserPwd |
nvarchar |
50 |
用户登录密码 |
4 |
UserIDCard |
nvarchar |
18 |
用户身份证号 |
5 |
UserName |
nvarchar |
50 |
用户姓名 |
6 |
UserSex |
nvarchar |
2 |
用户性别(男,女) |
7 |
UserEmail |
nvarchar |
50 |
用户电子邮箱 |
8 |
UserType |
int |
4 |
用户类型(1考生,2阅卷人,3管理员) |
9 |
IsCheck |
bit |
1 |
考生审核(0未审核,1审核) |
表6 试卷信息表(Exam_Paper)
编号 |
字段名称 |
数据结构 |
长度 |
说明 |
1 |
TestID |
Int |
4 |
试卷序号 |
2 |
CategoryID |
Int |
4 |
考试科目序号 |
3 |
SingleCount |
Int |
4 |
单选题题数 |
4 |
SingleScore |
Int |
4 |
单选题分值 |
5 |
BlankCount |
Int |
4 |
填空题题数 |
6 |
BlankScore |
Int |
4 |
填空题分值 |
7 |
StartTime |
datetime |
8 |
考试开始时间 |
8 |
EndTime |
datetime |
8 |
考试结束时间 |
9 |
TestTime |
Int |
4 |
考试总时间 |
表7 试题信息表(Exam_Question)
编号 |
字段名称 |
数据结构 |
长度 |
说明 |
1 |
ID |
Int |
4 |
试题序号 |
2 |
CategoryID |
Int |
4 |
考试科目序号 |
3 |
QuestionDesc |
Ntext |
|
试题题目 |
4 |
QuestionType |
Int |
4 |
试题类型(1单选题,2填空题) |
5 |
OptionA |
Ntext |
|
单选备选答案A |
6 |
OptionB |
Ntext |
|
单选备选答案B |
7 |
OptionC |
Ntext |
|
单选备选答案C |
8 |
OptionD |
Ntext |
|
单选备选答案D |
9 |
Answer |
Ntext |
|
填空备选答案 |
图4 数据库关系设计图
实现对数据访问的一些辅助和包装及某些通用功能,包括三个类。
包含一系列从DataRow对象中,安全获取数据的静态方法。
表8 GetSafeData类成员说明
属性/方法 |
功能说明 |
ValidateDataRow_S |
从DataRow中获取字符串,如果不存在,返回System.String.Empty |
ValidateDataRow_N |
从DataRow中获取整数,如果不存在,返回System.Int32.MinValue |
ValidateDataRow_T |
从DataRow中获取浮点数,如果不存在,返回System. Double.MinValue |
ValidateDataRow_F |
从DataRow中获取时间数据,如果不存在,返回System. DateTime.MinValue |
GetQuotedString:将字符串加上SQL语句中常用的单引号“’”;
GetConditionClause:构造SQL语句中的条件子句,这个方法接收一个哈希表参数,利用哈希表中的每一项都是一个DictionaryEntry对象的<key, value>对特征,构造SQL语句中的条件子句。
对一字符串进行MD5加密操作,保证数据的安全。
5网站后台主要功能模块
5.1 用户登录模块设计
5.1.1前台页面设计
图5 管理员/阅卷人登录模块
管理员/阅卷人输入账号及密码,系统查询数据库,自动配对用户类型,进入相应的管理页面。如果出现错误,系统会弹出相应的提示信息。
5.1.2后台功能代码
单击登录按钮事件:
protected void btnOK_Click(object sender, EventArgs e)
{
string UserName = txtName.Text;
string UserPwd = Security.Encrypt(txtPwd.Text);
User user = new User();
user.LoadNameData(UserName);
if (user.Exist) //如果用户存在
{
if (user.UserPwd == UserPwd) //如果密码,转入留言列表页面
{
Session.Add("UserID", user.UserID);
Session.Add("UserIDCard", user.UserIDCard);
Session.Add("UserName", user.UserName);
if (user.UserType == 3)
{
Session["IsAdmin"] = "Admin";
Response.Redirect("Admin/AdminInfo.aspx");
}
else
{
Session["IsAdmin"] = "Teacher";
Response.Redirect("Teacher/Default.aspx");
}
}
else //如果密码错误,给出提示,光标停留在密码框中
{
Response.Write("<Script Language=JavaScript>alert(\"密码错误,请重新输入密码!\")</Script>");
txtPwd.Focus();
}
}
else //如果用户不存在
{
Response.Write("<Script Language=JavaScript>alert(\"对不起,用户不存在!\")</Script>");
}
}
5.2 后台管理页面设计
管理页面只允许具有管理员权限的人员访问,因此在每个管理页面都有相关的权限判断,以保证系统的安全使用。
if (Session["IsAdmin"] == null)
{
Response.Write("<Script Language=JavaScript>alert('管理员未登录,非法请求!');</Script>");
Response.Write("<Script Language=JavaScript>window.location.href='../AdminLogin.aspx';</Script>");
}
5.2.1人员管理页面设计
图6 人员管理