《项目4人力资源管理系统.doc》由会员分享,可在线阅读,更多相关《项目4人力资源管理系统.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流项目4人力资源管理系统.精品文档.项目4-人力资源管理系统项目来源:湖南科创信息技术股份有限公司随着市场竞争的日趋激烈,人才已成为实现企业自身战略目标的一个非常关键的因素。企业中人心向背和员工对工作的投入程度在很大程度上决定了该企业的兴衰与成败。如何能保持本企业对员工的工作责任感,激励他们的工作热情,减少人才的流失,已成为困扰企业主管和人力资源经理的一个日益尖锐的问题,可以说企业管理从根本上来讲就是对人的管理。现在“公平、公正、合理”的企业管理原则已为不少企业所采纳。但是要实现“公平、公正、合理”绝非易事,它不是仅靠规章制度和政策就可以解决的
2、。通过建立透明、相容、一致、易查和全面的人力资源信息系统,将与人相关的信息统一地管理起来,才有可能为“公平、公正、合理”原则的实现,以及企业在运作和劳资纠纷等方面的风险规避等建立一套科学的保障体系。本章将向读者全面剖析人力资源管理的内容,由此得出人力资源管理系统需求分析和数据建模,并最终演示如何利用Visual Basic.NET完成系统的制作。1 人力资源管理的任务与作用1.1 人力资源管理的任务人力资源管理工作的主要任务有:进行人力资源规划和分析贯彻平等就业机会原则聘任员工从事人力资源开发确定报酬和福利处理员工与劳资关系人力资源规划和分析包括几方面的任务。在进行人力资源规划的过程中,经理人
3、员将预计未来影响劳动力供求的有关因素。人力资源分析要求具备各种相关的信息资料、通信系统和评价系统,它们是从事协调人力资源工作所不可或缺的部分。政府在遵从平等就业机会法规方面的要求,无疑将对所有其他人力资源管理工作产生重大影响。例如,企业在进行战略性人力资源规划时,为贯彻在雇佣少数种族成员和妇女方面的赞助性行为的要求,就必须为雇佣各种各样的雇员留有充分的余地。另外在招聘选拔和培训人员时,所有经理人员都必须遵守平等就业机会法规的要求。聘任员工指选择适合标准要求的相应数量的人员,来填补企业的岗位空缺。职务分析是聘任工作的基础。根据职务分析所得结论,就可以准备工作说明书和职务要求细则,这两项都是在招聘
4、中所需使用的材料。在人员选拔过程中,应特别注意选择最符合要求的员工来填补企业的岗位空缺。员工培训与人力资源开发工作包括想新雇员介绍企业的各种情况、对现有员工进行职业技能培训、鼓励和帮助员工在多方面提高和发展等内容。在职务不断演化和改变的环境下,为了适应技术的变化,企业就必须对员工进行培训和再培训。此外,为迎接未来的挑战,还必须鼓励各级负责人、管理者和所有员工不断有所发展和提高。为此企业一般制定了员工职业发展计划,这种计划的目的,是为那些在企业内寻求自我发展的员工设计出发展的路径,并安排为此所需要的有关活动。为了提高员工的工作成效,企业还应对员工的工作表现进行考核,以确定员工的本职工作究竟做的怎
5、么样。报酬就是通过薪金、奖励和福利等方式来报答为企业工作的员工。企业必须认真设计和不断完善基本工资和薪酬制度。除了工薪以外,越来越多的企业好指定了某些奖励计划,例如利润分享和工作奖励等。但是另一方面,快速增长的福利费用,特别是扶摇直上的医疗的保健费用,仍将继续是一个值得思考和认真对待的重大问题。如果员工和企业双方都想联手共创繁荣,那么管理着和员工就必须卓有成效地处理双方的关系。不论员工是否由工会来代表,企业都必须重视与员工健康、人身安全和财物保障有关的各项工作。为促成企业与员工的良好关系,企业还必须保障员工的各种权利。另外为了使员工如同管理者那样准确地了解企业对员工的期望。企业还必须制定、传达
6、和不断更新人力资源政策和规则。在有工会的企业中,企业还应重视和处理好资方和工会的关系。1.2 人力资源管理系统的作用人力资源管理系统是以先进的软件和高速、大容量的硬件为基础的,新的人力资源管理模式,通过集中式的信息库、自动处理信息、员工自助服务、外协以及服务共享,达到降低成本、提高效率、改进员工服务模式的目的。它通过与企业现有的网络技术相联系,保证人力资源与日新月异的技术环境同步发展。一般来说,可以分为四个部分来理解人力资源管理系统。1. 管理人员角色和目标的改变传统的人力资源管理中,管理人员的绝大部分精力将耗费在繁琐的日常行政事务处理上,而作为企业管理层的参谋角色应该做的咨询和策略制定的工作
7、相对缺乏。通过人力资源管理系统管理人员将决大部分精力放在管理层提供咨询、建议上,而在行政事务上的工作可以由电子化系统完成,只需占用HR人员极少的精力和时间。2 提供更好的服务人力资源管理系统可以迅速、有效地收集各种信息,加强内部的信息沟通。各种用户可以直接从系统中获得自己所需要的各种信息,并根据相关信息做出决策和相应的行动方案。3. 降低成本人力资源管理系统通过减少人力资源管理工作的操作成本、降低员工流动率、减少通讯费用等途径达到降低企业运作成本的目的。4. 革新管理理念人力资源管理系统的最终目的是达到革新企业的管理理念而不仅仅是改进管理方式、优化人力资源管理。先进技术应用与人力资源管理时,并
8、不仅仅是为了将现有的人力资源工作做的更好,更重要的是,做些对于企业来讲更有效率的事情,成为管理层的决策支持者,为决策提供信息和解决方案。2 功能分析与系统流程图由于篇幅有限,本实例详细介绍如图1所示的功能开发过程,并简化其中各功能所包含的属性,其他功能读者完全可以参照这些功能的开发方法实现。人力资源管理系统图1详细介绍的功能模块历史工资奖励记录历史工资惩罚记录当月工资管理修改明细并计算从历史导入导入到历史图2系统流程图3数据库设计一个基本的人力资源管理系统数据库中包括多张数据表,分别存放相应子功能的数据信息,其中组织机构编码表和职员基本信息表是起关键作用的表,用于存放基础的数据信息。其他涉及组
9、织机构信息和职员信息的数据表,都只记录机构或职员的编号,根据作为外键的编号字段和组织机构编码表或职员基本信息表相对应。因此这2张表和其他数据表间的关系是1:N的关系。本程序共需8张表,用途分别如表1所示。表1 系统数据表及其用途数据表名称数据表用途用户清单保存系统使用者的信息职员基本信息表用于保存企业组织机构的详细信息,包括机构间的层次编码等组织机构编码表用于保存企业员工的基本信息月工资统计表用于保存、计算当月的员工工资个人所得税表用于保存个人所得税的税率数据工资发放历史表用于保存所有月份工资发放的历史职员奖励表用于保存员工的奖励情况职员惩罚表用于保存员工的惩罚情况以下为数据表之间的关系图图3
10、 数据表关系图3.1创建数据库打开SQL Server企业管理器,新建一个数据库,将其命名为hrmbook。后面几小节我们将列出几个重点的数据表的建库脚本。3.2创建“组织机构编码表”CREATE TABLE dbo.组织机构编码表 (内部编号 int IDENTITY (1, 1) NOT NULL ,类别 varchar (100) NULL ,AbsIndex int NULL ,ItemIndex int NULL ,ItemLevel int NULL ,ParentIndex int NULL ,类别号 char (10) NULL ,单位编号 varchar (20) NOT N
11、ULL PRIMARY KEY,单位名称 varchar (100) NULL ,拼音编码 varchar (50) NULL ,单位地址 varchar (100) NULL ,单位电话号码 varchar (50) NULL ,开户银行 varchar (100) NULL ,帐号 varchar (50) NULL ,开户全称 varchar (100) NULL) ON PRIMARYGO3.3创建“职员基本信息表”CREATE TABLE dbo.职员基本信息表 (内部编号 int IDENTITY (1, 1) NOT NULL ,职员编号 varchar (30) NOT NUL
12、L PRIMARY KEY,姓名 varchar (20) NOT NULL ,姓名简码 varchar (10) NULL ,性别 varchar (2) NULL ,出生日期 int NULL ,年龄 int NULL ,籍贯 varchar (50) NULL ,民族 varchar (20) NULL ,文化程度 char (50) NULL ,毕业学校 char (100) NULL ,健康状况 varchar (50) NULL ,婚姻状况 varchar (10) NULL ,身份证号码 varchar (18) NULL ,家庭电话 varchar (50) NULL ,办公电
13、话 varchar (50) NULL ,手机 varchar (50) NULL ,电子邮件地址 varchar (50) NULL ,职工账号 varchar (20) NULL ,单位编号 varchar (20) NULL, 备注 varchar (100) NULL ) ON PRIMARYGO3.4创建其他数据表CREATE TABLE dbo.用户清单 (用户编号 char (6) NOT NULL ,部门 char (20) NOT NULL ,姓名 char (10) NOT NULL ,性别 char (2) NOT NULL ,密码 char (10) NULL ) ON
14、 PRIMARYGOCREATE TABLE dbo.月工资统计表 (日期 int NULL ,职员编号 varchar (30) Not NULL PRIMARY KEY,基本工资 float NULL DEFAULT (0) ,浮动工资 decimal(26, 2) NULL DEFAULT (0) ,合同补 decimal(26, 2) NULL DEFAULT (0) ,粮副补 decimal(26, 2) NULL DEFAULT (0) ,房补 decimal(26, 2) NULL DEFAULT (0) ,临时补 decimal(26, 2) NULL DEFAULT (0)
15、,职务工资 decimal(26, 2) NULL DEFAULT (0) ,工龄工资 decimal(26, 2) NULL DEFAULT (0) ,考核工资 decimal(26, 2) NULL DEFAULT (0) ,奖金 decimal(26, 2) NULL DEFAULT (0) ,应发金额合计 decimal(26, 2) NULL DEFAULT (0) ,房租 decimal(26, 2) NULL DEFAULT (0) ,水电费 decimal(26, 2) NULL DEFAULT (0) ,请假扣除 decimal(26, 2) NULL DEFAULT (0)
16、 ,考勤扣除 decimal(26, 2) NULL DEFAULT (0) ,罚款 decimal(26, 2) NULL DEFAULT (0) ,住房公积金 decimal(26, 2) NULL DEFAULT (0) ,医疗保险 decimal(26, 2) NULL DEFAULT (0) ,养老保险 decimal(26, 2) NULL DEFAULT (0) ,失业保险 decimal(26, 2) NULL DEFAULT (0) ,生育保险 decimal(26, 2) NULL DEFAULT (0) ,工伤保险 decimal(26, 2) NULL DEFAULT
17、(0) ,应扣金额合计 decimal(26, 2) NULL DEFAULT (0) ,工资合计 decimal(26, 2) NULL DEFAULT (0) ,个人所得税 decimal(26, 2) NULL DEFAULT (0) ,实发金额 decimal(26, 2) NULL DEFAULT (0) ,发放否 char (10) NULL ,月份 int NULL) ON PRIMARYGOCREATE TABLE dbo.个人所得税表 (编号 int NOT NULL PRIMARY KEY,级数 char (2) NOT NULL ,不计税工资 decimal(26, 2)
18、 NOT NULL DEFAULT (800),工资下限 decimal(26, 2) NOT NULL DEFAULT (0),工资上限 decimal(26, 2) NOT NULL DEFAULT (0),个人所得税率 decimal(26, 2) NOT NULL DEFAULT (0),速算扣除数 decimal(26, 2) NOT NULL DEFAULT (0),备注 varchar (50) NULL) ON PRIMARYGOCREATE TABLE dbo.工资发放历史表 (日期 int NULL ,职员编号 varchar (30) NULL ,基本工资 float N
19、ULL ,浮动工资 decimal(26, 2) NULL ,合同补 decimal(26, 2) NULL ,粮副补 decimal(26, 2) NULL ,房补 decimal(26, 2) NULL ,临时补 decimal(26, 2) NULL ,职务工资 decimal(26, 2) NULL ,工龄工资 decimal(26, 2) NULL ,考核工资 decimal(26, 2) NULL ,奖金 decimal(26, 2) NULL ,应发金额合计 decimal(26, 2) NULL ,房租 decimal(26, 2) NULL ,水电费 decimal(26,
20、2) NULL ,请假扣除 decimal(26, 2) NULL ,考勤扣除 decimal(26, 2) NULL ,罚款 decimal(26, 2) NULL ,住房公积金 decimal(26, 2) NULL ,医疗保险 decimal(26, 2) NULL ,养老保险 decimal(26, 2) NULL ,失业保险 decimal(26, 2) NULL ,生育保险 decimal(26, 2) NULL ,工伤保险 decimal(26, 2) NULL ,应扣金额合计 decimal(26, 2) NULL ,工资合计 decimal(26, 2) NULL ,个人所得
21、税 decimal(26, 2) NULL ,实发金额 decimal(26, 2) NULL ,发放否 char (10) NULL ,月份 int NULL) ON PRIMARYGOCREATE TABLE dbo.职员奖励表 (序号 int IDENTITY (1, 1) NOT NULL PRIMARY KEY,职员编号 varchar (30) NOT NULL ,奖励类型 varchar (20) NULL ,奖励金额 float NULL DEFAULT (0),是否计入工资 char (10) NULL DEFAULT (否),奖励原因 varchar (50) NULL ,
22、部门意见 varchar (100) NULL ,奖励日期 int NULL) ON PRIMARYGOCREATE TABLE dbo.职员惩罚表 (序号 int IDENTITY (1, 1) NOT NULL PRIMARY KEY,职员编号 varchar (30) NOT NULL ,惩罚类型 varchar (20) NULL ,惩罚金额 float NULL DEFAULT (0) ,是否计入工资 char (10) NULL DEFAULT (否),惩罚原因 varchar (50) NULL ,部门意见 varchar (100) NULL ,惩罚日期 int NULL) O
23、N PRIMARYGO3.5创建外部关键字ALTER TABLE dbo.月工资统计表 ADD CONSTRAINT FK_月工资统计表_职员基本信息表 FOREIGN KEY 职员编号) REFERENCES dbo.职员基本信息表 (职员编号GOALTER TABLE dbo.工资发放历史表 ADD CONSTRAINT FK_工资发放历史表_职员基本信息表 FOREIGN KEY 职员编号) REFERENCES dbo.职员基本信息表 (职员编号GOALTER TABLE dbo.职员奖励表 ADD CONSTRAINT FK_职员奖励表_职员基本信息表 FOREIGN KEY 职员编
24、号) REFERENCES dbo.职员基本信息表 (职员编号GOALTER TABLE dbo.职员惩罚表 ADD CONSTRAINT FK_职员惩罚表_职员基本信息表 FOREIGN KEY 职员编号) REFERENCES dbo.职员基本信息表 (职员编号GO3.6创建存储过程系统使用了四个存储过程,分别实现从历史导入工资明细、计算当月工资和工资发放的功能。这些存储过程都在“当月工资管理”模块中使用,可以通过以下的脚本代码创建。 if exists (select * from dbo.sysobjects where id = object_id(Ndbo.sf_空数据置0) an
25、d OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.sf_空数据置0GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.sf_形成月工资统计表) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.sf_形成月工资统计表GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.sf_当月工资统计) and
26、 OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.sf_当月工资统计GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.sf_当月工资发放) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.sf_当月工资发放GOcreate procedure sf_空数据置0asbegin transactionupdate 月工资统计表 set 基本工资=0 where 基本工资 is n
27、ullupdate 月工资统计表 set 职务工资=0 where 职务工资 is nullupdate 月工资统计表 set 工龄工资=0 where 工龄工资 is nullupdate 月工资统计表 set 考核工资=0 where 考核工资 is nullupdate 月工资统计表 set 奖金=0 where 奖金 is nullupdate 月工资统计表 set 应发金额合计=0 where 应发金额合计 is nullupdate 月工资统计表 set 房租=0 where 房租 is nullupdate 月工资统计表 set 水电费=0 where 水电费 is nullup
28、date 月工资统计表 set 请假扣除=0 where 请假扣除 is nullupdate 月工资统计表 set 罚款=0 where 罚款 is nullupdate 月工资统计表 set 考勤扣除=0 where 考勤扣除 is nullupdate 月工资统计表 set 住房公积金=0 where 住房公积金 is nullupdate 月工资统计表 set 医疗保险=0 where 医疗保险 is nullupdate 月工资统计表 set 养老保险=0 where 养老保险 is nullupdate 月工资统计表 set 应扣金额合计=0 where 应扣金额合计 is nul
29、lupdate 月工资统计表 set 失业保险=0 where 失业保险 is nullupdate 月工资统计表 set 个人所得税=0 where 个人所得税 is nullupdate 月工资统计表 set 工资合计=0 where 工资合计 is nullupdate 月工资统计表 set 实发金额=0 where 实发金额 is nullupdate 个人所得税表 set 个人所得税率=0 where 个人所得税率 is nullcommitGOcreate procedure sf_当月工资统计asbegin transactiondeclare month intselect m
30、onth = 日期 from 月工资统计表- 计算奖金update 月工资统计表 set 奖金 = (select sum(奖励金额) from 职员奖励表 as i where i.是否计入工资=是 and i.奖励日期month*100 and i.奖励日期month*100 and i.惩罚日期1 then 个人所得税率/100 else 个人所得税率 end from 个人所得税表 where 工资上限 1 then 个人所得税率/100 else 个人所得税率 end , gzxx = 工资下限 from 个人所得税表 where 工资下限=gzsxselect grsds = gr
31、sds + (gzhj-gzxx)*slupdate 月工资统计表 set 个人所得税 = grsds where current of mycurfetch next from mycur into zybh,gzhjENDclose mycurdeallocate mycur- 计算实发工资update 月工资统计表 set 实发金额 = 工资合计-个人所得税commitGOcreate procedure sf_形成月工资统计表 导入工资月份 int, 统计工资月份 intasbegin transactiondelete from 月工资统计表 - 删除已有数据if exists (s
32、elect * from 工资发放历史表 where 日期=导入工资月份)begin- 从历史倒入insert into 月工资统计表(日期, 职员编号, 基本工资, 浮动工资, 合同补, 粮副补, 房补, 临时补, 职务工资, 工龄工资, 考核工资, 奖金, 应发金额合计, 房租, 水电费,请假扣除, 考勤扣除, 罚款, 住房公积金, 医疗保险, 养老保险, 失业保险, 生育保险, 工伤保险, 应扣金额合计, 工资合计, 个人所得税, 实发金额,发放否, 月份)select 统计工资月份, 职员编号, 基本工资, 浮动工资, 合同补, 粮副补, 房补, 临时补, 职务工资, 工龄工资, 考核
33、工资, 奖金, 应发金额合计, 房租, 水电费, 请假扣除, 考勤扣除, 罚款,住房公积金, 医疗保险, 养老保险, 失业保险, 生育保险, 工伤保险, 应扣金额合计, 工资合计, 个人所得税, 实发金额,发放否, 月份from 工资发放历史表 as h where h.日期=导入工资月份 end- 新的员工,历史没有记录,生成记录insert into 月工资统计表(职员编号,日期) select 职员编号,统计工资月份 from 职员基本信息表 as h where h.职员编号 not in (select 职员编号 from 月工资统计表)- 将空数据置0exec sf_空数据置0-
34、自动计算工资exec sf_当月工资统计commitGO- 发放指定职员的工资create procedure sf_当月工资发放 职员编号 char(10)asbegin transactionupdate 月工资统计表 set 发放否=是 from 月工资统计表 where 职员编号=职员编号insert into 工资发放历史表select * from 月工资统计表 where 职员编号=职员编号delete 月工资统计表 where 职员编号=职员编号commitGO4代码与界面设计本系统采用多文档窗体程序,每一功能对应一个子窗体。4.1程序运行结果本实例的运行结果如图4所示。选择主
35、菜单中的各菜单项即可进入相应的功能。例如可以选择【薪资福利管理】|【当月工资管理】菜单命令,调出如图5所示的工资管理功能窗体,在其中输入各个工资项明细,单击【计算当月工资】按钮可以计算出工资;其中的工资项明细也可以通过【导入工资历史】按钮从历史数据中导入,从而减轻输入工作的强度;单击工资发放按钮,可以发放选定职员的工资,打印出工资条并将工资发放的记录放入历史。图4 实例运行结果图5 当月工资管理功能窗体4.2创建工程启动Microsoft Visual Studio.NET2003,在主菜单中选择【文件】|【新建】|【项目】命令,弹出【新建项目】对话框没,在【项目类型】列表框中选择【Visua
36、l Basic 项目】,然后在【模板】列表框中选择【Window 应用程序】。在【名称】文本框中输入一个合适的方案文件名,选取要存放的位置,然后单击【确定】按钮完成新项目的创建。6.3创建系统主窗体(1) 利用系统默认生成的窗体作为主窗体,并将其对应的文件改名为“frmMain.vb”,为其添加主菜单控件以及StatusBar控件,布局如图6所示。图6系统主窗体(2)窗体的属性设置如表2所示。表2 主窗体属性设置对象(控件)名属性取值(说明)frmMainNamefrmMainfrmMainText人力资源管理系统frmMainIsMdiContainerTrueStatusBarText人力
37、资源管理系统(3)窗体的主菜单属性设置如表5所示。表3 窗体主菜单属性设置菜单栏菜单项属性取值(说明)MenuItemDepText机构编制管理MenuItemDepManageText机构设置及编码MenuItemDepInfoText机构详细信息MenuItemPeopleText职员信息管理MenuItemDepPeopleManageText职员信息维护MenuItemPeopleQueryText职员信息查询MenuItemSalaryText薪资福利管理MenuItemPeopleSalaryManageText当月工资计算MenuItemTaxInfoText个人所得税率Menu
38、ItemPrizeText工资发放历史MenuItemPunishText职员奖励管理MenuItemSalaryhisText职员惩罚管理(4)添加判断子窗体实例状态的函数GetInstanceState,此函数主要作用是用来实现单击主窗体的某菜单项,如【计算当月工资】只是出现一个计算当月工资窗体。Private Function GetInstanceState(ByVal name As String) As Boolean 获得frmMain窗体的子窗体的数量 Dim i As Integer = Me.MdiChildren.Length 循环判断是否有名为name的子窗体实例 For i = 0 To Me.MdiChildren.Length - 1 If Me.MdiChildren(i).Name = name Then 存在名为name的子窗体,是子窗体获得焦点并返回True Me.MdiChildren(i).Focus() Return True End If Next 不存在名为Name的子窗体False Return False End Function(5)添加采单项MenuItemDepMan