彭 莉 乔银银 王 亮
(武汉工程职业技术学院 湖北 武汉:430080)
目前高校学生考勤记录一般是教师通过学生管理手册来记录的,每次上课的时候教师以点名的方式依次手写记录学生到勤或缺勤情况,学期末根据每位学生的出勤情况算出平时成绩。通常计算平时出勤成绩需要一整天,并且还要逐一录入到学生管理手册上。这样不仅耗费课堂和期末统计时间,而且很难做到公平公正,因为不是每次上课都有空余的时间来点名。
随着数据库应用系统的开发使用,基于.NET框架的三层结构学生考勤系统可以替代教师完成考勤记录工作,并最终生成统计报表,便于教师和辅导员随时掌握全班的出勤情况,确保教学的正常秩序。
三层结构得到广泛使用是因为它能够使应用系统结构清晰、分工明确,便于后期扩展和维护。分别包括表现层、业务逻辑层和数据访问层,如图1所示。各层的作用如下:
(1)表现层:接收用户提出的请求,以网页的方式呈现给用户,用户通过表单提交或返回数据,实现系统和用户之间数据的相互访问。
(2)业务逻辑层:接收用户通过浏览器发出的请求,然后将请求传递给数据访问层,数据访问层处理后返回结果给客户端浏览器。业务逻辑层是实现表示层和数据访问层之间信息传递的桥梁。
(3)数据访问层:对数据进行操作,如添加、修改和删除等。主要为表示层或业务逻辑层提供数据服务。
图1 三层结构图
RFID(Radio Frequency Identification),称为射频识别技术,通过射频信号对特定目标进行识别并读写相关数据。RFID具有读写方便、易于操控、识别速度快、使用寿命长、可以应用于粉尘、油污和放射性环境等优点。由于它的特点,其产品市场应用广泛,如公交卡、食堂餐卡、门禁卡、银行卡等,用于快速采集目标对象的信息。
RFID系统主要由应答器、阅读器和应用软件系统三部分组成,如图2所示。应答器一般使用标签,每个标签具有唯一的电子编码,附着在物体上标识目标对象。阅读器是读取或写入标签信息的设备。应用软件系统将收集的数据进行处理,并为人们所使用。
图2 RFID系统结构图
工作原理:阅读器发射特定频率的电波,标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的数据信息,阅读器依序接收解读数据,传送给主机并由应用程序做相应的处理,从而自动识别目标对象。
根据学校考勤的要求,将学生考勤系统分为三个模块:(1)考勤系统前端;(2)考勤系统管理;(3)硬件设备管理;系统功能架构如图3所示。各模块功能如下:
考勤系统前端:实现学生贴卡并由系统根据预设参数做考勤状态判断,状态有三种(到勤、迟到、旷课)。
考勤系统管理:主要实现基于RABC(Role-Based Acess Control)角色权限管理、学生学籍管理、班级信息管理、考勤管理以及系统设置等。
硬件设备管理:用于实现RFID,便于学生贴卡。
图3 系统功能架构图
本系统创建的表有十二个,表之间的关系如图4所示。其中,按照数据库表的作用分为两部分:
图4 系统数据库表的关系图
(1)系统权限管理。使用 RBAC(Role-Based Access Control),即基于角色的权限控制。为了实现RBAC,在数据库中建立了5张表,包括SYS_USER_ROLE(用户表)、SYS_ROLE(角色表)、SYS_MODULE(模块表)、SYS_USER_ROL(用户角色表)和SYS_ROLE_MODULE(角色权限表)。用户表保存系统用户的基本信息。角色表保存的是用户所能扮演的角色信息,如教师、学生、管理员等。模块表保存的是系统模块信息,该表是一个树状结构的表,如图5所示。例如一个窗体下有许多按钮,窗体和按钮形成父子关系,按钮上级模块编号就是窗体的模块编号。用户角色表反映了一个系统用户扮演了什么角色。角色权限表反映了一个角色有哪些模块的权限,如教师和学生可以分配不同的模块权限等等。
当一个用户登录系统,首先查看该用户扮演了什么角色,然后查找该用户扮演的角色具有哪些模块的权限,得到用户拥有的权限模块后,就可以通过反射技术,将这些模块动态的添加到系统菜单控件,展示给用户,也就是说一个用户扮演什么样的角色就决定了该用户登录时可以看到哪些模块。
图5 模块表的树状结构图
(2)学生考勤管理。主要包括StuInfo(学生信息表)、ClassInfo(班级信息表)、ClassUserInfo(班级表与系统用户对应表)、Kqin(考勤信息表)、KqinJiLu(考勤时间设置表)、KqinType(考勤类型表)和KqinReport(考勤报表)。学生隶属于某个班级,通过贴卡获得到课时间,以此判断考勤状态,并进行统计,最后生成班级考勤报表,如图6所示。
以学生考勤系统为例,使用抽象工厂模式、反射机制和泛型来实现数据访问层。
图6 考勤系统报表统计图
抽象工厂模式,可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。例如在程序中定义一个类,类会有很多方法,程序员使用此类的时候只需知道调用哪个方法得到哪个具体对象,而无须知道如何获得。反射机制,即对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性,从而动态的调用对象的方法,创建对象实例。泛型,通过参数化类型来实现在同一代码上操作多种数据类型,利用“参数化类型”将类型抽象化,实现灵活的复用。
(1)创建数据访问层对象,通过在工厂(DALFactory)中用方法提供数据访问对象的创建,代码如下:
(2)实现业务逻辑层调用数据访问层方法,关键代码如下:
使用工厂模式易于交换产品系列,例如若要更换数据库,SQL Server、Access或者Oracle三者之一,只需在App.config的配置文件中稍作修改,便可完成数据库的更换。
基于.NET框架的三层结构学生考勤系统的开发和使用,可以实现校园办公自动化,提高教师的工作效率。但是仍然存在不足,如能否将校园一卡通与考勤卡合二为一,同时具备餐卡、考勤卡、上网卡等多种功能,有效推动高校学生教学管理规范化和系统化,切实为学生服务。
[1]俞露.基于ASP.NET学生成绩管理系统的设计与实现[J].电脑知识与技术:学术交流,2013,9(2):679-682,685.
[2]樊利军,王怀群,魏昊.基于RFID的学生考勤系统的设计与实现[J].北京工业职业技术学院学报,2013,12(2):10-13.
[3]刘萍.基于简单工厂模式的三层架构系统设计及应用[J].中国科技信息,2013,(14):107-107,111.
[4]向雄.ASP.NET用户权限管理研究[J].电脑编程技巧与维护,2010,(10):35-38.
[5]张秋生,张星云.在.NET框架下开发三层结构数据库应用程序[J].电脑编程技巧与维护,2009,(22):59-60,87.