1、吉林省明日科技有限公司监制人力资源管理系统学 院专 业班 级学 号姓 名指导教师教师职称年月日 2 摘要【摘要】企业全员参与人力资源管理(HRM),不同的人具有不同的角色权限,人力资源管理系统应该能够灵活有效的管理,体现多角色、多层次特色。不同的企业其人力资源管理业务与流程各不相同,随着管理要求的提高,人力资源管理软件需要具备人事业务流程的制订、修改、控制等操作。通过人力资源管理系统使得管理者快速高效地完成企业日常事务中的人事工作,降低了人力资源管理成本,使管理者能集中精力在企业战略目标;另一方面,通过软件及时收集与整理分析大量的人力资源管理数据,为企业战略决策的生成与实施控制提供强有力的支持
2、,以提高组织目标实现的可能性。【关键词】 HRM 人力资源管理系统目录摘要10 引言1 系统分析1.1 需求分析1.2 可行性分析2 总体设计2.1 项目规划2.2 功能框图3 系统设计3.1 设计目标3.2 开发及运行环境3.3 数据库设计4 主要功能模块设计4.1 公共模块设计(Mdl_Link模块)4.2 主窗体设计4.3 系统登录设计4.4 新员工登记模块设计4.5 工资设置模块设计附录A 参考文献附录B 数据表附录C 文件架构图0 引言随着全球对知识和人才的重视,企业对人力资源管理重要性的认识逐渐深化,人才的全球化竞争使企业的人力资源管理面临前所未有的挑战。在新形势下,人力资源管理系
3、统是一个企业单位不可缺少的部分,是适应现代企业制度,推动企业人力资源管理走向科学化、规范化、自动化的必要条件;是应对挑战、适应环境变化、提高企业管理效率、提升核心竞争力的关键措施。它所包含内容对于企业的决策者和管理者来说至关重要。目前市场上的人力资源系统很多,但要找到一款真正称心、符合公司实际情况的并不容易。由于存在这样那样的不足,使企业浪费了大量的人力、物力等大量资源,难以真正提升企业人力资源的管理水平,提高工作效率及降低管理成本的效果也不明显。因此,为了加快公司信息化的步伐,提高公司的管理水平,并在激烈的社会竞争中立于不败之地,建立及完善人力资源管理系统已变得十分必要和迫切。1 系统分析1
4、.1 需求分析通过调查,要求系统具有以下功能:q 具有良好的操作界面。q 业务模块能够自由增加、修改及删除信息。q 建立数据库备份机制,并提供数据灾难恢复功能。q 支持数据的模糊查询机制。q 自动计算员工工资。q 自动生成员工工资报表。q 实现员工岗位调动操作。q 实现员工离职、复职操作。q 系统退出。1.2 可行性分析人力资源管理系统使用Delphi 7.0开发,它是当月前最为流行的可视化快速应用程序开发环境,对数据库有强大的支持。后台数据库使用SQL Server 2000数据库,以保证数据的安全和执行高效。2 总体设计2.1 项目规划人力资源管理系统是一个典型的数据库应用程序,由启动窗体
5、、登录模块、系统主界面、系统管理模块、信息设置模块、人事管理模块、工资管理模块等组成,具体的功能模块如下:q 系统管理模块该模块的主要功能是单位信息、管理员设置、更改密码、重新登录。q 信息设置模块该模块主要功能是对部门信息、工种类型、职称类型、文化程度、政治面貌、民族类型、所得税设置、考勤设置等进行设置。q 人事管理人事管理模块主要功能是新员工登记、应聘登记、员工调动、员工离职、考核管理、合同管理、应聘信息浏览、员工信息浏览。q 工资管理工资管理模块主要是:设置员工的工资信息、生成工资报表、工资档案浏览。2.2 功能框图图1 功能框架图3 系统设计3.1 设计目标根据企业的需要和人力资源管理
6、系统的特点,本系统实施后,应达到以下目标:q 使企业日常事务性的人事工作都可能通过人力资源管理软件得到快速高效的完成。q 降低人力资源成本。q 操作界面美观、标准、专业、统一,实施方法简单、方便。q 通过员工工资的自动计算功能,从而减轻工作人员的工作压力。q 通过数据备份及恢复功能,避免数据因意外而造成致命问题。3.2 开发及运行环境系统开发平台:Delphi 7.0。数据库管理系统软件:SQL Server 2000。运行平台:Windows xp/ Windows 2000。分辨率:最佳效果800*600。3.3 数据库设计本系统采用SQL Server 2000 数据库,系统数据库名为d
7、b_manpowerinfo,数据库db_manpowerinfo中包括18个数据表。下面分别给出数据库概要说明和数据表的结构。1数据表概要说明如图2所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系统所有数据表。可以清晰地反应数据库信息。图2 数据表树树形结构图2数据表的结构由于篇幅所限,关于数据库中的数据表请参见附录B4 主要功能模块设计4.1 公共模块设计(Mdl_Link模块)数据模块窗体主要功能是统一管理数据库访问组件,数据模块如图3所示。图3 数据模块1设计步骤(1)在Delphi中选择“File”/“New”/“Data Module”菜单项,新建一个数据模
8、块,命名为“Data1”。(2)在“ADO”组件页中点选“TADOConnection”组件,添加到窗体上,TADOConnection组件用到连接数据库,其它数据库组件通过它连接数据库。(3)点选ADOConnection1组件,在“Object Inspector”窗口中,单击ConnectionString属性右侧的【】按钮,弹出对话框如图4所示。图4 数据连接对话框(4)单击【Build】按钮,在弹出的对话框中的“提供程序”选项卡中设置希望连接的数据,如图5所示。图5 连接属性对话框(5)选择“连接”选项卡,设置连接相关设置,如图6所示。图6 连接属性对话框(6)单击【测试连接】按钮,
9、如果连接成功,则提示成功,单击【确定】按钮完成数据库的连接。(7)在窗体上添加TADOQuery组件,设置Connection属性为“ADOConnection1”。4.2 主窗体设计主窗体中主要控制方式是通过菜单和工具栏按钮来调用子窗体,它的背景区由一幅图片填充。人力资源管理系统主窗体运行结果如图7所示。图7 人力资源管理系统主窗体1窗体设计步骤(1)运行Delphi7,会自动创建一个窗体,设置该窗体为程序主窗体,命名该窗体为“frm_main”,设置窗体的Caption属性为“人力资源管理系统”;WindowsStyle属性为“wsMaximized”。(2)在“Standard”组件页中
10、点选“TMainMenu”组件,添加到窗体上,双击该组件进行菜单添加,如图8所示图8 主菜单设计(3)在“Win32”组件页中点选“TCoolBar”组件,添加到窗体上。(4)在“Win32”组件页中点选“TToolBar”组件,添加到TcoolBar组件上。(5)在“Additional”组件页中点选“TSpeenButton”组件,添加到TtoolBar组件上,设置Caption属性。(6)在“Win32”组件页中点选“TStatusBar”组件,添加到窗体上,双击该组件,为其添加项,如图9所示。图9 任务栏设计(7)在“Standard”组件页中点选“TPanel”组件,添加到窗体上,设
11、置Bevellnner属性为“bvSpace”,设置BevelOuter属性为“bvLowered”,设置Align属性为“alClient”。(8)在“Additional”组件页中点选“TImage”组件,添加到Panel1组件上,设置Align属性为“AlClient”,设置Stretch属性为“Tree”。(9)在“Dialog”组件页中 分别选择“TOpenDialog”和“TSaveDialog”组件,依次添加到窗体上。2程序相关代码在窗体的OnClose事件中设置,当窗体在关闭之前执行,主要功能是退出窗体。代码如下:procedure Tfrm_main.FormClose(Se
12、nder: TObject; var Action: TCloseAction);begin if messagebox(self.Handle,真的要退出系统吗?,人力资源管理系统,mb_yesno+mb_iconquestion)=idyes then application.Terminate;end;在窗体的OnShow事件增加,并当窗体首次启动时动态创建登录窗体,代码如下:procedure Tfrm_main.FormShow(Sender: TObject);begin log:=0; /区分新员工登记窗体是为登记状态还是修改状态application.CreateForm(Tf
13、rm_login,frm_login); /创建窗体frm_login.ShowModal; /显示窗体frm_login.free; /释放窗体end;通过主菜单下【记事本】按钮调用记事本,单击事件代码如下:procedure Tfrm_main.N57Click(Sender: TObject);begin ShellExecute(handle,open,notepad.exe,Nil,Nil,SW_SHOWNORMAL);end;【数据备份】按钮的作用是通过保存对话框对数据库进行备份,该按钮的单击事件代码如下:procedure Tfrm_main.SpeedButton4Click(
14、Sender: TObject);varsave:string;beginsavedialog1.Filter:=备份文件(*.bak)|*.bak; /设置文件过滤savedialog1.Title:=请选择备份路径; /设置打开对话框的标题if savedialog1.Execute then begin save:=savedialog1.FileName; end;if save then begin with data1.ADOpublic do begin try screen.Cursor:=crHourGlass; /改变鼠标指针的形状为沙漏形 close; sql.Clear
15、; sql.Add( BACKUP DATABASE +db_manpowerinfo+ TO DISK = +save+); execsql; screen.Cursor:=crdefault; /设置鼠标指针为默认状 application.MessageBox(数据备份成功,提示,0+64); except screen.Cursor:=crdefault; application.MessageBox(数据库备份失败,请检查备份的路径或网络状态!,数据库备份,0+mb_iconinformation); end; end; end;end;4.3 系统登录设计系统登录主要用于对进入人力
16、资源管理系统的用户进行安全性检查,阻止非法用户进入该系统。验证操作员及其密码,主要通过记录集结果(RecordCount)结合If语句判断用户选定的操作员及其输入的密码是否符合数据库中的操作员和密码,如果符合则允许登录,否则提示用户用户名或密码不正确,如果错误超过三次,强行退出。图10 系统登录模块1窗体设计步骤(1)新建一个窗,命名为“frm_Login”,设置Caption属性为“登录”,设置Position属性为“poScreenCenter”。(2)在“Additional”组件页中点选“TImage”组件,添加到窗体上,设置Align属性为“alClient”;Stretch属性为“
17、Tree”,在Pictuer属性中添加图片。(3)在“Standard”组件页中点选“TEdit”组件,添加到窗体上,设置Ctl3D属性为“False”;设置Text属性为空,设置Edir2的PasswordChar属性为“*”。(4)在“Additional”组件页中点选“TSpeedButton”组件,添加到窗体上,设置Caption属性分别为“登录”和“取消”;设置Flat属性为“True”。2程序相关代码对进入人力资源管理系统的用户进行安全检验,执行安全检验过程代码如下:procedure Tfrm_login.plogin;/自定义函数过程begin with Data1.ADOlo
18、gin do begin close; sql.Clear; sql.Add(select * from 操作员信息表 where 操作员名称 = :a and 操作员密码 = :b); /使用SQL语句检索数据表中的用户名和密码 parameters.ParamByName(a).Value:=trim(edit1.Text); parameters.ParamByName(b).Value:=trim(edit2.Text); open; end; if Data1.ADOlogin.RecordCount0 then /判断用户名和密码是否存在 begin /用户名和密码存在时执行以下代
19、码 czy:=data1.ADOlogin.FieldByName(操作员名称).Value; s:=true; /使s的值为true,以免重新登陆时出现错误 frm_main.StatusBar1.Panels1.Text:=czy; /在状态栏上显示当前用户名 frm_main.statusbar1.Panels3.Text:=datetostr(date(); frm_main.statusbar1.Panels5.Text:=timetostr(time(); close; end else /用户名和密码不存在时执行以下代码 if m3 then /限制密码错误不能超过三资 begi
20、n application.MessageBox(用户名或密码错误,请重新输入!,提示,64); edit1.Clear; /清除编缉框中的内容 edit2.Clear; edit1.SetFocus; end else /当密码错误三次时强行退出 begin application.MessageBox(您无权使用本系统!,提示,64); Application.Terminate; end;end;在【确定】按钮的单击事件中添加如下代码:procedure Tfrm_Login.Button1Click(Sender: TObject);beginm:=m+1; /记录单击的次数,用来判断
21、输入错误的次数if edit1.Text= then /判断是否输入用户名 application.MessageBox(请输入用户名,提示,64)else if edit2.Text= then /判断是否输入密码 application.MessageBox(请输入密码,提示,64) else plogin; /执行自定义函数end;在Edti2的OnKeyDown事件中添加如下代码,通过键盘操作获得焦点:procedure Tfrm_Login.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin i
22、f (Key = vk_Return) or(Key = vk_Down) then Button1Click(Sender) /当按下回键或时,按执行Button1的OnClick事件 else Edit2.SetFocus; if Key = vk_Up then Edit1.SetFocus; /当按下方向键时,使Edit1获得焦点end;end;4.4 新员工登记模块设计新员工登记模块,主要用于添加、修改新员工的个人基本信息,如:姓名、性别、民族、文化程度等。新员工登记模块运行结果如图11所示。图11 新员工登记模块1窗体设计步骤(1)新建一个窗体,命名为“frm_xygdj”,设置C
23、aption属性为“新员工登记”,设置Position属性为“poScreenCenter”。(2)在窗体中添加“TPanel”组件、“TGroupBox”组件、“TEdit”组件、“TCombobox” 组件、“TLabel”组件、“TMaskEdit”组件、“TMemo”组件、“TBitbtn”组件、“TImage”组件,设置属性如表1所示。表1 主要组件属性设置组件名称所在组件页属性值Panel1StandardAlignBevellnnerBevelOuteralClientbvSpacebvLoweredPanel2StandardAlignBevellnnerBevelOutera
24、lNonebvSpacebvLoweredPanel3StandardAlignBevellnnerBevelOuteralNonebvSpacebvLoweredGroupbox1StandardCaption基本信息Groupbox2StandardCaption其它信息MaskEditAdditionalCtl3DEditMaskFalse!9999/99/00;1;_ImageAdditionalAlignStretchalClientTure2程序相关代码【添加照片】按钮,主要是通过打开对话框在电脑中选择员工的照片并添加在TImage组件的Pictuer属性中,该按钮的单击事件代码如
25、下:procedure Tfrm_xygdj.Button1Click(Sender: TObject);beginopendialog1.Title:=选择照片;if opendialog1.Execute then image1.Picture.LoadFromFile(opendialog1.FileName);end;在一个企业里,难免会有重名的员工,所以姓名不能做为员工的惟一标识,那么如果用员工编号来做惟一标识,就可以解决这个问题了。单击【添加】按钮自动生成员工编号。代码如下:procedure Tfrm_xygdj.BitBtn2Click(Sender: TObject);var
26、s,m:string;n:integer;begins:=mr;/给s赋一个初值With data1.ADOpublic do begin Close; SQL.Clear; SQL.Add(select max(bh) as ss From 人事表 ); /查询数据库中员工编号的最大值 Open;end;If data1.ADOpublic.FieldByName(ss).Value = null then /判断查询结果 s :=s+001 /结果为空说明数据库为空,编号从001开始 else begin m:= Trim(data1.ADOpublic.FieldByName(ss).V
27、alue); /将查找到的最从值赋给m n:= StrToInt(copy(m,4,2); /复制m的值并转换成整数型数据赋给n if n9 then s:= s+00+ InttoStr(n +1) else if n99 then s:=s+0+ InttoStr(n +1) else s:= s+InttoStr(n +1); end; edit1.Text:=s;end;【保存】按钮的功能主要是通过Insert语句向数据库中添加数据,该按钮的单击事件代码如下:procedure Tfrm_xygdj.BitBtn1Click(Sender: TObject);begintrywith data1.ADOQYygxx do begin close; sql.Clear; sql.Add(insert 人事表 values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z,:aa,:ab,:ac,:ad,:ae,:af); /向人事表中插入数据 parameters.ParamByName(a).Value:=trim(edit1.Text); /插