梁红硕
摘 要:随着校园网的普及,以及传统考试方式逐渐凸显的弊端,基于网络的在线考试系统越来越受到人们的青睐。本系统采用C/S结构的“胖服务器”模式,服务器端承担了考生的身份验证、题目抽取、考生的考试监控以及数据库的管理等大部分工作,而客户端仅仅承担了考生的考试认证,不保存任何数据。本系统设计主要采用C#的三层架构模式,构建了数据访问层、业务逻辑层和表示层的三层体系架构。
关键词:C#;在线;考试系统
考试是教学工作的一项重要组成部分,是对学生学习情况以及教师的教学情况的考察。而传统的考试需要教师投入大量的经历,要经过出题、印卷、阅卷等多个环节,还存在纸张、设备的浪费。而基于网络的在线考试系统越来越受人们青睐,借助网络、数据库等技术实现的在线考试,既省时省力,还节约了资源。该系统中试卷可以根据试题库中的内容自动生成,避免学生的押题;题目采用的是标准化试题,方便计算机自主阅卷,大大提高了阅卷效率。
本系统采用了C/S结构的“胖服务器”模式,服务器端承担来了大部分工作,主要包括考生的身份验证、题目的抽取、考生的考试监控以及数据库的管理等工作;客户端仅仅完成考生的考试认证,不保存任何数据,它所完成的大部分功能都是通过调用服务器的远程对象来实现的。
1 在线考生系统功能设计
该系统用户主要分为两类:管理员(老师兼),考生(学生),其中管理员主要完成考试题目的管理、成绩浏览、考生信息的管理以及对服务器的管理,如上功能集中在服务器端,如图1所示。而考生主要进行登录、答题、题目标记、交卷的操作,此功能集中在客户端。
2 三层模式设计实现
本系统采用经典的三层架构,即数据访问层、业务逻辑层和表示层。其中,数据访问层主要实现对数据库的操作;业务逻辑层主要完成业务逻辑的封装,对表示层隐藏实现;表示层主要提供用户的操作界面,具体的业务逻辑由业务逻辑层实现。
2.1 数据库访问设计
2.1.1 通用数据访问类设计
由于每次访问数据库的基本步骤是类似的,比如与数据库的连接操作、执行非查询命令、执行返回结果集的查询命令等,所以首先设计一个通用类库,来完成对数据库的这些基本访问操作。对SQL Server的访问类叫SQLServerHelper,包含五个方法:ExecuteSQLNonQuery、ExecuteSQLReader、ExecuteSQLScalar、ExecuteProcederNonQuery和ExecuteProcederReader,分别用于执行SQL语句不返回结果、执行SQL语句返回只读、以正向方式访问数据库的DataReader对象、执行SQL语句返回标量查询、执行存储过程不返回结果、执行存储过程返回DataReader。这样,对数据库的访问,直接调用相应方法即可完成。
2.1.2 数据访问层的ORM实现
ORM为Object/Relation Mappinga的简称,即对象-关系映射,是随着面向对象语言的发展而产生的。C#语言是面向对象的程序设计语言,业务实体为对象,而现在通用的数据库是关系型数据,业务实体为关系数据,因此开发语言和数据库之间存在不匹配现象。而解决这个问题的方法就是建模。建模是一个很大的话题,不同复杂度的程序有不同的建模方法,建模需要确定的内容就是需要处理的问题领域包含哪些实体。经过分析,该系统抽象出四个实体类,分别是Administrator(管理员、教师)、Examinee(考生)、Exercise(考题)和Grade(成绩)4个类。
2.1.3 数据访问层设计
数据访问层主要负责数据库的访问,即完成对数据库的增加、修改、删除、查询等操作。因为分层结构中各个层职能明确,所以该层的主要功能是通过获取参数,执行相应命令,然后返回结果。该层主要设计4个类:AdminDAL、ExamineeDAL、ExerciseDAL和GradeDAL,分别完成对用户的管理、考生的管理、题目的管理和成绩的管理。其中ExamineeDAL的设计如下:
public class ExamineeDAL
{ public static bool AddExaminee(Examinee examiee) { } //添加考生
public static bool DeleteExamineeById(string id) { } //根据id删除考生
...... }
2.2 业务逻辑层设计
业务逻辑层主要封装相关的业务规则,实现过程中的数据访问操作通过调用数据访问层实现。它对流入的逻辑性数据的正确性及有效性负责,对流出的逻辑性数据及用户数据不负责。由于本系统业务较简单,该层并没有实质内容,只是简单的调用数据访问层的方法。对应数据访问层设计了AdministratorBLL、ExamineeBLL、ExercieseBLL和GradeBLL四个类,完成了相应的业务逻辑访问。
2.3 表示层设计
表示层是一个系统的门面,负责完成与用户的交互,一方面接收用户的输入,同时将输出数据呈现给用户,并决定呈现的样式。它对用户数据的有效性负责,同时管理会话及页面跳转等逻辑。
3 远程对象设计
本系统采用Remoting技术来完成远程通信,Remoting技术是在.NET平台下提供的用于开发分布式应用程序的技术框架,可以在不同应用程序域之间相互通信。该系统中客户端是通过调用位于服务器端的远程对象来获取服务的,因此设计供客户端调用的远程对象是该部分的重要内容。
客户端在登录时需要验证考生信息,由于客户端没有数据库,无法获取考生信息,需要把验证功能放在服务器端。在ServerObject类中添加ExamineeValidate方法,代码如下:
public Examinee ExamineeValidate(string name,string passwd)
{ Examinee examer=ExamineeBll.GetExamineeByNameNumber(name,passwd);
if(examer!=null) ExamineeOnlineManager.GetInstant().RegisterExaminee(examer);
return examer; }
登录成功后,考生便进入到考试窗体进行答题,而考生题目、考试时间等信息也来源于服务器端,所以还需要添加获取考生信息和考生题目的方法。
4 结语
在线考生系统是一个功能强大的基于通信的应用系统,本设计采用了C/S模式,同时应用了C#的三层架构,构建了数据访问层、业务逻辑层和表示层的三层体系架构,基于篇幅原因,没有给出客户端、服务器端的详细设计。
[参考文献]
[1]段海清.基于NET平台的分成架构与设计模式的设计与实现.硕士论文.电子科技大学,2013.11.
[2]陈青华.C#网络开发项目教程.电子工业出版社,2012.12.