资源描述
在线考试系统-毕业论文
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
苏州高博软件技术职业学院
毕业设计(论文)报告
系 别 软件工程系
专 业 计算机应用
班 级 0816
姓 名 ******
学 号 *********
设计题目 在线考试系统
指导教师 ******
起迄日期 2011。1。2——2011.4.20
苏州高博软件技术职业学院
毕业设计诚信承诺书
本人慎重承诺和声明:
我承诺在毕业设计过程中严格遵守学校有关规定,在指导教师的安排与指导下完成所规定的毕业设计工作,绝不弄虚作假,不请别人代做毕业设计或抄袭别人的成果.所撰写的毕业论文或毕业设计是在指导老师的指导下自主完成,文中所有引文或引用数据、图表均注明来源,本人愿意为由此引起的后果承担责任.
学生签名: 日期: 年 月 日
毕业设计知识产权权属声明
本人在老师指导下所完成的论文及设计成果、知识产权归属学校。学校享有以任何方式发表、复制、公开阅览、借阅以及申请专利等权利.
学生签名: 日期: 年 月 日
指导教师签名: 日期: 年 月 日
在线考试系统
摘 要
通过考试系统WebExam是目前市场占有率较高,应用最广泛的远程网络学习考试软件,适合政府、行业及企业的各专业网上考试、作业、练习等应用。它采用Web方式,同时适用于局域网和Internet,无需安装客户端,即可实现网上考试、作业、练习、成绩排行等功能,并能够答卷保存、自动判分、成绩查询和分析等功能
该系统同时拥有最开放的题库管理系统和最灵活的组卷系统,能够自动输出Word试卷,提供Excel题目导入导出、题库和试卷导入导出等设计,提供资源的快速收集和高度共享。
在开发方法上,引入了当今流行的Microsoft 。Net Remoting 技术思想,把整个开发程分为需求分析、概要设计、详细设计、系统实现等步骤。该系统通过优化和再造管理流程,使人力资源的管理更为高效和科学,数据更为准确,从而将人事部门从繁重的、耗时的工作中解放出来,把精力集中到更高层的政策性工作中去。
关键词 在线考试系统 ; C#。net编程语言 ; Visual Studio 2008 ;SQL Server 2005数据库
21
目 录
第1章 绪论 1
1。1 课题研究背景 1
1.2 课题研究目的和意义 1
第2章 系统分析概述 2
2。1 引言 2
2。2 系统需求分析 2
2.3 系统概述 3
2。4 Visual Studio 2008的概述 4
2。5 SQL Server 2005数据库的概述 5
第3章 系统方案总体设计 6
3。1 系统设计思想及相关技术介绍 6
3.1。1 系统架构设计 6
3.1。2 系统总体模块功能设计 6
第4章 数据库的设计 8
4。1 引言 8
4。2 数据库需求分析 8
4.3 数据库概念结构设计 8
4.4 数据库逻辑结构设计 8
第5章 界面设计与实现 10
5。1 主页设计 10
5.1。1 实现目标 10
5.1.2 登录窗口 10
5。1.3 注册窗口 12
5.2 主要界面设计-用户登录信息画面 13
5.2.1 实现目标 13
5.2.2 主界面 13
5.3 主要界面设计 —— ADDQUESTION。ASPX 17
5.3。1 实现目标 17
5。4 主要界面设计 -— USERMANGEMENT.ASPX 18
5。4.1 实现目标 18
结 论 20
致 谢 21
参 考 文 献 22
第1章 绪论
1.1 课题研究背景
近几年来,随着Internet的崛起,远程教育开始发展,普及网络教育的呼声日益高涨,其势头不亚于电子商务.
联合国教科文组织1998年在其一项调查报告中:无论是发达国家还是发展中国家,都不同程度存在教育滞后于现实需要的问题,特别是第三世界国家,而普及远程教育,尤其是网络教育,不仅是解决这一问题的有效途径,而且将成为革新传统教育模式的重要动力。
中国的网络教育也随Internet的发展而同步增长,同时,网络教育也为中国的教育事业开辟了新的天地。
1.2 课题研究目的和意义
随着网络技术的飞速发展,现在很多国外的大学和社会其他部门都已经开始设了远程教育.但是,远程教育的软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统到远程教育当中去,这就给软件设计人员提出了更高的设计要求.
远程教育包括很多环节.例如,教学系统、考试系统、和答疑系统等等.其中一个很重要的环节是在线考试系统,同时,它也是最难实现的环节。在我国,远程教育以蓬勃发展起来。但目前学校和社会上的各种考试大都都采用传统的考试方法,在此方式下,组织一次考试,要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析.
显然随着考试类型的不断增加和考试要求的不断提高,教师的工作量也越来越大,可以说传统的考试方法已经不能适用于现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切需要这些技术来进行在线考试,以减轻教师的工作的负担以及提高工作效率,与此同时提高了考试的质量,从而使考试更趋于公正、客观,更加激发学生的学习兴趣.
第2章 系统分析概述
2.1 引言
ASP.NET是微软公司最新推出的一种统一Web开发平台,与最新的数据访问技术ADO.NET一起可构建出强大、安全和可靠的企业级Web应用程序。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,用于生成更安全、可伸缩和稳定的应用程序。
采取了ASP.NET技术的系统在性能上有了很大的改善,主要表现在以下几方面:
ü 由于ASP页面每次打开都必须经过先编译后解释的过程,所以页面在反复打开时速度没有任何提升,而ASP。NET页面只需要一次编译后不需要重新编译,直到该页面被修改或Web应用程序重新启动。这使得在多次访问时速度有了极大的提升;
ü 由于ASP没有提供任何输出数据为内容的元件,所以在使用ASP撰写数据库页面时只能借助ADO的RecordSet对象逐笔读取记录,而ASP。NET通过ADO.NET提供的DataGrid等数据库元件可以直接和数据库联系;
ü ASP.NET支持应用程序的实时更新,管理员不必关掉网络服务器或者甚至不用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因此甚至在程序运行时文件就可以被覆盖,当文件更新后,系统会温和地转换到新的版本;
ü ASP。NET采取"CodeBehind(代码分离)技术”方式编写代码使得代码更易于编写,结构更清晰,降低了系统开发与维护的复杂度和费用。
2.2 系统需求分析
系统开发的总体任务是实现在线考试的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完成的。在线考试系统需要完成的功能主要有:用户的注册和登录;用户在线答题;对科目进行管理;对管理员进行试题的管理;以及个人信息管理功能.在数据库方面,利用关系数据库功能强大的查询语言对企业各类信息入库保存,按要求及时处理.
该系统集录入、维护、查询、审核和各种处理为一体,各种操作可以通过菜单进行,操作快捷、方便,性能高效、强大;使用易懂、易会,形象增强的数据处理,用户均可根据需要自行使用。
2.3 系统概述
本系统是一个在线考试系统,在实施过程中主要实现以下目标:
(1)界面友好、美观,体现在线考试系统的特点,而且操作简便.
(2)各功能模块层次清晰,代码高效易懂。
(3)添加和编辑简便、清晰,提高工作效率。
(4)查询方便,数据存储安全可靠。
(5)功能全面,实用性强.
主要功能有:
1。注册用户模块
注册用户主要实现用户的登录功能和注册功能。
2. 在线测试模块
在线测试是本系统的核心模块,不论是管理员还是普通用户都可以进行在线测试。在此页面中,可以选择不同的科目进行科目测试,也可以显示或者隐藏答案提示.
3. 科目管理模块
只有管理员权限的用户登录才可以进入科目管理模块,在科目管理模块中,除了显示已有己。
4. 试题管理模块
只有管理员权限的用户才可以进入试题管理模块。
5. 用户管理模块
在用户管理模块中,管理员可以删除用户和修改用户信息.该页面没有增加用户功能,用户可以自己注册登录。
6. 个人信息修改模块
普通用户登陆后可以进入个人信息修改模块,修改个人密码、身份证号码和E—mail等信息。
7. 开发环境的选择方法
目前,用于开发数据库管理信息系统的编程语言很多,比如Delphi、PowerBuilder、Visual C++、Java、Visual Basic6及VB。NET等等,而用于后台数据库管理的DBMS也有很多,比如有Oracle、MS SQL SERVER、SYBASE、INFORMIX、DB2、VISUAL FOXPRO、ACCESS等等。
本人根据秦晓燕老师的布置要求,采用面向对象的软件开发方法来实现此在线考试软件,系统开发工具我们选择了能够跨平台的开发工具Visual Studio 2008。在前台操作与后台数据库处理的连接上,主要采用ADO.NET技术和SQL Server2005数据库,运用客户机服务器模式(C/S)配合功能强大的SQL查询语言实现预定的功能需求。
2.4 Visual Studio 2008的概述
Visual Studio 2008是一个全面集成的开发环境,用于编写,调试代码,把代码编译为程序集进行发布,实际上,Visual Studio 提供了非常专业的多文档界面应用程序,在该应用程序中可以进行与开发代码相关的任何操作,它提供了:
l 文本编辑器:在文本编辑器中,可以编写C#代码(以及VB 2005,J#和C++代码)。这个文本编辑器相当复杂。
l 代码的设计视图编辑器:它可以在项目中可视化的放置用户界面和数据访问控件。此时Visual Studio会自动在源文件中添加必要的C#代码,在项目中实例化这些控件。
l 支持窗口:它们可以查看修改项目的各个方面。也可以使用这些窗口指定编译选项。
l 在环境中编译:可以只选择一个菜单选项编译项目,而不必在命令行上运行C#编译器.Visual Studio会调用C#编译器。
l 集成的调试程序:编程的本质是代码在第一次运行时,一般不会正确执行。也许在第二次、第三次才能正确运行。Visual Studio无缝的链接到一个调试程序上,可以在该调试环境中设置断点,观察变量。
l 集成的MSDN帮助:Visual Studio可以在IDE中调用MSDN文档说明.
l 访问其他程序:Visual Studio还能调用许多其他工具来查看和修改计算机或网络的一些内容,而无需退出开发环境.
2.5 SQL Server 2005数据库的概述
SQL Sevrer2005是一个C/S体系结构的关系数据库管理系统,它使Transact—SQL语言在客户和SQL Server之间发送处理请求,SQL Server利用C/S体系结构把工作分成两部分:客户端负责逻辑处理把数据呈现给用户,SQL Server管理数据库.SQL Server用Transact—SQL作为它的数据库查询和编程语言,使用Transact-SQL能够方便地存取数据、查询、更新和管理关系数据库。
第3章 系统方案总体设计
3.1 系统设计思想及相关技术介绍
3.1.1 系统架构设计
首先用户登录,如果登陆成功系统检测用户类型,用户类型分为两种:普通用户和管理员。普通用户登录后只能进行在线答题和个人信息管理,在线答题时可以选择科目,可以显示和隐藏答案提示,模块测试后可以重做答错的题。
管理员身份登录功能较多,除了可以在线答题外,还可以进行科目管理、试题管理和用户管理,科目管理包括增加、删除、修改科目,试题管理同样是增、删、改操作;用户管理中只能删除和修改用户信息,增加用户在注册用户功能中完成。
图3—1在线考试系统功能框架
3.1.2 系统总体模块功能设计
经过对整个系统的分析,可以得出以下功能模块,如图3—3所示:
登陆者模块:面向登陆者.可以先进行注册,再实现登录功能,进而进行在线考试。
管理员模块:面向管理员。可以对考题进行添加、删除、修改和更新功能;可以进行答题的测试;科目的管理;题库的管理;以及对用户的管理。
图3—3 功能模块图
第4章 数据库的设计
4.1 引言
数据库是一个应用系统的核心,数据库设计的好坏直接关系到应用系统的执行效率,数据的一致性和完整性,设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求,数据库设计一般包括以下几个步骤:
l 数据库需求分析
l 数据库概念结构设计
l 数据库逻辑结构设计
4.2 数据库需求分析
数据库需求分析就是要了解在这个应用系统中,用户需要查询、更新、删除和保存哪些数据,收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
通在线考试系统的数据库管理要进行各种各样的数据输入和导出,提供各类信息的添加、删除、修改和更新等功能。通过上述对系统的设计分析,根据在线考试系统的需求,共需设计以下五种信息:
(1)用户注册信息.
(2)科目管理信息。
(3)试题管理信息。
(4)用户管理信息。
(5)个人信息管理。
4.3 数据库概念结构设计
等到了上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体以及实体之间的关系,为后面的数据库逻辑结构设计打下基础。这些实体包括各种具体信息,通过相互之间的作用形成数据流动。
4.4 数据库逻辑结构设计
通过调查分析各种资料,根据本管理系统用户需要操作和处理的各种数据,对数据表进行了分析。确定在数据库中存储的各种数据之间的关系以及数据类型,列举出部分数据表的关系如下:
1. 用户信息表(User)包括的数据项有: 用户名、密码、性别、身份证号码、电子邮箱、角色编号等。(如表4-1所示)
表4-1用户信息表
2. 角色表(Role)中的字段有角色编号、角色名。(如表4—2所示)
表4—2 2。 角色表
3. (Course)中的字段有课程编号和课程名以及两个备用字段。(如图4—3所示)
表4-3 课程表角色表
4. 试题表(question)中的字段有题号、课程编号、题干、A答案、B答案、C答案、D答案、正确答案。(如表4—4所示)
表4-4 角色表
第5章 界面设计与实现
5.1 主页设计
5.1.1 实现目标
程序启动后,进入登陆窗体,用户输入用户名和密码,然后进行登录。同时可以按下取消按钮退出本系统,登录界面模块中主要实现如下功能:
(1)可进行选择用户身份,支持鼠标操作。
(2)用户名和密码验证成功后,进入主界面。
(3)用户名错误或密码错误提醒并返回输入有误。
5-1主页面
5。1.2 登录窗口
5—2 登录窗口
在登录过程中,系统会首先根据画面上用户输入的内容进行验证检查,相关代码如下:
string conn = ConfigurationManager。ConnectionStrings["WebTestConnectionString”]。ConnectionString;
protected void txtRegist_Click(object sender, EventArgs e)
{
Response。Redirect(”Regist.aspx");
}
protected void txtLogin_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conn);
string strSql = ”select count(*) from [user] where userName = '”
+ txtName。Text + "' and password = ’” + this.txtPassword。Text + ”'”;
SqlCommand com = new SqlCommand(strSql, con);
con。Open();
int num = (int)com。ExecuteScalar();
if (num == 0)
{
Response.Write(”<script language=’javascript'〉alert('密码错误!’);〈/script〉”);
return;
}
strSql = "select roleID from [user] where userName = ’” + txtName。Text + ”'”;
try
{
com.CommandText = strSql;
SqlDataReader sdr = com.ExecuteReader();
if (sdr.Read())
{
string s = sdr["roleID"].ToString();
Session[”roleID"] = s;
Session[”userName"] = txtName.Text;
Session[”userPassword”] = txtPassword。Text;
}
sdr.Close();
}
catch (SqlException ex)
{
Response.Write(ex。ToString());
}
finally
{
con。Close();
}
Response。Redirect("Main。aspx");
如果验证通过,系统会连接数据库,进行数据正确性以及用户权限的检查,以上检查成功的情况下,就会进入本系统的主窗体,如果失败,跳出错误提示框。
5。1。3 注册窗口
图5-3 注册窗口
在注册过程中,系统会自动检查用户注册的信息是否合法,相关代码如下:
string conn = ConfigurationManager。ConnectionStrings["WebTestConnectionString"].ConnectionString;
protected void btnOK_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conn);
string strSql = ”select count(*) from [user] where userName = ’” + txtName.Text + ”’”;
SqlCommand com = new SqlCommand(strSql, con);
con.Open();
int num = (int)com.ExecuteScalar();
if (num 〉 0)
{
Response。Write(”<script language='javascript’〉alert(’表中存在记录!');〈/script>”);
}
else
{
string name = txtName。Text;
string password = this.txtPassword。Text;
string sex = "男";
if (this.rbtnFemail。Checked)
{
sex = "女”;
}
string identity = txtIdentity.Text。ToString();
string email = this。txtMail。Text。ToString();
strSql = "insert into [user](userName, password, sex, userIdentity, email,roleID) values('" + name + ”','" + password + ”','" + sex + "’,'” + identity + ”','”
+ email + ”',1)";
com = new SqlCommand(strSql, con);
com.ExecuteNonQuery();
con。Close();
Response。Write(”〈script language='javascript'>alert('注册成功!返回登录页面');</script〉”);
//返回登陆页面
Response。Redirect("Login.aspx”);
}
}
protected void btnCancel_Click(object sender, EventArgs e)
{
Response。Redirect("Login.aspx”);
}
5.2 主要界面设计—用户登录信息画面
5.2。1 实现目标
程序启动后,登录进入在线答题窗体,在管理模块中主要实现如下功能:
(1)检索当前启用的组织结构相关的部门及员工信息.
(2)对登陆者个人信息的管理。
(3)对基本信息进行登录和修改操作。
(4)考试科目即考试内容建立.
(5)对考试信息的查询。
5.2。2 主界面
图5-4 在线考试主界面
本界面为主操作界面。管理员通过登录界面的验证后,方能进入此界面。
此画面可以进行考试各类信息的添加,更新和删除,以及用户信息查询等功能。
点击显示答案后:
图5-5 答题测试界面
相关主代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
BindSubjectName();
Bind();
}
}
string conn = ConfigurationManager。ConnectionStrings[”WebTestConnectionString"].ConnectionString;
private void BindSubjectName()
{
SqlConnection con = new SqlConnection(conn);
SqlDataAdapter sda = new SqlDataAdapter(”select * from course”, con);
DataSet ds = new DataSet();
sda.Fill(ds, ”table”);
ddlQuestionName.DataSource = ds.Tables["table"];
ddlQuestionName.DataTextField = ”courseName";
ddlQuestionName.DataValueField = "courseID";
ddlQuestionName.DataBind();
}
private void Bind()
{
string str = ddlQuestionName.SelectedItem。Text。ToString();
string sql = ”select q。* from question q,course c where q.courseID = c.courseID and c.courseName = '" + str + "’";
SqlConnection con = new SqlConnection(conn);
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda。Fill(ds, "table");
DataList1.DataKeyField = ”questionID”;
DataList1。DataSource = ds.Tables["table”];
DataList1.DataBind();
}
protected void btnShowAnswer_Click(object sender, EventArgs e)
{
if (btnShowAnswer。Text == ”显示答案”)
{
for (int i = 0; i < DataList1。Items。Count; i++)
{
((Label)(DataList1。Items[i].FindControl(”lblAnswer")))。Visible = true;
}
btnShowAnswer。Text = ”隐藏答案";
}
else
{
for (int i = 0; i < DataList1.Items.Count; i++)
{
((Label)(DataList1.Items[i]。FindControl(”lblAnswer”)))。Visible = false;
}
btnShowAnswer。Text = "显示答案”;
}
}
protected void ddlQuestionName_SelectedIndexChanged(object sender, EventArgs e)
{
Bind();
}
protected void btnFinish_Click(object sender, EventArgs e)
{
int count = 0;//答对的数目
for (int index = 0; index 〈 DataList1.Items.Count; index++)
{
string labelStr = ((Label)(DataList1.Items[index].FindControl(”lblAnswer")))。Text;
string rightAnswer = labelStr.Substring(labelStr.Length — 1);
string selectedRadioButton = "";
if (((RadioButton)(DataList1.Items[index].FindControl(”rbtn1")))。Checked)
{
selectedRadioButton = "A";
}
else if (((RadioButton)(DataList1。Items[index].FindControl(”rbtn2”))).Checked)
{
selectedRadioButton = ”B";
}
else if (((RadioButton)(DataList1.Items[index]。FindControl(”rbtn3”)))。Checked)
{
selectedRadioButton = ”C”;
}
else if(((RadioButton)(DataList1.Items[index].FindControl("rbtn4")))。Checked)
{
selectedRadioButton = "D”;
}
if (rightAnswer == selectedRadioButton)
{
count += 1;
if (DataList1。Items[index].TabIndex >= 100)
{
DataList1。Items[index].TabIndex -= 100;
}
}
else
{
DataList1。Items[index]。TabIndex = (short)(100 + index);
}
this。btnRedoError。Enabled = true;
}
lblResult。Text = "答对”+count+"题,错”+(DataList1。Items.Count-count)+”题”;
}
protected void btnRedo_Click(object sender, EventArgs e)
{
Response。Redirect("ShowQuestion。aspx");
}
protected void btnRedoError_Click(object sender, EventArgs e)
{
for (int index = 0; index < DataList1。Items。Count; index++)
{
if (DataList1。Items[index]。TabIndex < 100)
{
DataList1.Items[index]。Visible = false;
}
}
}
}
5.3 主要界面设计 —— ADDQUESTION。ASPX
5.3.1 实现目标
图5-6 科目管理
当管理员登入系统后,进入信息添加页面,需要将相关考试信息录入考试系统中,方便用户进行考试。相关代码如下:
private void BindQuestionName()
{
SqlConnection con = new SqlConnection(conn);
SqlDa
展开阅读全文