软件工程人力资源管理系统.docx
《软件工程人力资源管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程人力资源管理系统.docx(57页珍藏版)》请在冰点文库上搜索。
软件工程人力资源管理系统
JIJIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY
软件工程开发工具实践
学院名称:
东方学院
专业:
软件工程
班级:
08软件
(2)班
姓名:
顾振强
学号:
08824207
指导教师姓名:
张俐
2011年1月7日
人力资源管理系统实验
一、人力资源系统使用的必要性
如今计算机的普及和计算机科学技术的飞速发展,人们开始越来越多地利用计算机解决实际问题。
员工信息管理是企业信息管理的重要部分,面对大量的人事信息,采用人力处理即浪费时间、又浪费人力和物力,并且数据的准确性低。
因此,开发一个界面友好,易于操作的人力资源管理软件进行自动化处理变得十分重要,这正是本系统开发的目的和意义。
本文所阐述的人力资源管理系统.提升了企业的效率和竞争力,满足了现代企业管理的需要.
本系统采用java语言基于C/S架构设计,能够跨平台使用,有较大的实用性和移植性,极大地方便了公司的人力资源管理。
可以节省很多工作时间,进而节省公司运作成本。
关键字:
J2SE,C/S架构
2、可行性分析
(一)概论
人事管理系统的开放需要用到多方面的知识,包括数据库的选用、数据库驱动程序的选择和安装、管理界面的设计、信息的存储和读取等。
这对设计者的水平都有一定的要求。
因此,如何设计和开发好这个人事管理系统,对提高开发水平和系统的设计能力有极大的帮助。
在设计开发过程中,开放者需要选用恰当的数据库和数据库连接驱动程序、设计好合适的数据库表格和设计好美观大方的管理界面。
在现在信息爆发的情况下,企业间的竞争和企业对人才的需求都更加激烈,人力资源也越来越受到重视。
科学的管理方式与IT技术相结合成为提高人力资源部门管理水平的主要方式,人力资源管理开发将成为围绕人的信息化过程。
发展的重要标识是E化的员工、E化的人力资源,最终成为E化的企业。
因此,建立现代化的计算机人事管理系统已成为现代化企业基础建设的一个重要方式。
1.系统要求
本系统要求基于C/S结构的人力资源管理系统,可使公司内部业务实现计算机管理,加速数据的采集、处理、分析、输出、帮助管理人员查看、分析、管理人员和部门资料,了解各位职员和部门之间的关系和情况。
2.系统目标
使用本系统之后可以使公司的管理层更方便的管理公司的部门和人员资料,实现一点即看,一点即管的管理方式,大大的增加公司管理者的管理效率,可以更及时更准确的把公司的部门和人员信息储存和管理。
(二)技术可行性分析
人力资源系统采用常规的数据库管理方法,根据人事管理的特点对数据库进行操作,例如对数据库的增加、修改、删除、打印和输出都做出了进一步的优化。
1、优越性
本系统有利于数据的集中、有效管理。
与手动管理方式相比,易更新,易备份。
本系统增强了系统的灵活性。
当原始数据发生变动时,应用程序可对数据库稍作修改即可使数据及时反映最新情况。
本系统能够较好地保证数据库的安全。
建立用户并为之分配密码和操作权限,这样,任何用户只能在他的权限范围内对数据库进行操作。
2、结合自身的技术可行性分析
本系统为一个人力资源管理系统的一个模块功能,以现有所学的java技术和数据库技术,完成需求所需要的功能是没有问题的,可是在既定时间内顺利完成任务。
3、所需要的硬件和软件准备
A、硬件设备:
PC;
B、软件:
WindowsXP、MyEclipse、Mysql、Microsoftproject、PowerDesigner、Microsoftvisio、
RationalRose。
(三)可行性分析小结
由可行性分析得出结论,根据现有技术力量和公司资金情况,可以着手开发此项目,完成人力资源系统软件,满足公司的需求。
3、系统开发计划
(一)概述
1.系统描述
公司或企业的人力资源管理是公司或企业内部管理中很重要的一部分,因为人才的全球化竞争使公司或企业的人力资源管理面临前所未有的挑战。
传统的人事管理使人事经理需要花费大量的时间处理人事信息数据,而仅剩时间可专注于人力资源的发展和规划。
人力资源管理系统可以改变这一切,使人力资源部门可轻松地管理复杂繁琐的人事信息,从复杂性的日常生活中解脱出来,投注更多的精力与人力资源战略规划以支持和推动公司的战略目标的实现,提高其对公司的价值。
2.待开发软件的功能
待开发软件的主要功能模块
图
(1)
(二)开发过程表述
甘特图:
图
(2)
图(3)
(3)系统运行要求:
1、windows2000/xp/vista/7、内存256MB、CPU1.0GHZ、硬盘10GB以上。
2、数据库:
mysql
(4)软件运行缺陷
考虑到本软件使用的广泛性,在设计时应注意软件的可移植性,这也是符合开发语言java的特点,这样可以在不同的运行平台上运行了。
但是本软件的安全性还不是很高,密码很容易被破解,所以安全性方面还有待提高,以后将继续完善和维护。
(五)基本功能需求
A、基本的信息的增、删、改;
B、隐含信息提示
下图为用PowerDesigner画的基本的数据流图:
图(4)
(六)系统接口需求
1、用户界面
简洁的用户界面,便于操作的按钮设计。
简单易懂,和普通软件类似的操作方式使人能够很快的上手,不需要系统的学习。
2、硬件接口
支持一般的PC机。
四、需求分析
(一)任务概述
1、功能需求
用mysql建立人力资源管理系统基础数据库。
用Myeclips编程建立人力资源管理系统。
该系统将实现一个较为通用的人力资源管理系统,模块功能详见功能需求部分。
具体功能如下:
1)人员信息和部门信息的增、删、改,系统管理员对用户信息的管理,实现登陆一次就可以进行全部操作,并且还能在初始登录窗口注册为新的用户,用户信息存储保存。
2)档案缴费,人事部可以通过本软件为每个员工进行档案缴费,并且记录在数据库中进行保存。
2、数据结构描述
本系统有三张数据表,一张用户表,一张部门表,一张公司人员表,下图为三张表在本系统中的关系。
图(5)
用户表的数据如表:
图(6)
部门表的数据如表:
图(7)
公司人员表的数据如表:
图(8)
(2)其他需求
1)安全保密性
本系统必须通过注册才能登录本系统进而对系统中的数据进行操作,这样就可以保护用户资料以及公司的商业机密资料。
2)可移植性
本系统可以在PC电脑上反复安装,安装简单,配置要求不高,大多数电脑可以满足要求。
五、概要设计
(一)总体设计
1、系统总体结构和模块外部设计
图(9)
模块编号和模块名称
模块编号
模块名称
备注
M1.1
新员工调档
M1.2
档案缴费
M1.3
档案维护
M1.4
退出系统
正常退出
图(10)
(二)接口设计
1、外部接口
1)用户界面
系统登陆界面如图所示:
图(11)
如果把完整的程序比作一个屋子,那么,用户登录模块就是一扇门,用户名和密码就是门和钥匙,锁就是验证用户名和密码的;逻辑,只有确保用户名和密码都正确才能进入屋子。
用户名直接登录的流程如图所示:
图(12)
用户修改密码之后在进行登录的流程图如图所示:
图(13)
6、详细设计
(一)概述
1.系统开发目的
人力资源管理系统是一个面向企业人才资源人员,为其提供服务的综合信息管理系统。
人才资源人员通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。
人员的个人信息、以及各种相关的亲属等情况开课情况都记录在人才资源系统里进行管理。
由人才资源人员在档案更新中完成对运行人才资源系统所需的基本数据的维护。
包括这些信息的增、修、改等,变动都将在这进行操作。
系统开始投入使用,人才资源人员先根据企业实际情况,建立相关人员的信息,主要信息包括系所的姓名及它的学历等。
输入人员信息的过程是首先从系统数据库中选择相关的系所,然后再它下面加入新的辅助信息。
当人员情况发生变动后,人才资源人员要及时完成对库中的信息进行维护。
如果发生人才资源的变动(如进和出),则可以在档案更新中进行处理。
2.社会背景
在科技不断发展进步、技术创新加快的情况下,企业间的竞争和企业对人才的需求都更加激烈,人力资源也越来越受到重视。
科学的管理方式与IT技术相结合成为提高人力资源部门管理水平的主要方式,人力资源管理开发将成为围绕人的信息化过程。
发展的重要标识是E化的员工、E化的人力资源,最终成为E化的企业。
因此,建立现代化的计算机人事管理系统已成为现代化企业基础建设的一个重要方式。
(二)总体设计
模块描述:
图(14)
程序设计说明:
图(15)
(三)部分用户界面图
(1)、用户登录界面,如果没有账号可以注册为用户,界面如下所示:
图(16)
(2)、注册界面,通过此界面的操作注册为用户,注册界面如下所示:
图(17)
(3)、系统主界面,如下图所示:
图(18)
(4)、用户信息管理界面,如下图所示:
图(19)
(5)、添加用户界面,如下图所示:
图(20)
(6)、修改用户界面,如下图所示:
图(21)
(7)、公司人员管理界面,如下图所示:
图(22)
(8)、添加员工信息界面,如下图所示:
图(23)
(9)、修改公司人员信息界面,如下图所示:
图(24)
(10)、新员工注册界面,如下图所示:
图(25)
(11)、修改公司人员信息界面,如下图所示:
图(26)
(12)、公司部门管理界面,如下图所示:
图(27)
(13)、添加员工信息界面,如下图所示:
图(28)
(14)修改部门信息界面,如下图所示
图(29)
(15)、档案缴费界面,如下图所示:
图(30)
(16)、员工缴费界面,如下图所示:
图(31)
七、UML建模
1、系统整体用例图用例图:
图(32)
2、人事部用例图【局部已实现模块用例图】
图(33)
3、系统管理员用例图
图(34)
4、类图
图(35)
5、序列图
1)系统管理员注册登录序列图
图(36)
与之对应的协作图:
图(37)
2)系统管理员添加用户界面
图(38)
与之对应的协作图:
图(39)
3)系统管理员删除用户用例图
图(40)
与之对应的协作图:
图(41)
4)系统管理员修改用户信息用例图
图(42)
与之对应的协作图:
图(43)
5)人事部添加部门信息用例图
图(44)
与之对应的协作图:
图(45)
6)人事部删除部门信息用例图
图(46)
与之对应的协作图:
图(47)
7)人事部修改信息用例图
图(48)
与之对应的协作图:
图(49)
8)人事部添加员工信息用例图
图(50)
与之对应的协作图:
图(51)
9)人事部删除员工信息用例图
图(52)
与之对应的协作图:
图(53)
10)人事部修稿员工信息用例图
图(54)
与之对应的协作图:
图(55)
11)人事部缴费用例图
图(56)
与之对应的协作图:
图(57)
9、主要代码(只列出部分代码)
1、登录窗口
packageleslie;
importjava.awt.BorderLayout;
importjava.awt.Font;
importjava.awt.Frame;
importjava.awt.GridLayout;
importjava.awt.Rectangle;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.sql.*;
importjavax.swing.*;
publicclassUserManageextendsJFrameimplementsActionListener{
JLabeljl1,jl2,jl3,jl4,jl5,jl6;
JTablejt=null;
JTextFieldjtf1;
JPasswordFieldjtf2;
JButtonjb0,jb1,jb2,jb3;
JPaneljp0,jp1,jp2,jp3;
UserModeluserModel=null;
ResultSetrs=null;
publicstaticfinalStringdriver="com.mysql.jdbc.Driver";
publicstaticfinalStringurl="jdbc:
mysql:
//localhost:
3306/jstu?
useUnicode=true&characterEncoding=gb2312";
publicstaticfinalStringuser="root";
publicstaticfinalStringpassword="root";
Connectionconn=null;
PreparedStatementpstmt=null;
Stringsql="select*fromuser";
publicstaticvoidmain(Stringargs[]){
UserManagemanage=newUserManage();
}
publicUserManage(){
userModel=newUserModel();
jt=newJTable(userModel);
jl1=newJLabel("姓名");
jl2=newJLabel("密码");
jp1=newJPanel(newGridLayout(2,1));
jp1.add(jl1);
jp1.add(jl2);
jtf1=newJTextField(10);
jtf2=newJPasswordField(10);
jp2=newJPanel(newGridLayout(2,1));
jp2.add(jtf1);
jp2.add(jtf2);
jb1=newJButton("登录");
jb1.addActionListener(this);
jb2=newJButton("注册");
jb2.addActionListener(this);
jb3=newJButton("退出");
jb3.addActionListener(this);
jp0=newJPanel();
jp3=newJPanel();
jp3.add(jb1);
jp3.add(jb2);
jp3.add(jb3);
this.add(jp0,BorderLayout.NORTH);
this.add(jp1,BorderLayout.WEST);
this.add(jp2,BorderLayout.EAST);
this.add(jp3,BorderLayout.SOUTH);
this.setSize(250,160);
this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1)
{
booleanflag=false;
try{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next())
{
Stringname=rs.getString("name");
Stringpwd=rs.getString("password");
if(jtf1.getText().trim().equals(name)&&jtf2.getText().trim().equals(pwd))
{
newWorkerMain("人力资源管理系统");
this.dispose();
flag=true;
return;
}
}
if(flag==false)
{
JOptionPane.showMessageDialog(this,"还没有注册,如需进入请注册!
");
}
}catch(ClassNotFoundExceptione1){
e1.printStackTrace();
}catch(SQLExceptione1){
e1.printStackTrace();
}finally
{
try{
rs.close();
pstmt.close();
conn.close();
}catch(SQLExceptione1){
e1.printStackTrace();
}
}
}
if(e.getSource()==jb2)
{
newAddUser(this,"注册界面",true);
}
elseif(e.getSource()==jb3)
{
this.dispose();
}
}
}
2、主界面代码
packageleslie;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.*;
publicclassWorkerMainextendsJFrameimplementsActionListener
{
JMenuBarmenubar;
JMenumenu1,menu2;
JButtonbutton1,button2,button3,button4;
JPanelPanel1,Panel2,Panel3,Panel4;
JMenuItemExititem,AddWorkerInfoitem;
publicstaticfinalStringdriver="com.mysql.jdbc.Driver";
publicstaticfinalStringurl="jdbc:
mysql:
//localhost:
3306/jstu?
useUnicode=true&characterEncoding=gb2312";
publicstaticfinalStringuser="root";
publicstaticfinalStringpassword="root";
publicstaticvoidmain(String[]args)
{
newWorkerMain("人力资源管理系统");
}
WorkerMain(Strings)
{
super(s);
menubar=newJMenuBar();
Panel1=newJPanel();
Panel2=newJPanel();
Panel3=newJPanel();
Panel4=newJPanel();
setDefaultCloseOperation(EXIT_ON_CLOSE);
menu1=newJMenu("用户信息管理");
menu2=newJMenu("系统管理");
button1=newJButton("公司部门资料");
button2=newJButton("公司人员详细资料");
button3=newJButton("新员工调档");
button4=newJButton("档案缴费");
Exititem=newJMenuItem("退出系统");
AddWorkerInfoitem=newJMenuItem("管理");
Panel1.add(button1);
Panel2.add(button2);
Panel3.add(button3);
Panel4.add(button4);
add(Panel1);
add(Panel2);
add(Panel3);
add(Panel4);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
menubar.add(menu1);
menubar.add(menu2);
menu2.add(Exititem);
Exititem.addActionListener(this);
menu1.add(AddWorkerInfoitem);
AddWorkerInfoitem.addActionListener(this);
setJMenuBar(menubar);
setLayout(newFlowLayout());
setBounds(100,100,400,400);
setSize(300,400);
setVisible(true);
validate();
}
public