人力资源管理系统.docx
《人力资源管理系统.docx》由会员分享,可在线阅读,更多相关《人力资源管理系统.docx(82页珍藏版)》请在冰豆网上搜索。
![人力资源管理系统.docx](https://file1.bdocx.com/fileroot1/2023-5/17/17c4bdaf-f9bd-4327-8bb7-05d4be32fe51/17c4bdaf-f9bd-4327-8bb7-05d4be32fe511.gif)
人力资源管理系统
人力资源管理系统
1.需求分析
1.1系统背景
人力资源管理模块以经营管理为基础,采用成熟、先进的计算机软、硬件集成技术,融入科学的人事管理思想和模式,对企业及其下属公司的人事信息进行采集、储存、加工、处理和分析,使其及时准确地反映企业的人事聘用状况、人员流动情况、薪资情况等人事信息,为各层管理者提供快速准确的人事管理依据与辅助决策数据。
通过导入规范化信息管理系统,尤其是人力资源管理系统,建立信息化平台。
只有在人力资源得到合理的分配,才能发挥出企业的整体实力,站稳脚跟。
建立一个完善的人力资源管理系统,对一个企业的领导者在人力管理方面有着非常重要的作用。
我们的项目就是基于人力资源管理在企业发展中的重要作用而开发的,使公司能更好的管理人力资源,提高企业的整体竞争力。
通过实施人力资源管理系统,提高人力资源部在日常人力资源操作性等事物的工作效率,为高层提供即时的搞笑的人力资源数据查询、分析,为高层提供决策支持。
同时有利于人力资源内部流程的规范与再造优化,以便更好的为员工提供更好的服务。
1.2系统目标
充分利用网络资源,根据企业实际需求,进一步优化和再造管理流程:
使人力资源的管理更为高效和科学,数据更为准确。
完善人力资源决策支持系统,及时提供相关数据和报表:
使基于人力资源系统数据的决策更为直观和精确。
增强员工自助服务的功能,简化人力资源事务性的管理流程:
使人力资源部门的人员有更多的时间和精力用于人力资源的战略规划。
完善人力资源系统的业务管理功能,建立流程引擎和角色管理机制:
使得达到降低成本,提高效率,合理利用人才,改进员工服务模式的目的。
1.3系统功能
1.4运行环境
开发环境:
Eclipse
MySQL
运行平台:
Windows7/XP操作系统
2.系统设计
2.1结构设计
根据对系统进行需求分析,本系统将分为四个模块。
1.基本信息管理
管理人员基本信息和部门信息,包括人员信息和部门信息的添加、修改、删除、查询。
2.人员调动管理
管理人员调动情况,同时保存人员调动的历史记录,能够查询人员调动记录。
3.人员考核管理
管理人员考核情况,同时保存人员考核的历史记录,能够查询人员考核记录。
4.劳资管理
管理人员薪酬情况,同时保存薪酬变更的历史记录,能够查询薪酬变更记录。
2.2功能结构图
人力资源管理系统的功能结构如图
(1)所示。
添加人员信息
修改人员信息
删除人员信息
基础信息管理
查询人员信息
部门管理
人员调动
人员调动管理
人力资源
管理系统
调动历史查询
人员考核
人员考核管理
考核历史查询
劳资分配管理
劳资管理
劳资历史查询
表
(1)人力资源管理系统的功能结构
2.3功能流程及工作流描述
1.添加人员信息
用户利用添加人员信息管理模块可以实现人员信息的添加。
当用户输入完整的个人信息后,单击“增加”按钮即可完成人员信息添加。
本程序通过Node11Panel.java实现操作界面,通过PersonBean.java进行相关数据库操作。
2.修改人员信息
用户首先在程序左下角选择要修改信息的人员,选择后,人员的详细信息会显示出来,修改信息后单击“修改”按钮即可完成人员信息的修改。
修改信息会保存到数据库中。
人员信息修改通过Node12Panel.java实现操作界面,通过PersonBean.java进行相关数据库操作。
3.删除人员信息
在显示的表格中选择要删除的人员,单击“删除”按钮即可完成删除任务。
删除的信息会保存到数据库中。
人员信息删除通过Node13Panel.java实现,数据库操作仍是通过PersonBean.java实现。
4.查询人员信息
可以通过Node14Panel.java文件实现查询所有人员信息的功能。
5.部门管理
用户利用部门管理模块可以实现部门的增加、修改、删除等操作。
增加信息需要先单击“获取新编号”按钮,填写一级部门名称与二级部门名称后,单击“增加”按钮即可添加新信息;当选择表格中已有的部门信息时,对应的信息会显示在文本框中,即可对选择的信息进行修改与删除操作。
本程序通过Node15Panel.java实现操作界面,通过DeptBean.java文件进行。
6.人员调动
程序运行时能够罗列出所有人员的信息,用户在表格中选择了需要进行部门调动的认人员后,在左下角选择要调入的新部门并单击“调入新部门”按钮即可完成调动工作。
相应的操作会记录到数据库中。
人员调动模块通过Node21Panel.java文件实现操作界面,调动时首先修改人员信息表(Person)中的部门信息,然后再向历史操作记录表(Histrjn)中添加人员调动记录,因此对应的数据库操作主要是通过PersonBean.java和HistrjnBean.java来实现的。
通过Node22.Panel.java可以实现查询所有部门调动的历史数据。
7.人员考核
程序运行时能够罗列出所有人员的信息,用户在表格中选择了需要进行考核的人员后,在右下角选择考核结果并单击“确定”按钮即可完成考核工作。
新进人员默认为“未考核”状态。
考核的相关操作会记录到数据库中。
人员考核模块通过Node31.Panel.java文件实现操作界面,考核时首先修改人员信息表(Person)中的考核信息吗,然后再向历史记录表(Histrjn)中添加人员考核记录,数据库操作也是通过PersonBean.java和HistrjnBean.java来实现的。
通过Node32Panel.java可以实现查询所有人员考核的历史记录数据。
8.劳资管理
劳资管理操作与考核、调动管理类似,人员初始薪酬为“0”,通过劳资管理分配薪酬。
劳资管理模块通过Node41Panel.java文件实现操作界面,数据库操作也是通过PersonBean.java和HistrjnBean.java来实现。
Node42Panel.java实现查询所有劳资分配的历史数据。
3.数据库设计
3.1信息表设计
数据库包含3个表,即人员信息表(Person),历史操作记录表(Histrjn)和部门管理表(Dept),设计需求如表
(2)、表(3)、表(4)。
名称
字段名称
数据类型
主键
非空
人员编号
PersonID
int
Yes
Yes
姓名
Name
Char(20)
No
Yes
性别
Sex
Char(10)
No
Yes
出生年月
Birth
Char(30)
No
Yes
民族
Nat
Char(20)
No
Yes
地址
Address
Char(50)
No
Yes
部门
DeptID
Char(10)
No
Yes
薪酬
Salary
Char(20)
No
Yes
考核
Assess
Char(20)
No
Yes
其他
Other
Char(50)
No
No
表
(2)人员信息表(Person)
名称
字段名称
数据类型
主键
非空
流水编号
JourNo
int
Yes
Yes
操作类型
FromAcc
Char(20)
No
Yes
原始信息
OldInfo
Char(50)
No
Yes
更新信息
NewInfo
Char(50)
No
Yes
变更次数
ChgTime
Char(10)
No
Yes
变更日期
RegDate
Char(20)
No
Yes
人员编号
PersonID
Char(50)
No
Yes
表(3)历史操作记录表(Histrjn)
名称
字段名称
数据类型
主键
非空
编号
DeptID
int
Yes
Yes
一级部门
B_Dept
Char(20)
No
Yes
二级部门
S_Dept
Char(50)
No
Yes
表(4)部门管理表(Dept)
3.2建库代码
--创建数据库
CREATEDATABASE人力资源管理系统HrMS
GO
--设置当前数据库
USEHrMS
GO
--建立Person(人员信息)表(人员编号PersonID、姓名Name、性别Sex、出生年月Birth、民族Nat、地址Address、部门DeptId、薪酬Salary、考核Assess、其他Other)
CREATETABLEPerson
(
PersonIDINT,
NameCHAR(20),
SexCHAR(10),
BirthCHAR(30),
NatCHAR(20),
AddressCHAR(50),
DeptIdCHAR(10),
SalaryCHAR(20),
AssessCHAR(20),
OtherCHAR(50),
PRIMARYKEY(PersonID)
)
GO
--建立Histrjn(历史操作记录)表(流水编号JourNo、操作类型FromAcc、原始信息OldInfo、
更新信息NewInfo、变更次数ChgTime、变更日期RegDate、人员编号PersonID)
CREATETABLEHistrjn
(
JourNoINT,
FromAccCHAR(20),
OldInfoCHAR(50),
NewInfoCHAR(50),
ChgTimeCHAR(10),
RegDateCHAR(20),
PersonIDCHAR(50),
PRIMARYKEY(JourNo)
)
GO
--建立Dept(部门管理)表(编号DeptID、一级部门B_Dept、二级部门S_Dept)
CREATETABLEDept
(
DeptIDINT,
B_DeptCHAR(20),
S_DeptCHAR(50),
PRIMARYKEY(DeptID)
)
GO
--插入Person(人员信息)表
INSERTINTO
Person(PersonID,Name,Sex,Birth,Nat,Address,DeptId,Salary,Assess,Other)
VALUES(1,'张三','男','1990-3-19','汉族','北京','教务处-注册中心','6000','合格','无')
GO
INSERTINTO
Person(PersonID,Name,Sex,Birth,Nat,Address,DeptId,Salary,Assess,Other)
VALUES(2,'李四','男','1991-8-24','汉族','上海','人事处-师资科','8000','不合格','无')
GO
INSERTINTO
Person(PersonID,Name,Sex,Birth,Nat,Address,DeptId,Salary,Assess,Other)
VALUES(3,'王五','男','1992-10-16','汉族','天津','办公室-综合科','10000','优秀','无')
GO
--插入Histrjn(历史操作记录)表
INSERTINTO
Histrjn(JourNo,FromAcc,OldInfo,NewInfo,ChgTime,RegDate,PersonID)
VALUES(6,'调动','教务处-注册中心','人事处-师资科','2','2010-8','1')
GO
INSERTINTO
Histrjn(JourNo,FromAcc,OldInfo,NewInfo,ChgTime,RegDate,PersonID)
VALUES(7,'调动','人事处-师资科','教务处-注册中心','3','2009-9','2')
GO
INSERTINTO
Histrjn(JourNo,FromAcc,OldInfo,NewInfo,ChgTime,RegDate,PersonID)
VALUES(8,'调动','办公室-综合科','教务处-注册中心','4','2011-9','3')
GO
--插入Dept(部门管理)表
INSERTINTO
Dept(DeptID,B_Dept,S_Dept)
VALUES('101','人事处','师资科')
GO
INSERTINTO
Dept(DeptID,B_Dept,S_Dept)
VALUES('202','教务处','注册中心')
GO
INSERTINTO
Dept(DeptID,B_Dept,S_Dept)
VALUES('303','办公室','综合科')
GO
4.详细设计
4.1主界面模块
人力资源管理系统主界面包括HrMS.java和HrMain.java两个文件。
HrMS是系统主运行类,其中有运行整个程序的main方法,该文件继承了HrMain类的一个实例,从而生成了人力资源管理系统的界面。
HrMain类继承自JFrame类,实现了事件侦听的接口,它有一个不带参数的构造函数HrMain(),用来生成HrMain的实例。
HrMain采用树的管理模式,用JSplitPane类将整个界面分为左右两个部分。
其中左侧实现了人力资源管理系统的功能树,采用JTree类构建,同时实现了TreeSelectionListener接口,定义了该接口所必须实现的valueChanged(TreeSelectionEvente)方法,这样可以处理JTree所产生的事件。
当JTree的TreeSelectionEvent事件发生时,调用JSplitPane的setRightComponent(Componetcomp)方法将定义好的JPanel加入右侧,实现不同的管理界面。
表(5)人力资源管理系统主界面
4.2基础信息管理模块
人力资源管理系统采用树形管理,基础信息管理模块为一个节点,下面共有5个叶子。
叶子继承自JPanel,用以设计不同的管理界面。
定义好界面以后,通过调用JSplitPane的setRightComponent(Componetcomp)方法将JPanel加入右侧。
本系统中,叶子节点采用统一规则命名,如Node12Panel.java为节点一的第二个叶子节点,它所对应的内容为基础信息管理(节点一)模块下的修改人员信息(第二叶子节点)管理,其他的以此类推。
因此,基础信息管理模块主要由五个文件组成,分别对应添加人员信息、修改人员信息、删除人员信息、查询人员信息和部门管理这五个功能模块。
表(6)基础信息管理--添加人员信息
表(7)基础信息管理--修改人员信息
表(8)基础信息管理--删除人员信息
表(9)基础信息管理--查询人员信息
表(10)基础信息管理--部门管理
4.3人员调动管理模块
人员调动管理为人力资源管理功能树的第二个节点,其下有两个叶子,分别实现人员调动和调动历史查询的功能。
在本系统的设计中,为了简化系统结构,人员调动主要是人员所属的部门发生变化,人员所属的部门信息保存在人员信息表(Person)中,而人员调动所引起的变化信息保存在历史操作记录表(Histrjn)中,这样便通过历史操作记录表,记录了所有信息变更情况。
表(11)人员调动管理--人员调动
表(12)人员调动管理--调动历史查询
4.4人员考核管理模块
人员考核管理模块为人力资源管理功能树的第三个节点,其下有两个叶子,分别实现人员考核和考核历史查询的功能。
同样,人员考核其实是实现了人员基本信息表中Assess字段的变更,变更的历史流水也会保存在Histrjn表中。
表(13)人员考核管理--人员考核
表(14)人员考核管理--考核历史查询
4.5劳资管理模块
劳资管理模块为人力资源管理功能树的第四个节点,其下有两个叶子,分别实现劳资管理和劳资历史查询的功能。
同样,劳资管理其实是实现了人员信息表中Salary字段的变更,变更的历史流水同样会保存到Histrjn表中。
表(15)劳资管理--劳资分配管理
表(16)劳资管理--劳资历史查询
4.6数据库操作模块
1.Database.java
该类用于实现数据库的操作,包括连接数据库,执行SQL语句、关闭数据库连接等,其代码如下:
importjava.sql.*;
/**
*连接数据库的类
*@authorAdministrator
*
*/
publicclassDatabase{
privateStatementstmt=null;
ResultSetrs=null;
privateConnectionconn=null;
Stringsql;
Stringstrurl="jdbc:
mysql:
//localhost:
3306/HrMs?
user=root&password=123456";
publicDatabase(){
}
/**
*打开数据库连接
*/
publicvoidOpenConn()throwsException{
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(strurl);
}
catch(Exceptione){
System.err.println("executeQuery:
"+e.getMessage());
}
}
/**
*执行sql语句,返回结果集rs
*/
publicResultSetexecuteQuery(Stringsql){
stmt=null;
rs=null;
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLExceptione){
System.err.println("executeQuery:
"+e.getMessage());
}
returnrs;
}
/**
*执行sql语句
*/
publicvoidexecuteUpdate(Stringsql){
stmt=null;
rs=null;
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
mit();
}
catch(SQLExceptione){
System.err.println("aq.closeConn:
"+e.getMessage());
}
}
publicvoidcloseStmt(){
try{
stmt.close();
}
catch(SQLExceptionex){
System.err.println("aq.closeConn:
"+ex.getMessage());
}
}
/**
*关闭数据库连接
*/
publicvoidcloseConn(){
try{
conn.close();
}
catch(SQLExceptionex){
System.err.println("aq.closeConn:
"+ex.getMessage());
}
}
/**
*转换编码
*/
publicstaticStringtoGBK(Stringstr){
try{
if(str==null)
str="";
else
str=newString(str.getBytes("ISO-8859-1"),"GBK");
}
catch(Exceptione){
System.out.println(e);
}
returnstr;
}
}
2.PersonBean.java
该类用于实现对人员信息表进行数据库操作的功能,包括人员信息的添加、修改、删除、查询等,其代码如下:
importjava.util.*;
importjava.sql.*;
importjavax.swing.*;
/**
*有关人员信息数据库操作的类
*/
publicclassPersonBean{
Stringsql;
ResultSetrs=null;
Stringfield1;//PersonID;
Stringfield2;//Name;
Stringfield3;//Sex;
Stringfield4;//Birth;
Stringfield5;//Nat;
Stringfield6;//Address;
Stringfield7;//DeptID;
Stringfield8;//Salary;
Stringfield9;//Assess;
Stringfield10;//Other;
StringcolName;//列名
StringcolValue;//列值
StringcolValue2;//列值
/**
*添加信息
*/
publicvoidadd(Stringf1,Stringf2,Stringf3,Stringf4,Stringf5,
Stringf6,Stringf7,Stringf8,Stringf9,Stringf10){
DatabaseDB=newDatabase();
this.field1=f1;
this.field2=f2;
this.field3=f3;
this.field4=f4;
this.field5=f5;
this.field6=f6;
this.field7=f7;
this.field8=f8;
this.field9=f9;
this.field10=f10;
if(field2==null||field2.equals("")){
JOptionPane.showMessageDialog(null,"请输入员工姓名","错误",JO