人力资源管理系统

更新时间:2023-09-11 09:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人力资源管理系统

1.需求分析

1.1系统背景

人力资源管理模块以经营管理为基础,采用成熟、先进的计算机软、硬件集成技术,融入科学的人事管理思想和模式,对企业及其下属公司的人事信息进行采集、储存、加工、处理和分析,使其及时准确地反映企业的人事聘用状况、人员流动情况、薪资情况等人事信息,为各层管理者提供快速准确的人事管理依据与辅助决策数据。通过导入规范化信息管理系统,尤其是人力资源管理系统,建立信息化平台。只有在人力资源得到合理的分配,才能发挥出企业的整体实力,站稳脚跟。建立一个完善的人力资源管理系统,对一个企业的领导者在人力管理方面有着非常重要的作用。 我们的项目就是基于人力资源管理在企业发展中的重要作用而开发的,使公司能更好的管理人力资源,提高企业的整体竞争力。通过实施人力资源管理系统,提高人力资源部在日常人力资源操作性等事物的工作效率,为高层提供即时的搞笑的人力资源数据查询、分析,为高层提供决策支持。同时有利于人力资源内部流程的规范与再造优化,以便更好的为员工提供更好的服务。

1.2系统目标

充分利用网络资源,根据企业实际需求,进一步优化和再造管理流程:使人力资源的管理更为高效和科学,数据更为准确。

完善人力资源决策支持系统,及时提供相关数据和报表:使基于人力资源系统数据的决策更为直观和精确。

增强员工自助服务的功能,简化人力资源事务性的管理流程:使人力资源部门的人员有更多的时间和精力用于人力资源的战略规划。

完善人力资源系统的业务管理功能,建立流程引擎和角色管理机制:使得达到降低成本,提高效率,合理利用人才,改进员工服务模式的目的。

1.3系统功能

1.4运行环境

开发环境:Eclipse MySQL

运行平台:Windows 7/XP 操作系统

1

2.系统设计

2.1结构设计

根据对系统进行需求分析,本系统将分为四个模块。 1.基本信息管理

管理人员基本信息和部门信息,包括人员信息和部门信息的添加、修改、删除、查询。 2.人员调动管理

管理人员调动情况,同时保存人员调动的历史记录,能够查询人员调动记录。 3.人员考核管理

管理人员考核情况,同时保存人员考核的历史记录,能够查询人员考核记录。 4.劳资管理

管理人员薪酬情况,同时保存薪酬变更的历史记录,能够查询薪酬变更记录。

2.2功能结构图

人力资源管理系统的功能结构如图(1)所示。

劳资管理 人员考核管理 人力资源 管理系统 人员调动管理 基础信息管理 添加人员信息 修改人员信息 删除人员信息 查询人员信息 部门管理 人员调动 调动历史查询 人员考核 考核历史查询 劳资分配管理 劳资历史查询 表(1)人力资源管理系统的功能结构 2

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.数据库设计

3.1信息表设计

数据库包含3个表,即人员信息表(Person),历史操作记录表(Histrjn)和部门管理表(Dept),设计需求如表(2)、表(3)、表(4)。

名称 人员编号 姓名 性别 出生年月 民族 地址 部门 薪酬 考核 其他

名称 流水编号 操作类型 原始信息 更新信息 变更次数 变更日期 人员编号 字段名称 JourNo FromAcc OldInfo NewInfo ChgTime RegDate PersonID 数据类型 int Char(20) Char(50) Char(50) Char(10) Char(20) Char(50) 主键 Yes No No No No No No 非空 Yes Yes Yes Yes Yes Yes Yes 字段名称 PersonID Name Sex Birth Nat Address DeptID Salary Assess Other 数据类型 int Char(20) Char(10) Char(30) Char(20) Char(50) Char(10) Char(20) Char(20) Char(50) 主键 Yes No No No No No No No No No 非空 Yes Yes Yes Yes Yes Yes Yes Yes Yes No 表(2)人员信息表(Person) 表(3)历史操作记录表(Histrjn)

名称 编号 一级部门 二级部门 字段名称 DeptID B_Dept S_Dept 数据类型 int Char(20) Char(50) 表(4)部门管理表(Dept) 主键 Yes No No 非空 Yes Yes Yes

3.2建库代码

--创建数据库

CREATE DATABASE 人力资源管理系统HrMS GO

--设置当前数据库 USE HrMS GO

4

--建立Person(人员信息)表(人员编号PersonID、姓名Name、性别Sex、出生年月Birth、民族Nat、地址Address、部门DeptId、薪酬Salary、考核Assess、其他Other) CREATE TABLE Person ( PersonID INT, Name CHAR(20), Sex CHAR(10), Birth CHAR(30), Nat CHAR(20), Address CHAR(50), DeptId CHAR(10), Salary CHAR(20), Assess CHAR(20), Other CHAR(50), PRIMARY KEY(PersonID) ) GO

--建立Histrjn(历史操作记录)表(流水编号JourNo、操作类型FromAcc、原始信息OldInfo、 更新信息NewInfo、变更次数ChgTime、变更日期RegDate、人员编号PersonID) CREATE TABLE Histrjn ( JourNo INT, FromAcc CHAR(20), OldInfo CHAR(50), NewInfo CHAR(50), ChgTime CHAR(10), RegDate CHAR(20), PersonID CHAR(50), PRIMARY KEY(JourNo) ) GO

--建立Dept(部门管理)表(编号DeptID、一级部门B_Dept、二级部门S_Dept) CREATE TABLE Dept ( DeptID INT, B_Dept CHAR(20), S_Dept CHAR(50), PRIMARY KEY(DeptID) ) GO

5

--插入Person(人员信息)表 INSERT INTO Person(PersonID, Name ,Sex ,Birth ,Nat ,Address ,DeptId, Salary ,Assess ,Other) VALUES( 1,'张三','男','1990-3-19','汉族','北京','教务处-注册中心','6000','合格','无') GO

INSERT INTO Person(PersonID, Name ,Sex ,Birth ,Nat ,Address ,DeptId, Salary ,Assess ,Other) VALUES( 2,'李四','男','1991-8-24','汉族','上海','人事处-师资科','8000','不合格','无') GO

INSERT INTO Person(PersonID, Name ,Sex ,Birth ,Nat ,Address ,DeptId, Salary ,Assess ,Other) VALUES( 3,'王五','男','1992-10-16','汉族','天津','办公室-综合科','10000','优秀','无') GO

--插入Histrjn(历史操作记录)表 INSERT INTO Histrjn(JourNo ,FromAcc ,OldInfo ,NewInfo,ChgTime,RegDate,PersonID ) VALUES( 6,'调动','教务处-注册中心','人事处-师资科','2','2010-8','1') GO

INSERT INTO Histrjn(JourNo ,FromAcc ,OldInfo ,NewInfo,ChgTime,RegDate,PersonID ) VALUES( 7,'调动','人事处-师资科','教务处-注册中心','3','2009-9','2') GO

INSERT INTO Histrjn(JourNo ,FromAcc ,OldInfo ,NewInfo,ChgTime,RegDate,PersonID ) VALUES( 8,'调动','办公室-综合科','教务处-注册中心','4','2011-9','3') GO

--插入Dept(部门管理)表 INSERT INTO Dept(DeptID ,B_Dept ,S_Dept ) VALUES('101','人事处','师资科') GO

INSERT INTO Dept(DeptID ,B_Dept ,S_Dept ) VALUES('202','教务处','注册中心') GO

INSERT INTO Dept(DeptID ,B_Dept ,S_Dept ) VALUES('303','办公室','综合科') GO

6

4.详细设计

4.1主界面模块

人力资源管理系统主界面包括HrMS.java和HrMain.java两个文件。HrMS是系统主运行类,其中有运行整个程序的main方法,该文件继承了HrMain类的一个实例,从而生成了人力资源管理系统的界面。HrMain类继承自JFrame类,实现了事件侦听的接口,它有一个不带参数的构造函数HrMain(),用来生成HrMain的实例。HrMain采用树的管理模式,用JSplitPane类将整个界面分为左右两个部分。其中左侧实现了人力资源管理系统的功能树,采用JTree类构建,同时实现了TreeSelectionListener接口,定义了该接口所必须实现的valueChanged(TreeSelectionEvent e)方法,这样可以处理JTree所产生的事件。当JTree的TreeSelectionEvent 事件发生时,调用JSplitPane的setRightComponent(Componet comp)方法将定义好的JPanel加入右侧,实现不同的管理界面。

表(5)人力资源管理系统主界面

4.2基础信息管理模块

人力资源管理系统采用树形管理,基础信息管理模块为一个节点,下面共有5个叶子。叶子继承自JPanel,用以设计不同的管理界面。定义好界面以后,通过调用JSplitPane的setRightComponent(Componet comp)方法将JPanel加入右侧。本系统中,叶子节点采用统一规则命名,如Node12Panel.java为节点一的第二个叶子节点,它所对应的内容为基础信息管理(节点一)模块下的修改人员信息(第二叶子节点)管理,其他的以此类推。因此,基础信息管理模块主要由五个文件组成,分别对应添加人员信息、修改人员信息、删除人员信息、查询人员信息和部门管理这五个功能模块。

表(6)基础信息管理--添加人员信息

7

表(7)基础信息管理--修改人员信息

表(8)基础信息管理--删除人员信息

表(9)基础信息管理--查询人员信息

8

表(10)基础信息管理--部门管理

4.3人员调动管理模块

人员调动管理为人力资源管理功能树的第二个节点,其下有两个叶子,分别实现人员调动和调动历史查询的功能。在本系统的设计中,为了简化系统结构,人员调动主要是人员所属的部门发生变化,人员所属的部门信息保存在人员信息表(Person)中,而人员调动所引起的变化信息保存在历史操作记录表(Histrjn)中,这样便通过历史操作记录表,记录了所有信息变更情况。

表(11)人员调动管理--人员调动

表(12)人员调动管理--调动历史查询

9

4.4人员考核管理模块

人员考核管理模块为人力资源管理功能树的第三个节点,其下有两个叶子,分别实现人员考核和考核历史查询的功能。同样,人员考核其实是实现了人员基本信息表中Assess字段的变更,变更的历史流水也会保存在Histrjn表中。

表(13)人员考核管理--人员考核

表(14)人员考核管理--考核历史查询

4.5劳资管理模块

劳资管理模块为人力资源管理功能树的第四个节点,其下有两个叶子,分别实现劳资管理和劳资历史查询的功能。同样,劳资管理其实是实现了人员信息表中Salary字段的变更,变更的历史流水同样会保存到Histrjn表中。

表(15)劳资管理--劳资分配管理

10

表(16)劳资管理--劳资历史查询

4.6数据库操作模块 1. Database.java

该类用于实现数据库的操作,包括连接数据库,执行SQL语句、关闭数据库连接等,其代码如下: import java.sql.*; /**

* 连接数据库的类

* @author Administrator * */

public class Database { private Statement stmt=null; ResultSet rs=null; private Connection conn=null; String sql; String strurl=\ public Database(){ } /** * 打开数据库连接 */ public void OpenConn() throws Exception{ try{ Class.forName(\ conn=DriverManager.getConnection(strurl); }

11

catch(Exception e){ System.err.println(\ } } /** * 执行sql语句,返回结果集rs */ public ResultSet executeQuery(String sql){ stmt=null; rs=null; try{ stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sql); } catch(SQLException e){ System.err.println(\ } return rs; } /** * 执行sql语句 */ public void executeUpdate(String sql){ stmt=null; rs=null; try{ stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); stmt.executeQuery(sql); conn.commit(); } catch(SQLException e){ System.err.println(\ } } public void closeStmt(){ try{ stmt.close(); } catch(SQLException ex){

12

}

System.err.println(\ } } /**

* 关闭数据库连接 */

public void closeConn(){ try{ conn.close(); } catch(SQLException ex){ System.err.println(\ } }

/**

* 转换编码 */

public static String toGBK(String str){ try{ if(str==null) str=\ else str=new String(str.getBytes(\ } catch(Exception e){ System.out.println(e); } return str; }

2. PersonBean.java

该类用于实现对人员信息表进行数据库操作的功能,包括人员信息的添加、修改、删除、查询等,其代码如下: import java.util.*; import java.sql.*; import javax.swing.*; /**

* 有关人员信息数据库操作的类 */

public class PersonBean { String sql;

13

ResultSet rs = null; String field1; //PersonID; String field2; //Name; String field3; //Sex; String field4; //Birth; String field5; //Nat; String field6; //Address; String field7; //DeptID; String field8; //Salary; String field9; //Assess; String field10; //Other; String colName;//列名 String colValue;//列值 String colValue2;//列值 /** * 添加信息 */ public void add(String f1, String f2, String f3, String f4, String f5, String f6, String f7, String f8, String f9, String f10){ Database DB = new Database(); 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, \请输入员工姓名\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field3 == null||field3.equals(\ JOptionPane.showMessageDialog(null, \请输入性别\\错误\

14

JOptionPane.ERROR_MESSAGE); return; } else if (field4 == null||field4.equals(\ JOptionPane.showMessageDialog(null, \请输入出生年月\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field5 == null||field5.equals(\ JOptionPane.showMessageDialog(null, \请输入民族\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field6 == null||field6.equals(\ JOptionPane.showMessageDialog(null, \请输入地址\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field7 == null||field7.equals(\ JOptionPane.showMessageDialog(null, \请输入部门\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field8 == null||field8.equals(\ JOptionPane.showMessageDialog(null, \请输入薪酬\\错误\JOptionPane.ERROR_MESSAGE); return; } else{ sql = \into Person(PersonID,Name,Sex,Birth,Nat,Address,DeptID,Salary,Assess,Other) \ +\

('\'\ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\成功添加一条新的纪录!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \保存失败\\错误\

15

JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } } /** * 修改信息 */ public void modify(String f1, String f2, String f3, String f4, String f5, String f6, String f7, String f8, String f9, String f10){ Database DB = new Database(); 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, \请输入员工姓名\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field3 == null||field3.equals(\ JOptionPane.showMessageDialog(null, \请输入性别\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field4 == null||field4.equals(\ JOptionPane.showMessageDialog(null, \请输入出生年月\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field5 == null||field5.equals(\

16

JOptionPane.showMessageDialog(null, \请输入民族\\错JOptionPane.ERROR_MESSAGE); return; } else if (field6 == null||field6.equals(\ JOptionPane.showMessageDialog(null, \请输入地址\\错JOptionPane.ERROR_MESSAGE); return; } else if (field7 == null||field7.equals(\ JOptionPane.showMessageDialog(null, \请输入部门\\错JOptionPane.ERROR_MESSAGE); return; } else if (field8 == null||field8.equals(\ JOptionPane.showMessageDialog(null, \请输入薪酬\\错JOptionPane.ERROR_MESSAGE); return; } else{ sql = \ \ \ \ \ \ \ \ \ \ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\成功修改一条新的纪录!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \更新失败\\错JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn();

17

误\

误\

误\

误\

误\

} } } /** * 删除信息 */ public void delete(String f1){ Database DB = new Database(); this.field1 = f1; sql = \ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\成功删除一条新的纪录!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \删除失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } /** * 根据编号查询信息 */ public String[] search(String f1){ Database DB = new Database(); this.field1 = f1; String[] s = new String[10]; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ s[0] = rs.getString(\

18

s[1] = rs.getString(\ s[2] = rs.getString(\ s[3] = rs.getString(\ s[4] = rs.getString(\ s[5] = rs.getString(\ s[6] = rs.getString(\ s[7] = rs.getString(\ s[8] = rs.getString(\ s[9] = rs.getString(\ } else s = null; } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return s; } /** * 人员信息综合查询(查询所有记录) */ public String[][] searchAllForNode(){ Database DB = new Database(); String[][] sn = null; int row = 0; int i = 0; sql = \PersonID,Name,Sex,Dept.DeptID as DeptID,B_Dept,S_Dept,Salary,Assess FROM Dept,Person where Dept.DeptID = Person.DeptID order by PersonID\ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); } if(row == 0){

19

}

sn = new String[1][6]; sn[0][0] = \ \ sn[0][1] = \ \ sn[0][2] = \ \ sn[0][3] = \ \ sn[0][4] = \ \ sn[0][5] = \ \ } else{ sn = new String[row][6]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = rs.getString(\ sn[i][3] = rs.getString(\ sn[i][4] = rs.getString(\ sn[i][5] = rs.getString(\ i++; } } }

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return sn;

/**

* 修改信息 */

public void updateDept(String f1,String f7){

Database DB = new Database();

this.field1 = f1; this.field7 = f7;

sql = \

20

new HrMS(); } }

import java.awt.*;

import java.awt.event.*;//事件和监听器类 import javax.swing.*;

import javax.swing.event.*;

import javax.swing.tree.*;//JTree组件的支持类 import java.net.*; /**

* 人力资源管理系统主界面 */

@SuppressWarnings(\

public class HrMain extends JFrame implements TreeSelectionListener{ //框架的大小 Dimension faceSize=new Dimension(650,450); //建立JTree菜单 JTree tree; DefaultMutableTreeNode root;//人力资源管理系统 DefaultMutableTreeNode node1;//人员基本信息维护 DefaultMutableTreeNode node2;//部门信息管理 DefaultMutableTreeNode node3;//人员调动管理 DefaultMutableTreeNode node4;//人员考核管理 DefaultMutableTreeNode node5;//劳资管理 DefaultMutableTreeNode leafnode; TreePath treePath; //主界面面板 public static JSplitPane splitPane; JPanel panel1; JPanel panel2; JPanel panel3; JLabel welcome=new JLabel(); JScrollPane scrollPane; /** * 程序初始化函数 */ public HrMain(){

46

enableEvents(AWTEvent.WINDOW_EVENT_MASK); //添加框架的关闭事件处理

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack();

//设置框架的大小 this.setSize(faceSize); //设置标题

this.setTitle(\人力资源管理系统\

//设置自定义大小 this.setResizable(false); try{ Init(); } catch(Exception e){ e.printStackTrace(); } } /**

* 程序初始化函数 */

private void Init() throws Exception{ //Container contentPane=this.getContentPane(); //ContentPane.setLayout(new BorderLayout()); //添加JTree菜单 root=new DefaultMutableTreeNode(\人力资源管理系统\ node1=new DefaultMutableTreeNode(\基本信息管理\ node2=new DefaultMutableTreeNode(\人员调动管理\ node3=new DefaultMutableTreeNode(\人员考核管理\ node4=new DefaultMutableTreeNode(\劳资管理\ //人员基本信息 root.add(node1); leafnode=new DefaultMutableTreeNode(\添加人员信息\ node1.add(leafnode); leafnode=new DefaultMutableTreeNode(\修改人员信息\ node1.add(leafnode); leafnode=new DefaultMutableTreeNode(\删除人员信息\ node1.add(leafnode); leafnode=new DefaultMutableTreeNode(\查询人员信息\ node1.add(leafnode); leafnode=new DefaultMutableTreeNode(\部门管理\ node1.add(leafnode); //人员调动管理

47

root.add(node2); leafnode=new DefaultMutableTreeNode(\人员调动\ node2.add(leafnode); leafnode=new DefaultMutableTreeNode(\调动历史查询\ node2.add(leafnode); //人员考核管理 root.add(node3); leafnode=new DefaultMutableTreeNode(\人员考核\ node3.add(leafnode); leafnode=new DefaultMutableTreeNode(\考核历史查询\ node3.add(leafnode); //劳资管理 root.add(node4); leafnode=new DefaultMutableTreeNode(\劳资分配管理\ node4.add(leafnode); leafnode=new DefaultMutableTreeNode(\劳资历史查询\ node4.add(leafnode); tree=new JTree(root); scrollPane=new JScrollPane(tree); scrollPane.setPreferredSize(new Dimension(150,400)); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); //生成JPanel panel1=new JPanel(); panel2=new JPanel(); panel3=new JPanel(); panel1.add(scrollPane); welcome.setText(\欢迎使用人力资源管理系统\ welcome.setFont(new Font(\ panel3.add(welcome); //生成JSplitPane并设置参数 splitPane=new JSplitPane(); splitPane.setOneTouchExpandable(false); splitPane.setContinuousLayout(true); splitPane.setPreferredSize(new Dimension(150,400)); splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT); splitPane.setLeftComponent(panel1); splitPane.setRightComponent(panel3); splitPane.setDividerSize(2); splitPane.setDividerLocation(161); //生成主界面

48

this.setContentPane(splitPane); this.setVisible(true); //添加事件侦听 tree.addTreeSelectionListener(this); //关闭程序时的操作 this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } /** * 事件处理 */ public void actionPerformed(ActionEvent e){ } /** * JTree事件处理 */ public void valueChanged(TreeSelectionEvent tse){ DefaultMutableTreeNode

dnode=(DefaultMutableTreeNode)tse.getPath().getLastPathComponent(); System.out.println(\ String node_str=dnode.toString(); if(node_str==\人力资源管理系统\ splitPane.setRightComponent(panel3); } //人员基本信息管理树 else if(node_str==\基本信息管理\ //当选中后展开或关闭叶子节点 treePath=new TreePath(node1.getPath()); if(tree.isExpanded(treePath)) tree.collapsePath(treePath); else tree.expandPath(treePath); } else if(node_str==\添加人员信息\ Node11Panel node11Panel=new Node11Panel(); splitPane.setRightComponent(node11Panel); } else if(node_str==\修改人员信息\

49

Node12Panel node12Panel=new Node12Panel(); splitPane.setRightComponent(node12Panel); }

else if(node_str==\删除人员信息\ Node13Panel node13Panel=new Node13Panel(); splitPane.setRightComponent(node13Panel); }

else if(node_str==\查询人员信息\ Node14Panel node14Panel=new Node14Panel(); splitPane.setRightComponent(node14Panel); }

else if(node_str==\部门管理\ Node15Panel node15Panel=new Node15Panel(); splitPane.setRightComponent(node15Panel); }

//人员调动管理树

else if(node_str==\人员调动管理\ //当选中后展开或关闭叶子节点 treePath=new TreePath(node2.getPath()); if(tree.isExpanded(treePath)) tree.collapsePath(treePath); else tree.expandPath(treePath); }

else if(node_str==\人员调动\ Node21Panel node21Panel=new Node21Panel(); splitPane.setRightComponent(node21Panel); }

else if(node_str==\调动历史查询\ Node22Panel node22Panel=new Node22Panel(); splitPane.setRightComponent(node22Panel); }

//人员考核管理树

else if(node_str==\人员考核管理\ //当选中后展开或关闭叶子节点 treePath=new TreePath(node3.getPath()); if(tree.isExpanded(treePath)) tree.collapsePath(treePath); else tree.expandPath(treePath); }

else if(node_str==\人员考核\ Node31Panel node31Panel=new Node31Panel(); splitPane.setRightComponent(node31Panel);

50

try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\人员调动成功!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \更新失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } /** * 修改信息 */ public void updateSalary(String f1,String f8){ Database DB = new Database(); this.field1 = f1; this.field8 = f8; sql = \ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\劳资更改成功!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \更新失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); }

21

} /** * 修改信息 */ public void updateAssess(String f1,String f9){ Database DB = new Database(); this.field1 = f1; this.field9 = f9; sql = \ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\人员考核成功!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \更新失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } /** * 人员信息综合查询 */ public String[][] searchAll(){ Database DB = new Database(); String[][] sn = null; int row = 0; int i = 0; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){

22

row = rs.getRow(); } if(row == 0){ sn = new String[1][6]; sn[0][0] = \ \ sn[0][1] = \ \ sn[0][2] = \ \ sn[0][3] = \ \ sn[0][4] = \ \ sn[0][5] = \ \ } else{ sn = new String[row][6]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = rs.getString(\ sn[i][3] = rs.getString(\ sn[i][4] = rs.getString(\ DeptBean dp = new DeptBean(); sn[i][5] = dp.getDeptStr(rs.getString(\ i++; } } }

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return sn; } /**

* 获得新的ID */

public int getId(){ Database DB = new Database(); int ID = 1;

23

}

sql = \try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ ID = rs.getInt(1) + 1; } else ID = 1; }

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return ID;

/**

* 取得DeptID */

public String getDeptId(String f1){ Database DB = new Database(); sql = \ String deptid = null; try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ deptid = rs.getString(\ } else deptid = \ } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return deptid; }

24

/**

* 取得name */

public String getName(String f1){ Database DB = new Database(); sql = \ String name = null; try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ name = rs.getString(\ } else name = \ } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return name; }

/**

* 获得表中的所有编号 */

public String[] getAllId(){ String[] s = null; int row = 0; int i = 0; Database DB = new Database(); sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); }

if(row == 0){ s = null;

25

}

}

} else{ s = new String[row]; rs.first(); rs.previous(); while(rs.next()){ s[i] = rs.getString(1)+\ i++; } } }

catch(Exception e){ System.out.println(e); }

finally { DB.closeStmt(); DB.closeConn(); }

return s;

3. DeptBean.java

该类用于实现对部门相关信息进行数据库操作的功能,包括部门信息的增加、修改、删除、查询等,其代码如下: import java.util.*; import java.sql.*; import javax.swing.*; /**

* 有关部门信息数据库操作的类 */

public class DeptBean { String sql; ResultSet rs = null; String field1; //DeptID; String field2; //B_Dept; String field3; //S_Dept; String colName;//列名 String colValue;//列值 String colValue2;//列值

26

/** * 添加信息 */ public void add(String f1, String f2, String f3){ Database DB = new Database(); this.field1 = f1; this.field2 = f2; this.field3 = f3; if(field2 == null||field2.equals(\ JOptionPane.showMessageDialog(null, \请输入一级部门名称\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field3 == null||field3.equals(\ JOptionPane.showMessageDialog(null, \请输入二级部门名称\\错误\JOptionPane.ERROR_MESSAGE); return; } else{ sql = \into Dept(DeptID,B_Dept,S_Dept) values ('\ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\成功添加一条新的纪录!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \保存失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } }

27

/** * 修改信息 */ public void modify(String f1, String f2, String f3){ Database DB = new Database(); this.field1 = f1; this.field2 = f2; this.field3 = f3; if(field2 == null||field2.equals(\ JOptionPane.showMessageDialog(null, \请输入一级部门名称\\错误\JOptionPane.ERROR_MESSAGE); return; } else if (field3 == null||field3.equals(\ JOptionPane.showMessageDialog(null, \请输入二级部门名称\\错误\JOptionPane.ERROR_MESSAGE); return; } else{ sql = \= \ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\成功修改一条新的纪录!\ } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \更新失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } } /** * 删除信息

28

*/ public void delete(String f1){ Database DB = new Database(); this.field1 = f1; sql = \ try{ DB.OpenConn(); DB.executeUpdate(sql); JOptionPane.showMessageDialog(null,\成功删除一条新的纪录!\ } catch(Exception e){ JOptionPane.showMessageDialog(null, \删除失败\\错误\JOptionPane.ERROR_MESSAGE); System.out.println(e); } finally { DB.closeStmt(); DB.closeConn(); } } /** * 根据编号查询信息 */ public String[] search(String f1){ Database DB = new Database(); this.field1 = f1; String[] s = new String[7]; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ s[0] = rs.getString(\ s[1] = rs.getString(\ s[2] = rs.getString(\ } else s = null; }

29

}

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return s;

/**

* 查询所有记录 */

public String[][] searchAll(){

Database DB = new Database(); String[][] sn = null; int row = 0; int i = 0;

sql = \try{ DB.OpenConn(); rs = DB.executeQuery(sql);

if(rs.last()){ row = rs.getRow(); }

if(row == 0){ sn = new String[1][3]; sn[0][0] = \ \ sn[0][1] = \ \ sn[0][2] = \ \} else{ sn = new String[row][3]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = rs.getString(\ i++; } }

30

} catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return sn; } /** * 为资产管理提供查询 */ public String[] searchAllForNode(){ Database DB = new Database(); String[] sn = null; int row = 0; int i = 0; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); } if(row == 0){ sn[0] = \ sn[1] = \ sn[2] = \ } else{ sn = new String[row]; rs.first(); rs.previous(); while(rs.next()){ sn[i]

rs.getString(\ i++; } } }

31

=

}

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return sn;

/**

* 人员信息综合查询(按照ID进行查询) */

public String[][] searchAll(String f1){ this.field1 = f1; Database DB = new Database(); String[][] sn = null; int row = 0; int i = 0; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql);

if(rs.last()){ row = rs.getRow(); } if(row == 0){ sn = null; } else{ sn = new String[row][6]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = rs.getString(\ i++; } } }

catch(Exception e){ }

32

finally { DB.closeStmt(); DB.closeConn(); }

return sn; } /**

* 获得新的ID */

public int getId(){ Database DB = new Database(); int ID = 1; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ ID = rs.getInt(1) + 1; } else ID = 1; } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return ID; }

/**

* 获得表中的所有编号 */

public String[] getAllId(){ String[] s = null; int row = 0; int i = 0; Database DB = new Database(); sql = \ try{

33

}

DB.OpenConn();

rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); }

if(row == 0){ s = null; } else{ s = new String[row]; rs.first(); rs.previous(); while(rs.next()){ s[i] = rs.getString(1); i++; } } }

catch(Exception e){ System.out.println(e); }

finally { DB.closeStmt(); DB.closeConn(); }

return s;

/**

* 根据编号查询信息 */

public String getDeptStr(String f1){ Database DB = new Database(); this.field1 = f1; String s = \ sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ s = rs.getString(\

34

}

}

} else s = null; }

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return s;

4. HistrjnBean.java

该类用于实现对历史流水相关信息进行数据库操作的功能,包括增加流水信息、提供多种方式的查询等。由于历史流水通常是长时间保存,故不能对其进行修改、删除等操作,其代码如下:

import java.util.*; import java.sql.*; import javax.swing.*;

import java.text.DateFormat; /**

* 有历史流水数据库操作的类 */

public class HistrjnBean { String sql; ResultSet rs = null; String field1; //JourNo; String field2; //FromAcc; String field3; //OldInfo; String field4; //NewInfo; String field5; //ChgTime; String field6; //RegDate; String field7; //PersonID; String colName;//列名 String colValue;//列值 String colValue2;//列值 /**

35

* 添加信息 */ public void add(String f1, String f2, String f3, String f4, String f5, String f6, String f7){ Database DB = new Database(); this.field1 = f1; this.field2 = f2; this.field3 = f3; this.field4 = f4; this.field5 = f5; this.field6 = f6; this.field7 = f7; sql = \into Histrjn(JourNo,FromAcc,OldInfo,NewInfo,ChgTime,RegDate,PersonID) \ +\

('\ System.out.println(\ try{ DB.OpenConn(); DB.executeUpdate(sql); } catch(Exception e){ System.out.println(e); JOptionPane.showMessageDialog(null, \保存失败\\错误\JOptionPane.ERROR_MESSAGE); } finally { DB.closeStmt(); DB.closeConn(); } } /** * 查询所有记录 */ public String[][] searchAllForDept(){ Database DB = new Database(); DeptBean deptBean = new DeptBean();

36

String[][] sn = null; int row = 0; int i = 0; sql = \* FROM Histrjn,Person where Fromacc='人员调动' and Person.PersonID=Histrjn.PersonID order by Histrjn.PersonID,ChgTime\ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); } if(row == 0){ sn = new String[1][6]; sn[0][0] = \ \ sn[0][1] = \ \ sn[0][2] = \ \ sn[0][3] = \ \ sn[0][4] = \ \ sn[0][5] = \ \ } else{ sn = new String[row][6]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = deptBean.getDeptStr(rs.getString(\ sn[i][3] = deptBean.getDeptStr(rs.getString(\ sn[i][4] = rs.getString(\ sn[i][5] = rs.getString(\ i++; } } } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn();

37

} return sn; } /** * 查询所有记录 */ public String[][] searchAllForSalary(){ Database DB = new Database(); String[][] sn = null; int row = 0; int i = 0; sql = \* FROM Histrjn,Person where Fromacc='劳资分配' and Person.PersonID=Histrjn.PersonID order by Histrjn.PersonID,ChgTime\ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); } if(row == 0){ sn = new String[1][6]; sn[0][0] = \ \ sn[0][1] = \ \ sn[0][2] = \ \ sn[0][3] = \ \ sn[0][4] = \ \ sn[0][5] = \ \ } else{ sn = new String[row][6]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = rs.getString(\ sn[i][3] = rs.getString(\ sn[i][4] = rs.getString(\ sn[i][5] = rs.getString(\

38

i++; } } } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return sn; } /** * 查询所有记录 */ public String[][] searchAllForAssess(){ Database DB = new Database(); String[][] sn = null; int row = 0; int i = 0; sql = \* FROM Histrjn,Person where Fromacc='人员考核' and Person.PersonID=Histrjn.PersonID order by Histrjn.PersonID,ChgTime\ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.last()){ row = rs.getRow(); } if(row == 0){ sn = new String[1][6]; sn[0][0] = \ \ sn[0][1] = \ \ sn[0][2] = \ \ sn[0][3] = \ \ sn[0][4] = \ \ sn[0][5] = \ \ } else{

39

sn = new String[row][6]; rs.first(); rs.previous(); while(rs.next()){ sn[i][0] = rs.getString(\ sn[i][1] = rs.getString(\ sn[i][2] = rs.getString(\ sn[i][3] = rs.getString(\ sn[i][4] = rs.getString(\ sn[i][5] = rs.getString(\ i++; } } } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return sn; } /**

* 获得新的ID */

public int getId(){ Database DB = new Database(); int ID = 1; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ ID = rs.getInt(1) + 1; } else ID = 1; } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn();

40

} return ID; }

/**

* 获得新的ID */

public int getChgTime(String f2, String f7){ Database DB = new Database(); int ID = 1; sql = \ System.out.println(\ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ ID = rs.getInt(1) + 1; } else ID = 1; } catch(Exception e){ } finally { DB.closeStmt(); DB.closeConn(); } return ID; }

/**

* 判断是否有记录 */

public boolean isRows(String f7){ Database DB = new Database(); boolean have = true; sql = \ try{ DB.OpenConn(); rs = DB.executeQuery(sql); if(rs.next()){ have = false; }

41

}

}

}

catch(Exception e){ }

finally { DB.closeStmt(); DB.closeConn(); }

return have;

5. 总结

5.1.Java--GUI

Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。这两部分功能由Java的两个包来完成-awt和swing。以下是三个与图形用户界面有关的术语。

(1) 组件:构成图形用户界面的各种元素称为组件。

(2) 容器:是图形用户界面中容纳组件的部分,一个容器可容纳一个或多个组件,甚至可以容纳其他容器。窗口就是一种容器。容器与组件的的关系就像杯子和水的关系。需要说明的是,容器也可以被称为组件。

(3) 布局管理器:组件在被放到容器中时,要遵循一定的布局方式。在Java的图形用户界面中,有专门的类来管理组件的布局,称这些类为布局管理器。所谓的布局管理器,实际上就是能够对组件进行布局管理的类。

用吃饭的例子就能很好的说明这三个术语之间的关系。容器就是吃饭的桌子,组件就是一盘盘的菜。我们放菜的时候总要安排一下哪个菜应该放在什么位置,这就是布局管理器。

5.2.JDBC连接数据库

?创建一个以JDBC连接数据库的程序,包含7个步骤: 1、加载JDBC驱动程序:

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。 例如: try{

//加载MySql的驱动类

Class.forName(\ }catch(ClassNotFoundException e){

System.out.println(\找不到驱动程序类 ,加载驱动失败!\ e.printStackTrace() ; }

成功加载后,会将Driver类的实例注册到DriverManager类中。 2、提供JDBC连接的URL

?连接URL定义了连接数据库时的协议、子协议、数据源标识。 ?书写形式:协议:子协议:数据源标识 协议:在JDBC中总是以jdbc开始

42

子协议:是桥连接的驱动程序或是数据库管理系统名称。 数据源标识:标记找到数据库来源的地址与连接端口。 例如:(MySql的连接URL) jdbc:mysql:

//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;

useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为

gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。 3、创建数据库的连接

?要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。

?使用DriverManager的getConnectin(String url , String username ,

String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。 例如:

//连接MySql数据库,用户名和密码都是root String url = \ String username = \ String password = \ try{

Connection con =

DriverManager.getConnection(url , username , password ) ; }catch(SQLException se){

System.out.println(\数据库连接失败!\ se.printStackTrace() ; }

4、创建一个Statement

?要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型:

1、执行静态SQL语句。通常通过Statement实例实现。

2、执行动态SQL语句。通常通过PreparedStatement实例实现。 3、执行数据库存储过程。通常通过CallableStatement实例实现。 具体的实现方式:

Statement stmt = con.createStatement() ;

PreparedStatement pstmt = con.prepareStatement(sql) ; CallableStatement cstmt =

con.prepareCall(\ 5、执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute

1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。

2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或

DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等 3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的

43

语句。

具体实现的代码:

ResultSet rs = stmt.executeQuery(\ int rows = stmt.executeUpdate(\ boolean flag = stmt.execute(String sql) ; 6、处理结果 两种情况:

1、执行更新返回的是本次操作影响到的记录数。 2、执行查询返回的结果是一个ResultSet对象。 ? ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问。

? 使用结果集(ResultSet)对象的访问方法获取数据: while(rs.next()){

String name = rs.getString(\

String pass = rs.getString(1) ; // 此方法比较高效 }

(列是从左到右编号的,并且从列1开始) 7、关闭JDBC对象

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反: 1、关闭记录集 2、关闭声明 3、关闭连接对象

if(rs != null){ // 关闭记录集 try{

rs.close() ;

}catch(SQLException e){ e.printStackTrace() ; } }

if(stmt != null){ // 关闭声明 try{

stmt.close() ;

}catch(SQLException e){ e.printStackTrace() ; } }

if(conn != null){ // 关闭连接对象 try{

conn.close() ;

}catch(SQLException e){ e.printStackTrace() ; } }

44

6.详细代码

import javax.swing.UIManager;//导入swing界面管理器,可以更换swing的look and feel管理程序界面

import java.awt.*;//创建用户界面及绘制和管理图形、图像的类 /**

* 人力资源管理系统运行主类 * @author Administrator * */

public class HrMS {

boolean packFrame=false; /**

* 构造函数 */

public HrMS(){ HrMain frame=new HrMain(); if (packFrame){ frame.pack();//根据窗口里面的布局及组件的preferedSize来确定frame的最佳大小 } else{ frame.validate(); } //设置运行时窗口的位置

Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=frame.getSize(); if(frameSize.height >screenSize.height ){ frameSize.height =screenSize.height; }

if(frameSize.width >screenSize.width ){ frameSize.width =screenSize.width; }

frame.setLocation((screenSize.width -frameSize.width )/2, (screenSize.height -frameSize.height )/2); frame.setVisible(true); }

public static void main(String[] args){ //设置运行风格 try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e){ e.printStackTrace(); }

45

本文来源:https://www.bwwdw.com/article/dv4h.html

Top