• 3.81 MB
  • 2022-05-17 13:18:10 发布

毕业设计(论文)-考勤管理系统

  • 40页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
摘要考勤管理系统是将信息技术引入人力资源管理之中,利用计算机对人力资源进行管理的一种信息管理系统,它是企业信息化中的一个重要组成部分。本篇论文将重点放在考勤管理系统上,通过对实际工作中遇到的一个项目情况的描述,从一个侧面反映出了企业信息化对企业发展所起的重要的作用。本文对项目的一些相应的技术背景和软硬件环境都做了简要的描述,重点在于考勤接口软件的设计及其实现。不同于一般软件项目的设计说明,本文在软件设计的说明部分着重描述了几个在本项目中具有代表性的解决方案:临时数据库的设计、INI配置文件的使用以及ActiveX控件的使用等。此外对于软件的界面设计和一些相应的代码实现也做了必要的说明。本文还介绍了人力资源管理系统中考勤系统的工作流程。考勤接口软件和人力资源管理系统的结合使用,最终使得从读取员工的考勤信息、当日考勤结果整理直到当月考勤结果统计的一系列操作能够顺利的完成。对比老式的考勤统计方法,可以看到它对提高企业工作效率有着重要的贡献。关键词:考勤管理企业信息化人力资源管理系统临时数据库 ABSTRACTThehumanresourcesmanagementsystemisaninformationmanagementsystem,whichusescomputerstoapplyinformationtechnologytomanagehumanresources.Thissystemisoneofthemostimportantpartsofenterpriseinformatization.Thedissertationistofocusontheattendancemanagementsubsystem.Fromthediscussionofoneprojectrnetinwork,itcanbeseenthatinformatizationisveryimportantforthedevelopmentofacorporation.Firstly,thedissertationdescribessomerelatedtechnologybackgroundandtheconditionofsoftwareandhardwareoftheprojectinbriefandthenemphasizeontwoaspects,whichoneisthesoftwaredesignintheattendancemanagementsubsystem,andtheotherishowmakeitcometrue.Theexplanationofthissoftwaredesignisdifferentfromthatofcommonsoftwareproject.Itintroducesseveralrepresentativemethodsindetail,whicharethedesignoftemporarydatabase,theuseofINIconfigurationfilesandActiveXcontrol.Moreover,itgivessomenecessaryexplanationsonthedesignsofthesoftware"sinterfaceandtheachievementsofsomecorrespondingcodes.Furthermore,thepaperalsointroducestheprocesshowtheattendancemanagementsubsystemworks.Theintegrationoftheattendanceinterfacesoftwareandthehumanresourcesmanagementsystemcanmakeaseriesofoperationsachievedsuccessfully,forexample,selectingandreadingtheattendanceinformationofstaff,thefiledresultsofattendancedailyandthestatisticalresultsofattendancemonthlyandsoon.Comparedwithsomeconventionaltoolsofattendancemanagement,thenewattendancemanagementsubsysteminhumanresourcesmanagementsystemmakesacontributiontotheimprovementofacorporation"sworkefficiency.KEYWORDS:Attendancemanagement,enterpriseinformatization,humanresourcesmanagementsystem,temporarydatabase 目录第一章绪论11.1问题的提出11.2问题的解决11.3本论文的主要内容1第二章软硬件环境概述22.1软件环境说明22.1.1ASP的简介22.1.2ASP的特点和原理22.2考勤机硬件设备说明32.1.1产品简述32.2.2两种接口规格说明32.2.3与电脑联机方式42.3考勤机软件接口说明62.4软件开发环境简述82.4.1后台数据库说明82.4.2前端软件开发工具介绍9第三章考勤接口软件设计113.1设计准备113.1.1考勤接口软件与数据库系统的通信方法113.1.2OCX在ASP中的使用123.1.3主要数据结构设计133.2界面设计163.2.1OA数据采集界面163.2.2考勤机数据采集界面173.2.3注册注销卡片界面183.2.4考勤机设置界面293.3主要代码实现203.3.1与数据库操作相关的一些代码实现203.3.2与考勤机操作相关的一些代码实现223.3.3与界面显示相关的一些代码实现25第四章考勤系统工作流程274.1利用考勤接口软件进行数据读取274.2在HRMS中进行考勤结果统计30第五章结束语34参考文献35致谢36 第一章绪论1.1问题的提出对于基于Web平台的网上考勤系统,存在着一个前台应用和后台管理的问题。而无论前台还是后台,都要对数据库进行调用和操作。因此如何创建网络数据库,以及客户端如何调用服务器端的数据库成为实现网上考勤的一个关键性问题。1.2问题的解决在这里,我采用B/S模式来实现客户端对服务器端的调用,所谓B/S模式即浏览器/服务器模式,是一种从传统的二层C/S模式发展起来的新的网络结构模式。在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web页面形式显示出来。而对于网络数据库的创建,则是利用ASP技术来解决。ASP(ActiveServerPages动态网页)是微软公司推出的一种用以取代CGI(CommonGatewayInterface通用网关接口)的技术。目前,Internet上的许多基于Windows平台的Web站点已开始应用ASP来替换CGI。简单地讲,ASP是一个位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器应用程序,如交互式动态网页,包括使用HTML表单收集和处理信息,上传与下载等等。在网络考勤中,对用户而言,进行网上信息查询的目的是寻找自己需要的产品或服务,而对于商品或服务提供者来说,其目的则是向用户推销自己的产品或服务。因此,让用户通过浏览器查询服务器的后端数据库是许多Web服务提供者必需有的服务,ASP通过内置的ADODB组件来实现这一功能。可以使用ADO去编写紧凑简明的脚本以便连接到ODBC兼容的数据库和OLEDB兼容的数据源。至于实现的细节,在后续部分的网络数据库章节中有详细介绍。1.3本论文的主要内容本文写作的主要内容是考勤接口软件的设计及其实现过程。为了便于读者的理解,本文会对一些基本的知识背景作简单的描述,介绍一些相关的概念和项目的软硬件环境情况。在软件的设计说明中,本文对于软件的功能的叙述不会太多,主要着眼点放在软件开发过程中遇到的一些技术难点和解决方法上。同时为了更好的说明HRMS的作用,加深读者对企业信息化作用的理解,本文还将对在NFCP实施的HRMS中的考勤系统的工作流程进行完整的介绍。最终完成的软件产品得到了用户的使用和肯定,项目也得以顺利完成。0 第二章软硬件环境概述2.1软件环境说明2.1.1ASP的简介ASP(Activeserverpages)是一种类似HTML(HypertextMarkupLanguage超文本标识语言)、Script与CGI(CommonGAtewayInterface通用网关接口)的结合体,但是其运行效率却比CGI更高、程序编制也比HTML更方便且更有灵活性,程序安全及保密性也比Script好。HTML(HypertextMarkupLanguage)是一种超文本标识语言,文件通过这种格式可以在互连网上载送浏览,用户只要使用网页浏览器工具就可以浏览这些文件,目前比较常用的工具包括MicrosoftInternetExplorer,NetscapeCommunicator等,由于HTML文件都是由标签(tag)所组成,因此它比较适合制作静态网页,再者,由于先天上的限制HTML是无法直接存取数据库的,所以存取数据库的工作大多是依靠CGI来处理。ASP不但可以包含HTML标签,也可以直接存取数据库及使用无限扩充的ActiveX控件,因此在程序编制上要比HTML方便而且更富有灵活性。ASP以HTML为基础,主体还是HTML代码,只是在需要ASP动态产生的地方加入ASP代码。ASP的最终显示结果也是HTML代码,可准确控制ASP的输出结果。Script(脚本)是由一组可以在WEB服务器或客户端浏览器运行的命令组合而成,目前在网页编制上比较流行的脚本语言包括VBScript,JavaScript。这些脚本大都是在客户端运行,因此,客户端可以很清楚的取得脚本的内容。所以,就安全性而言,这些客户端的脚本语言的确有危险。ASP虽然具有脚本语言的方便性,但由于他是在WEB服务器端运行,运行后再将运行结果以HTML格式传送至客户端的浏览器。因此ASP与一般的脚本语言相比,要安全的多。2.1.2ASP的特点和原理ASP可以和HTML或其它脚本语言(VBScript,JavaScript)相互嵌套ASP是一种在WEB服务器端运行的脚本语言,程序代码安全保密ASP以对象为基础,因此可以使用ActiveX控件继续扩充其功能如果浏览器向IIS/PWS请求的是.HTML文件,那么IIS/PWS会直接把文件的内容传给浏览器.但如果浏览器向IIS/PWS请求的是.ASP文件,则IIS/PWS会首先解释文件.IIS/PWS解释.ASP文件的过程中,遇到HTML标记或一般文字时会直接把读区的内容传给浏览器.但如果遇到<%%>的标记,则会把其中的内容视为程序,然后解释执行,但程序经过IIS/PWS解释执行后,其源程序代码不会传给浏览器,而只是把可显示的运行结果传给了浏览器ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。ASP脚本是采用明文(plaintext)方式来编写的。2 ASP脚本是一系列按特定语法(目前支持vbscript和jscript两种脚本语言)编写的,与标准HTML页面混合在一起的脚本所构成的文本格式的文件。当客户端的最终用户用WEB浏览器通过INTERNET来访问基于ASP脚本的应用时,WEB浏览器将向WEB服务器发出HTTP请求。WEB服务器分析、判断出该请求是ASP脚本的应用后,自动通过ISAPI接口调用ASP脚本的解释运行引擎(ASP.DLL)。ASP.DLL将从文件系统或内部缓2冲区获取指定的ASP脚本文件,接着就进行语法分析并解释执行。最终的处理结果将形成HTML格式的内容,通过WEB服务器"原路"返回给WEB浏览器,由WEB浏览器在客户端形成最终的结果呈现。这样就完成了一次完整的ASP脚本调用。若干个有机的ASP脚本调用就组成了一个完整的ASP脚本应用。2.2考勤机硬件设备说明NFCP采用的是深圳市俊思电子有限公司生产的JS2000智能考勤机,采用的打卡形式是非接触感应IC卡打卡。2.1.1产品简述JS2000智能考勤机的外形如图2-I所示。图2-1JS2000智能考勤机的正面和背面其产品的主要功能特点有:.非接触IC卡打卡。.大容量、高可靠信息存储。.具有在线提示。.语音提示。.背光照明。.内置后备电源。.大屏幕液晶。.提供系统信息、打卡信息和卡片信息查询。.密码保护。.闹钟功能。.可单机/多机工作(自带RS232和RS422接口)。.可发布短消息到液晶显示器上滚动显示。.提供门禁接口信号和电铃接口信号。2.2.2两种接口规格说明(1)RS232接口3 接口物理规格:DB9/Female,接口的各引脚信号如表2-1所示3表2-1JS2000RS232接口信号(2)RS422/RS485接口接口物理规格:双RJ45,如图2-2所示。其各引脚的节点信号如表2-2中所列。图2-2JS2000RJ45接口表2-2JS2000RJ45接口信号2.2.3与电脑联机方式JS2000同时提供两种联机方式:RS232和RS422oRS232通讯距离15m}仅限于单机通讯,简单易行,不需要附加设备;RS422通讯距离1200M,可用于单机、多机通讯,长距离需要布线,需要RS232/RS422转换器。4 (1)通过RS234将随机配置的RS232通讯线一端插入JS2000背面的9芯RS232插座,另一端与管理电脑串行口(COM1或COM2)相连。如图2-3所示。图2-3通过RS232的联机方式(2)通过RS422连接如图2-4所示,通过JS2000考勤机的RS422口JP1或JP2连接时,需要RS232/RS422转换器。由于长距离引起较大的信号损耗,应设置120的终端电阻。图2-4通过RS4222的联机方式如果需要多于一台的考勤机进行多机连接,可以采用RS422接口进行多机连接,多机互连的连接方式如图2-5所示,连接示意图如图2-6所示,多机联网是通过JPI和JP2的一进一出连接(JPI和JP2可以互换),最末端请连接120。的终端电阻。其总距离限制为1200米。由于NFCP的员工较多,因此使用了两台JS2000考勤机,员工可以在任意一台考勤机上打卡。它的联机采用的正式如图2-6所示的连接的方式,它使用了0号和I号两台考勤机互连,再将其接到考勤专员的电脑的COM串口上。图2一5通过RS4222的多机连接方式5 5图2-6RS4222多机联机示意图2.3考勤机软件接口说明为了给使用者提供二次开发的机会,JS2000智能考勤机提供了接口ActiveX控件JS2KComm.OCX,用户通过调用它的属性、方法和事件,可以实现对JS2000考勤机的控制。其中JS2KComm.OCX调用了控件MSComm.OCX通讯控件和title.dll动态库。ActiveX是Microsoft提出的一组使用COM(ComponentObjectModel,部件对象模型)使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。串行通信控件MSCOmm32.OCX正是这样的一种ActiveX控件,它提供了使用RS-232来进行数据通信的所有的协议,使用事件驱动方式来处理和解决各类通讯软件的开发设计问题。它通过串行端口传输和接收数据,为应用程序提供串行通讯功能。JS2KComm.OCX则是利用MSComm.OCX作为基础,针对JS2000考勤机开发的一个ActiveX控件,从而能实现对考勤机的通讯和控制。利用JS2KComm.OCX进行二次开发的示意图如图2-7所示。6 JS2KComm.OCX接口中的属性、方法及事件的说明分别见表2-3、表2-46以及表2-5。7 其中一些主要的方法介绍如下:.设置公司名调用方法:PublicFunctionSetCompanyName(ByValInStringAsString)AsBoolean参数InString:设置公司名.发布短信息调用方法:PublicFunctionSetShortMessage(ByValInStringAsString,ByValOptionStringAsString)AsBoolean参数InString:短消息内容;OptionString的格式为:模式+开始时间+结束时间模式固定为00开始时间和结束时间格式为:年月日时分如:"0001020a00”表示2000-01-0210:007.读取考勤机时钟读取属性:ReadTime时间格式:年、月、日、星期、时、分,秒,各2数字(十六进制表示)如:"010B1C04091E04",表示2001年11月28日星期三09:30:04.设置考勤机时钟设置属性:ReadTime时间格式:同上.注册卡片调用方法:PublicFunctionWriteList(ByVallistAsString)AsBoolean参数list设置格式:标志+卡号十打卡密码+卡片类型+工号+姓名+保留typedefstruct_LISTucharFlag;ulongCardNum;uintPassword;ucharCardType;ucharNo[13];//标记//卡号//打卡密码//卡片类型//工号ucharName(9];ucharDump[1];ucharChecksum;}LIST;//姓名//保留//和效验.注销卡片调用方法:PublicFunctionDelList(sContentAsString)AsBoolean参数sContent设置格式:类型+数据类型数据8 01位置(hex)02卡号(hex)如:"010003”表示删除存储位置为0x0003的记录;"020f1278a5”表示删除卡号为0x0f1278a5的记录.数据采集调用方法:PublicFunctionReadAllRecord(ByValDataTypeIDAsByte)AsBoolean参数DataTypeID为数据类型:DataTypeID=1时,采集打卡记录DataTypeID=2时,采集登录List记录2.4软件开发环境简述2.4.1后台数据库说明8 对于一个管理信息系统来说,后台的数据库是其存在的根本,几乎所有的相关数据都是存在数据库中的,即其所管理的信息都是存在数据库中的,对于管理者来说,相对的管理工作内容实际就是对数据库中的数据进行一系列不同的操作而己。SophiaHRMS所采用的是MicrosoftSQLServer2000作为其后台数据库,而需要导入的OA中的数据则是采用的Oracle8数据库。下面对数据库中一些常用的数据对象作个简单的介绍。.表(TABLE)表是包含数据库中所有数据的数据库对象。表定义为列的集合。与电子表格相似,数据在表中是按行和列的格式组织排列的。每行代表唯一的一条记录,而每列代表记录中的一个域。.视图(VIEW)视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。.存储过程(PROCEDURE)存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。而对于数据库中的数据对象,可以执行的主要操作有查询(SELECT)、更新(UPDATE)、插入(INSERT)、删除(DELETE)等。SQL(StructuredQueryLanguage,结构化查询语言)是关系型数据库的标准语言。SQL语言集数据查询(DataQuery)、数据操作(DataManipulation)、数据定义(DataDefinition)和数据控制(DataControl)功能于一体,是用于对存放在计算机数据库中的数据进行组织、管理和检索的工具。2.4.2前端软件开发工具介绍SophiaHRMS采用的是传统的三层结构构建的C/S结构的体系,即客户端/服务端的模式,其连接方式采用的是Soket连接。在一台电脑上安装服务端程序,将此台电脑作为服务器,设置好后台数据库的连接后,其他安装了客户端程序的联网电脑就可以运行HRMS了。SophiaHRMS的客户端软件程序采用.NET作为开发工具。.NET是著名的Microsoft公司开发的可视化软件开发工具。.NET被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,.NET则功能更强大、更实用。.NET具有以下的特性:基于窗体和面向对象的方法,高速的编译器,强大的数据库支持,与Windows编程紧密结合,强大而成熟的组件技术。但最重要的还是ObjectPascal语言,它才是一切的根本。ObjectPascal语言是在Pascal语言的基础上发展起来的,简单易学。9 .NET提供了各种开发工具,包括集成环境、图像编辑(ImageEditor,以及各种开发数据库的应用程序,如DesktopDataBaseExpert等。除此之外,还允许用户挂接其它的应用程序开发工具在.NET众多的优势当中,它在数据库方面的特长显得尤为突出:适应于多种数据库结构,从客户机/服务机模式到多层数据结构模式;高效率的数据库管理系统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。第三章考勤接口软件设计3.1设计准备所设计的考勤接口软件要完成使OA系统和考勤机能和HRMS进行数据交换,同时能对考勤机进行操作等功能。在进行具体的设计之前需要解决的几个主要技术问题就是:考勤接口软件分别和OA系统、考勤机以及HRMS的通信方法,OCX的调用,还有就是一些主要的数据结构的设计。3.1.1考勤接口软件与数据库系统的通信方法.NET对数据库系统提供了良好的控件支持,能方便快捷的对数据库的数据进行操作。数据库控件都具备一定的属性,程序设计人员可以在设计过程中设置控件的多种属性,也可以在程序运行过程中通过程序来设置不见的各种属性。这里选择ADO控件作为主要的数据库访问控件。ADO(ActiveXDataObjects)就是指ActiveX数据对象,ADO是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。像Microsoft的其它系统接口一样,ADO是面向对象的,它是Microsoft全局数据访问(UDA)的一部分。.NET中的ADO控件包括有连接(Connection)、命令(Command)和数据集(RecordSet)等对象。为了使用简单和方便,可采用TADOQuery控件。TADOQuery控件用来在底层的ADO数据源中应用SQL语言,使用该控件可以访问多个表。使用SELECT语句从ADO数据源的数据表中读取数据。在ADO数据源的数据表或其他源数据对象中执行INSERT,DELETE,UPDATE,ALTERTABLE以及CREATETABLE等操作。TADOQuery控件的类层次结构如图3一1所示。TADOQuery控件对应的主要属性和方法的说明见表3-1、表3-21011 当采用TADOQuery控件时,对HRMS的数据库支持在原有的系统中就已经配置好,因此主要就是要对OA的数据库系统进行配置,参考表3一1中所说明的ConnectionString属性,对于在程序运行过程中进行数据库连接时所需要配置的就是此属性的值,其内容包括所连接的数据库的地址,数据库的名称以及登录的用户名和密码等值,由于OA系统是另一家公司实施的,其系统的变更不属于我们所掌控的范围,因此如果在程序中对此属性进行固化,将来OA系统做出某些变更就可能会使得程序与OA数据库的连接失败。为了灵活起见,同时也为了运用简单,可采取设置配置文件的方法,这里采用INI文件格式。INI文件允许有许多个小节,每个小节又允许有多个关键字,“=”后面是该关键字的值。值的类型有三种:字符串、整型数值和布尔值。其中字符串存储在INI文件中时没有引号:布尔真值用1表示。布尔假值用0表示;注释以分号“;”开头。在.NET中能很方便的对INI文件进行操作,包括打开INI文件,读取关键字的值,写入INI文件,删除关键字、小节操作等等,具体的操作方法这里就不再一一描述。采用这种方法的话,就可以在运用程序所在目录里建立一个INI文件“RegInfo.ini",在其中设置的OA数据库的内容如下:[Server]Name=OAUser=hrmsPassword=hrms11 其中“[Server]”表示该小节名称为“Server",即该小节说明的是OA数据库的服务器信息。"Name=OA”表示OA数据库的名称为“OA","User=hrms"和“Password=hrms”分别表示登录数据库的用户名和密码分别为“hrms”和+mss,这里都采用明码表示是为了维护和操作方便,当然也存在一定的风险。在如此设置以后,如果OA数据库的配置发生了任何改变,只要修改“RegInfo.ini"文件中某些对应的值就可以了。3.1.2OCX在ASP中的使用要对考勤机进行通信和控制,就得使用JS2000考勤机提供的接口ActiveX控件JS2KComm.OCXoActiveX控件可以在任何系统(包括运行应用程序的用户或客户)中运行。在运行之前,必须在系统注册表中注册。通常,可以用RegSvr32.exe程序来进行注册,这个程序可以在各种版本的Windows系统中找到。也可以使用bin目录下的TRegSvr32.exe来注册,这是一个命令行的工具程序。要在.NET应用程序中使用ActiveX控件,首先要把ActiveX控件加到.NET中的组件面板上。这样,组件面板上将出现该ActiveX控件的图标。把ActiveX控件加到组件面板上后,就可以像其他.NET组件一样把它拖放到窗体上使用。INI文件允许有许多个小节,每个小节又允许有多个关键字,“=”后面是该关键字的值。值的类型有三种:字符串、整型数值和布尔值。其中字符串存储在INI文件中时没有引号:布尔真值用1表示。布尔假值用0表示;注释以分号“;”开头。在.NET中能很方便的对INI文件进行操作,包括打开INI文件,读取关键字的值,写入INI文件,删除关键字、小节操作等等,具体的操作方法这里就不再一一描述。采用这方法的话,就可以在运用程序所在目录里建立一个INI文件“RegInfo.ini",在其中设置的OA数据库的内容如下:[Server]Name=OAUser=hrmsPassword=hrms其中“[Server]”表示该小节名称为“Server",即该小节说明的是OA数据库的服务器信息。"Name=OA”表示OA数据库的名称为“OA","User=hrms"和“Password=hrms”分别表示登录数据库的用户名和密码分别为“hrms”和mss,这里都采用明码表示是为了维护和操作方便,当然也存在一定的风险。在如此设置以后,如果OA数据库的配置发生了任何改变,只要修改“RegInfo.ini"文件中某些对应的值就可以了。要安装使用JS2KComm.OCX,可进行如下操作:从主菜单中选取Component}ImportActiveX命令,这将打开ImportActiveX对话框。然后点击Add按钮,在目标文件夹中选择JS2KComm.OCX,选中后再点击Install按钮即可。操作的对话框如图3-2所示。121313 在安装的过程中,ASP的编译系统会提示一些出错信息,这是由于原有的ActiveX控件是采用其他语言设计的,因此需要对他提示的错误地方进行部分修改,以使得控件可以正确使用,具体的修改就不再叙述。此外,JS2000考勤机每个都有一个序列号,当采用多机连接时,考勤机不同的序列号就代表着不同的机器,因此考勤机序列号是考勤机的唯一标识。由于其序列号的可选范围由0至255,为了能满足扩展性能,不能将所连接的考勤机的序列号写到程序中,而应在程序载入前就需要知道有哪几台考勤机实现了联机,所以仍然可以采取设置配置文件的方法,即建立一个考勤机号的配置文件,将所有联机的考勤机的序列号都写进此文件。使用已有的INI文件“RegInfo.ini",在其中加入如下的内容:[Device]0=00001=0001这就表示现在有两台考勤机联机,其序号分别为0000和0001,如果还有更多的考勤机联机,可以按这样的一个格式在文件里自由的添加。3.1.3主要数据结构设计在与数据库系统的连接和与考勤机的连接都己完成的情况下,程序中最重要的部分就是考勤数据以及OA数据的结构设计了。在此,可以先定义一下考勤数据和OA数据的单条记录形式如下:13 .考勤数据记录pInData=八TInData;//日考勤数据TInData=RecordErnpId:integer;//员工IDWorkCardatring;//员工考勤卡号Date:String;//打卡日期Time:String;//打卡时间end;.OA数据记录pOAData=^TOAData;//OA数据TOAData=RecordEmpId:integer;//员IIDBDate:string;//开始日期EDate:String;//结束日期BTime:String;//开始时间ETime:string;//结束时间Sum:string;//时间总和Style:integer;//具体类型AType:integer;//类型:0加班,1假事SalSumatring;//转换后的加班时间end;以上可以看到每条记录都是一系列数据的组合,要在程序中使用以上数据记录,根据传统的方法,可以定义一个链表或者数组,每当从考勤机或者从OA系统中读取一条记录时,就要向链表或者数组中插入一条记录。这样做有明显的缺陷:由于数据量比较大,比如从考勤机中读取的考勤记录一次可能有上千条,如果采用数组的话就得占用比较大的系统存储资源;同时,对数据的操作非常的不便,即使是要浏览一次所有的数据,也得对整个数组进行一次遍历,如果需要在中间插入一条数据或者删除一条数据则更为麻烦;再者,不便于数据的排序,比如要使读取的数据按打卡的日期或者打卡的时间排序,则所要采用的算法又是一个很复杂的问题了。由于以上三个主要缺点:耗费系统资源、操作不便、排序困难,可以考虑将数据存储的形式改由程序外部存储,而这又有两种方式可以考虑:简单文本文件存储和复杂的数据库文件存储。如果采用简单的文本文件形式,则可解决上述三个缺点中的第一个,即可以减少耗费的系统资源,但对于后两个缺点操作不便和排序困难则没有太大的改善。如果采用数据库文件的形式则可以克服以上三个缺点,但是却对系统提出了更高的要求,即要求系统中能支持该种数据库。为此,可采取一种两者结合的方案,即同时采用文本文件和数据库文件的形式,文本文件作为数据的备份形式存在,而数据库文件则作为程序运行中的中间文件形式存在。具体来说,就是在程序开始运行时创建该数据库文件,在程序结束时则将该数据库文件删除,该文件主要是在程序运行中使用。而其中读取到的重要数据则存储到文本文件中,程序结束后文本文件仍然存在。基于以上思路,可以选择MicrosoftOffice系列中的Access数据库作为数据库文件支持。因为Office软件的使用范围比较广,大部分的办公电脑系统中都装有OfficeAccess数据库,再者它也支持关系数据库的一些基本操作,使用也比较简单。因此可以在程序开始运行时在当前文件夹下生成一个临时的Access数据库文件14 “Aceco.mdb",为了对应上面所描述考勤数据记录和OA数据记录形式,在这个数据库文件中可以建立两张表:考勤记录表ATTRECORD和OA数据一记录表ATTINFO,具体的字段说明见表3-3和表3-4以上只是记录数据的两张表,由于要和HRMS中的数据库进行交换,因此还需要从HRMS读出员工的信息和考勤设置的一些信息,因此在数据库文件中还需要创建两张表:员工信息表EMP_1NF0和考勤类型表AT几TYPEINFO,具体的字段说明见表3-5和表3-6.根据几个表的说明可以看到,从HRMS中可以读出员工的信息,其中每个员工的考勤卡号以及身份证号都可以从HRMS从获得,而考勤卡号和身份证号对每个员工都是唯一的,因此可以用来识别员工身份。从考勤机里读取出来的考勤记录没有员工信息,只有考勤卡号,而从OA数据库中读出的数据记录只有身份证号,其他的信息也没有。正是通过HRMS里导出的员工信息表EMP_INFO才能将考勤打卡记录以及OA数据库中的加班和假事记录和HRMS里的员工信息一一对应,其简单示意图见图3-31516 至于文本文件的使用,则可以在应用文件夹里创建一个Data文件夹,每当从考勤机从读取出一次考勤记录时,则可以生成一个记录的文本文件,把一次读取出的所有考勤记录都写入到该文本文件中,可以作为原始一记录备份或者是未来查询数据所需,至于写到文本文件中的记录格式则可采取简单的形式,每条记录的格式可设计如下:员工ID,考勤卡号,打卡日期,打卡时间比如在备份的文本文件中可以有如下的数据记录:61,0005044077,2003-O5-29,07:28:00118,0009360763,2003-O5-29,07:28:00这里采用“,”作为分隔符是为了在ASP中操作简便,因为在ASP中的类有直接将带有“,”的字符串自动分割成不同的子字符串的功能。在说明了如何对数据进行存储之后,还得说明一下采用临时数据库文件和文本文件这样的外部文件存储的弊端。首先就是对软件的应用增加了限制,即必须在安装有MicrosoftOfficeAccess的电脑上才能运行,其次由于数据都是在程序外部,也使得数据的安全性有所降低,因为对于这样的外部数据可以进行人为的修改,比如将上述文本文件中的某条考勤数据记录中的打卡时间进行一下修改再保存,这样的改变是无法被察觉的,因此也增加了数据出错的机会。但是因为这些考勤数据并不是公司的机密数据,对它的安全性要求并不高,而且这样做能有效的克服耗费系统资源、操作不便、排序困难等困难,因此在权衡之下采用这样的方法是比较方便有效的。当然,对于有保密要求的一些数据(比如公司的员工薪酬数据),这样的做法是有欠妥当的。3.2界面设计根据软件所需要完成的功能,而且考虑到操作中的一些逻辑性,可以将整个软件分成四个功能界面:OA数据采集界面、考勤机数据采集界面、注册注销卡片界面以及考勤机设置界面。具体的实现可以采用TdxPageControl控件,它可以方便的添加和删除页面,也可以实现多个页面的切换。3.2.1OA数据采集界面该界面主要的主要功能是从OA数据库采集员工的加班和假事记录。其界面可参考图3-41617 该界面左边是功能按钮,右侧上方是时间段的选择,右侧下方的大片区域则是OA数据的显示区域,这里的显示采用了TCMStatGridFrm类,这是一种具有统计的Form类,它可以方便的将数据集的结果显示在页面上,能方便的进行排序和查找,其结果显示的形式会在后面的章节中看到。3.2.2考勤机数据采集界面此页面是实现从考勤机读取员工打卡记录的功能,其实际的界面设计可以参考图3-5该界面左边是功能按钮,右侧是考勤打卡记录的显示区域,这里的显示仍是采用TCMStatGridFrm类。在左侧的功能按钮下方有个端口选择的选项,当联机的考勤机确定以后,还需要确定电脑上的连接端口,有的电脑有一个com口,有的电脑有两个,因此在对考勤机操作前需要在界面上设置联机的端口号,这样才能正确的从考勤机中读取数据。简要介绍一下几个按钮的功能:.测试连接测试与所有联机的考勤机的连接情况,只有在测试连接成功以后才能进行下面几个按钮的操作功能。.接收数据按联机的考勤机序列号大小顺序依次从考勤机读取数据,并在页面中显示出来。读出的数据存放在临时Access数据库的ATTRECORD表中,读取完数据后立刻生成备份文件,存放在Data文件夹中。.导出数据将临时Access数据库中的考勤一记录表ATTRECORD中的员工考勤数据导入到HRMS的数据库中。17 .还原备份将Data文件中的备份考勤数据读入到临时Access数据库中的考勤记录表ATTRECOR来,并在页面中显示出来,以供查询和再次导出。.清空数据清空在页面上所看到的所有考勤数据,即将临时数据库中的表ATTesRECOR中的所有数据删除。3.2.3注册注销卡片界面以上的两个页面是该接口软件的主要功能,此外还需要有对考勤机进行操作的一些功能,此界面就是实现从考勤机读取员工打卡记录的功能。界面的设计见图3-6所示。该界面左边为员工目录,其采用的是TTreeView类,这是一种树形显示控件其实际的显示形式可见后面章节。右上方为具体的员工信息显示,即在左边员工树中选中的员工的具体信息。右下方就是用来执行注册注销考勤卡的功能部分,在考勤机列表中选择要注册注销卡号的考勤机,然后在右方可以选择不同的功能,当按下采集卡号的按钮后,将新卡靠近考勤机,这时就可以将采集到的卡号信息显示在下面的空格中,这时再选择注册卡片按钮就可以将采集到的考勤卡号注册到选中的员工信息中。同样,注销卡片就是将选中的员工的考勤卡号从考机中注销掉,这一般用于员工离职后其考勤卡作废时的操作。1819 3.2.4考勤机设置界面此界面就是实现对考勤机的一些基本设置的功能。界面的设计可见图3-7所示。该页面比较简单,左边为要操作的考勤机列表,只在右边添加了两项功能,设置考勤机公司名称和校准考勤机时间,其中考勤机公司名称设置由人工输入,输入确认后就会在考勤机上显示出所输入的公司名称。校准考勤机的时间则是由当前电脑上的时间日期为准,即将考勤机上的时间日期设置的和当前电脑的时间日期一致,这个功能比较重要,因为如果考勤机上的时钟不对的话会使很多正常1920 打卡的员工显示出打卡异常的记录,比如说一名员工在7点58分打一卡进公司,而这时考勤机的时钟却显示为8点10分,这样就会判断为这名员工迟到一次,这显然是需要避免的问题,因此当发现考勤机的时钟异常的时候就需要采用此功能重新设定考勤机的时钟。3.3主要代码实现在界面设计好之后就需要进行编码工作了,这是整个设计工作中工作量最大的一部分,也是最容易出错的一部分,需要考虑许多算法设计、逻辑设计的问题,由于整个程序的代码太长,不能完全列出,因此在此就只对其中一些比较重要的代码实现做一些说明。3.3.1与数据库操作相关的一些代码实现与数据库相关的操作主要是对Access临时数据库以及OA数据库的一些操作,因为对于HRMS的数据库,已经在HRMS中有封装好的类来实现这一功能,而实现上述操作最主要就是用前述的TADOQuery类。.临时Access数据库的创建procedureTLoadMaineeFrm.CreatDataBase;varCreateAccess:OleVariant;strSqlatring;qryAdo:TADOQuery;beginqryAdo:=TADOQuery.Create(nil);tryScreen.Cursor:=crHourGlass;tryifFileExists(FstrPath+"Aceco.mdb")thendeletefile(FstrPath+"Aceco.mdb");CreateAccess:=CreateOleObject("ADOX.Catalog");CreateAccess.Create("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+FstrPath+"Aceco.mdb");qryAdo.Close;qryAdo.SQL.CIear;qryAdo.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+FstrPath+"Aceco.mdb";qryAdo.SQL.Add("CREATETABLEEMP_INFO(IDintNOTNULL,EMP_CODEvarchar(100),EMP-AMEvarchar(100),EMP_DEPTvarchar(I00),EMPOSvarchar(100),EMP_CARDvarchar(100),ID_CARDvarchar(100))");qryAdo.ExecSQL;qryAdo.SQL.CIear;qryAdo.SQL.Add("CREATETABLEAT几TYPE_INFO(IDintNOTNULL,NAMEvarchar(20),STYLEint)");qryAdo.ExecSQL;20qryAdo.SQL.CIear;21 qryAdo.SQL.Add("CREATETABLEATT_RECORD(EMP_IDint,ATTDATEvarchar(20),ATTTIMEvarchar(20),EMP_CARDvarchar(100))");qryAdo.ExecSQL;qryAdo.SQL.CIear;qryAdo.SQL.Add("CREATETABLEATTINFO(EMP_IDint,BEGIN-DATEvarchar(20),BEGIN-TIMEvarchar(20),END_DATEvarchar(20),END_TIMEvarchar(20),ATTSUMvarchar(20),ATT-STYLEint,ATTTYPEint,SALSUMvarchar(20))");qryAdo.ExecSQL;qryAdo.SQL.CIear;qryAdo.Close;exceptShowMessage(’创建数据表失败!’);end;finallyScreen.Cursor:=crDefault;qryAdo.Free;end;end;简要说明:首先在应用文件夹下查找临时数据库文件“Aceco.mdb",如果文件已存在则将其删除,然后再在应用文件夹下生成一个Access临时数据库文件"Aceco.mdb",数据库文件生成之后再在其中创建四张表,也就是前面己经描述过的员工信息表EMPINFO、考勤类型表ATTTYPEINFO、考勤记录表ATTRECORD和OA数据记录表ATTINFO,每张表的字段名称以及数据类型都在相应的SQL语句中写明。.向数据库插入考勤记录procedureTLoadMainFrm.InsertData(pData:pInData);varqryAdo:TADOQuery;strSqlatring;beginqryAdo:=TADOQuery.Create(nil);tryqryAdo.Close;qryAdo.SQL.CIear;qryAdo.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;Dataend;end;简要说明:输入参数为前面描述过的一条考勤记录的数据结构,在和临时数据库“Aceco.mdb”连接成功以后,将该条记录的所有字段内容写在一条INSERT的SQL语句中,再将该记录插入到考勤记录表ATTesRECORD中。.清空临时数据库中的数据procedureTLoadMainFrm.ClearData;Va21qryAdo:TADOQuery;22 strSql:string;beginifMessageDlg(,确实要清除OA数据吗?",mtInformation,[mbYes,mbNo],0)=mrNothenExit;qryAdo:=TADOQuery.Create(nil);tryScreen.Cursor:=crHourGlass;qryAdo.Close;qryAdo.SQL.CIear;qryAdo.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+FstrPath+"Aceco.mdb";qryAdo.Close;strSql:"DELETEFROMAT几INFO;qryAdo.SQL.Add(strSql);qryAdo.ExecSQL;qryAdo.Close;ShowMessage(,清除数据成功!’);finallyScreen.Cursor:=crDefault;qryAdo.Free;end;end;简要说明:在和临时数据库“Aceco.mdb”连接成功后,之间将OA数据记录表ATTINFO中的所有数据删除。3.3.2与考勤机操作相关的一些代码实现这是最困难的一部分代码,因为和考勤机的硬件相关,在完成编码后还需要进行大量的调试工作,只有在考勤机上进行实际的调试后才能知道代码的完成效果如何,而这其中最为关键的部分就是从考勤机中读取考勤数据,这也是整个接口软件的核心部分。.考勤记录的读取从考勤机中直接传送出来的字符数据格式实例如下:0004FAFAFA030108008EDA4D11390237C8BD11390237C8BD1204008EDA4D1204第一行四位数说明总的打卡记录数,如上所示0004就是表示总共有四条打卡记录。第二行以FAFAFA开头的这行数据表示的是日期,即后面的六位数"030108”表示的是打卡的日期。下面不以FAFAFA开头的记录就表示员工的打卡记录,其中前八位表示考勤卡号,后四位表示打卡时间,比如第三行数据"008EDA4D”表示考勤卡号,"1139”就表示打卡时间。其中所有的数据格式都是2223 为16进制。而在所有的数据库中显示的数据都是10进制的,因此需要将日期、卡号和时间都转换为10进制的数。同时在数据库中员工的考勤卡号都是整10位的数,而日期都是采用“yyyy-mm-dd”的格式,时间都是“hhas”的格式,因此在转换为10进制数后还需要在不足的位前补零。因此为了实现以上功能,先要完成16进制转10进制和在空位补0这样两个函数。16进制转10进制的函数实现如下(Instr为输入的16进制数):functionHexToInt(Instratring):integer;variLoop,iSum:integer;functionTrans(InChar:char):integer;beginresult:=0;caseInCharof"0","1","2","3","4","5","6","7","8","9":result:=StrToInt(InChar);"A":result:=10;"B":result:=11;"C":result:=12;"D":result:=13;"E":result:=14;"F":result:=15;end;end;beginiSum:=0;foriLoop:=1toLength(Instr)doiSum:=iSum*16+Trans(Instr[iLoop]);result:=iSum;end;在输入字符串前加0的函数实现如下(Instr为输入字符串,InNumber为输出字符串总的字符个数,不足就在前面补0):functionGetZero(Instratring;InNumber:integer)atring;variLoop:integer;strTans:string;beginstrTans:=Instr;foriLoop:=Length(Instr)+1toInNumberdostrTans:="0"+strTans;result:=strTans;end;当以上的函数完成后,即可完成考勤数据转换的函数,这里只截取其中的一部分代码,其中strTemp就是在上面见到的考勤机输出的字符数据中的一行。.考勤机公司名称设置procedureTLoadMainseFrm.SetComName;var23bFlag:boolean;24 beginbFlag:=True;ifMessageDlg(,确实要设定考勤机公司名称吗?",mtlnformation,[mbYes,mbNo]=mrYesthentryScreen.Cursor:=crHourGlass;FJS2KComm.Slave:=1;tryifFJS2KComm.SetCompanyName(edtName.Text)thenbeginend;exceptShowMessage(’考勤机操作失败!’);bFlag:=False;end;ifbFlagthenbeginShowMessage(’设定公司名称成功!’);end;finallyScreen.Cursor:=crDefault;end;end;end;简要说明:sleep(15000)语句是表示等待15秒的时间,即当你把卡放到考勤机上时等待15秒的时间再读取考勤卡号,这是因为考勤机在室外,而联机的电脑在室内,当一个人进行操作时需要一定的时间差,所以才进行了这样的设定。而读取到的卡号仍然是16进制的数,所以还需要将它转换为10进制的数,读取卡号的函数CardInfo:在第二章表2-4中已经做了说明。procedureTLoadMainseFrm.SetComName;varbFlag:boolean;beginbFlag:=True;ifMessageDlg(,确实要设定考勤机公司名称吗?",mtlnformation,[mbYes,mbNo),0)=mrYesthentryScreen.Cursor:=crHourGlass;FJS2KComm.Slave:=1;tryifFJS2KComm.SetCompanyName(edtName.Text)thenbeginend;24except25 ShowMessage(’考勤机操作失败!’);bFlag:=False;end;ifbFlagthenbeginShowMessage(’设定公司名称成功!’);end;finallyScreen.Cursor:=crDefault;end;end;简要说明:此段代码比较简单,就是将在界面上输入的公司名称设置到考勤机中,采用的方法SetCompanyName也在第二章表2-4中有过说明。3.3.3与界面显示相关的一些代码实现除了和数据库的操作以及对考勤机的操作以为,其他的就是有关界面显示的一些代码,这属于软件表面的一部分工作,即使算法设计的再好,没有好的显示界面也是不成功的,因为对于一般的用户来说,能直接感受到的就是软件的界面己经操作的方便与否,因此这部分代码也需要认真对待。.考勤数据的显示procedureTLoadMainFrm.ShowRecord();varqryAdo:TADOQuery;strSqlatring;beginqryAdo:=TADOQuery.Create(nil);tryqryAdo.Close;qryAdo.SQL.CIear;qryAdo.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+FstrPath+"Aceco.mdb";qryAdo.Close;a.EMP_DEPTas部门,"+"a.EMP_POSas职位,a.EMP_CARDas卡号b.ATTDATEas日期,b.ATTTIMEas打卡时I旬"+"FROMEMP_INFOa,ATTRECORDbWHEREa.ID=b.EMP_ID’;qryAdo.SQL.CIear;qryAdo.SQL.Add(strSql);qryAdo.Open;FStatGrid.ReadDataSet:=TClientDataSet(qryAdo);qryAdo.First;qryAdo.Close;finally25qryAdo.Free;26 end;end;简要说明:这段代码是将临时数据库中的考勤一记录表ATTRECORD中的数据显示在界面上,FStatGrid就是TCMStatGridFrm类的一个全局对象,只要将数据结果集作为参数赋予TCMStatGridFrm类,就能在界面上将所有结果以表格的形式显示出来,具体的效果可以见下一章的说明。.显示员工信息procedureTLoadMainFrm.tvEmpChange(Sender:TObject;Node:TTreeNode);beginifNode.DataonilthenbeginirCode.Text:=pEmpNode(Node.Data).Code;irName.Text:=pEmpNode(Node.Data).Name;irDep.Text:=pEmpNode(Node.Data).Dep;irPos.Text:=pEmpNode(Node.Data).Pos;irCard.Text:=pEmpNode(Node.Data).Card;endelsebeginirCode.Text:=";irName.Text:=";irDep.Text:=";irPos.Text:";irCard.Text:=";end;end;简要说明:这段代码是在注册注销卡片界面上的一段界面控制代码,其实现的功能为当用鼠标在左边的员工树上选中一名员工时,在右上方的表格中显示出该员工的基本信息。方法比较简单,只需要将所选中员工节点上附带的信息复制到右边的表格显示区中即可。2627 第四章考勤系统工作流程4.1利用考勤接口软件进行数据读取这部分内容要对HRMS中考勤系统的工作流程进行一下简要说明。任何软件产品最终是需要使用者进行评价的,而评价的标准就在于软件的使用是否方便和有效,因此描述一下考勤系统的工作流程能更好的说明考勤接口软件的效用,并使得企业信息化的作用得到更深的理解。整个考勤系统的工作流程可以参考图4-1。每天考勤管理专员需要使用考勤接口软件。要考勤接口软件正常工作需要在本机上安装有博惠思华HRMS的客户端,同时为了对OA数据进行读取,需要在本机上安装有Oracle的客户端,并完成对OA数据库的服务名设置,最后如果需要对考勤机打卡数据进行读取,还需要将考勤机进行正确连接(可以参考图2-6),并最终将考勤机与本机的COM串口相连。在以上的前提满足的条件下,就可以运行考勤接口软件了,在运行之前需要先启动博惠思华HRMS客户端的SocketServer,这是因为HRMS客户端与HRMS服务器之间是通过SOCKET连接来进行数据传输的。在考勤接口软件启动以后,它需要生成临时数据库文件“Aceco.mdb",并生成四张数据表,接着还要从HRM的数据库中将所有的员工信息数据和考勤类型数据从HRMS的数据库中导入到临时数据库文件相对应的数据表中。进入后的初始状态如图4-2所示。2728 这是在考勤机数据采集的界面,此时可以进行还原备份考勤数据的操作,如果需要读取考勤机的数据,或者是要对注册注销卡片和对考勤机进行设置,则需要先测试连接,设计这一步骤的原因是为了使得所有对考勤机的操作更加安全,增加软件的容错能力,不然贸然对考勤机进行操作会由于连接有问题而导致死机。不管测试成功与否,软件都会给出提示,当测试成功以后,就可以进行接收数据的操作了,同时后面的注册注销卡片和考勤机设置的界面也都可以激活。当点击接收数据的操作以后,软件会将所有的联机的考勤机的数据都读取出来,同时立即生成一个考勤数据的备份文件,文件名是当前电脑中的时间(精确到秒钟,这样可以避免文件同名),这样做是为了保护数据的安全性,因为一旦数据从考勤机中读取出来,在而这时还没有将数据进行备份,如果此时发生停电或者死机等其他不可预知的情况,就会造成考勤数据完全丢失,从而造成无法弥补的损失,这是在软件设计中必须考虑的一点。当数据完全读取出来后,会在界面显示出所有的有效数据(所谓有效数据就是指考勤卡号能和员工信息中的考勤卡号对应的数据),当数据量比较大的时候,这一步可能会耗时比较多,数据显示出来后,就可以对所有的数据进行排序或者查找等操作了(可以参考图4-3)。在数据接收完成以后就可以选择导出数据的操作了,这一步操作就是将临时数据库中的考勤打卡数据导入进HRMS数据库里了,这一步操作完成后,对考勤机数据读取的工作就算完成了。所有关于考勤机的操作流程可以参考图4-42829 对OA数据的操作比较类似,基本上也是采取先测试连接,然后再接收数据,最后再导出数据的操作顺序,它和考勤数据采集操作不同之处在于:它不需要进行端口选择,但是需要进行日期时间段选择,此外它也没有还原备份的操作,因为它所有的数据都来自OA的Oracle数据库,而OA的数据库已经自己做过备份。其操作界面可以参考图4-5。2930 对于注册注销卡片和考勤机设置的两样操作,由于这和日常的考勤管理流程无关,同时这两样操作也可以直接在考勤机上进行,而不一定要在软件上来执行,因此这里就不再叙述有关这两样操作的过程了。4.2在HRMS中进行考勤结果统计考勤系统的最终目的是为了薪资计算和绩效考核等方面的工作提供数据支持,比如要计算员工加班工资时需要看该员工当月总共加班的时间是多少,同时还要看是属于什么类型的加班。又比如要考察员工的工作情况,可以看该员工每个月是不是有迟到早退的情况,迟到早退的次数多不多,或者看该员工是不是总是请假等等,以往这样的工作都是通过手工来完成的,即由每个部门自己先统自己部门的情况,然后再汇总到人力资源部门,最后由人力资源部门汇总得到整个企业的统计结果。这样做的劣势的显而易见的,首先每个部门自己需要人员来进行考勤管理,这是对人力资源的极大浪费,其次,容易产生弄虚作假的行为,再者,就是手工统计的工作效率相当低下,而且也容易产生错误。这些劣势真是采用信息化手段进行计算机处理的优势所在,整个公司只需要人力资源部门的少数人员就能迅速的统计出全公司的考勤结果来,下面就简要描述一下在HRMS中是如何进行统计的。首先登录博惠思华HRMS,这需要有相应管理权限的用户名和帐号,进入HRMS后显示如图4-6所示,一般情况下只能看到有相应管理权限的模块(图4-6是采用超级用户登录的,因此能看到所有的模块),因为整个HRMS是需要由不同的人员来进行自己相应的一部分工作内容的。由于是进行考勤操作,因此选择考勤管理模块,30 点击考勤管理模块进入后如图4-7所示。这时可以看到有考勤制度、假事管理、考勤统计、休假计划、考勤设置和报表打印等几个模块。简要介绍一下几个子模块的功能:.考勤制度考勤制度模块主要是设置不同的班次情况,比如对应的早、晚班的时间或者是正常班的时间等等,还有就是对每名员工上什么班次进行设置。.假事管理假事管理主要是对员工所有的请假、出差信息进行管理,包括新增、修改或者删除假事记录等等。.考勤统计考勤统计就是用来统计所有考勤的结果,可以统计一天的,也可以统计一个月的。.休假计划休假计划主要是对员工休年假的情况进行计划和管理,可以计算出每名员工还可以休假的天数。.考勤设置考勤设置主要是对公司的工作日和节假日进行设置,因为对于不同的企业,每周休息的时间很多都是不同的,因此需要企业能自行设置,这对于考勤统计的结果是很重要的。.报表打印就是将统计的结果做成报表再打印出来,报表的形式可以根据公司的要求自行设计。3132 图4-7考勤管理模块在进行考勤统计之前需要将企业的工作日和节假日以及每个班次的时间设定好,同时还得对每名员工的班次进行设置,这样做是因为上不同班次的员工打卡时间的判定标准是不一样的。在考勤机打卡数据和员工假事、加班数据导入到HRMS之后,就可以进入考勤统计子模块,对当日的考勤情况进行统计了,由于进行统计涉及到的规则众多,而且对于不同的员工情况还有可能不一样,而这些所有的特殊性都在HRMS的数据库中有所记录,因此,统计的时候,需要涉及到HRMS后台数据库中很多的表,这时如果将统计的过程放在HRMS客户端运行将会耗费大量的资源,同时速度也非常慢,所以就可以采用在后台数据库中使用存储过程来进行统计的办法。如第二章中的内容所说,存储过程也是一系列语句的集合,因此,整个统计结果的正确与否,能否应对众多的特殊情况就需要看存储过程的质量了。在这里只说明一下该存储过程的内容非常多,需要考虑多种不同的情况,整个存储过程已经不亚于一个完整的应用程序了,而至于具体的实现就不再叙述。进入考勤统计子模块后选择日考勤整理界面,再选择起始日期,一般情况下是一天整理一次。当然,也可以选择多日一起整理,但这时的数据量非常大,整个过程需要耗费较多的时间,同时由于数据众多也不易发现其中的错误,当结果整理出来以后就可以看到当日的考勤情况了,是否有人出差,或是有人迟到、早退等等情况都一目了然,这样的统计结果就有赖于从考勤接口软件导入的考勤打卡记录和假事、加班记录了。操作的情况可以参考图4-83233 但是由于还有可能有异常的情况发生,比如有员工忘记带考勤卡了,而他又确实是准点上班的,这时候由于考勤机里没有他的打卡记录,根据规则的判定得到的统计结果就会是算他旷工一天,这样的结果显然是不大尽情理的,因此为了避免一些人为的异常,在考勤结果统计出来以后还可以对当天的结果进行修正,比如说出现像上述的那种情况,这时候就需要在了解了真实情况后由考勤专员将他的结果修正为正常,当所有的统计结果都确认无误后再将当日的结果保存,此时就可以得到当天所有员工考勤情况的统计结果了。在月末的时候可以就当月的考勤情况再作个汇总,但是需要的前提是本月每日的考勤结果都已经统计完成。在每天的统计结果都己经完成的情况下,这样的汇总是非常容易实现的。当月度的结果统计完成以后,就可以得到当月所有员工的考勤统计信息。当要进行薪资计算时,就需要从月度考勤统计信息中调出员工加班的时间总和,请假的天数总和等等。而需要对员工的当月的绩效进行评估时,员工在该月的考勤统计信息也是非常重要的一项参考内容。此外,对于某些数据的统计,比如说总加班时间的数量是不是过大,休假的人数总和是不是太多等等数据对于公司制定下月的生产计划或者是长远的计划都有重要的作用。图4-8日考勤整理结果由上述内容可以看到,由于整个HRMS中考勤系统的应用,使得原本需要耗费大量人力物力的工作可以由极少数的工作人员在短时间内就完成,这说明HRMS的确能有效的提升企业的工作效率,同时也从一个侧面反映出企业信息化带给企业的重要影响。33333334 第五章结束语人力资源管理系统是一个内容繁多而复杂的系统,它能有效的提升企业的工作效率,促进企业的发展。但是需要重点指出的是,对于人力资源管理系统来说,不同的企业有着不同的需求,因此不能拿同样的模板来适应不同的企业,而应该是针一对不同的企业有不同的解决方案。本篇论文所描述的考勤接口软件只适于NFCP的项目,因为它适用的考勤机是单一的,其他的企业不可能都用同一种考勤机,因此,在实施其他的项目时就需要做出相应的改变。虽然如此,对于在本项目中所采用的一些应对方案,比如说采用INI配置文件、使用临时数据库作为中转存储方式等,由于它们使用都很方便,因此在其他很多类似的项目中也可以使用。这些方法的利弊在本文中都有所阐述,需要根据不同的情况来做出选择。计算机的应用能带给我们很多方便,但是软件是由人来编写的,因此不管是什么样的软件,都会存在一些BUG,而且对于一些突然变化的情况也无法做出有效的判断。所以需要强调的是,人力资源管理系统最终还是一个以人为主体的系统,计算机所能做的只是帮助提升我们的管理效率和计算速度,我们不能指望人力资源管理系统去帮我们招聘新员工,去评价一个员工的表现等等。所以我们必须要把握“人”这个中心,才能更好和更有效的发挥出人力资源管理系统的作用来。3435 参考文献[1]田吉春,洪雷,周镭企业管理信息系统新编实用教程电子工业出版社2005[2]欧阳峰,傅湘玲企业信息化管理导论清华大学出版社,北京交通大学出版社[3]李剑锋,杨海辰人力资源管理经济管理出版社2004[4](美)Jackson,S.E.,Schuler,R.S.人力资源管理:从战略合作的角度第8版范海滨译清华大学出版社2005[5]陈鑫铭企业人力资源管理信息化系统设计企业管理第28期2006[6]耿波浅议现代人力资源管理当代经理人第10期2006[7]萨师煊,王珊数据库系统概论第三版高等教育出版社2000[8]启明工作室ASP+SQLServer数据库应用系统开发与实例人民邮电出版社2005[9]黄超,罗宏宇ASP网络应用开发技术与实例清华大学出版社2002[10]隆华软件工作室SQLServer2000程序设计清华大学出版社2001[11]深圳市俊思电子有限公司JS2000智能考勤机用户手册2002[12]北京博惠思华信息技术有限公司博惠思华人力资源管理系统操作手册20023536 致谢本论文的完成工作是在XX导师教员的悉心指导下完成的。本文的完成凝聚了导师的智慧与辛劳。导师广博的知识、严谨的治学态度、活跃的创造性学术思想都使我受益匪浅。导师为人师表,平易近人,教书更重育人,在学业上认真严格要求学生,在生活上关心爱护学生,在为人处世方面引导教育学生。值此论文完成之际,谨向XX教员表示衷心的谢意和诚挚的敬意!在本项目的研究过程和论文的完成过程中,得到XX等同学以及我的家人的热情支持和帮助,在此也向一并他们表示衷心的感谢。向所有给与我支持、帮助和关心的人致以衷心的感谢。36