论文部分内容阅读
摘 要:本文采用B/S模式结构作为系统开发的体系结构,利用ASP.NET技术进行系统开发,通过在三层模式结构中使用抽象工厂设计模式,设计并实现了一个可以支持多种数据库无缝移植的通用考试系统。
关键词:ASP.NET;B/S;在线考试;多数据库访问
引言
考试是学校教学工作的重要环节,也是检验和评价教学质量和效果的重要手段,传统的考试过程需要耗费大量的人力、物力和财力,而考试结果又常常受到人为因素影响。为适应现代教育技术的发展,深化教学改革,提高考务效率,建立一套完善的可以针对不同学科进行考试的通用考试系统势在必行。
1系统设计
1.1系统体系架构
系统采用基于B/S模式的三层体系结构设计如图1所示,即数据访问层、业务逻辑层和表示层。
数据访问层主要实现对数据的保存和读取操作。业务逻辑层是表示层和数据访问层之间通信的桥梁,主要负责数据的传递和处理。表示层用于显示数据和接收教师、学生输入的数据,为他们提供一种交互式操作界面。
1.2系统功能模块
根据需求分析,可以将考试系统划分成两大主要子系统:教师子系统和学生子系统(如图2所示)。
(1)教师子系统
教师子系统的各模块主要功能描述如下:
①学生管理:主要是添加、删除、修改及查询学生信息。
②科目管理:教师可以对在线考试系统的科目进行新增、修改、删除操作。
③题库管理:主要是完成试卷题目的增、删、改、查操作。教师在添加题目时需选择相应的科目,并设定题目的分值、难度系数、正确答案等。
④试卷管理:主要完成试卷的生成、修改、删除、查询及设置考试默认试卷,创建试卷时需判断设置的试卷总分与每题分值之和是否相等,若不等需重新选择试题。另外还需要分配好考试时间与题量之间的比例关系。
⑤成绩管理:教师可以参加主观题在线改卷,查看各科目考试成绩(Excel格式)及考试总成绩表(Excel格式)、打印成绩表并对成绩表进行汇总分析。
(2)学生子系统
①登录验证:学生输入用户名和密码后,系统自动对学生身份进行判别,若是系统考生,则显示学生模块的功能,若是教师,则显示教师模块的功能。
②在线考试:考生登录验证通过后进入考试科目选择界面,根据考生选择的科目,服务器调用随机抽题程序,组成一幅完整的试卷返回或直接返回教师指定的默认试卷并在客户端显示供考生在线答题。
③查看成绩和答案:学生可以进入成绩查询页面查看考试成绩和做错的题及相应题的正确答案。
④个人信息维护:学生可以修改自己的身份信息和系统的登录密码。
1.3系统的数据库设计
数据库主要用来更方便地管理考试系统中存在的所有数据,考试题库信息的建立对于考试系统来说是相当重要的,所以数据库的设计好坏直接影响到整个考试平台的正常运行和效率。通过对本系统数据的分析,一共设计了10张数据库表:角色表、用户表、试题分类表、题型表、章节表、选择题表、判断题表、简答题表、填空题表、试卷表。填空题表和试卷表的存放相对复杂,填空题中每道题需要填的空可能不同,所以需要设置一个字段存放需要填的空的个数(如表1)。
表1 填空题表
2开发与运行环境
ASP.NET是创建动态网页的一种强大的服务器端技术,是一种基于B/S的应用程序。同时ASP.NET可以通过ADO.NET组件提供的接口访问数据库,便于开发出功能强大的动态可交换的web页面。因此选择ASP.NET作为前台开发工具。由于本系统开发的是可在多种数据库间无缝移植的考试系统,且SQL Server 2005具有强大的数据管理与处理能力及较高的安全性能,并支持远程存取等符合考试系统的需求,因此仅选择SQL Server 2005 作为后台测试数据库。
3系统实现的关键技术
3.1 组卷策略
教师登录系统后,选择试题的类型及所属章节及知识点,并给试题设置相应的难度系数和估计答题时间,点击提交按钮录入试题。其中难度系数是试题难易程度的指标。学生登录系统后,选择相应的题型、数量、以及所属章节,点击抽取按钮后系统就根据这些参数从试题库中自动抽取试题,在抽取试题前,系统会自动判断所输入的参数是否合法,如输入的题目总数与各题型的数目之和若不相等,则提示重新输入,否则就根据输入参数进行组卷。
3.2 考试中断与恢复的实现
若在考试过程中,因突然断电或其他意外情况使得考试中断,这时系统应具有实时保存学生数据的功能及恢复到意外发生时数据原始状态的功能。
设计思路是:使用Ajax的时间控件实现。考试时,利用时间控件倒计时,且一秒钟刷新一次,自动将学生填写的试卷信息保存到试卷表中。这样当学生再次登录时,只需输入用户名和试卷编号,系统就能够查询出断线时保存的数据信息,并根据这些信息还原试卷。
3.3 多数据库无缝移植策略
为了提高系统的通用性,本考试系统在数据访问层中使用抽象工厂设计模式,抽象工厂设计模式能够提供一个创建一系列相关或相互依赖对象的接口,接口不依赖于具体的实现,它彻底消除了接口的使用者和实现者之间的耦合关系,这样使该系统可以在任意数据库平台上使用(以SQL Server数据库和Access数据库为例)。
具体设计如下:在原有的解决方案中添加如下步骤:
(1)搭建数据访问层基本框架:
①新增抽象工厂项目(StudyWebDALFactory)。
②新增抽象产品项目(StudyWebIDAL)。
③实现项目之间的依赖。
(2)实现数据访问接口。关键代码如下:
学员信息SQL Server数据库访问(学员信息Access数据库访问与之类似):
public class StudentService:IStudentService {
…
using(SqlConnection conn=new SqlConnection(connString)){
…}}
(3)实现数据访问对象创建功能
实现了数据访问功能后,业务逻辑层要通过统一的方式调用数据访问层的方法,这是抽象工厂设计模式的核心意义所在。关键代码如下:
实现抽象工厂类:
public abstract class AbstractDALFactory{
public static AbstractDALFactory ChooseFactory(){
…
Switch(dbType){
case ”Sql”:
factory=new SqlDALFactory();
break;
case “Access”:
factory=new AccessDALFactory();
break;}
return factory;}
public abstract IStudentService CreatStudentService();}}
实现SQL Server实体工厂类(Access实体工厂类与之类似):.
public class SqlDALFactory:AbstractDALFactory{
public override IStudentService CreateStudentService(){
return new studentService();}
}
(4)业务逻辑层调用数据访问层方法。关键代码如下:
public static class LoginManager{
private static AbstractDALFactory factory= AbstractDALFactory.ChooseFactory();
private static IStudentService studentService=factory.CreateStudentService();
…
//业务逻辑层不能区别studentService是SqlServer版还是Access版
Student student =studentService.GetStudentByLoginID(loginID);
…
}
3.4 安全保障措施
本考试系统在业务逻辑层采用SHA1(Secure Hash Algorithm,安全哈希算法)进行加密,这种算法是不可逆的。当用户输入密码登陆时,系统把加密好的密码存储到数据库中,进行密码比较的时候,把用户输入的密码再进行加密,然后与数据库中的密码进行比较。另外,在数据访问层调用数据的方式全部使用存储过程,防止了注入式攻击的危害。
4总结
本文探讨和实现了基于ASP.NET的可跨数据库平台的在线考试系统,系统具有简单、快捷、可操作性、通用性强等优点,有效克服了传统考试方式的不足。但同时,系统还有需要进一步完善的地方,如对于主观题部分,只能依靠教师人工阅卷;考试成绩分析的智能程度还很低等等。
参考文献:
[1]王娜.基于ASP.NET技术的在线考试系统的设计与实现[J].科技信息,2010,(17).
[2]黄晗文,李健等.基于ASP的无纸化考试系统的设计与实现.湖南工业职业技术学院学报[J],2010,(03).
[3]郭冠洲.基于ASP技术的在线考试系统的设计与实现.科技信息[J],2010,(13).
[4]邹元杰.基于web的英语考试平台的构建.信息系统工程[J],2010,(30).
关键词:ASP.NET;B/S;在线考试;多数据库访问
引言
考试是学校教学工作的重要环节,也是检验和评价教学质量和效果的重要手段,传统的考试过程需要耗费大量的人力、物力和财力,而考试结果又常常受到人为因素影响。为适应现代教育技术的发展,深化教学改革,提高考务效率,建立一套完善的可以针对不同学科进行考试的通用考试系统势在必行。
1系统设计
1.1系统体系架构
系统采用基于B/S模式的三层体系结构设计如图1所示,即数据访问层、业务逻辑层和表示层。
数据访问层主要实现对数据的保存和读取操作。业务逻辑层是表示层和数据访问层之间通信的桥梁,主要负责数据的传递和处理。表示层用于显示数据和接收教师、学生输入的数据,为他们提供一种交互式操作界面。
1.2系统功能模块
根据需求分析,可以将考试系统划分成两大主要子系统:教师子系统和学生子系统(如图2所示)。
(1)教师子系统
教师子系统的各模块主要功能描述如下:
①学生管理:主要是添加、删除、修改及查询学生信息。
②科目管理:教师可以对在线考试系统的科目进行新增、修改、删除操作。
③题库管理:主要是完成试卷题目的增、删、改、查操作。教师在添加题目时需选择相应的科目,并设定题目的分值、难度系数、正确答案等。
④试卷管理:主要完成试卷的生成、修改、删除、查询及设置考试默认试卷,创建试卷时需判断设置的试卷总分与每题分值之和是否相等,若不等需重新选择试题。另外还需要分配好考试时间与题量之间的比例关系。
⑤成绩管理:教师可以参加主观题在线改卷,查看各科目考试成绩(Excel格式)及考试总成绩表(Excel格式)、打印成绩表并对成绩表进行汇总分析。
(2)学生子系统
①登录验证:学生输入用户名和密码后,系统自动对学生身份进行判别,若是系统考生,则显示学生模块的功能,若是教师,则显示教师模块的功能。
②在线考试:考生登录验证通过后进入考试科目选择界面,根据考生选择的科目,服务器调用随机抽题程序,组成一幅完整的试卷返回或直接返回教师指定的默认试卷并在客户端显示供考生在线答题。
③查看成绩和答案:学生可以进入成绩查询页面查看考试成绩和做错的题及相应题的正确答案。
④个人信息维护:学生可以修改自己的身份信息和系统的登录密码。
1.3系统的数据库设计
数据库主要用来更方便地管理考试系统中存在的所有数据,考试题库信息的建立对于考试系统来说是相当重要的,所以数据库的设计好坏直接影响到整个考试平台的正常运行和效率。通过对本系统数据的分析,一共设计了10张数据库表:角色表、用户表、试题分类表、题型表、章节表、选择题表、判断题表、简答题表、填空题表、试卷表。填空题表和试卷表的存放相对复杂,填空题中每道题需要填的空可能不同,所以需要设置一个字段存放需要填的空的个数(如表1)。
表1 填空题表
2开发与运行环境
ASP.NET是创建动态网页的一种强大的服务器端技术,是一种基于B/S的应用程序。同时ASP.NET可以通过ADO.NET组件提供的接口访问数据库,便于开发出功能强大的动态可交换的web页面。因此选择ASP.NET作为前台开发工具。由于本系统开发的是可在多种数据库间无缝移植的考试系统,且SQL Server 2005具有强大的数据管理与处理能力及较高的安全性能,并支持远程存取等符合考试系统的需求,因此仅选择SQL Server 2005 作为后台测试数据库。
3系统实现的关键技术
3.1 组卷策略
教师登录系统后,选择试题的类型及所属章节及知识点,并给试题设置相应的难度系数和估计答题时间,点击提交按钮录入试题。其中难度系数是试题难易程度的指标。学生登录系统后,选择相应的题型、数量、以及所属章节,点击抽取按钮后系统就根据这些参数从试题库中自动抽取试题,在抽取试题前,系统会自动判断所输入的参数是否合法,如输入的题目总数与各题型的数目之和若不相等,则提示重新输入,否则就根据输入参数进行组卷。
3.2 考试中断与恢复的实现
若在考试过程中,因突然断电或其他意外情况使得考试中断,这时系统应具有实时保存学生数据的功能及恢复到意外发生时数据原始状态的功能。
设计思路是:使用Ajax的时间控件实现。考试时,利用时间控件倒计时,且一秒钟刷新一次,自动将学生填写的试卷信息保存到试卷表中。这样当学生再次登录时,只需输入用户名和试卷编号,系统就能够查询出断线时保存的数据信息,并根据这些信息还原试卷。
3.3 多数据库无缝移植策略
为了提高系统的通用性,本考试系统在数据访问层中使用抽象工厂设计模式,抽象工厂设计模式能够提供一个创建一系列相关或相互依赖对象的接口,接口不依赖于具体的实现,它彻底消除了接口的使用者和实现者之间的耦合关系,这样使该系统可以在任意数据库平台上使用(以SQL Server数据库和Access数据库为例)。
具体设计如下:在原有的解决方案中添加如下步骤:
(1)搭建数据访问层基本框架:
①新增抽象工厂项目(StudyWebDALFactory)。
②新增抽象产品项目(StudyWebIDAL)。
③实现项目之间的依赖。
(2)实现数据访问接口。关键代码如下:
学员信息SQL Server数据库访问(学员信息Access数据库访问与之类似):
public class StudentService:IStudentService {
…
using(SqlConnection conn=new SqlConnection(connString)){
…}}
(3)实现数据访问对象创建功能
实现了数据访问功能后,业务逻辑层要通过统一的方式调用数据访问层的方法,这是抽象工厂设计模式的核心意义所在。关键代码如下:
实现抽象工厂类:
public abstract class AbstractDALFactory{
public static AbstractDALFactory ChooseFactory(){
…
Switch(dbType){
case ”Sql”:
factory=new SqlDALFactory();
break;
case “Access”:
factory=new AccessDALFactory();
break;}
return factory;}
public abstract IStudentService CreatStudentService();}}
实现SQL Server实体工厂类(Access实体工厂类与之类似):.
public class SqlDALFactory:AbstractDALFactory{
public override IStudentService CreateStudentService(){
return new studentService();}
}
(4)业务逻辑层调用数据访问层方法。关键代码如下:
public static class LoginManager{
private static AbstractDALFactory factory= AbstractDALFactory.ChooseFactory();
private static IStudentService studentService=factory.CreateStudentService();
…
//业务逻辑层不能区别studentService是SqlServer版还是Access版
Student student =studentService.GetStudentByLoginID(loginID);
…
}
3.4 安全保障措施
本考试系统在业务逻辑层采用SHA1(Secure Hash Algorithm,安全哈希算法)进行加密,这种算法是不可逆的。当用户输入密码登陆时,系统把加密好的密码存储到数据库中,进行密码比较的时候,把用户输入的密码再进行加密,然后与数据库中的密码进行比较。另外,在数据访问层调用数据的方式全部使用存储过程,防止了注入式攻击的危害。
4总结
本文探讨和实现了基于ASP.NET的可跨数据库平台的在线考试系统,系统具有简单、快捷、可操作性、通用性强等优点,有效克服了传统考试方式的不足。但同时,系统还有需要进一步完善的地方,如对于主观题部分,只能依靠教师人工阅卷;考试成绩分析的智能程度还很低等等。
参考文献:
[1]王娜.基于ASP.NET技术的在线考试系统的设计与实现[J].科技信息,2010,(17).
[2]黄晗文,李健等.基于ASP的无纸化考试系统的设计与实现.湖南工业职业技术学院学报[J],2010,(03).
[3]郭冠洲.基于ASP技术的在线考试系统的设计与实现.科技信息[J],2010,(13).
[4]邹元杰.基于web的英语考试平台的构建.信息系统工程[J],2010,(30).