Software Engineering and Applications 软件工程与应用, 2013, 2, 157-162 http://dx.doi.org/10.12677/sea.2013.26027 Published Online December 2013 (http://www.hanspub.org/journal/sea.html) B/S Structure-Based Checking on Work Attendance Management System Using Face Recognition Ji Zhang1, Xuan Wang2 1The 66040 PLA Troops, Engineer, Beijing 2College of Engineering & Information Technology, University of Academy of Sciences, Beijing Email: wangxuan_v02009@163.com Received: Nov. 16th, 2013; revised: Dec. 6th, 2013; accepted: Dec. 12th, 2013 Copyright © 2013 Ji Zhang, Xuan Wang. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. In accordance of the Creative Commons Attribution License all Copyrights © 2013 are reserved for Hans and the owner of the intellectual property Ji Zhang, Xuan Wang. All Copyright © 2013 are guarded by law and by Hans as a guardian. Abstract: For the inconvenience and questions of C/S framework checking on attendance management system, this paper puts forward the solution that is using facial recognition technology and B/S structure. The system is programmed on the interface provided by the face identification scanner. This system using MVC framework has realized data exchanging between the attendance machine and database, generation of the attendance records, pub licity of attendance result, query and statistics. The experimental result and application results show that this system can satisfy the demand of the modern work, and it costs low, maintains easily and works high efficiently. Keywords: Face Recognition; B/S Structure; Checking on Work Attendance; Management System 基于 B/S 结构面部识别考勤系统的设计实现 张 籍1,王 暄2 1中国人民解放军 66040 部队,北京 2中国科学院大学工程管理与信息技术学院,北京 Email: wangxuan_v02009@163.com 收稿日期:2013 年11 月16 日;修回日期:2013 年12 月6日;录用日期:2013 年12 月12 日 摘 要:针对 C/S 结构的考勤系统需安装客户端、查询不便等诸多不便以及传统考勤机代刷卡等问题,提出了 一种基于 B/S 结构的面部识别考勤系统。系统利用现有人脸扫描仪提供的编程接口,进行二次开发而成。系统 采用 MVC 框架,实现了考勤仪与数据库的数据交互和考勤结果生成、发布、查询、统计等功能。实验和应用 结果表明,这种基于面部识别技术的考勤系统能够满足现代办公的需求,其有易维护、管理方便、查询快的特 点。 关键词:面部识别;B/S 结构;考勤;管理系统 1. 引言 传统的 C/S 结构刷卡考勤系统,需要人工携带磁 卡,易于遗失,误码率高,并且存在代人考勤等舞弊 现象;实现考勤记录的查询需要下载客户端并设置数 据库连接,操作繁琐,应用不方便,因此,传统的考 勤方式已逐渐不再满足现代化管理的要求。 本文在对市场已有的面部识别产品(汉王人脸识 别机 S7150AII) 研究分析的基础上进行了二次开发, 将人脸面部生物特征信息作为身份认证手段,设计实 现了一套基于 B/S 结构的面部考勤系统。该系统除了 Open Access 157 基于 B/S 结构面部识别考勤系统的设计实现 满足一般的考勤需要外,还具有方便的查询功能和丰 富的管理功能。系统不但能方便地完成考勤功能,统 计出各种各样的考勤报表,还可通过网络进行查询管 理,使管理自动化成为现实。 2. 系统设计 2.1. 系统体系结构 考勤系统依托局域网或互联网,使分散于不同办 公地点的职员能够通过各办公点考勤仪实现网上签 到;单位领导、部门领导能够通过入网计算机随时查 询、汇总其管辖范围内职员的签到考勤记录;人事部 门可以通过后台管理自动生成考勤记录并修改可修 改部分请假人员的考勤记录,发布考勤信息。 系统在现有面部识别仪产品“汉王人脸识别机 S7150AII”的基础上进行二次开发而成,S7150AII 人 脸识别机提供了二次开发与系统集成框架包和 HwDevComm.dll 和Hdcp_Utils.dll 两个动态链接库。 通过产品软件开发包(SDK),可以在应用程序中增加 员工管理、记录管理、面部识别终端管理、图片管理 等功能,考勤机采用汉王专利人脸识别技术,与同等 商品相比具有识别快、准确率高、传输速度快等优势。 系统开发充分利用现有资源,整体开发成本低。系统 整体结构如图 1所示。 2.2. 系统功能模块设计 考勤系统的主要操作是管理员设置系统参数、考 勤参数并根据人员请销假情况修改系统自动生成的 考勤信息并发布考勤结果;用户输入面部信息并按规 定进行考勤、领导和管理部门进行考勤数据查询。系 统按照功能模块可分为查询模块、管理模块、统计分 析模块,如图 2所示。 查询模块分为:日常考勤查询、任务考勤查询、 会议考勤查询、明细查询四个子模块。日常考勤查询 数据有管理员发布生成,主要功能是查询人员的日常 上下班迟到、早退、缺勤、旷工等情况;任务考勤数 据由管理员发布生成,主要功能是查询人员参加组织 活动与重要任务的到课情况;会议查询数据由管理员 发布生成,主要功能实现人员开会到会情况与会议信 息的查询;明细查询实现按姓名、时间段等条件信息 直接读取考勤机记录信息,为用户提供原始查询数据。 互联网 …… 面部扫描仪 面部扫描仪 局域网 远程用户 服务器 管理终端 查询终端 远程用户 Figure 1. The structure of the system 图1. 系统整体结构 面部识别考勤系统 查 询 模 块 日 常 考 勤 查 询 任 务 考 勤 查 询 会 议 考 勤 查 询 统 计 分 析 模 块 管 理 模 块 明 细 查 询 Figure 2. The system function module 图2. 系统功能模块 统计分析模块通过 NetAdvantage for C#控件为用 户提供统计分析报表,用户可按照部门、时间、出勤率 等条件查询柱状、饼状与条形图,也可由 CrystalReport 组件生成统计报表。 管理模块由系统调用S7150AII 人脸识别机提供 的底层数据接口获取考勤机原始信息,有管理员设置 考勤参数与系统参数计算得到人员考勤结果,再过滤 调整请假与外出人员的考勤记录,由人事部门审核后 生成生成最终考勤结果并发布。其工作流程如图3所 示。 系统的 B/S 框架结构应用ASP 技术实现,使得领 导及管理部门可通过局域网或互联网上任一计算机 查询所管辖范围的考勤数据。 3. 考勤系统的软件实现 3.1. 系统数据库的实现 在系统中与数据库交互的部分采用标准的 sql 语 Open Access 158 基于 B/S 结构面部识别考勤系统的设计实现 考勤参数 系统参数 考勤机数据 考勤信息 审核信息 发布 考勤结果 提取 运算生成 修改 审核未通过 审核通过 提交人事部门 用户查询 管理员修改请假 与外出人员信息 Figure 3. Work flow of management module 图3. 管理模块工作流程 言,这样可以提供系统的通用性,从而使后台数据库 可以采用多种数据库系统,如:MS Acces s,MS SQL Server 或者 Oracle,可以根据用户的需求新型选择。 考虑到职员签到、签退操作会发生在上下班高峰 这一很短时间内,加之考虑到系统数据量大、安全控 制等因素,本系统采用了并发访问能力强、数据管理 能力强、安全控制措施健全的 SQL Server数据库。为 了实现灵活的报表功能,在 SQL Server中简历名称为 “HWATT”数据库,作为考勤系统的后台数据库,系 统中的几个表如图 4所示。 人员信息表(Employee),记录员工的 ID 号、姓名、 部门 ID、职务、面部图片等特征信息。 考勤时间表(Card),记录员工考勤时间、员工ID 号、考勤仪 ID 号等考勤数据信息。 部门登记表(Branch),记录职务名称、职务 ID、 部门名称、部门 ID 等信息。 日常考勤信息记录表(Daily_Result),记录员工 ID、有效考勤时间、考勤结果、上下班时间等信息。 会议考勤信息记录表(Meeting_Result),记录员工 ID、开闭会考勤时间、会议考勤结果、会议名称、会 议备注等信息。 Card PK CardID EmployeeID CardTime MachineID ... Employee PK EmployeeID BrchID EmployeeName Birthday IDCard Photo WorkPhone ... Branch PK BrchID BrchName BrchOrder Comment PID ... Daily_Result PK Daily_Result_ID EmployeeID CardTime Result AM1 AM2 PM1 PM2 Mission_Result1 PK Mission_Result_ID EmployeeID CardTime Result T1 T2 ... Meeting_Result11 PK Meeting_Result_ID CardTime Result T1 T2 MeetingName MeetingContent EmployeeID Figure 4. The main tables 图4. 主数据库关系表 任务考勤信息记录表(Mission_Result),记录员工 ID、任务信息、任务考勤结果、任务考勤开始结束时 间等信息。 3.2. 考勤机与服务器数据交互的实现 目前市场上的面部识别机厂商很多,国产品牌技 术较先进、影响力较大、被采用较多的就是汉王公司 的人脸识别终端机系列。本文的二次开发就是以汉王 公司的 S7150AII 为原型。S7150AII 人脸识别仪能够 自动扫描判读人员的面部信息,记录考勤时间,并通 过网络把考勤信息传送到服务器。此过程需要将把 SDK 开发包中的 HwDevComm.DLL 和Hdcp_Utils.dll 放到程序目录下,然后通过HwDevComm.dll 提供的 客户端模式向人脸识别终端发送请求获取记录信息。 开发中用到的主要常量定义和函数有: int HwDev_Execute();//定义客户端接口 其参数包含: pDevInfoBuf //面部识别终端信息指针 nDevInfoLen //信息缓冲区的长度 pSendBuf //发送缓冲区指针 nSendLen //发送缓冲区的长度 pRecvBuf //接收缓冲区首指针 pRecvLen //接收缓冲区的长度 pFuncTotalDone //回调函数指针 getHWDeviceTime(string resultStr) //获取识别终端考勤信息 getWorkStatus(string resultStr) //获取设备状态信息 Open Access 159 基于 B/S 结构面部识别考勤系统的设计实现 getAllPicName(string strResult) //获取人员面部识别信息 getAllEmployeeID(string resultStr) //同步人员 ID 号 formatIPAddress(string ip) //网络连接同步 3.3. 考勤情况网络查询 为了充分利用大型关系数据库的事务处理功能, 减少前台软件的计算工作量,在数据库中建立了用于 进行数据统计的多个视图和函数,视图对于前台软件 等同于表,但却不用进行复杂的关系运算。例如, 生成员工详细信息视图: SELECT R.Employ eeID A S ID,R.Em ploy eeCode AS工号, R.T itle AS职务, R.EmployeeName AS姓名,B.BrchID AS部门编 号,B.BrchName AS部门 FROM Employee R INNER JOIN Brch B ON R.BrchID = B.BrchID where B.BrchID > 1 按管理员设定的条件,自动生成考勤结果统计函 数: ALTER FUNCTION [dbo]. [fun_getEverybody_ Check_Timed_Daily] (@sb AS datetime ,@am1 AS datetime ,@am2 AS datetime,@am3 AS datetime,@am4 AS datetime, @pm1 AS datetime,@pm2 AS datetime,@pm3 AS datetime, @pm4 AS datetime) //设定 8个时间段参数,当考勤时间在时间段范 围内则有效并生成查询信息 RETURNS TABLE AS RETURN (SELECT max(KQZ_VIEW_EverybodyInfo.ID) as ID, max(KQZ_ VIEW_EverybodyInfo.[工号]) AS工 号, max(KQZ_ VIEW_EverybodyInfo.[姓名]) AS姓 名, min((case when CONVERT (CHAR, CardInfo.TT, 108) BETWEEN @am1 AND @am2 then CONVERT (CHAR, CardInfo .TT, 120 ) else '未考勤' end )) AS上午 上班, min((case when CONVERT (CHAR, CardInfo.TT, 108) BETWEEN @am3 AND @am4 then CONVERT (CHAR, CardInfo .TT, 120 ) else '未考勤' end )) AS上午 下班, min((case when CONVERT (CHAR, CardInfo.TT, 108) BETWEEN @pm1 AND @pm2 then CONVERT (CHAR, CardInfo .TT, 120 ) else '未考勤' end )) AS下午 上班, min((case when CONVERT (CHAR, CardInfo.TT, 108) BETWEEN @pm3 AND @pm4 then CONVERT (CHAR, CardInfo.TT, 120) else '未考勤' end )) as下午 下班, max(KQZ_ VIEW_EverybodyInfo.[职务]) AS职 务, max(KQZ_ VIEW_EverybodyInfo.[部门]) AS部 门, MIN(CONVERT(CHAR,CardInfo.TT,102)) AS考 勤时间 --CONVERT(CHAR,GETDATE(),102) AS 今天日 期 FROM KQZ_VIEW_EverybodyInfo LEFT OUTER JOIN ( SELECT KQZ_Card.EmployeeID id,KQZ_Card. CardTime TT FROM KQZ_Card WHERE convert (char, KQZ_Card.CardTime, 102) = CONVERT (char, @sb, 102) ) AS Ca rdInfo ON KQZ_VIEW_EverybodyInfo.ID = CardInfo.id GROUP BY KQZ_VIEW _EverybodyInfo.[姓名]) ASP.net 查询模块的实现: Default.aspx:系统默认查询界面(日常考勤查询) adLogin.aspx:管理员登录信息,进行身份校验。 Manager.aspx:管理用户模块 Open Access 160 基于 B/S 结构面部识别考勤系统的设计实现 MeetingAttend.aspx:会议考勤查询 Viewdetail.aspx:明细查询 Statics.aspx:统计分析 Timecheck.aspx:原始记录查询 MasterPage.master:母板页 4. 系统性能分析 整个系统模块可根据功能划分为2类:查询和管 理,因为用户签到和管理在功能上相对独立,用户在 使用时一般也不会一起使用,并且管理模块和考勤模 块可运行在不同的讨一算机上,所以将这 2个模块封 装成 2个独立的应用程序。这样数据库运行在服务器 上,考勤程序运行在考勤机上,而管理程序则运行在 管理的机器上(也可在同一机器上安装多个模块),可 以十分方便地完成考勤和管理工作。 系统采用 MVC 框架设计将控制层封装为dll 文 件,能根据条件设定过滤有用的考勤时间信息自动生 成考勤结果,数据层由接口程序依托网络控制考勤机 与数据库的信息交互,用户层面向查询和管理两类用 户,借助 web框架的灵活性与异地部署性用户能在不 同的环境下应用考勤系统,管理模块根据实际需求采 用的面向流程的设计方式,提高了系统的可操作性与 人性化设计。 考勤系统数据服务与应用服务可分开部署,可有 效避免因数据量过大时造成的系统冗余,因访问量过 大时系统迟滞等现象。 新型网络面部识别考勤系统在考勤的速度和准 确性能较好地满足一般单位的考勤要求。同时因为不 需记忆和输入密码,可避免携带卡片而带来的一系列 麻烦,员工对新型考勤系统的接受程度比传统的考勤 方式要高,领导对考勤结果的检查也比以往纸质数据 的统计上报要方便得多。 目前该考勤系统已经在本单位进行了局部应用 测试,取得了较好的使用效果。 5. 与同类产品的比较 5.1. 系统安装部署与应用范围 对于传统 C/S 结构考勤系统而言,客户端需要安 装专用的客户端软件。首先涉及到安装的工作量,其 次任何一台电脑出问题,如病毒、硬件损坏,都需要 进行安装或维护,再次系统软件升级时,每一台客户 机需要重新安装,其维护和升级成本非常高。采用B/S 构架的考勤系统,应用程序与数据接口在服务器端配 置,客户端不用安装任何软件,用户在使用时只需根 据相应权限选择执行对应的功能,系统升级与数据维 护在服务端进行,浏览器通过Web Server 同数据库进 行数据交互。 下图所示 C/S 结构系统与本系统应用安装部署对 比(图5、图 6分别表示 C/S 与B/S 结构安装部署过程)。 传统的 C/S 考勤系统只适用于局域网。而随着互 联网的飞速发展,移动办公和分布式办公越来越普 及,这需要我们的系统具有扩展性。这种方式远程访 问需要专门的技术,同时要对系统进行专门的设计来 处理分布式的数据。采用 B/S 结构框架设计的考勤系 统依托互联网面向不同的用户群,分散地域,这是C/S 无法作到的。与操作系统平台关系最小,可实现跨平 台跨类型终端的远程访问。 5.2. 系统实用效果 本系统底层设备 S7150AII 人脸识别仪采用汉王 最新“DualSensor V2.6”人脸识别算法,与同类型产 品相比识别速度快,准确率高,室内环境下不受环境 光线影响,在上下班高峰期平均识别速度为 1.5 秒/人, 与传统刷卡或指纹考勤机相比识别参数多,具有唯一 性与不可替代性。S7150AII 人脸识别仪采用标准 TCP/IP 接口,网络通讯密码验证功能、系统自检功能 等与传统 USB/串口设备连接方式相比速度快\安全性 高。 系统在数据查询功能上增加了 NetAdvantage 控 件的应用,利用控件的特性提高了系统可操作性与实 用性。如图 7、图 8所示灵活的操作界面,与传统的 操作界面相比操作灵活,直观简便。 在数据管理功能上,本系统增加了考勤结果流转 签批环节,考勤数据由管理员根据员工请销假与出差 情况修改后生成考勤结果可根据需要发送给人事部 门核准,待审核通过后考勤结果发布生成公共数据, 提交查询模块供用户查询,用户也可根据查询明细来 查看本人在一段时间考勤详细数据,基于环节流转的 设计增加了系统的管理科学性与用户参与性。如图 9 所示数据审核流程的登录界面。 Open Access 161 基于 B/S 结构面部识别考勤系统的设计实现 Open Access 162 Figure 8. Concise background management operation 图8. 简洁的后台管理操作 Figure 5. Structure of the C/S system installation 图5. C/S结构系统安装部署 Figure 9. Examine and verify login 图9. 数据审核管理操作 6. 总结 本系统在国内主流人脸识别机——汉王 S7150AII 进行研究分析,调用其数据接口开发了基于 B/S 结构 的面部识别考勤系统,该系统应用灵活、部署简便、 智能高效、功能强大。本文阐述了系统的设计与实现, 探讨了与同类产品相比具有跨平台跨终端、信息高识 别率、数据快速传输、操作简易、面向流程人性化设 计等的优点。经实际应用,满足了现代化办公条件下 考勤管理的需求。 Figure 6. Application of B/S structure system 图6. B/S结构系统直接访问 参考文献 (References) [1] [美] Nagel, C., Glynn, J., Skinner, M., 著. 李铭, 译 (2013) C# 高级编程(第8版). 清华大学出版社, 北京. [2] [美] Troelsen, A., 著. 姚琪琳, 朱晔, 肖逵等, 译 (2013) 精 通C#(第6版). 人民邮电出版社, 北京. [3] [美] 乔根森(Jorgensen, A.), [美] Wort, S., [美] LoForte, R., 等, 著. 宋沄剑, 曹仰杰, 译 (2013) SQL Server 2012管理高级教 程(第2版). 清华大学出版社, 北京. Figure 7. A variety of queries and flexible application 图7. 多种查询方式灵活应用 |