人力资源管理系统.docx
《人力资源管理系统.docx》由会员分享,可在线阅读,更多相关《人力资源管理系统.docx(65页珍藏版)》请在冰点文库上搜索。
人力资源管理系统
安徽财经大学继续教育学院
毕业论文
论文题目:
人力资源管理系统
专 业:
计算机应用
学 号:
姓 名:
函授站:
合肥电大
论文成绩:
二〇一二年十二月十五日
摘要
【摘要】
通过人力资源管理系统使得管理者快速高效地完成企业日常事务中的人事工作,降低了人力资源管理成本,使管理者能集中精力在企业战略目标;另一方面,通过软件及时收集与整理分析大量的人力资源管理数据,为企业战略决策的生成与实施控制提供强有力的支持,以提高组织目标实现的可能性。
具体实现目标如下:
系统采用人机对话方式,界面美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠。
键盘操作,快速响应。
对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
万能查询器实现自由设置查询。
强大的工资报表。
与EXCEL实现无缝连接,使人员、考勤、工资等信息的查询结果可直接保存在EXCEL表中。
不同的操作员有不同的操作员权限,增强了系统的安全性。
系统最大限度地实现了易安装性、易维护性和易操作性。
系统运行稳定、安全可靠。
【关键词】HRM人力资源管理系统
0引言
目前市场上的人力资源管理系统很多,但要找到一款真正称心、符合公司实际情况的人力资源管理系统(HRM)软件并不容易。
由于存在这样那样的不足,企业在选择HRM系统时倍感困惑,主要集中在以下方面:
(1)大多数自称为人力资源管理系统的软件其实只是简单的人事管理系统,难以真正提升企业人力资源管理水平,提高工作效率,其降低管理成本的效果也不明显。
(2)系统功能不切实际,大多是互相模仿,不是从企业实际需求中开发出来的。
(3)大部分系统不能满足企业全面沟通及管理的需要。
安装部署、管理极不方便,或者选用小型数据库,不能满足企业海量数据存取的需要。
(4)系统操作不方便,界面设计不美观、不标准、不专业、不统一,用户实施及学习费时费力。
1系统分析
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
通过对应用问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成软件开发生命周期的需求分析阶段。
需求分析是介于系统分析和软件设计阶段之间的重要桥梁。
一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现测试直至维护的主要基础。
良好的分析活动有助于避免或尽早发现早期的错误,从而提高软件生产率,降低开发成本,改进软件质量。
1.1可行性研究
开发任何一个基于计算机的系统,都会受到时间和资源上的限制。
因此,对在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行性分析,以减少项目开发风险,避免人力、物力和财力的浪费。
可行性分析与风险分析在很多方面是相互关联的,项目风险越大,开发高质量的软件的可行性就越小。
1.2经济可行性
经济可行性,进行成本效益分析,评估项目的开发成本,估算开发成本是否会超过项目预期的全部利润。
分析系统开发对其他产品或利润的影响。
1.3技术可行性
技术可行性研究过程中,系统分析员应采集系统性能、可靠性、可维护性和可生产性方面的信息;分析实现系统功能和性能所需要的各种设备、技术、方法和过程;分析项目开发在技术方面可能担负的风险以及技术问题对开发成本的影响。
开发一个中小型人力资源管理(HRM)系统,涉及到的技术问题不会太多,主要用到的技术就是数据库和一门可视化开发的编程语言。
在这方面,数据库主要是用来存放数据,就目前主流的数据库来看,可以考虑采用MicrosoftSQLServer或Oracle。
Oracle是一个安全、可靠的并且支持面向对象设计的数据库系统,同时Oracle又有海量存储的特点。
然而,相对于MicrosoftSQLServer而言,Oracle的易用性和可维护性相对差一点,而且Oracle的成本相对较高,不适合于中小企业使用。
因此,我们选择了目前比较流行的MicrosoftSQLServer数据库系统;在前台开发编程方面,本系统采用Microsoft公司的VisualBasic6.0作为主要的开发工具。
2总体设计
软件设计的主要任务是根据需求规格说明导出系统的实现方案。
2.1系统结构设计
C/S结构就是“客户端/服务端”的一种工作模式。
一般来说,这种模式都会要求安装一个客户端程序,由这个程序和服务器端进行协同工作,因为由客户端来专门处理一些工作,所以C/S结构的程序一般都功能强大、界面漂亮,由于任务分散在服务器端和客户端分别进行,所以提高了硬件的利用效率,对于程序员来说,编程开发也更加的容易。
基于以上原因,在设计人力资源管理系统时,采用了传统的基于两层的C/S结构。
2.2系统功能结构
人力资源管理系统的功能结构如图1所示。
图1系统功能结构图
2.3系统功能概述
基本资料管理
基本资料管理主要包括:
部门管理、工种类型管理、职务类型管理、职称类型管理、文化程度管理、政治面貌管理、民族管理、培训课程管理、考核项目管理、合同类型管理和聘用类型管理。
其中部门管理实现了通过树结构进行各个部门的管理,并从部门全称可以看出该部门的上下级关系。
工资设置
工资设置是计算员工工资时的最基本的设置,其主要包括奖励项目设置、惩罚项目设置和工资设置。
人事管理
人事管理实现了对公司员工的全面管理,其主要包括人事信息管理、新员工登记、员工调动、员工离职、员工复职、培训管理、考核管理、合同管理、聘用管理、保险管理、合同到期处理和聘用到期处理。
工资管理
工资管理实现了对公司员工工资的计算、发放和打印,以及员工的奖励、惩罚和考勤信息。
其主要包括工资信息管理、过期数据处理、建立新月份工资、员工奖励管理、员工惩罚管理和考勤信息管理。
系统管理
登录系统时需要验证身份,只有合法的用户才可以进入人力资源管理系统,不同的用户使用不同的功能,同时也可以对密码进行修改,以及对数据进行备份与还原,保护企业的数据安全。
其主要包括用户管理、口令设置、数据初始化和数据备份与恢复。
工具
为了方便用户日常管理工作,工具中提供了记事本、计算器、Office-Word和Office-Excel。
帮助
如果要了解系统功能、使用方法以及开发的相关信息,可以使用帮助和关于。
3系统设计
3.1设计目标
通过人力资源管理系统使得管理者快速高效地完成企业日常事务中的人事工作,降低了人力资源管理成本,使管理者能集中精力在企业战略目标;另一方面,通过软件及时收集与整理分析大量的人力资源管理数据,为企业战略决策的生成与实施控制提供强有力的支持,以提高组织目标实现的可能性。
具体实现目标如下:
系统采用人机对话方式,界面美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠。
键盘操作,快速响应。
对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
万能查询器实现自由设置查询。
强大的工资报表。
与EXCEL实现无缝连接,使人员、考勤、工资等信息的查询结果可直接保存在EXCEL表中。
不同的操作员有不同的操作员权限,增强了系统的安全性。
系统最大限度地实现了易安装性、易维护性和易操作性。
系统运行稳定、安全可靠。
3.2开发及运行环境
系统开发平台:
VisualBasic6.0。
数据库管理平台:
SQLServer2000。
运行平台:
WindowsXP/Windows2000。
分辨率:
最佳效果1024*768。
3.3编码设计
编码设计是数据库系统开发的前提条件,是系统不可缺少的重要内容。
编码是指与原来名称对应的编号、符号或记号。
它是进行信息交换、处理、传输和实现信息资源共享的关键。
编码也用于指定数据的处理方法、区别数据类型,并指定计算机处理的内容等。
本系统内部信息编码采用了统一的编码方式情况。
如下所示:
部门编号
部门编号是根据级别订制的。
其设计思路是:
1级部门编号2位,初始值“01”,后面的部门编号依次往下排(如“02”、“03”等);2级部门编号4位,初始值依据上级编号,如果上级编号为“01”,则该部门编号为“0101”,如果上级编号为“02”,则该部门编号为“0201”;其他级别的部门编号的位数为级别乘2,编码思路与上面同理。
人员编号
人员编号为5位数字编码,初始值为“00001”,后面的人员编号依次往下排。
合同编号
合同编号为当前系统年、月和人员编号的组合,如“20051200002”。
聘用编号
聘用编号为当前系统年、月和人员编号的组合,如“20051100008”。
3.4数据库设计
本系统数据库采用SQLServer2000数据库,系统数据库名称为db_manpowerinfo。
数据库db_manpowerinfo中包含29张表。
下面是数据表概要说明及主要数据表的结构。
1.数据表概要说明
数据表树型结构如图2所示。
图2数据表树型结构图
2.主要数据表的结构
数据库中的主要数据表结构请参见附录二。
4主要功能模块设计
4.1公用模块设计
在人力资源管理系统程序中,创建了公用模块(Module1)。
此模块包括用户定义的数据类型、全局变量、API函数、数据库连接函数等。
1.添加全局变量
添加全局变量,用于存储操作员、表和SQL语句,代码如下:
PublicczyAsString,tbAsString,tb1AsString,sqlAsString,sql1AsString,textAsString
PublicjbxxtbAsString
添加全局变量,用来标记各个窗体数据添加或修改的状态,代码如下:
PublicblnAddRSAsBoolean,blnAddPXAsBoolean,blnAddKHAsBoolean,blnAddHTAsBoolean,blnAddPYAsBoolean,blnAddBXAsBoolean
PublicblnAddJLAsBoolean,blnAddCFAsBoolean
blnAdd….变量用户记录数据添加还是修改状态,赋值为True为添加,赋值为False为修改。
PublicHTygbhAsString,PYygbhAsString
PublicKGBHAsInteger,JBBHAsInteger,deptMarkAsInteger
2.声明API函数ShellExecute
该函数主要用于查找与指定文件关联在一起的程序的文件名,代码如下:
DeclareFunctionShellExecuteLib"shell32.dll"Alias"ShellExecuteA"(ByValhWndAsLong,ByVallpOperationAsString,ByVallpFileAsString,ByVallpParametersAsString,ByVallpDirectoryAsString,ByValnShowCmdAsLong)AsLong
3.共享数据库连接
为了减少重复的数据连接和为日后修改程序提供接口,在公用模块(Module1)中建立了数据库连接函数cnn和cnStr。
如果使用对象操作数据库,可以调用cnn函数;如果使用ADO控件访问数据库,则可以调用字符串函数cnStr,并将该函数值赋给ADO控件的ConnectionString属性。
具代码如下:
PublicFunctionCnn()AsADODB.Connection'定义一个函数
SetCnn=NewADODB.Connection
'·返回一个数据库连接
Cnn.Open"Driver={SQLServer};Server=(local);Database=db_manpowerinfo;Uid=sa;Pwd="
EndFunction
PublicFunctioncnStr()AsString
cnStr="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=db_manpowerinfo"
EndFunction
4.2系统登录模块设计
系统登录模块主要完成对登录系统的用户进行验证,只有合法的用户才可以进入系统。
另外,为了防止用户无限期地输入错误的用户名或密码,在系统登录模块中增加了限制登录次数的功能。
首先定义一个窗体级的常量MaxTimes,其主要用来保存允许用户最多登录的次数(这里为3次),然后在cmdOk_Click过程中定义一个静态变量intMyTimes,其主要用来保存累计登录系统的次数,并判断是否超过允许登录的次数,如果超过,则显示提示信息,并结束应用程序。
系统登录模块如图3所示。
图3系统登录
1.窗体设计
(1)新建一个工程,在该工程中新建一个窗体,将窗体的“名称”属性设置为“frm_Login”,BorderStyle属性设置为“3-FixedDialog”;Caption属性设置为“欢迎使用人力资源管理系统”。
(2)在窗体中添加3个Label控件,设置BackStyle属性为“0-Transparent”。
其中Label1和Label2的Caption属性分别设置为“用户名称(U)”和“密码(P)”。
(3)在窗体中添加2个TextBox控件,分别设置“名称”属性为txtUserName和txtPassword。
(4)在窗体中添加2个CommandButton控件,分别设置“名称”属性为cmdOk和cmdCancel;Caption属性为“确定(O)”和“放弃(C)”。
(5)设置ADO对象的引用。
单击“工程”/“引用”,在“引用”对话框中选定“MicrosoftActiveXDataObjects2.5Library”。
2.代码设计
OptionExplicit
ConstMaxTimesAsInteger=3
单击【确定】按钮,根据用户输入的用户名和密码来判断该用户是否为合法用户。
如果是合法用户,将进行系统;如果不是将提示用户,提示超过3次,自动退出系统,代码如下:
PrivateSubcmdOK_Click()
StaticintMyTimesAsInteger
Dimrs1AsNewADODB.Recordset,rs2AsNewADODB.Recordset
rs1.Open"权限信息表",Cnn,adOpenKeyset,,adLockOptimistic
Ifrs1.RecordCount>0Then
IftxtUserName.text=""Then
MsgBox"请输入用户名!
",,"提示窗口"
txtUserName.SetFocus
ExitSub
EndIf
rs2.Open"权限信息表where操作员='"+txtUserName.text+"'",Cnn,adOpenKeyset,,adLockOptimistic
Ifrs2.RecordCount>0Then
IftxtPassword.text=""Then
MsgBox"请输入密码!
",,"提示窗口"
txtPassword.SetFocus
ExitSub
EndIf
IftxtPassword=rs2.Fields("密码")Then
czy=txtUserName
LoadfrmMain
frmMain.Show
UnloadMe
Else
IfintMyTimes>MaxTimesThen
MsgBox"您无权使用该软件!
",,"提示窗口"
End
Else
MsgBox"密码不正确,请重新输入!
",,"提示窗口"
intMyTimes=intMyTimes+1
txtPassword.SetFocus
EndIf
EndIf
Else
MsgBox"用户名不正确,请重新输入!
",,"提示窗口"
txtUserName.SetFocus
EndIf
rs2.Close
Else
MsgBox"初次登录本系统,请在进入系统后,立即设置操作员及其密码,以确保系统的安全!
",,"提示窗口"
LoadfrmMain
frmMain.Show
UnloadMe
EndIf
rs1.Close
EndSub
4.3主界面设计
主界面是应用程序的主体,也是应用程序的门面,它设计的好坏将直接影响用户的第一感觉,如果主界面设计得很糟糕,则不论应用程序的其他部分设计得多么细致,用户都不能或不愿意使用它。
所以,在设计主界面时应保持界面的简洁性和明确性。
人力资源管理系统的主界面便遵循了这一原则,其运行结果如图4所示。
图形按钮
图4主界面
主界面担负着调用各个功能模块、赋予操作员不同的操作权限、显示当前操作员、操作状态和系统日期等任务。
其中应用了VB资源编辑器、动态创建图形按钮、动态定位图形按钮等技术。
下面是调用各个功能窗体的几种操作方法。
(1)使用Windows标准菜单。
单击菜单命令,进入相应的功能模块。
(2)通过树状菜单。
鼠标双击菜单树中的主节点,展开菜单树,单击菜单树中的子节点,进入相应的功能模块。
(3)通过图形按钮。
鼠标双击菜单树中的主节点,右侧区域将出现图形按钮,单击图形按钮,进入相应的功能模块。
1.创建主窗体
(1)单击“工程”/“添加窗体”菜单命令,在工程中添加一个新窗体,将该窗体的“名称”属性设置为“frmMain”;BorderStyle属性为“2-Sizable”;Caption属性为“人力资源管理系统”;Picture属性为事先设计好的背景图片。
(2)在frmMain窗体上添加1个StatusBar控件和1个CommonDialog控件。
2.使用VB资源编辑器和菜单编辑器创建标准菜单
使用VB资源编辑器和菜单编辑器设计完成图4所示的人力资源管理系统中的标准菜单,应分三大步:
(1)使用“资源编辑器”中的“字符串表编辑器”编辑菜单中需要的字符串。
(即菜单标题)
(2)使用“菜单编辑器”编辑菜单。
(菜单标题为资源ID)
(3)使用LoadResString函数将资源ID所对应的字符串显示为菜单标题。
详细设计步骤如下:
在“资源编辑器”中的“字符串表编辑器”编辑字符串
(1)单击“资源编辑器”工具栏上的“编辑字符串表”工具栏按钮,打开“字符串表编辑器”,如图5所示。
图5打开“字符串表编辑器”
(2)添加一个新的字符串表。
单击“插入新字符串表”工具栏按钮。
一个新的字符串表将被添加到表格中,同时突出显示其“语言ID”列表框,可以该列表中选择适当的语言ID。
如果这是资源中的第一个字符串表,网格中将添加一个初始的条目,其资源ID为101,
如果这是一个附加的字符串表,将为所有现存的行添加网格单元。
(3)编辑资源ID和字符串条目,编辑完成的字符串表,如图6所示。
图6编辑完成的字符串表
在“菜单编辑器”中设计菜单
将frmMain窗体设为作用中的窗体,然后单击“工具”/“菜单编辑器”菜单命令,在“菜单编辑器”对话框中的“标题”输入栏内输入菜单标题(如“1000”),在“名称”输入栏内输入名称(如“m”),如图7所示,然后按表1所示菜单名称和标题依次完成。
图7菜单编辑器界面
为了程序设计方便,菜单设计为菜单数组,其中所有的主菜单为一个菜单数组,名称为:
m(0)~m(6),每个主菜单下的子菜单为一个数组(如m1(0)~m1(13))。
详细设置如表1所示。
表1菜单名称和菜单标题设置
主菜单名称
主菜单标题
子菜单名称
子菜单标题
m(0)
1000
m1(0)~m1(13)
1001~1011
m
(1)
1012
m2(0)~m2
(2)
1013~1015
m
(2)
1016
m3(0)~m3(14)
1017~1028
m(3)
1029
m4(0)~m4(7)
1030~1035
m(4)
1036
m5(0)~m5(3)
1037~1040
m(5)
1041
m6(0)~m6(3)
1042~1045
m(6)
1046
m7(0)~m7
(1)
1047~1048
3.使用TreeView控件创建树状菜单
树状菜单的实现主要使用了Treeview控件的Nodes集合中的Add方法,该方法可以向Nodes集合中添加一个Node对象,从而实现树状菜单。
在使用TreeView控件前应将其添加到frmMain窗体中,添加方法为:
在工具箱中选取TreeView控件,将鼠标放置在frmMain窗体上,当鼠标指针变成一个十字架时,按住鼠标左键同时拖动鼠标,当达到所需要控件的大小时放开鼠标左键,这时TreeView控件将被添加到窗体中。
如果要将TreeView控件中显示的内容带图标,应在窗体上添加一个ImageList控件。
4.使用Image控件数组创建图形按钮
图形按钮的构成原理是动态加载Image控件数组并设置其Picture、Left、Top属性。
具体设计思路如下:
窗体载入后,使用Load方法动态加载12个Image控件数组(初始状态为不可见),当用户单击树状菜单的主节点时,根据其下的子节点的数量,动态设置Image控件数组的Picture、Left和Top属性。
实现上述功能,应首先在工具箱中选取Image控件,然后在窗体中添加1个Image控件数组,默认名为Image1,设置其Index属性为0,Visible属性为False。
5.代码设计
声明模块级变量,用于在一个窗体中的不同过程使用,代码如下:
DimiAsInteger,aAsInteger
自定义函数blnPower,用于判断操作员的权限,如果有权限,返回值为True;如果无权限,返回值为False,代码如下:
FunctionblnPower(strAsString)AsBoolean
Dimrs1AsNewADODB.Recordset
rs1.Open"select*from权限信息表where操作员='"&czy&"'",Cnn,adOpenKeyset,adLockOptimistic
Ifrs1.RecordCount>0Then
Ifrs1.Fields(str)=FalseThen
blnPower=False
Else
blnPower=True
EndIf
EndIf
rs1.Close
EndFunction
窗体载入时,设置状态栏和Image1(0)控件数组的相关属性、完成由数字菜单到字符串菜单的转换、添加树状菜单及动态加载Image1控件数组等,代码如下:
Pr