网络考试系统的设计与实现
2009-08-31张以文王德胜金莹王爱平
张以文 王德胜 金 莹 王爱平
摘要:网络考试系统是传统考试的延伸,它充分利用了数据库技术,大大简化了传统考试的过程,提高了教学活动的灵活性,是电子化教学不可缺少的一个重要环节。本文介绍和分析基于B/S模式的网络考试系统的开发与设计,实现了一个基本的网络考试系统。
关键词:网络考试系统;B/S;安全性
中图分类号:G642 文献标识码:A
考试是在教育过程中一个不可缺少的环节,传统纸面化考试消耗大量的人力、物力,而且保密性差。随着计算机技术的不断成熟,网络考试技术渐渐的被引入考试过程中,典型的网络考试系统如英语考试中的托福、GRE、雅思等。网络考试系统可以提高教师阅卷的效率,降低人为因素的误差,节省社会资源,更重要的是有利于提高考试的公平性,减少阅卷老师的主观因素干扰。
1相关理论与技术
1.1系统架构模式选择
在近年来开发的网络考试系统中,按其系统的架构模式可以分为两种:C/S模式和B/S模式。C/S架构下的网络考试系统,一般是基于局域网的应用系统,它用于考试的机器分为服务器(Server)和客户机(Client)两种,优点是能够有效地做到对客户机的灵活控制和试卷考试结果的自动回收,缺点是需要分别开发和安装相应的考试服务系统和考试客户系统,开发成本高,升级困难且麻烦,系统维护代价高。所以一般地来说C/S模式并不是网络考试系统的理想模式。B/S架构下的网络考试系统,是一种基于Web的应用系统,目前应用比较广泛,它将试题和成绩等全部存放在服务器上,客户机只要是带有浏览器且能够上网即可;它突破时空限制,可在任何时间、任何能够上网的地点进行远程考试和考务工作。它可自动生成试卷,考试结束时可迅速给出客观题和部分主观题考试成绩,其他主观题部分也是以网上阅卷的方式进行并实时提交成绩。这些都使得网络化考试比传统的纸面考试具有无可比拟的效率和公平上的优越性,是现代化考试发展的方向。
1.2ASP.NET技术
ASP.NET是Microsoft公司推出的一个统一的Web开发模型,它使用尽可能少的代码生成企业级Web应用程序所必需的各种服务,ASP.NET为.NET Framework的一部分提供,当编写ASP.NET应用程序的代码时,可以访问.NET Framework 中的类。可以使用与公共语言运行库(CLR)兼容的任何语言来编写应用程序的代码,这些语言包括Microsoft Visual Basic、C#等。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的ASP.NET应用程序。
1.3SQL Server和ADO.NET技术
SQL(Structured Query Language,结构化查询语言)语言是关系数据库的标准语言,是一种介于关系代数和关系演算之间的结构化查询语言。由于SQL语言功能丰富,语言简洁,因而备受用户和计算机工业界欢迎。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据或检索数据。常见关系数据库管理系统有Oracle、Microsoft SQL Server、Access等。本系统使用的是Microsoft SQL Server2000,它提供较多的高效开发工具和较成熟的开发技术。
ADO(ActiveX Data Objects)是ASP的内置对象之一,凡是能由ODBC驱动程序访问的数据库,在ASP中都可以通过ADO对象与SQL语句对其进行网络访问。.NET Framework推出了ADO的升级技术—ADO.NET,但ADO.NET和ADO不同的。ADO.NET是一组向.NET 程序员公开数据访问服务的类,ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据库、XML和应用程序数据的访问,ADO.NET能够支持多种开发需求,包括创建由应用程序、工具、语言或 Internet 浏览器使用的前端数据库客户端和中间层业务对象。
1.4Visual C#语言
C#是全新打造的.NET的核心语言,C#来自Visual C++,是C/C++家族的新成员;C#的程序结构风格和Java有许多的相似之处;C#博采Visual Basic的简单朴实直观的特点,形成了一个完全面向对象的、类型安全的、功能强大又简易友好的新型软件开发工具。总之,C#融会了许多语言的优点,代表了当今编程语言的最新成果,体现了未来的软件架构,适应了Internet的应用开发的需要。
2系统设计
2.1系统概述
系统是用于学生注册、登录、参加在线、查询成绩和教师进行登录、上传试题、批阅试卷、统计学生成绩,以及管理员登录后主要负责系统的维护,包括添加教师、学生或者管理员。考生进行有效的身份验证登录后,即可进行考试,在考试过程中对考生进行计时,考生必须在规定的时问内答题,当到达考试规定的时间以后,考生如果仍然没有完成考试,系统将自动锁定屏幕,考生将不能再答题,若在规定的时间内完成了考试,考生直接保存考试的结果即可。对于考试的结果,客观题部分有系统自动地计算此部分成绩,对于主观题,部分试题实现自动评分(如填空题和程序设计题),其余主观题必须有教师在线批改,系统自动将主观题和客观题一起计入考生的考试科目的总分。
2.2数据库设计
人们在总结信息资源开发、管理和服务的各种手段时,认为最有效的是数据库技术。任何管理系统都离不开数据库,一个强健的数据库是系统是否成功的前提。根据对网络考试系统的分析与研究,设计出如下的数据项和数据结构。
考生信息表:包括考生的用户名、姓名、密码、所属的院系、性别等,主要用来说明考生的有关信息,其中主键为用户名;
教师信息表:包括教师的用户名、姓名、密码、所属的院系、教师的权限标志、性别等,主要用来说明教师的有关信息,其中主键为用户名;
管理员信息表:由于在实际中管理员的数量是有限的,所以管理员的信息表中的信息较少,主要包括用户名、姓名、密码等信息,管理员具有系统得一切的权限,其中主键为用户名;
试题库信息表:包括试题的编号、试题的名称、试题题目的编号、题目和相关的选项,试题的正确答案或参考答案等信息,主要用来说明与试题有关的信息,其中主键为试题编号;
考生成绩表:包括考生的编号、考生所考的科目、考试成绩等信息,其中主键为考生编号和考试科目;
考生答案表:此表主要用来保存考生主观题的结果,包括考生的编号、考试试题的编号,考生的答案、参考答案、题目批改标志位等信息,其中主键为考生编号和考试试题编号。
通过以上分析易得网络考试系统的E-R图如图1所示。
2.3功能模块设计
按照系统的功能模块,可以将系统分为三个部分,即学生管理模块、教师管理模块、管理员模块,如图2所示,本系统主要包含以下基本功能。
学生考试管理:主要包括学生登录,选择考试课目,考试成绩查询,学生考试,修改密码等;
教师功能管理:主要包括教师登录,上传试卷,批阅试卷主观题部分,统计考试成绩,成绩排名,修改密码等;
管理员功能:主要包括对申请注册的教师授权,查看考试科目,查看成绩,学生密码查询,系统参与人员查看,在后台添加教师、学生或管理员等。
3系统实现
3.1数据库连接
ASP.NET连接SQL Server 2000的常用方法如下:
(1) 导入命名空间
using System.Data.SqlClient;
(2) 创建连接
SqlConnection lo_conn = New SqlConnection ("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码");
(3) 打开连接
lo_conn.Open();
(4) 向数据库发送SQL命令要使用SqlCommand:
SqlCommand lo_cmd = new SqlCommand();
//创建命令对象
lo_cmd.CommandText = "这里是SQL语句";
//写SQL语句
lo_cmd.Connection = lo_con;
//指定连接对象,即上面创建的
(5) 处理SQL命令或返回结果集
lo_cmd.ExecuteNonQuery();
//这个仅仅执行SQL命令,不返回结果集,实用于建表、批量更新等不需要返回结果的操作。
SqlDataReader lo_reader = lo_cmd. ExecuteReader(); //返回结果集
(6) 以数据集的方式返回结果集
SqlDataAdapter dbAdapter = new SqlData Adapter(lo_cmd); //注意与上面的区分开
DataSet ds = new DataSet();
//创建数据集对象
dbAdapter.Fill(ds);
//用返回的结果集填充数据集,这个数据集可以被能 操作数据的控件DataBind
(7) 关闭连接
lo_conn.Close();
3.2用户登录
登录分为三种角色:学生、教师、管理员,分别有各自不同的权限。经身份合法性认证后可直接登录,登录后进入各自的操作界面。学生登录代码实现如下,其他角色代码类似。
if (ds.Tables[0].Rows.Count>0){
String strname=ds.Tables[“newtable”].
rows[0][1].ToString();
Session[“UserName”]=strname;
String strID=TextBox1.Text;
Session[“UserID”]=strID;
Response.Redirect(“/student/student.aspx”);
} else {
Response.write(“);
}
此段代码的主要算法思想:首先通过用户名和密码从数据库中查询满足这样条件的数据集,然后判断数据集中满足条件的数据个数,如果个数大于0则登录成功,否则登录失败。事实上由于数据库要求主码的唯一性,那么满足条件的数据的个数只能可能是1个或者0个。
3.3教师上传试卷
上传试卷分为两种方式:一种是按照题目的顺序通过教师管理界面进行输入,另一种方式是先把试题放在一个Excel文件中,然后再把Excel文件中的数据导入到数据库中。下面主要解释第二种方法。主要代码如下:
//EXCEL 的连接串
string sConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FileUpload1. PostedFile.FileName.ToString() + ";" + "Extended Properties=Excel 8.0;";
//建立EXCEL的连接
OleDbConnection objConn = new Ole DbConnection(sConnectionString);
objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "XLData");
for (int i = 0; i < objDataset1. Tables["XLData"].Rows.Count; i++){
String strsql2="insertintotb_question (PaperID,ID,ID_type,type,score,question,choice1,choice2, choice3,choice4,rightanswer) values ('" + TextBox1.Text.ToString() + "','" + objDataset1.Tables ["XLData"].Rows[i][0]. ToString() + "','"+ TextBox2.Text.ToString()+"','"+objDataset1. Tables ["XLData"]. Rows[i][1].ToString()+
"','"+objDataset1.Tables["XLData"].Rows[i][2].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][3].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][4].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][5].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][6].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][7].ToString()+"','"+ objDataset1.Tables["XLData"].Rows[i][8].ToString() + "')";
SqlConnection insertconn;
insertconn = new SqlConnection("Server=SHENG-PC;Database=kaoshi;uid=sa;pwd=''");
insertconn.Open();
SqlCommand intsertconn_cmd = new SqlCommand(strsql2, insertconn);
intsertconn_cmd.ExecuteNonQuery();
insertconn.Close();}
Response.Write(""); }
3.6管理员功能
管理员的功能主要有教师授权,系统人员查询,密码查询和修改,成绩查询,考试科目查询,添加人员,文件管理等功能。
4系统安全性
对网络考试系统来说,安全性至关重要,我们通过以下的技术提高系统的安全。
(1) 角色控制,每位学生或教师注册以后,必须要得到管理员的审核或与系统数据库中合法人员的身份认证一致以后才能进入系统;
(2) 密码管理,对于考生、教师以及管理员的密码,将其加密处理,加密的函数可以自己选择也可以选择一些开发软件自带的加密方法。即使一些考务人员进入了数据库,如果没有管理员的权限,也无法获得他人的密码,这样可以防止考试内部人员的泄密;
(3) 试卷管理,每次考生考试时,都随机的生成试卷,只要保证考试的题库有足够多的试题,那么每个考生的考试试题或题号是不一样的,这样更有利于防止学生作弊;
(4) 成绩管理,对于考试的结果进行加密处理,例如将考试的成绩分数进行加密,这样即使有人得到数据库,如果不知道解密和加密的函数,也没法获得成绩和修改成绩。
5结束语
在网络技术逐渐渗入社会生活各个层面的今天,传统的考试方式也面临着变革,而网络考试则是一个很重要的方向。传统的考试具有消耗资源大,安全性差等缺点,而网络考试系统正好弥补了以上缺点,正受到人们高度重视。本文详细介绍了网络考试系统的设计和实现过程,希望能为社会节约资源和提高教师的工作效率作一点贡献。本系统中还有需要进一步完善的地方,如语音部分试题的在线测试开发工作还没有实现,这也是我们下一步的工作。
参考文献:
[1] 张友生.软件体系结构[M]. 北京:清华大学出版社,2006.
[2] 石志国.asp.net程序设计使用教程[M]. 北京:电子工业出版社,2006.
[3] 邱锦伦.Visual C#.net程序设计教程[M]. 北京:清华大学出版社,2006.
[4] 苗雪兰,刘瑞新,宋会群. 数据库系统原理及应用教程[M].北京:机械工业出版社,2004.
[5] 王珊,萨师煊.数据库系统概论[M]. 北京:高等教育出版社,2006.
[6] 邱锦伦.Visual C#.net程序设计教程[M]. 北京:清华大学出版社,2006.
Design and Implement of Internet Examination System
ZHANG Yi-wen1, WANG De-sheng1, JIN Ying2, WANG Ai-ping1
(1.School of Computer Science and Technology, Anhui University, Hefei 230009, China; 2. Department of
management of Hefei University, Hefei 230022, China)
Abstract:The network test system is an extension of the traditional test, which makes full use of database technology, greatly simplifies the traditional process of examination, enhances the flexibility of the teaching and learning activities, so it is an important part to e-teaching. In this paper, exploitation and design of network test system base on B/S model are introduced and analyzed and actualized a basic network test system.
Key words: Internet examination system; Browser/Server; security