基于C#+asp.net+SQL server的教学网站及网上考试系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于C#+asp.net+SQL server的教学网站及网上考试系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
- 本文叙述了教学方式及考试方式的历史、现状、以及ASP.NET语言和SQL server2000数据库管理系统的概况。重点介绍了C语言教学网站、网上考试系统和在线交流模块的实现过程:包括系统分析、系统调查、数据流程分析、功能设计、数据库设计、系统的运行环境、系统测试及调试。本系统主要面向两类人员使用:管理员(教师)、普通学生,他们拥有不同的权限。考试模块使用的过程是管理员添加试题,制订出题规则,生成试卷。学生登录后选择要考的试卷然后进入答题,完毕后提交试卷,存入数据库并评分。系统管理员可以查询考生的成绩,每个考生只能查询自己的成绩。教学网站模块,管理员添加教学文档,并对文档进行分类、修改等操作,而普通用户只能浏览内容。在线交流模块中,任何用户都可以登录留言,管理员可以删除留言。另外总结了本系统的特点:节约教学成本,提高考试工作的效率。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:21651个字54页
包含内容:整套源码+完整毕业论文
3、关键词:
ASP.NET SQL server 2000 B/S C语言教学网站 考试系统4、毕设简介
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
引言
1.1 课题研究背景与意义
省略
1.1.1 网上教学系统
网上教学系统与传统的教学模式相比,具有相当明显的优势,主要表现在:网上教学以Internet为载体进行传播,可以跨越时空的距离,有巨大的影响范围,Web技术是一个跨平台、多媒体的信息发布和浏览技术,并可以实现动态交互,使开展形象生动、内容丰富的多媒体教学成为可能;由于学生的学习进度和学习方式可以自行掌握,学生统计信息容易获得以及由于Web技术的交互手段使网上教学更容易实现向以学生为中心的教学模式的转移。
1.1.2 网上考试系统
省略
1.2 问题定义内容简介
1.2.1 问题定义
“C语言教学网站及网上考试系统”以Internet为载体,用户可以自己根据自己的学习进度学习及考试,给教师的教学带来极大的方便,这也是教育改革的一个发展方向。
1.2.2 内容简介
本系统共有三大模块:C语言教学模块、网上考试模块和在线交流模块。
系统主要面向两种人员使用:管理员(教师),学生。在教学模块里管理员可以对文库进行管理,可以添加新的文档,而普通用户(学生)只能浏览上面的信息,查询所需文档。在考试模块里,管理员可以对试卷,试题和答案,用户的角色进行管理,学生登陆后选择要考哪一期,完成答题后提交,学生可以登录查询自己的分数,而管理员可以查看所有考生的所有期的考试成绩;在线交流模块中,用户可以登录后发表一些有关C语言相关知识的观点。
1.3 课题调研与可行性分析
1.3.1课题调研
省略
1.3.2 可行性分析
(1)经济可行性分析
省略
(2)技术可行性分析
技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。该管理系统采用了B/S模式进行开发。结合了Internet/Intranet技术。数据库服务器选用微软公司的SQL Server数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。它的灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
1.4 论文各章内容介绍
第一章是绪论部分。绪论主要叙述课题提出背景、问题的调研、内容简介、可行性分析。
第二章是系统的需求分析。主要是对系统功能、业务流、数据流分析:数据字典和系统业务流重组与改进。
第三章是系统设计。主要内容是系统总体系结构设计;系统数据模型设计(E-R图、关系模型、数据表);系统开发与运行环境确定。
第四章-第八章各主要模块设计。主要内容是各子模块功能、接口、界面设计、详细设计;遇到主要问题及解决方案。
第九章是用户使用手册。系统功能简介、运行环境简介;系统安装手册;系统运行与操作指南(手册)。
第十章是系统评价。主要内容:系统主要功能、特色介绍;系统存在不足与改进方案;毕业设计心得与收获。
论文的最后是总结、致谢和参考文献。
2 系统的需求分析
2.1系统功能需求
省略
所以网上教学考试系统便成为现代教育的一种重要形式。
2.2 业务流和数据流图
2.2.1业务流
详细调查的重点是对管理业务的流程进行描述,通过采用系统流程图中部分图形工具来描述管理活动,进行规范化说明。业务流程图的符号说明如图2.2.1所示:
图2.2.1 业务流程图图例
详细调查之后,为开发本系统而绘制出的无纸化网络教学考试的管理业务流程图如图2.2.2所示。
图 2.2.2 基于web的网上教学考试系统业务流程图
2.2.2数据流图
省略
网上考试系统的数据流图如图2.2.3所示:
图2.2.3 网上考试系统数据流图
教学网站的数据流图如图2.2.4所示:
图2.2.4 教学网站数据流图
2.3 数据字典
省略
2.3.1 数据流分量
1.名字:用户信息
别名:无
描述:所有管理员用户、普通用户必须先登录本系统,然后进入专区造作系统提供的各项功能,这样就大大提高了系统的安全性。
定义:用户信息=用户ID+用户名称+密码+Email+角色ID
位置:用来验证用户身份,分配用户权限
2.名字:用户名称
别名:无
描述:唯一地标识某个毕业生的关键域。
定义:用户名称={字符}
位置:用户信息表
3.名字:密码
别名:无
描述:密码可用来验证用户的身份和权限
定义:密码={字符}
位置:用户信息表
4.名字:添加试题表
别名:无
描述:管理员可以添加试题
定义:试题=试题ID+试题标题+试题主体+类型ID +难度系数+分值
位置:供管理员添加试题时使用
5.名字:技术文档表
别名:无
描述:管理员可以按章节添加技术文档
定义:技术文档表=文档ID+文档主题+文档的关键字+文档来源+文档内容+位置ID
位置:供管理员添加文档时使用
6.名字:试卷表
别名:无
描述:管理员制订试卷生成规则
定义:试卷表=试卷ID+试卷总分+最低难度系数+最高难度系数+用户ID+角色ID
位置:供管理员添加试卷时使用
7.名字:角色分配表
别名:无
描述:管理员可以对用户进行权限的分配
定义:角色分配表=角色ID+角色名称
位置:管理员在用户管理模块中分配用户的权限
8.名称:留言板表
别名:无
描述:所有注册用户登录后留言
定义:留言板表=信息ID+用户名称+用户ID+主题+内容+留言者编号+留言日期
位置:所有用户在在线交流模块中留言
9.名称:成绩表
别名:无
描述:记录所有考生考试的成绩
定义:成绩表=试卷编号+用户名称+分数
位置:考生考完试卷后自动存入数据库
2.3.2 数据流
数据流的编号: DS03-01
数据流的名称: 试题信息、用户、技术文档等各种信息
简述: 对信息做需要的录入后而得到的数据库表
数据流的来源: 录入
数据流的去向: 数据库
数据流的组成: 各类信息
数据流的流量: 20个/月
高峰期流量: 2000个/月
2.3.3 数据存储
数据存储的编号: F03-01
数据存储的名称: 数据库信息
简述: 存放的试题信息、试卷信息、用户信息等等
数据存储的组成: 各类信息
关键字: 编号
相关联的处理: P1(对信息表进行录入)
P2(对信息表进行查询)
P3(对信息表进行修改删除)
P4(对信息表进行统计)
2.3.4 数据处理
(1) 处理逻辑编号: P04-01
处理逻辑名称: 信息录入
简述: 对各种信息进行录入.
输入的数据流: 系统管理员
处理过程: 进行分类录入
输出的数据流: 各类数据表
处理频率:1000个/月
(2) 处理逻辑编号: P04-02
处理逻辑名称: 查询各类信息
简述: 根据条件查询所需的信息.
输入的数据流:信息来源于数据库
处理过程: 输入查询条件查询,得到符合条件的信息
输出的数据流: 查询得到的信息
处理频率:10个/分钟
(3) 处理逻辑编号: P04-03
处理逻辑名称: 修改、删除信息
简述: 对信息做需要的修改后存入数据库中.
输入的数据流:数据库信息
处理过程: 对需要修改的信息做修改
输出的数据流: 修改或删除后得到的信息
处理频率: 10个/分钟
(4) 处理逻辑编号: P04-04
处理逻辑名称: 统计信息
简述: 对信息做需要的统计后存入数据库中.
输入的数据流:数据库信息
处理过程: 对需要统计的信息(就业率和就业反馈信息)做统计
输出的数据流: 统计后得到的信息
处理频率: 10个/分钟
3 系统设计
3.1系统总体系结构设计
通过对教学网站及考试系统的需求分析并结合实际情况分析,本系统是由用户管理、试卷管理、试题管理、C语言教学模块、在线答题及在线交流这六个主模块构成。本系统
的功能结构图如图3.1.1所示:
图3.1.1系统功能结构图
系统功能简介如下:
C语言教学模块:根据不同用户的登录有着不同的权限。管理员登录后,不但可以浏览文档信息,根据查询还可以进行添加,还可以修改现有文档;根据文档的标题、关键字和全文查询。对文档分类和添加、删除文档分类;普通用户登录后只能浏览和查询文档。
网上考试系统分为四个模块:
(1)用户管理:主要是用户的注册。其中也包括角色管理,用户注册后,管理员可以给不同的角色赋予不同的权限,管理员可以添加、修改、删除用户。
(2)试卷管理:管理员按照规则添加、修改、删除试卷。本系统只设置了选择题、判断题,管理员可以设定试卷的题目组成、分值、难度等项,然后存入数据库。
(3)试题管理:管理员添加、修改、删除试题及试题的答案。
(4)在线答题:考生进入系统后选择要考的试卷的期号,考生答题完毕后提交试卷,系统评分后存入数据库,考生再次登录可以查询成绩。
3.2 系统数据模型设计
3.2.1 数据概念结构设计——E-R图
省略
因此,各个实体具体的描述E-R图如下:
1.用户E-R图如图3.2.1所示:
图3.2.1 用户E-R图
2.题库信息E-R图如图3.2.2所示:
图3.2.2 题库信息E-R图
3.试卷信息E-R图如图3.2.3所示:
图3.2.3 试卷信息的E-R图
4.文档信息的E-R图如图3.2.4所示:
图3.2.4 文档信息E-R图
5.留言板信息E-R图如图3.2.5所示:
图3.2.5 留言信息E-R图
(2)全局ER模式
各实体间的关系如下
3.2.2 数据库逻辑结构设计(关系模型)
关系数据库系统是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作结合和关系完整性约束三部分组成。
在关系模块中,现实世界的实体以及实体间的各种联系均可以用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。
关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、并(Union)、除(Divide)等查询和增加、删除、修改操作两大部分。
关系完整性允许定义三类完整性约束:实体完整性、参照完整性、和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该有关系系统自动支持。数据库的逻辑结构设计就是把ER图转化为关系模式的过程。关系模型是目前最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。
(1) 导出初始关系模式
用户(用户编号,名称,密码,权限)
题库信息(试题编号,试题标题,试题主体,类型ID,难度系数,分值)
试卷信息(试卷编号,试卷总分,最低难度系数,最高难度系数,用户ID,角色ID)
文档信息(文档ID,文档主题,文档的关键字,文档来源,文档内容,位置ID)
留言信息(信息编号,发表者,主题,内容,提交日期)
(2) 产生子模式
子模式是由初始模式导出的,体现了初始模式之间的联系。
角色(角色名称,权限编号)
3.2.3 数据表
C语言教学网站及考试系统的数据表中各个表格的设计结果如下面表格所示,每个表格表示在数据库中的一个表。
3.3 系统开发与运行环境确定
3.3.1 开发工具的确定
本系统将采用Microsoft Visual Studio.NET 为前台开发工具.
省略
3.3.2 运行环境
硬件:CPU:AMD2500+
内存:512
硬盘:80G
软件: Windows XP SP2
IIS 5.1
.NET Framework 1.1
SQL Server 2000
3.3.3系统实现的若干关键技术
省略
4 用户管理模块设计
4.1用户管理模块的体系结构设计
4.1.1 用户管理模块功能简介
用户管理模块对使用本系统的用户进行用户名、密码、用户身份的验证,确保了系统的安全性。本模块具有五项功能:一、实现用户注册和登录。若是已注册的用户,系统根据用户身份让用户进入不同的界面进行具有权限的用户操作,若是新用户则登录本系统之前要先注册;二、用户注销,退出用户界面返回主页面;三、所有用户可以修改自己的注册信息,如密码、电子邮箱等基本资料。四、系统管理员可以进入管理员界面赋予用户权限。五、系统管理员还可以在管理员界面删除用户,对于某些非法用户,管理员可以将其从用户表中删除,剥夺他们的用户权限。
4.1.2 用户管理模块功能图
4.2 用户管理模块的详细设计
4.2.1 用户登录和注册界面设计
用户登录由Default.aspx页面实现,它的代码隐藏文件为Default.aspx.cs文件。用户登录是应用程序的主入口,用户只有通过该入口才能进入系统,它的设计界面如下图所示:
图4.2.1 用户登录界面
因为用户所属角色不同,如考生和管理员,所以在设计登录界面时,需要提供一个角色选择框让用户选择自己所属的角色。
用户登录界面使用的两个TextBox控件为用户输入用户名称和用户密码,用户单击“确定”按钮可以登录到系统,单击“取消”按钮可以取消此次登录操作。单击注册则跳转到注册界面。
关于用户登录界面有下面3点需要说明:
(1)用户的角色是从Roles表获取的,但是不显示超级管理员角色。
(2)用户登录界面使用两个非空验证控件,他们分别为RFVUseName和RFVPassword。RFVUseName非空验证控件对用户名称进行非空验证,RDVPassworf非空验证控件对用户密码进行非空验证。
(3)这两个非空验证控件仅仅对“确定”按钮有效,对“取消”按钮是无效的,具体方法就是把“取消”按钮的属性CausesValidation的值设为false
4.2.2 用户登录
用户登录流程图如下图所示:
用户单击“确定”按钮触发时间SureBtn_Click(),该事件实现用户登录的验证过程。时间SureBtn_click()调用数据访问层的函数GetUserLogin()验证用户的输入,如果用户输入是正确的,用户可以登录到系统中,否则页面弹出密码错误对话框或用户角色所属错误对话框。
函数GetUserLogin()从数据库获取合法用户的ID数据,返回的结果为对象SqlDataReader.
用户登录是应用程序的唯一入口,为了提高登录验证过程的安全性,函数GetUserLogin()调用存储过程Pr_GetUserLogin访问数据库。存储过程Pr_GetUserLogin的代码如下:
ALTER PROCEDURE Pr_GetUserLogin
(
@UserName varchar(32),
@Password varchar(100)
)
AS
SELECT UserID FROM Users WHERE UserName = @UserName AND Password = @Password
为了提高整个系统的安全性,在用户表Users中存储的用户密码Password字段不是用户密码的真实值,而是加密后的密码字符串。加密函数Encrtpt()被定义为UserDB类的静态函数。调用加密函数时,首先那加密字符串进行编码成Uncode,然后使用系统的不对称加密算法MD5加密用户密码串。用户登录时只需要验证加密后的密码串和数据库存储的密码串是否一致即可。该函数的代码如下:
/// <summary>
/// 用户加密函数
/// </summary>
public static String Encrypt(string password)
{
Byte[] clearBytes = new UnicodeEncoding().GetBytes(password);
Byte[] hashedBytes = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
return BitConverter.ToString(hashedBytes);
}
}
4.2.3 用户注册
添加新用户有两种方式,一种方式是从后台的用户管理中添加用户,另一种方式是用户注册。用户注册方式只能添加考生,而不能添加角色为管理员的用户,因为具有管理员角色的用户可以直接进入到系统的后台管理界面,所以在前台注册这种角色的用户是非常不安全的,系统的管理将比较混乱,而且系统数据安全性也会受到威胁,下面仅介绍前台用户注册实现的方法。考虑到用户注册需要输入用户名称、用户密码和用户电子邮件等信息,因为可以设计如图4.2.3 所示的用户注册页面。
图4.2.3 新用户注册
用户注册页面中的4个文本输入框分别用于输入用户名称、用户密码、用户确认密码和用户的电子邮箱等用户信息。注册页面还使用4个非空验证控件和2个正则表达式验证控件分别验证用户的输入,它们的名称分别为Uname、RequiredFieldValidator1、RequiredFieldValidator2、RequiredFieldValidator3、RegularExpressionValidator1和RegularExpressionValidator2。非空验证控件Uname对用户名称进行非空验证、非空验证控件RequiredFieldValidator1和正则表达式验证控件RequiredFieldValidator2分别对用户密码进行非空验证和长度验证、非空验证控件RequiredFieldValidator3和正则表达式验证控件RegularExpressionValidator2分别对电子邮箱进行非空验证和格式验证。页面对每一个文本输入框输入进行验证可以提高程序的可靠性和安全性。
单击“注册”按钮触发事件AddUserBtn_Click(),该事件调用数据访问层函数AddUser()提交新用户的注册信息表Users中。
函数AddUser()调用存储过程Pr_AddUser添加新用户注册信息到表Users中。函数AddUser()的代码比较冗长,它的代码可以分为下面两部分。
创建访问数据库的对象和添加存储过程的参数。
执行数据库的插入操作。
函数AddUser()调用(a)中的程序代码创建访问数据库的对象,如用于连接数的SqlConnection对象、 执行SQL语句的SqlCommand对象以及SqlCommand对象的参数等。函数AddUser()还调用(a)中的代码对SqlCommand对象的参数赋值。(a)中的程序代码如下:
public int AddUser(String sUserName,String sPassword,String sEmail)
{//定义数据库的Connection and Command
SqlConnection myConnection = new SqlConnection(SQLHelper.DBCONNECTIONSTRING);
SqlCommand myCommand = new SqlCommand("Pr_AddUser",myConnection);
//定义访问数据库的方式为存储过程
myCommand.CommandType = CommandType.StoredProcedure;
//创建访问数据库的参数
SqlParameter[] paramCache = SQLHelper.GetCachedParameters(paramAddUser);
if(paramCache == null)
{paramCache = new SqlParameter[]{
new SqlParameter("@UserName",SqlDbType.VarChar),
new SqlParameter("@Password",SqlDbType.VarChar),
new SqlParameter("@Email",SqlDbType.VarChar),
new SqlParameter("@UserID",SqlDbType.Int,4)};
SQLHelper.CacheParameters(paramAddUser,paramCache);
}
SQLHelper.AddMyCommandParams(myCommand,paramCache);
paramCache[0].Value = sUserName;paramCache[1].Value = sPassword;
paramCache[2].Value = sEmail;paramCache[3].Direction = ParameterDirection.ReturnValue;
函数AddUser()调用(b)中的程序代码实现打开连接、执行插入操作、关闭连接和返回插入用户的ID等功能。
(b)中的程序代码如下:
//打开数据库的连接
try{ myConnection.Open();}catch(Exception ex){ throw new MyException("10001","数据库连接失败!",ex);} //执行数据库的存储过程(访问数据库)
try {myCommand.ExecuteNonQuery();}
catch(Exception ex){throw new MyException("10001",ex.Message,ex);}
finally
{//关闭数据库的连接
if (myConnection.State = ConnectionState.Open){myConnection.Close();}
}
return (int)paramCache[3].Value;
}
单击“取消”按钮触发时间CancelBtn_Click(),该事件实现自动跳转到站点首页Default.aspx的功能。它的代码如下:
private void CancelBtn_Click(object sender, System.EventArgs e)
{
Response.Redirect(“Default.aspx”);
}
4.2.4 用户及其权限管理
(1)用户管理功能由页面UserManage.aspx实现,它的代码隐藏文件为UserManage.aspx.cs文件。用户管理模块需要实现添加和删除用户功能,因此可以设计如图4.2.4(a)所示的操作界面。“╳”按钮实现删除用户的功能,用户列表框显示系统当前包括的所有用户。
图4.2.4(a) 用户管理界面
下面介绍用户管理页面具体功能的实现。
页面初始化
用户管理页面初始化时,调用函数Page_Load()绑定用户列表控件的用户数据,绑定数据功能由函数BindUserData()实现。该函数调用数据访问层UserDB类的函数GetUsers()从用户表获取用户名称和用户ID等数据。
删除按钮的实现
用户管理页面中的“╳”按钮实现删除用户的功能,该按钮为图象按钮,单击此按钮触发时间deleteBtn_Click()。该事件调用数据访问层UserDB类的函数DeleteUser()删除数据库中的用户记录。删除列表中的用户之后,该事件还需要重新绑定用户列表的用户数据,此时用户在列表中已经看不到被删除的用户。
(2)权限管理
用户权限管理实现用户角色的分配功能。不同的角色有不同的操作权限,如管理员拥有最大操作权限,具有该角色的用户可以维护和管理整个系统;系统管理员维护整个系统,但具有该角色的用户不能访问系统的数据库。在一般的情况下,拥有该角色的用户就可以管理整个系统,如可以添加其他的用户、设置其他的角色、听用其他用户的帐户等。拥有学生的用户权限最小,只能参加考试、直接查看考试成绩及自己信息的维护权限。
用户权限管理由页面AuthorityManage.aspx实现,AuthorityManage.aspx.cs文件为它的代码隐藏文件。该页面仅仅实现分配用户角色,因此设计如图4.2.4(b)所示的操作界面。
图4.2.4(b)用户权限管理的界面设计
在用户权限管理页面中,管理员可以先选中用户列表中的用户和角色列表中的某个角色,然后再单击“设为该用户的角色”按钮,就可以把用户和角色对应起来,即把该角色赋给用户。
用户权限管理页面使用函数Page_Load()绑定函数分别是函数BindUserData()、函数BindRoleData()和函数BindUserRoleData()实现。
函数BindUserData()调用数据访问层的UserDB类的函数GetUsers()从用户表Users获取用户数据,然后再把数据绑定到用户列表控件。
函数BindRoleData()调用数据访问层的RoleDB类的函数GetRoles()从角色表Roles获取角色数据,然后再把数据绑定到角色列表控件。
函数BindUserRoleData()调用数据访问层的UserDB类的函数GetSingleUser()从用户表Users获取当前用户数据,然后再把数据绑定到用户角色控件。
用户单击图4.2.4(b)所示的“设为该用户的角色”按钮触发事件ApplyOwner_Click(),该事件实现用户和角色之间的关联功能。事件调用函数UpdataUserRole()修改用户表的角色字段值.
用户选择图4.2.4(b)所示的用户数据列表中的不同用户时,应用程序需要立即绑定被选中用户所属的角色。该动态绑定用户所属的角色的功能由函数UserList_SelectedIndexChanged()实现,它的程序代码如下:
private void UserList_SelectedIndexChanged(object sender,System.EventArgs e)
{
BindUserRoleData(Int32.Parse(UserList.SelectedValue));
}
5 试题管理模块设计
本节介绍如何处理题库信息,如试题的添加、删除和修改,试题答案的设计等。
5.1 试题管理模块体系结构设计
5.1.1 试题管理模块功能简介
本模块具有以下的功能:管理员通过用户名、密码验证进入系统后可以添加试题、更新试题、删除试题、添加试题的答案、更新试题的答案、删除试题的答案。
5.1.2 试题管理模块功能图
5.2 试题管理模块的详细设计
5.2.1 添加试题
试题的属性比较多,如试题标题、试题说明、试题难度系数、试题的分值以及试题所属试题种类等,所以添加试题的过程比较复杂。
添加试题功能由页面AddQuesition.aspx页面实现AddQuesition.aspx.cs文件为它的代码隐藏文件。一个试题或问题至少包含下面几个属性:试题的标题、试题的详细描述、试题难度系数、试题所属的种类(如选择题、判断题等)、试题的分值等。因此可以设计如图5.2.1(a)所示的试题添加界面:
添加试题页面上有一个很大的输入框,用来输入试题的详细描述,该输入框以多行的形式显示数据;试题的难度系数值是0到1之间的一个两位小数,添加试题页面使用正则表达式控件规范用户输入信息的格式;试题的分值必须使用正整数,不能以小数形式出现;试题所属的试题种类可以从下拉列表选择框中选择,即用户可以选择自己添加试题的题型,如选择题、判断题等;用户单击“预览问题”按钮可以预览试题的显示样式,单击“确定提交”按钮可以添加该试题。
添加试题页面使用函数Page_Load(object sender,system.EventArgs e)绑定试题种类的数据,其中数据绑定功能由函数BindQuesKindData()实现。该函数首先从QuestionKinds表中获取试题种类数据,然后再把数据绑定到列表控件。
试题答案添加实现,考虑到每个试题至少包含一个答案、至多包含四个答案,因此答案输入界面设计如图5.2.1(b)所示。
试题答案添加页面调用函数Page_Load(object sender,System.EventArgs e)初始化整个页面,调用数据访问层的函数从Questions表获取试题的信息,如试题的标题和试题所属的种类,同时定义参数nQuestionID存储在试题管理页面QuestionManage.aspx中选中的试题的ID。
函数BindQuestionData(int nQuestionID)绑定单个试题的数据信息,它调用数据访问层QuestionDB类的函数GetSingleQuestion()从Questions表中获取试题信息,如试题名称、试题的答案。
在图5.2.1(b)所示中,用户单击“确认提交”按钮触发事件
AddNewQuestion_Click(object sender,System.EventArgs e),该事件添加试题,它调用函数UpPictureFile()上载和与问题相关的图片,其中函数UpPictureFile()的参数为文件类型的控件,它返回成功上载后的图片ID。
构建上载文件名称调用随机函数GetRandomint()创建小于10000的正整数。
因为页面中存在4个答案文本输入框,所以必须4次调用添加答案函数AddAnswerToDB(int nQuestionID,String sTitle,String sBody)。在添加的过程中,系统默认第一个输入框的标题为“A”,第二个输入框的标题为“B”,第三个输入框的标题为“C”,第四个输入框的标题为“D”。
5.2.2 修改试题
修改试题功能由EditQuestion.aspx页面实现。如图5.2.2(a)和5.2.2(b)所示,它的代码隐藏文件EditQuestion.aspx.cs文件。它的界面与添加试题相似,在此不再介绍。
图5.2.2(a)修改试题页面设计
图5.2.2(b)修改试题的答案页面设计
1.页面初始化
修改试题页面调用函数Page_Load(object sender,System.EventArgs e)绑定试题种类和被修改试题,其中绑定试题种类数据功能由函数BindQuesKindData()实现,绑定修改问题数据功能由函数BindQuestionData()实现。
函数BindQuesKindData()绑定试题种类的数据,它调用数据访问层QuestionKindDB类的函数GetQuesKinds()从QuestionKinds表中获取试题种类数据。
函数BindQuestionData(int nQuestionID)绑定被修改试题数据,它调用数据访问层QuestionDB类的函数GetSingleQuestion(nQuestions表中获取试题数据。
函数BindQuestionData(int nQuestionID)调用函数SetListIndex(SqlDataReader recq)设置试题种类下拉列表的当前选择项,该函数使用数据访问层的获取的数据对象recq,然后逐个比较下拉列表的选择项。
2.修改试题
在图5.2.2(b)中,用户单击“确认修改”按钮触发事件UpdateQuestion_Click()实现试题的修改功能。该事件和添加试题事件有很多相同之处。
5.2.3 删除试题
删除试题功能直接嵌套在页面EditQuestion.aspx页面实现,EditQuestion.aspx.cs 文件是它的代码隐藏文件。如图5.2.2(b)删除试题和试题修改实现有很多相同之处,如绑定试题种类的数据、绑定删除试题的数据等,考虑到篇幅,不再对这部分进行介绍。
下面仅仅介绍试题的删除功能,该功能由“确认删除”按钮实现,用户单击“确认删除”按钮触发时间DeleteMyQuestion_Click(object sender,System.EventArgs e),该事件删除选中的试题。
6 试卷管理模块设计
本节介绍管理员如何添加试卷和删除试卷的。
6.1试卷管理模块的体系结构设计
6.1.1 试卷管理模块功能简介
本模块具有以下的功能:管理员通过用户名、密码验证进入系统后可以添加试卷、删除试卷。
6.1.2 试卷管理模块功能图
6.2 试卷管理模块详细设计
6.2.1 添加试卷管理
添加试题管理由页面AddPaper.aspx实现,AddPaper.aspx.cs文件是它的代码隐藏文件。添加试卷管理页面需要实现试卷总分设定,难度的设定和试卷的构成设定,因此设计如图6.2.1所示的操作界面。
图6.2.1 构建新的考试试卷
运用的函数与试题添加模块相似,在这里不详细介绍。
确认提交后自动生成一套试卷,使用随机算法生成整套试题过程比较复杂,生成整套试卷需要的参数如下:
TotalMark 试题的总分
MinDefficult 试题的最小难度系数
MaxDefficult 试题的最大难度系数
KindList 试题的题型和每种题型的数量ArraryList
应用程序在创建整套试题之前就会检查上面4个参数是否匹配,如每套试题的总分是否为设置的TatalMark的值,如果不是,则为无效试卷。
在随机生成试卷过程中,应用程序首先调用函数CreateIntegerExaminePaper()生成整套试卷。该函数递归调用自己,直到生成试卷。
函数CreateSpecialKindQuestion()随机生成一种特定的题型,该函数比较复杂。在函数的开始处定义一些局部变量,如Index(试题索引)、IndexList(试题索引容器)等,并调用随机函数生存试题的ID,最后把结果集添加到QuestionList集合中。
然后通过生成随机序号序列IndexList(相当于试题ID的映射序列)从Questions表记录集中获取相对应的试题ID,并把获取的试题ID添加到临时结果集中。
生成随机结果集的映射索引时调用函数IsExisIndex()保证索引的唯一性,该函数逐个比较即将添加的值和数组中的每个值,如果结果相等返回false,否则返回true。
随机函数GetRandomInt(int nKindNum)调.NET Framework的随机函数类的Next()函数产生所需要的随机数。
生成试卷后可以预览,由view.aspx文件实现。
6.2.2 删除试卷管理
删除试题管理由页面DeletePaper.aspx实现,DeletePaper.aspx.cs文件是它的代码隐藏文件。删除试卷管理只需要实现删除试卷功能,因此设计如图6.2.2所示的操作界面。
图6.2.2 删除试卷界面
调用函数在此不详细介绍
“╳”实现删除试卷功能,代码如下
private void EditDeleteBtn_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{String commandName = ((ImageButton)sender).CommandName;
if(PaperList.SelectedIndex > -1)
{switch(commandName)
{case "delete":
{DeletePaperInfo();
break;}
default:
{break;
}
}
if(commandName == "delete")
{
BindData();
}
}
else
{
Response.Write("<script>alert(\"请选择你的数据项!\")</script>");
}
}
6.3 遇到的主要问题及解决方案
view.aspx文件中在数据绑定时,问题DataList控件触发事件QuestionList_ItemDataBound(),并在事件中调用函数BindAnwserList()绑定问题答案数据,绑定数据步骤如下:
1.通过参数e的函数FindControl()找到需要绑定数据的RadioButtonList控件,命名为answerList。
2.判断answerList控件是否为空,若为空,则中止函数。
3.若answerList控件不为空,则调用函数BindAnswerList()绑定answerList控件的答案数据。
7 在线答题模块设计
7.1 在线答题模块体系结构设计
7.1.1 在线答题模块功能简介
这个模块实现的功能为:学生通过验证登录后,选择要考的试卷,进入考试;还可以查询自己的成绩。
7.1.2 在线答题功能模块图
7.2 在线答题模块详细设计
7.2.1 界面设计
系统的在线答题功能由页面SelectPaper.aspx实现,它们的代码隐藏文件分别为SelectPaper.aspx.cs文件.
考生进入SelectPaper.aspx页面后有两种选择,一种就是选择要考试卷的编号,然后进入考试;一种是查询自己的成绩。
7.2.2 在线答题
在线答题功能由页面SelectPaper.aspx实现,代码隐藏文件SelectPaper.aspx.cs文件。该页面初始化时,首先从Session全局变量中取到一套试卷的所有考试题目;然后由QuestionDB类的函数GetQuestions()创建问题数据源DataList。值得注意的一点是,此问题数据源DataList为Ilist接口对象,而不是一般的DataReader对象、DataSet对象或其他的ArrayList对象。
问题DataList控件绑定数据时,采用Ilist接口对象作为数据源。此数据源由类QuestionDB的函数GetQuestions()函数创建。该函数的参数为ArrayList类型的对象QuestionList,它包含整套试卷的所有试题的ID。函数GetQuestions()使用for循环语句从
Questions表中获取每个试题的详细信息。在此循环中使用函数GetSingleQuestion()从Questions表中获取单个问题的详细信息,然后把详细信息保存到QuestionDetails对象中,最后函数把题目的详细信息构建为一个ArrayList对象,并在函数的最后返回此对象。
函数GetQuestions()仅仅绑定试卷的问题,并没有绑定每个试题的答案,函数GetAnswers()和函数BindAnswerList()实现该功能。函数GetAnswers()属于数据访问层函数,它需要参数QuestionID从Answers表取到属于QuestionID的问题答案,并把试题答案传递到应用程序的页面层。在函数GetAnswers()基础上,应用程序的页面呈现层就可以使用该函数从数据库获取试题答案,并把试题的答案绑定到每个相应的问题。绑定试题答案由函数BindAnswerList()实现,她参数的为RadioButtonList控件。
8 C语言教学模块设计
8.1 C语言教学模块体系结构设计
本模块采用B/S的结构,所有的数据库操作都由WebForm提交给数据访问组件DataAccessor,由后者统一对数据库进行读写访问,如图8.1.1所示。
图8.1.1 系统结构图
8.2 C语言教学模块功能简介
8.2.1 功能分配
下表列出了各子模块及页面对应的功能和页面结构:
表8.2 功能分配表
8.2.2 接口设计
接口主要有两种外部接口和内部接口,下面介绍系统中的两种接口的设计。
1.外部接口设计
(1)目录浏览。
本模块的主页面,如图8.2.2(a)所示。从主页面里可以看到,整个模块的目录。
图8.2.2(a) 主界面
(2)新增文档分类
用户单击“文库管理”|“新增分类”时,会进入如图8.2.2(b)所示的页面
图8.2.2(b)新增文档分类页面
在新的文档分类页面中,用户可以根据个人需要,在各个已有的文档分类中增加新的文档分类,以后就可以把文档加入到这些分类中。
(3)文档查询
用户单击“文库管理”|“文档查询”时,会进入如图8.2.2(c)所示的页面
图8.2.2(c) 文档查询页面
在这个页面中,用户可以输入相关的查询关键字,根据文档标题、关键字和全文查询等查询方式来查询出符合条件的文档列表。
(4)文档浏览
在文档目录或查询结果中单击某篇文档,则可以浏览该文档的详细内容,如图8.2.2(d)所示
图8.2.2(d)文档浏览
在浏览页面里单击“删除”,会删除文档。
在浏览页面里单击“关闭”,会关闭页面。
在浏览页面里单击“编辑”,会进入编辑模式,可以编辑文档的内容,或者为文档选择不同的文档分类。这3个功能中,删除和编辑只有管理员可以使用,用户只能“关闭”。
(5)文档编辑
文档浏览页面,如图8.2.2(e)所示,在该页面可以对文档进行新增和保存,这也是管理员才能进行的操作。
图8.2.2(e)文档的编辑
上面的下拉列表框和“上一级”按钮可以重新对该文档进行分类。编辑完成之后单击“保存”按钮,数据库将更新文档信息。单击“新增”按钮,或者单击目录浏览页面右上方的“新增文档”按钮,可以新增一个文档,单击“关闭”按钮,将会关闭本页面,普通用户只能浏览信息。
2.内部接口设计
WebForm显示在页面上的数据非常复杂,读取数据库时可能需要返回不同的数据格式,如计算结果、单个字段数据、一条记录或多条记录等。DataAccessor提供了丰富的数据库访问方法,详细介绍在本模块第3节,遇到主要问题及解决方案中。
8.3 系统模块设计与开发
这个模块主要分为数据访问类DataAccessor.cs、文档分类模块、文档查询模块、目录浏览模块、文档浏览模块和文档编辑模块,下面分别说明各个子模块的开发过程。
8.3.1 数据库访问类DataAccessor.cs
本模块中,所有对数据库访问都是通过数据库访问类DataAccessor来实现的。DataAccessor是对OleDB数据源的封装类,大大减少了数据库操作编码的复杂性,提高了代码的重用程度。
8.3.2 文档分类模块
文档分类模块,实现了文档分类的增加功能
1.页面内容
新增文档分类页面:FolderEdit.aspx。
根据下拉列表框和“下一级”按牛选择要新增的文件目录所处的上级目录,输入名称和注释,单击“保存”按钮,将把新的文件类别保存在数据库中。
2.使用到的数据表
文档分类模块使用到的数据表是菜单表,用来记录文档分类的相关信息。
3.相关类
FolderEdit.aspx.cs为新增文档分类页面的隐藏类。其中ListChildren方法实现了根据上级目录代码列出所有下级目录,GetPath方法则实现了根据文档目录ID查询出其完整路径的功能。
改变“所属类别”下拉列表框的DropDownList_Folder_SelectedIndexChanged事件处理函数根据改变后的选择项调用ListChildren方法,从而实现目录定位的向下跳转,并将“上一级”按钮置为可用。单击“上一级”按钮的Button_Parent_Click事件处理函数根据当前所属类别的代码,查找其上级代码,并根据上级代码调用ListChildren方法,从而实现目录定位的向上跳转。
单击“保存“按钮的Button_Save_Click事件处理函数首先进行数据检查,然后从各控件中获取准备新增记录的各项信息,组成写数据库的SQL脚本,调用DataAccessor对象的ExecuteNonQuery方法保存数据,同时将其上级目录对应的IsLast值置为0。
8.3.3 文档查询模块
1.页面内容
文档查询页面ArticleSearch.aspx,根据用户输入的关键字和选择的不同的范围,查询出符合条件的文档记录。
2.使用到的数据表
模块使用到的数据表是文档表
3.相关类
ArticleSearch.aspx.cs为文档查询页面的隐藏类。其中Search方法实现了根据组合成的查询字符串查询符合条件的记录,并生成相应的文档列表,显示在页面上。
单击“查询”按钮的Button_Search_Click事件处理函数中,根据用户对查询范围的选择,组合成相应的SQL语句,调用Search方法生成查询结果。
“目录浏览”模块和“文档浏览模块”“文档编辑”在这里就不详细介绍了。
8.4 遇到主要问题及解决方案
本模块的重点难点是数据访问组件。通过连接字符串的配置,我们得知可以把配置信息放置在配置文件中,从而在不重新编译的情况下完成数据库配置的改动。另外,对于连接字符串,我使用到了Singleton模式,使得不必每次创建连接时都去访问文件,从而提高了数据库的访问速度;还有,类的封装,让常用的数据库操作变为简单的方法调用等等。
9 在线交流模块设计
9.1在线交流模块功能结构设计
为了方便用户间的交流,所有的注册用户均可以登录留言模块,普通用户可以登录后留言,而管理员可以留言并且删除用户发的帖子。
9.2 在线交流模块详细设计
在线交流模块的主页面显示如图9.2所示:
图9.2.1 在线交流模块主页面
帖子内容显示页面主要由一个DataGrid构成,还有一个模板列,就是跟贴的部分,上面的三个Label控件用来显示发表者的信息及贴子的内容,下面的模板列则是用来显示跟贴者的内容,模板列的每一行都是由三个布局好的Label组成。它们分别负责显示留言者的用户名,发表日期和发表内容。页面最下面是快速留言,用户可以在里面留言。如图9.2.2所示:
图9.2.2 浏览留言页面
模板列中三个控件的绑定代码如下 :
<%# DataBinder.Eval(Container.DataItem,"userName") %>
<%# DataBinder.Eval(Container.DataItem,"postDate") %>
<%# DataBinder.Eval(Container.DataItem,"message") %>
11 系统评价
1 系统特色/优点介绍
本系统综合了许多网上教学系统的特点,从界面设计到系统设置都是从方便用户的角度出发。系统的特色归纳如下:
1.本系统是面向社会上的所有C语言爱好者,运用先进的ASP.NET技术开发。
2.本系统可以运行在多种操作系统平台上(Windows NT/Windows 2000/Windows XP)。数据库管理系统采用SQL Server 2000,采用操作简单方便的Dreamweaver MX开发环境。
3.C语言教学网上可以动态添加技术文档,管理内容和维护数据方便。
4.为了方便用户间的交流,所有的注册用户均可登录留言。
结 论
省略
致 谢
省略
参 考 文 献
[1] 启明工作室,ASP.NET+SQL server网络应用系统开发与实例第1版.北京:人民邮电出版社,2005.
[2] 刘廷,刘帆.ASP.NET开发实例完全剖析.北京:中国电力出版社,2006.
[3] 吉根林,崔海源.ASP.NET程序设计教程.电子工业出版社,2005.
[4] 张海藩.软件工程导论.北京:清华大学出版社,2003.
[5](美)Walther,S.著,马朝晖等译.《ASP.NET技术内幕》,北京:机械工业出版社 2002
[6](美)Mrdula Parihar著,王勇 盖江南 尚红昕等译.《ASP.NET宝典》,北京:电子工业出版社2002
[7] 邹建峰 李律松 李晓栓 等著《ASP.NET开发技术详解》,北京:人民邮电出版社2005
[8] 彭明柳 《Visual Basic.NET彻底研究》 北京:中国铁道出版社,2003
[9] (美)Jones,A.R著,高春蓉等译 《ASP.NET与VB.NET从入门到精通》. 北京. 电子工业出版社,2002
[10] 陆昌辉 吴晓华 《SQL Server 2000开发人员指南》宇航出版社 北京希望电子出版社 2002
[11] 萨师煊 王珊 《数据库系统概论》 北京.高教出版社.2000
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于C#+asp.net+SQL server的教学网站及网上考试系统设计与实现(源码+文档)_.net_网上考试系统.zip |