精华内容
下载资源
问答
  • 简单介绍一下使用substance.jar包更换java应用...在窗体中通过拖控件设计一个最简单的登录窗体 4.然后导入substance.jar包 先导入到lib然后添加到Referenced Libraries中确认在Referenced Libraries中有substance...

    简单介绍一下使用substance.jar包更换java应用程序皮肤

    1.打开MyEclipse新建一个java工程

    2.在java工程中新建一个Matisse Form

    1364483990_4536.jpg

    1364484018_5014.jpg

    3.在窗体中通过拖控件设计一个最简单的登录窗体

    1364484311_9119.jpg

    4.然后导入substance.jar包

    1364484524_5211.jpg

    先导入到lib然后添加到Referenced Libraries中

    确认在Referenced Libraries中有substance.jar包

    5.添加皮肤代码在main()函数中

    JFrame.setDefaultLookAndFeelDecorated(true);

    JDialog.setDefaultLookAndFeelDecorated(true);

    try

    {

    UIManager.setLookAndFeel(UIManager

    .getCrossPlatformLookAndFeelClassName());

    UIManager

    .setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel());

    // UIManager.setLookAndFeel(new SubstanceBusinessLookAndFeel());

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }这里要注意需要导入一些包,最后会附上完整代码

    6.执行后就可以看到效果

    1364484691_7082.jpg

    在java图标的地方点击鼠标右键可以更换皮肤

    窗体完整代码:

    import javax.swing.JDialog;

    import javax.swing.JFrame;

    import javax.swing.UIManager;

    import org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel;

    /*

    * testUI.java

    *

    * Created on __DATE__, __TIME__

    */

    /**

    *

    * @author __USER__

    */

    public class testUI extends javax.swing.JFrame {

    /** Creates new form testUI */

    public testUI() {

    initComponents();

    }

    /** This method is called from within the constructor to

    * initialize the form.

    * WARNING: Do NOT modify this code. The content of this method is

    * always regenerated by the Form Editor.

    */

    //GEN-BEGIN:initComponents

    //

    private void initComponents() {

    jLabel1 = new javax.swing.JLabel();

    jLabel2 = new javax.swing.JLabel();

    jTextField1 = new javax.swing.JTextField();

    jPasswordField1 = new javax.swing.JPasswordField();

    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel1.setText("\u8d26\u53f7\uff1a");

    jLabel2.setText("\u5bc6\u7801\uff1a");

    jButton1.setText("\u767b\u5f55");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(

    getContentPane());

    getContentPane().setLayout(layout);

    layout.setHorizontalGroup(layout

    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(

    layout.createSequentialGroup()

    .addGap(63, 63, 63)

    .addGroup(

    layout.createParallelGroup(

    javax.swing.GroupLayout.Alignment.LEADING)

    .addComponent(jLabel1)

    .addComponent(jLabel2))

    .addPreferredGap(

    javax.swing.LayoutStyle.ComponentPlacement.RELATED)

    .addGroup(

    layout.createParallelGroup(

    javax.swing.GroupLayout.Alignment.LEADING)

    .addComponent(

    jButton1,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    90,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGroup(

    layout.createParallelGroup(

    javax.swing.GroupLayout.Alignment.TRAILING)

    .addComponent(

    jTextField1,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    129,

    javax.swing.GroupLayout.PREFERRED_SIZE)

    .addComponent(

    jPasswordField1,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    129,

    javax.swing.GroupLayout.PREFERRED_SIZE)))

    .addContainerGap(77, Short.MAX_VALUE)));

    layout.setVerticalGroup(layout

    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(

    layout.createSequentialGroup()

    .addGap(67, 67, 67)

    .addGroup(

    layout.createParallelGroup(

    javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(jLabel1)

    .addComponent(

    jTextField1,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE))

    .addGap(39, 39, 39)

    .addGroup(

    layout.createParallelGroup(

    javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(jLabel2)

    .addComponent(

    jPasswordField1,

    javax.swing.GroupLayout.PREFERRED_SIZE,

    javax.swing.GroupLayout.DEFAULT_SIZE,

    javax.swing.GroupLayout.PREFERRED_SIZE))

    .addGap(32, 32, 32).addComponent(jButton1)

    .addContainerGap(28, Short.MAX_VALUE)));

    pack();

    }//

    //GEN-END:initComponents

    /**

    * @param args the command line arguments

    */

    public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {

    更换皮肤代码/

    JFrame.setDefaultLookAndFeelDecorated(true);

    JDialog.setDefaultLookAndFeelDecorated(true);

    try

    {

    UIManager.setLookAndFeel(UIManager

    .getCrossPlatformLookAndFeelClassName());

    UIManager

    .setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel());

    // UIManager.setLookAndFeel(new SubstanceBusinessLookAndFeel());

    }

    catch (Exception e)

    {

    e.printStackTrace();

    }

    ///

    new testUI().setVisible(true);

    }

    });

    }

    //GEN-BEGIN:variables

    // Variables declaration - do not modify

    private javax.swing.JButton jButton1;

    private javax.swing.JLabel jLabel1;

    private javax.swing.JLabel jLabel2;

    private javax.swing.JPasswordField jPasswordField1;

    private javax.swing.JTextField jTextField1;

    // End of variables declaration//GEN-END:variables

    } java皮肤包下载地址:http://download.csdn.net/detail/vcwuyang/5193702

    展开全文
  • import java.awt.*;import java.awt.event.*;import javax.swing.*;public class UseCase3 extends JFrame{/****/private static final long serialVersionUID = 1L;public UseCase3(){setVisible(t...

    package com.lzw;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class UseCase3 extends JFrame{

    /**

    *

    */

    private static final long serialVersionUID = 1L;

    public UseCase3(){

    setVisible(true);

    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    setTitle("登录窗体");

    setBounds(300, 200, 300, 150);

    Container cp=getContentPane();

    cp.setLayout(null);

    JLabel jl=new JLabel("用户名:");

    jl.setBounds(10, 10, 200, 18);

    final JTextField name=new JTextField();

    name.setBounds(80, 10, 150, 18);

    JLabel jl2=new JLabel("密码:");

    jl2.setBounds(10, 50, 200, 18);

    final JPasswordField password=new JPasswordField();

    password.setBounds(80, 50, 150, 18);

    cp.add(jl);

    cp.add(name);

    cp.add(jl2);

    cp.add(password);

    JButton jb=new JButton("确定");

    jb.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent arg0) {

    if(name.getText().trim().length()==0||new String(password.getPassword()).trim().length()==0){

    JOptionPane.showMessageDialog(null, "用户名密码不允许为空");

    return;

    }

    if(name.getText().trim().equals("my")&&new String(password.getPassword()).trim().equals("love")){

    JOptionPane.showMessageDialog(null, "登录成功");

    }

    else{

    JOptionPane.showMessageDialog(null, "用户名或密码错误");

    }

    }

    });

    jb.setBounds(80, 80, 60, 18);

    cp.add(jb);

    final JButton button = new JButton();

    button.setText("重置");

    button.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent arg0) {

    // TODO 自动生成方法存根

    name.setText("");

    password.setText("");

    }

    });

    button.setBounds(150, 80, 60, 18);

    getContentPane().add(button);

    }

    public static void main(String[] args) {

    new UseCase3();

    }

    }

    a56e91b8b4fdb3827e5e1e87b2f7e6f2.png

    时间: 10-09

    展开全文
  • Java窗体应用程序:人事管理系统

    万次阅读 多人点赞 2017-11-19 21:23:27
    不做这个,先写一个订餐系统,后来为了参加十一月的区域赛就搁置了这个作业,参加完 区域赛白天还要练题没怎么写,都是晚上快睡觉的时候写了几个界面,断断续续把界面写完 了,这周五、周六一鼓...

    老师布置了第二个JAVA作业,让写人事管理系统。

    代码思路参考自:清华大学出版设出版的《Java课程设计案例精编(第3版)》

    作业是老师在十月一日哦放假前让写的,所以十一回家写了俩界面,然后回到学校老师说先

    不做这个,先写一个订餐系统,后来为了参加十一月的区域赛就搁置了这个作业,参加完

    区域赛白天还要练题没怎么写,都是晚上快睡觉的时候写了几个界面,断断续续把界面写完

    了,这周五、周六一鼓作气把这个给写完了,正好周一上课老师检查。

     

    项目下载地址:https://github.com/wenyaxinluoyang/HRManagement

    项目运行环境:

    jdk 1.8.0_141

    mysql 5.5.27

     

    关于项目几个问题:

    1.是否可以把项目发到邮箱?

    答:没法发,原因两点,这个代码两三年前写的,那么久远,现在我都毕业工作了,电脑也换了,我没这个代码。

    2.关于github的,没有账号的。

    答:个知识个代码托管的地方,我记忆中注册好像不需要翻墙,直接去注册就好了,然后去下载代码,

    不知道怎么下载,百度一下就好,这些操作都特别简单。

    3.关于问题,你的项目在我的环境能够成功运行?

    答:纠正一点这个项目下载后一定要配备我说的环境,而不是在你的环境运行。

    举个例子:工作的时候,技术总监已经说了我们开发项目要用哪个版本的jdk,框架spring用哪个版本,

    我们工作人员也按照要求进行开发,然后可以成功运行我们的代码。当我们把项目部署到服务器的时候,

    我们服务器的环境配置的和开发环境是会保持一致的,然后我们的代码才能有最大的可能不发生问题跑起来,

    我们绝不会任由喜爱,在服务器上随便安装与开发时候不相同的版本的东西,然后对开发人员说,你的代码

    要在这个环境中跑起来。时间推移,版本更新,里面的某些内容发生了改变,万一了以前版本的代码不兼容,

    代码将永远跑不起来。

    我上学的时候jdk发展到1.8,1.9我们大部分都用1.8

    现在,写文章时间为2019.06.23,jdk现在版本发展到1.12, 1.11,可以看到和项目开发时的版本相差

    很大了。同样项目中使用的mysql等工具,经过几年的发展,版本更新很快,版本跨度这么大,已经出现

    了兼容问题。好多使用我代码的人,配置了较高版本的jdk,结果界面无法显示,都是jdk太高导致的。

    4.关于数据库链接问题?

    改数据库连接对应的用户名和密码,要到DataOperator中修改。

    项目使用mysql作为数据库。如果你更换成sqlserver或oracle,那么数据库驱动也要修改为sqlserver或

    oracle的驱动,如果mysql用了与项目不同的版本,请记得修改驱动的对应版本。

    5.运行代码时无法显示问题

    这个是根据很多人遇到反应的,问题所在jdk版本过高,出现对旧版本代码的兼容问题。

    解决方案,换成1.8.0_141或比他不要高太多的版本。

    6.关于数据库(指用mysql)改了用户名和密码还报错的。

    这是最近一个同学新遇到的问题,我之前没见过。改了用户名和密码后,还提示无法连接数据库,

    数据库驱动版本也对,是因为高版本的驱动对应数据库连接的写法与低版本的不同,直接百度

    抛出的异常,然后根据网上经验修改连接。

    7.关于无法修改员工部门的问题

    我代码的bug,在PersonBean中修改员工信息的update语句中我忘记写部门了,大家可以自行加上。

    8.建议

    建议从下载到环境配置到项目导入自己完成,包括驱动,一切前期工作自己完成。然后认真看

    一下代码,代码逻辑非常简单,核心代码就是数据库操作,jdbc编程都是固定格式的,看一个

    能明白其他的。然后出现什么问题了可以在留言询问了。本来我在评论区留了我的QQ号,

    说起来真是后悔,有些同学什么都不管,每一步都希望我告诉他,包括下载和eclipse导入项目

    之类的基本操做,让我觉得有点难以接受。甚至我在上班的时候,在外面朋友聚会的时候都在

    QQ上回复大家遇到的问题,我有时会气得都锤桌子了,真的不能什么都依靠作者,自己一点

    脑子都不想动。

    人事管理系统功能简介:

    人事管理系统主要用来实现各种人事管理功能,这些功能包括人员基本信息管理,部门

    管理,人员调动管理,人员考核管理以及劳资管理这些模块。

     

     

    系统功能图:

     

    数据库设计:

    员工信息表:Person

     

     

    未使用员工编号表:unUsedPersonId

     

     

    部门信息表:DeptTable

     

    未使用部门编号表:unUsedDeptId

     

     

    人员调动历史表:jobChange

     

    人员考核历史表:assessChange

     

    劳资历史记录表:salaryChange

     

     

    系统主界面图:(HrMain.java)

    可以发现主界面是两个分离面板,将左侧的树形结构和右侧的面板隔开。左侧的树形结构清晰地

    表示出了该系统地功能。设计该界面左侧是一个树,人事管理系统是树根root,然后有四个一级节点,

    接下来是若干个二级节点(叶子节点)。该界面主要响应的事件有,当点击根节点的时候,显示图中

    右侧界面,当点击一级节点的时候,如果该节点没有展开,则先展开该节点。当点击叶子节点的时候

    将相应的面板显示在右侧区域中。

     

    1.基本信息管理模块:实现对人员信息的增删查该操作,以及对部门的增删查改操作。

    1.1 添加人员信息界面(NodeOnePanelOne.java)

     

    该模块主要实现添加员工信息功能,当点击获取新编号按钮的时候,清空所有文本框,并为欲添加的人员

    自动分配一个编号。点击添加按钮的时候,首先判断数据库中不能为空的字段在文本框中是否为空,如果

    为有是空的值则拒绝插入,否则插入到Person,并弹出提示信息信息插入成功。

     

    1.2 修改人员信息界面(NodeOnePanelTwo.java)

    该模块用来实现信息修改功能,首先通过在Person中查找,将人员的编号和姓名等信息绑定到选择人员信息

    下拉列表,然后可以选择人员,选中某个人员后从Person中将该人员的基本信息查找出来,并在文本框显示。

    对于性别、出生年月、民族这三个信息由于在通常情况下不常变动,则设置文本框不可修改,其他信息可以

    进行修改,点击修改按钮的时候,同样要进行信息的检测,看信息输入是否正确,如果正确则更新表中对应

    的记录,否则拒绝更新,点击清空按钮的时候,清空所有文本框内的内容。

     

    1.3 删除人员信息界面(NodeOnePanelThree.java)

     

    该模块用来实现删除员工记录的功能,首先在右侧面板初始化的时候,我们先从Person中查找需要的信息

    并显示在右侧,当点中界面中表的一条记录时,将该员工的信息显示在下部文本框中,当点击删除按钮

    的时候,删除该记录,并刷新界面。

     

    1.4 查询人员信息界面(NodeOnePanelFour.java)

    该界面和上个界面相似,就是将所有员工的信息显示在界面上。

     

    1.5 部门管理界面(NodeOnePanelFive.java)

     

    该界面可以实现部门的增删查改功能。初始化面板的时候,将DeptTable总的所有信息绑定到该界面上,

    当点击获取新编号的时候,清空文本框,给欲添加的部门分配一个编号,当点击添加按钮的时候,需要

    检测信息输入是否合法。当选中表中的一条记录,将该部门的信息显示在下部文本框中,然后可以对一级

    部门和二级部门进行修改,当点击修改按钮的时候,检测信息是否合法,合法则修改并提示用户修改成功,

    否则拒绝修改,如果修改成功,则该界面也需要跟着刷新。当点击删除按钮的时候,由于数据库中表的级

    关系, 如果Person表中还有对应部门的员工,则不允许删除,否则可以删除。当点击清空按钮的时候,

    清空所有文本框内的内容。

     

    2.人员调动模块:实现对人员工作的调动以及对调动历史的查询。

    2.1人员调动:(NodeTwoPanelOne.java)

    该模块实现人员部门的调动,从Person表中查询图中字段相应的信息并显示,并从DeptTable表中查询所有

    部门并将这些部门绑定到新部门下拉列表框中,选择调入新部门后,更新Person表中的信息,并且将该调动

    记录添加到jobChange表中。

     

    2.2调动历史查询(NodeTwoPanelTwo.java)

    该界面从jobChange表中读出所有信息并在界面上显示。

     

     

    3.人员考核管理模块:实现对员工工作的考核,并显示考核记录。

    3.1人员考核(NodeThreePanelOne.java)

     

    同样从Person表中取出图中相应的信息并在面板上显示,当选择一条记录的时候,将其信息在下方文本框

    显示,点击确定按钮的时候,将Person表中的相关信息更新,并将该考核记录插入assessChange表中。

     

    3.2考核历史查询(NodeThreePanelTwo.java) 

    该界面将assessChange表的内容进行显示。

     

    4.劳资管理:用来实现员工工资的调整和劳资历史的查询。

    4.1劳资分配管理(NodeFourPanelOne.java)

    该模块用来实现员工工资的调整,同样从Person中取出相应的信息并生成表格显示在界面上,当选中一条记录

    时,将该记录的信息在下方文本框中显示,点击确定按钮后,更新Person中的信息,弹出修改提示,并将该劳资

    历史插入到salaryChange表中。

     

    4.2劳资历史查询(NodeFourPanelTwo.java)

    从salaryChange表中取出所有信息在界面上显示。

     

    项目代码:

    主界面(HrMain.java)

     

    package HRPackage;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.ResultSet;
    
    import javax.swing.*;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreePath;
    import javax.swing.tree.TreeSelectionModel;
    
    import DataOperator.Database;
    import JobTransfer.*;
    import LaborManagement.*;
    import PersonAccess.*;
    
    
    /**
     * 人事管理系统的主界面
     * @author YaXin Wen
     * @date 2017/10/2
     */
    public class HrMain extends JFrame implements ActionListener, TreeSelectionListener {
    
    	//框架的大小
    	Dimension facesize = new Dimension(1200,900);
    	
    	//程序左上角图标
    	ImageIcon icon;
    	
    	//建立界面左侧JTree菜单
    	JTree tree;
    	DefaultMutableTreeNode root;        //根节点,人事管理系统
    	DefaultMutableTreeNode node1;       //一级节点,基本信息管理
    	DefaultMutableTreeNode node2;       //一级节点,人员调动管理
    	DefaultMutableTreeNode node3;       //一级节点,人员考核管理
    	DefaultMutableTreeNode node4;       //一级节点,劳资管理
    	DefaultMutableTreeNode leafnode;    //叶子节点
    	TreePath treePath;
    	
    	//建立右侧操作区域,整个界面由两个分离面板构成
    	public static JSplitPane splitPane;
    	JPanel panel1;
    	JPanel panel2;
    	JPanel panel3;
    	JPanel panel4;
    	JLabel welcome = new JLabel();   	//用来显示欢迎信息
    	JScrollPane scrollPane;             //滚动面板
    	
    	/**
    	 * 构造函数,完成对象的初始化工作
    	 */
    	public HrMain() {
    		enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    		//添加框架的关闭事件处理
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.pack();
    		this.setSize(facesize);  		//设置窗体大小
    		this.setLocation(400, 50);  	//设置窗体初始位置
    		this.setVisible(true);      	//设置窗体可见
    		this.setTitle("人事管理系统"); 	//设置窗体标题
    		this.setResizable(false);   	//设置窗体大小不可变
    		
    		//设置窗体左上角图标
    		icon = new ImageIcon("image\\computer.png");  
    		this.setIconImage(icon.getImage());
    		
    		try {
    			Init();     //控件布局。
    		}catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	/**
    	 * 初始化函数,完成界面的初始化工作
    	 * @param 无参数
    	 */
    	private void Init() throws Exception {
    		//将各个子节点,添加到root上去。
    		root = new DefaultMutableTreeNode("人事管理系统");
    		//实例化root的四个子节点。
    		node1 = new DefaultMutableTreeNode("基本信息管理");
    		node2 = new DefaultMutableTreeNode("人员调动管理");
    		node3 = new DefaultMutableTreeNode("人员考核管理");
    		node4 = new DefaultMutableTreeNode("劳资管理");
    		
    		//基本信息管理上添加5个子节点
    		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);	
    		//基本信息管理节点添加到根节点上。
    		root.add(node1);
    		
    		//人员调动管理上添加两个子节点。
    		leafnode =  new DefaultMutableTreeNode("人员调动");
    		node2.add(leafnode);
    		leafnode = new DefaultMutableTreeNode("调动历史查询");
    		node2.add(leafnode);
    		//将人员调动管理节点添加到根节点上
    		root.add(node2);
    		
    		//人员考核管理模块子功能
    		leafnode = new DefaultMutableTreeNode("人员考核");
    		node3.add(leafnode);
    		leafnode = new DefaultMutableTreeNode("考核历史查询");
    		node3.add(leafnode);
    		//人员考核管理节点添加到根节点上。
    		root.add(node3);
    		
    		//劳资管理模块子功能
    		leafnode = new DefaultMutableTreeNode("劳资分配管理");
    		node4.add(leafnode);
    		leafnode = new DefaultMutableTreeNode("劳资历史查询");
    		node4.add(leafnode);
    		//劳资管理节点添加到根节点上。
    		root.add(node4);
    		
    		//生成左侧的JTree,并且该树以root为根。
    		tree = new JTree(root);
    		//将树添加到滚动面板上
    		scrollPane = new JScrollPane(tree);
    		//设置滚动面板的大小。
    		scrollPane.setPreferredSize(new Dimension(200,850));
    		tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    		
    		//生成JPanel,panel1盛装左侧控件,
    		panel1 = new JPanel();
    		panel2 = new JPanel();
    		panel3 = new JPanel();
    		panel1.add(scrollPane);   //在此,左边界面设计完毕。
    		
    		//开始设计右部界面。
    		welcome.setText("欢迎使用人事管理系统");  //显示欢迎信息
    		panel3.add(welcome);                
    		splitPane = new JSplitPane();
    		splitPane.setOneTouchExpandable(false);
    		splitPane.setContinuousLayout(true);
    		splitPane.setPreferredSize(new Dimension(1100,900));
    		//间隔方式是水平摆放间隔
    		splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
    		//功能树位于界面左侧
    		splitPane.setLeftComponent(panel1);
    		//相应功能对应的面板位于分离面板的右侧。
    		splitPane.setRightComponent(panel3);
    		splitPane.setDividerSize(2);
    		splitPane.setDividerLocation(200);
    		this.setContentPane(splitPane);
    		this.setVisible(true);
    		//为左侧的tree添加事件监听器。
    		tree.addTreeSelectionListener(this);
    		
    	}
    	@Override
    	/**
    	 * 点击不同的节点,右侧显示不同的面板
    	 */
    	public void valueChanged(TreeSelectionEvent e) {
    		// TODO Auto-generated method stub
    		DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)e.getPath().getLastPathComponent();
    		//System.out.println("nodeText = " + currentNode);
    		String nodeText = currentNode.toString();
    		//如果当前选择的节点是root,人事管理系统,右侧面板是初始模样
    		if(nodeText == "人事管理系统") {
    			splitPane.setRightComponent(panel3);
    		}
    		else if(nodeText == "基本信息管理") {
    			/* 当点击基本信息管理节点的时候,如果此节点处于
    			 * 关闭状态,则将其自动展开,用此代码实现节点自动展开。
    			 */
    			treePath = new TreePath(node1.getPath());
    			if(tree.isExpanded(treePath)) {
    				tree.collapsePath(treePath);
    			}
    			else {
    				tree.expandPath(treePath);
    			}
    		}
    		else if (nodeText == "添加人员信息") {
    			NodeOnePanelOne nodepanel11 = new NodeOnePanelOne();
    			splitPane.setRightComponent(nodepanel11);
    		}
    		else if(nodeText == "修改人员信息") {
    			NodeOnePanelTwo nodepanel12 = new NodeOnePanelTwo();
    			splitPane.setRightComponent(nodepanel12);
    		}
    		else if(nodeText == "删除人员信息") {
    			NodeOnePanelThree nodepanel13 = new NodeOnePanelThree();
    			splitPane.setRightComponent(nodepanel13);
    		}
    		else if(nodeText == "查询人员信息") {
    			NodeOnePanelFour nodepanel14 = new NodeOnePanelFour();
    			splitPane.setRightComponent(nodepanel14);
    		}
    		else if(nodeText == "部门管理") {
    			NodeOnePanelFive nodepanel15 = new NodeOnePanelFive();
    			splitPane.setRightComponent(nodepanel15);
    		}
    		else if(nodeText == "人员调动") {
    			NodeTwoPanelOne nodePanel21 = new NodeTwoPanelOne();
    			splitPane.setRightComponent(nodePanel21);
    		}
    		else if(nodeText == "调动历史查询") {
    			 NodeTwoPanelTwo nodePanel22 = new NodeTwoPanelTwo();
    			 splitPane.setRightComponent(nodePanel22);
    		}
    		else if(nodeText == "人员考核") {
    			NodeThreePanelOne nodePanel31 = new NodeThreePanelOne();
    			splitPane.setRightComponent(nodePanel31);
    		}
    		else if(nodeText == "考核历史查询") {
    			NodeThreePanelTwo nodePanel32 = new NodeThreePanelTwo();
    			splitPane.setRightComponent(nodePanel32);
    		}
    		else if(nodeText == "劳资分配管理") {
    			NodeFourPanelOne nodePanel41 = new NodeFourPanelOne();
    			splitPane.setRightComponent(nodePanel41);
    		}
    		else if(nodeText == "劳资历史查询") {
    			NodeFourPanelTwo nodePanel42 = new NodeFourPanelTwo();
    			splitPane.setRightComponent(nodePanel42);
    		}
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    	}
    	public static void main(String[] args) throws Exception{
    		HrMain hr = new HrMain();
    		
    		
    		/**Database db = new Database();
    		db.OpenConn();
    		//String sql = "insert into DeptTable(DeptId,FatherDept,SonDept) values('3','办公室','机要科')";
    		String sql = "select * from DeptTable";
    		int number = db.RecordNumber(sql);
    		System.out.println(number);
    		db.closeStmt();
    		db.closeConn();
    		*/
    	}
    }


    1.基本信息管理模块:

     

    1.1添加人员信息(NodeOnePanelOne.java)

     

    package HRPackage;
    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    
    import DataOperator.DeptBean;
    import DataOperator.PersonBean;
    
    /**
     * 每个节点对应一个面板,这些面板按照父节点、子节点进行编号。
     * 1号节点下的1号子节点,其面板命名为NodeOnePanelOne.
     * @author Yaxin Wen
     * @date 2017/10/2
     *
     */
    public class NodeOnePanelOne extends JPanel implements ActionListener, ItemListener {
    
    	//界面分为两部分,上部分用来显示该模块的作用
    	JPanel upPanel = new JPanel();
    	//中部用来让用户执行相应的操作,来满足自己的需求。
    	JPanel centerPanel = new JPanel();
    	
    	//定义界面标签
    	JLabel title = new JLabel("增加人员信息");     	  //说明文字,表明该模块的功能
    	JLabel pIdLabel = new JLabel();  	 	 		  //员工编号
    	JLabel pNameLabel = new JLabel();      			  //员工姓名
    	JLabel pSexLabel = new JLabel();       			  //员工性别
    	JLabel pBirthDateLabel = new JLabel(); 			  //出生年月
    	JLabel pNationLabel = new JLabel();    			  //民族
    	JLabel pAddressLabel = new JLabel();   			  //地址
    	JLabel pDepartmentLabel = new JLabel();			  //部门
    	JLabel pOtherLabel = new JLabel();     			  //其他
    	
    	//定义界面需要的文本框
    	JTextField pIdText = new JTextField(15);         //用来显示或填写员工编号
    	JTextField pNameText = new JTextField(30);       //用来显示或填写员工姓名
    	JTextField pSexText = new JTextField(15);        //用来显示或填写员工性别
    	JTextField pBirthDateText = new JTextField(30);  //用来显示或填写出生年月
    	JTextField pNationText = new JTextField(15);     //用来显示或填写民族
    	JTextField pAddressText = new JTextField(30);    //用来显示或填写地址
    	JTextField pOtherText = new JTextField(30);      //用来显示或填写其他信息
    	JComboBox pDepartmentCombo = null;               //用来选择部门信息
    	
    	//两个按钮,用来添加信息和清空信息。
    	//该按钮用来为新增加的员工分配编号
    	JButton getNewIdButton = new JButton("获取新编号");
    	//该按钮用来执行添加员工信息的操作
    	JButton addInfoButton = new JButton("添   加");
    	//该按钮用来完成清空文本框的操作
    	JButton clearInfoButton = new JButton("清   空");
    	
    	
    	JScrollPane jScrollPane1 = new JScrollPane();
    	String Did = "0";             //员工所属部门编号
    	String Salary = "0";   		  //员工工资
    	String Assess = "未考核";      //员工烤鹅
    	
    	//使用网格布局。
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	/**
    	 * 构造函数完成对象的初始化工作
    	 */
    	public NodeOnePanelOne() {
    		this.setLayout(new BorderLayout());
    		try {
    			jScrollPanelInit();     //中部面板
    			panelInit();            //上部面板
    			addListener();          //为控件添加监听器
    		}catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	
    	public void jScrollPanelInit() throws Exception {
    		
    		//设置面板的布局为网格布局。
    		centerPanel.setLayout(gridBag);
    		
    		//将“人员编号”这个标签添加到面板的指定位置
    		gridBagCon = new GridBagConstraints();
    		pIdLabel.setText("人 员 编 号 :");
    		pIdLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,10,10,1);
    		gridBag.setConstraints(pIdLabel,gridBagCon);   //把标题放到相应的位置
    		centerPanel.add(pIdLabel);
    		
    		//添加用来填写人员编号的文本框到面板上
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,1,10,15);
    		gridBag.setConstraints(pIdText, gridBagCon);
    		centerPanel.add(pIdText);
    		
    		//添加人员姓名标签
    		gridBagCon = new GridBagConstraints();
    		pNameLabel.setText("人 员 姓 名 :");
    		pNameLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,15,10,1);
    		gridBag.setConstraints(pNameLabel, gridBagCon);
    		centerPanel.add(pNameLabel);
    		
    		//添加显示人员姓名的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,1,10,10);
    		gridBag.setConstraints(pNameText, gridBagCon);
    		centerPanel.add(pNameText);
    		
    		//添加性别标签
    		gridBagCon = new GridBagConstraints();
    		pSexLabel.setText("性          别 :");
    		pSexLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pSexLabel, gridBagCon);
    		centerPanel.add(pSexLabel);
    		
    		//添加填写性别文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,1,10,15);
    		gridBag.setConstraints(pSexText, gridBagCon);
    		centerPanel.add(pSexText);
    		
    		//添加出生年月文本标签
    		gridBagCon = new GridBagConstraints();
    		pBirthDateLabel.setText("出 生 年 月 :");
    		pBirthDateLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,15,10,1);
    		gridBag.setConstraints(pBirthDateLabel, gridBagCon);
    		centerPanel.add(pBirthDateLabel);
    		
    		//添加出生年月文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,1,10,10);
    		gridBag.setConstraints(pBirthDateText, gridBagCon);
    		centerPanel.add(pBirthDateText);
    		
    		//添加民族标签
    		gridBagCon = new GridBagConstraints();
    		pNationLabel.setText("民          族 :");
    		pNationLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pNationLabel, gridBagCon);
    		centerPanel.add(pNationLabel);
    		
    		//添加填写民族的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,1,10,15);
    		gridBag.setConstraints(pNationText, gridBagCon);
    		centerPanel.add(pNationText);
    		
    		//添加地址标签
    		gridBagCon = new GridBagConstraints();
    		pAddressLabel.setText("地          址 :");
    		pAddressLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,15,10,1);
    		gridBag.setConstraints(pAddressLabel, gridBagCon);
    		centerPanel.add(pAddressLabel);
    		
    		//添加地址文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,1,10,10);
    		gridBag.setConstraints(pAddressText, gridBagCon);
    		centerPanel.add(pAddressText);
    		
    		//添加部门标签
    		gridBagCon = new GridBagConstraints();
    		pDepartmentLabel.setText("部           门 :");
    		pDepartmentLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 4;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pDepartmentLabel, gridBagCon);
    		centerPanel.add(pDepartmentLabel);
    		
    		//添加部门列表
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 4;
    		gridBagCon.insets = new Insets(15,1,10,15);
    		DeptBean bean = new DeptBean();
    		try {
    			String[] values = bean.getAllNodeInfor();
    			pDepartmentCombo = new JComboBox(values);
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    		gridBag.setConstraints(pDepartmentCombo, gridBagCon);
    		centerPanel.add(pDepartmentCombo);
    		
    		//其他标签
    		gridBagCon = new GridBagConstraints();
    		pOtherLabel.setText("其           他 :");
    		pOtherLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 4;
    		gridBagCon.insets = new Insets(15,15,10,1);
    		gridBag.setConstraints(pOtherLabel, gridBagCon);
    		centerPanel.add(pOtherLabel);
    		
    		//其他标签对应的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 4;
    		gridBagCon.insets = new Insets(15,1,10,10);
    		gridBag.setConstraints(pOtherText, gridBagCon);
    		centerPanel.add(pOtherText);
    		
    		gridBagCon = new GridBagConstraints();
    		getNewIdButton.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 5;
    		gridBagCon.gridheight = 1;
    		gridBagCon.gridwidth = 2;
    		gridBagCon.insets = new Insets(15,0,10,0);
    		gridBag.setConstraints(getNewIdButton, gridBagCon);
    		centerPanel.add(getNewIdButton);
    		
    		//添加添加按钮
    		gridBagCon = new GridBagConstraints();
    		addInfoButton.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 5;
    		gridBagCon.gridwidth = 1;
    		gridBagCon.gridheight = 1;
    		gridBagCon.insets = new Insets(15,0,10,0);
    		gridBag.setConstraints(addInfoButton, gridBagCon);
    		centerPanel.add(addInfoButton);
    		addInfoButton.setEnabled(false);
    		
    		//添加清空按钮
    		gridBagCon = new GridBagConstraints();
    		clearInfoButton.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 5;
    		gridBagCon.gridwidth = 1;
    		gridBagCon.gridheight = 1;
    		gridBagCon.insets = new Insets(15,0,10,0);
    		gridBag.setConstraints(clearInfoButton, gridBagCon);
    		centerPanel.add(clearInfoButton);
    	}
    	
    	/**
    	 * 面板进行初始化
    	 * @throws Exception
    	 */
    	public void panelInit() throws Exception {
    		//设置面板的布局方式为网格布局
    		upPanel.setLayout(gridBag);
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		title.setFont(new Font("Dialog",0,25));
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		jScrollPane1 = new JScrollPane(centerPanel);
    		jScrollPane1.setPreferredSize(new Dimension(900,750));
    		
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,0,0,0);
    		gridBag.setConstraints(jScrollPane1, gridBagCon);
    		upPanel.add(jScrollPane1);
    		
    		this.add(upPanel,BorderLayout.NORTH);
    		pIdText.setEditable(false);
    		pNameText.setEditable(true);
    		pSexText.setEditable(true);
    		pBirthDateText.setEditable(true);
    		pNationText.setEditable(true);
    		pAddressText.setEditable(true);
    		pOtherText.setEditable(true);
    		
    		addInfoButton.setEnabled(false);
    	}
    	
    	/**
    	 * 为各个按钮添加事件监听器
    	 * @throws Exception
    	 */
    	public void addListener() throws Exception {
    		addInfoButton.addActionListener(this);
    		clearInfoButton.addActionListener(this);
    		pDepartmentCombo.addItemListener(this);
    		getNewIdButton.addActionListener(this);
    	}
    	
    	@Override
    	public void itemStateChanged(ItemEvent event) {
    		// TODO Auto-generated method stub
    		if(event.getStateChange() == ItemEvent.SELECTED) {
    			String temp = "" + event.getItem();
    			int i = temp.indexOf("-");
    			Did = temp.substring(0,i);
    		}
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		Object obj = event.getSource();
    		//事件源是添加信息按钮
    		if(obj == getNewIdButton) {
    			setNull();
    			PersonBean bean = new PersonBean();
    			try {
    				int number = bean.getNewId();
    				pIdText.setText(String.valueOf(number));
    				addInfoButton.setEnabled(true);
    				
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		}
    		else if(obj == addInfoButton) {
    			//添加人员信息,将所有参数传进去
    			PersonBean bean = new PersonBean();
    			try{
    				bean.addInfo(pIdText.getText(), pNameText.getText(), pSexText.getText(),pBirthDateText.getText(), pNationText.getText(), pAddressText.getText(),Did,Salary, Assess, pOtherText.getText());
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		}
    		else if(obj == clearInfoButton) {
    			setNull();
    		}
    	}
    	/**
    	 * 点击清空按钮的时候,清空所有文本框中的值
    	 */
    	void setNull() {
    		pIdText.setText(null);
    		pNameText.setText(null);
    		pSexText.setText(null);
    		pBirthDateText.setText(null);
    		pNationText.setText(null);
    		pAddressText.setText(null);
    		pOtherText.setText(null);
    	}
    }
    

     

     

     

    1.2修改人员信息(NodeOnePanelTwo.java)

     

    package HRPackage;
    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    
    import DataOperator.PersonBean;
    
    /**
     * 实现修改人员信息的界面
     * @author Yaxin Wen
     * @date 2017/11/17
     *
     */
    public class NodeOnePanelTwo extends JPanel implements ActionListener, ItemListener {
    
    	//定义界面所需要用的面板
    	JPanel centerPanel = new JPanel();
    	JPanel upPanel = new JPanel();
    	
    	//定义界面所需要的标签(静态文本)
    	JLabel title = new JLabel("修改人员信息");
    	
    	JLabel pIdLabel = new JLabel();  	 	//员工编号 
    	JLabel pNameLabel = new JLabel();      	//员工姓名
    	JLabel pSexLabel = new JLabel();       	//员工性别
    	JLabel pBirthDateLabel = new JLabel(); 	//出生年月
    	JLabel pNationLabel = new JLabel();    	//民族
    	JLabel pAddressLabel = new JLabel();   	//地址
    	JLabel pDepartmentLabel = new JLabel();	//部门
    	JLabel pOtherLabel = new JLabel();     	//其他
    	JLabel pInfoChoseLabel = new JLabel();  //选择人员信息。
    	
    	//定义界面所需的文本框
    	JTextField pIdText = new JTextField(15);        //编号
    	JTextField pNameText = new JTextField(30);      //姓名
    	JTextField pSexText = new JTextField(15);       //性别
    	JTextField pBirthDateText = new JTextField(30); //出生年月
    	JTextField pNationText = new JTextField(15);    //民族
    	JTextField pAddressText = new JTextField(30);   //地址
    	JTextField pOtherText = new JTextField(50);     //其他
    	
    	JComboBox pInfoChoseCombo = null;               //人员信息列表。
    	JScrollPane jScrollPane;
    	
    	//这三个变量并没有什么实际意义。
    	String Did = "0";								//人员所属部门
    	String Salary = "0";						    //人员工资	
    	String Assess = "未考核";                        //人员考核信息
    	
    	//定义两个按钮,一个是修改按钮,一个是清空按钮。
    	JButton modifyInfoButton = new JButton("修 改");
    	JButton clearInfoButton = new JButton("清 空");
    	
    	//定义网格布局
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	/**
    	 * 构造函数完成初始化工作
    	 */
    	public NodeOnePanelTwo() {
    		this.setLayout(new BorderLayout());
    		try{
    			jScrollPanelInit(); 	//上部面板布局
    			panelInit();            //中部面板布局
    			addListener();          //为相应控件添加事件监听器
    			
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    		
    		
    	}
    	
    	//jScrollPanel的布局。
    	public void jScrollPanelInit() throws Exception {
    		
    		centerPanel.setLayout(gridBag);
    		
    		//添加人员编号标签
    		gridBagCon = new GridBagConstraints();
    		pIdLabel.setText("人 员 编 号 :");
    		pIdLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,10,10,1);
    		gridBag.setConstraints(pIdLabel, gridBagCon);
    		centerPanel.add(pIdLabel);
    		
    		//添加显示人员标号所需要的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,1,10,15);
    		gridBag.setConstraints(pIdText, gridBagCon);
    		centerPanel.add(pIdText);
    		
    		//添加人员姓名标签
    		gridBagCon = new GridBagConstraints();
    		pNameLabel.setText("人 员 姓 名 :");
    		pNameLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,15,10,1);
    		gridBag.setConstraints(pNameLabel, gridBagCon);
    		centerPanel.add(pNameLabel);
    		
    		//添加显示人员姓名的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,1,10,10);
    		gridBag.setConstraints(pNameText, gridBagCon);
    		centerPanel.add(pNameText);
    		
    		//添加人员性别标签
    		gridBagCon = new GridBagConstraints();
    		pSexLabel.setText("性          别 :");
    		pSexLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pSexLabel, gridBagCon);
    		centerPanel.add(pSexLabel);
    		
    		//添加显示人员性别的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,1,10,15);
    		gridBag.setConstraints(pSexText, gridBagCon);
    		centerPanel.add(pSexText);
    		
    		//添加出生年月的标签
    		gridBagCon = new GridBagConstraints();
    		pBirthDateLabel.setText("出 生 年 月 :");
    		pBirthDateLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,15,10,1);
    		gridBag.setConstraints(pBirthDateLabel, gridBagCon);
    		centerPanel.add(pBirthDateLabel);
    		
    		//添加出生年月所需的文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 2;
    		gridBagCon.insets = new Insets(15,1,10,10);
    		gridBag.setConstraints(pBirthDateText, gridBagCon);
    		centerPanel.add(pBirthDateText);
    		
    		//添加民族标签
    		gridBagCon = new GridBagConstraints();
    		pNationLabel.setText("民          族 :");
    		pNationLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pNationLabel, gridBagCon);
    		centerPanel.add(pNationLabel);
    		
    		//添加民族文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,1,10,15);
    		gridBag.setConstraints(pNationText, gridBagCon);
    		centerPanel.add(pNationText);
    		
    		//添加地址标签
    		gridBagCon = new GridBagConstraints();
    		pAddressLabel.setText("地          址 :");
    		pAddressLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,15,10,1);
    		gridBag.setConstraints(pAddressLabel, gridBagCon);
    		centerPanel.add(pAddressLabel);
    		
    	    //添加地址文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 3;
    		gridBagCon.insets = new Insets(15,1,10,10);
    		gridBag.setConstraints(pAddressText, gridBagCon);
    		centerPanel.add(pAddressText);
    		
    		//添加其他标签
    		gridBagCon = new GridBagConstraints();
    		pOtherLabel.setText("其           他 :");
    		pOtherLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 4;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pOtherLabel, gridBagCon);
    		centerPanel.add(pOtherLabel);
    		
    		//添加其他文本框
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 4;
    		gridBagCon.gridwidth = 3;
    		gridBagCon.gridheight = 1;
    		gridBagCon.insets = new Insets(15,1,10,115);
    		gridBag.setConstraints(pOtherText, gridBagCon);
    		centerPanel.add(pOtherText);
    		
    		
    		//选择人员信息标签
    		gridBagCon = new GridBagConstraints();
    		pInfoChoseLabel.setText("选择人员信息");
    		pInfoChoseLabel.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 5;
    		gridBagCon.insets = new Insets(15,10,10,1);
    		gridBag.setConstraints(pInfoChoseLabel, gridBagCon);
    		centerPanel.add(pInfoChoseLabel);
    		
    		//选择人员需要用的下拉列表框
    	    PersonBean bean = new PersonBean();
    	    String[] values=null;
    	    try {
    	    	String[] id = bean.selectField("pId");
    	    	String[] name = bean.selectField("pName");
    	    	int len = id.length;
    	    	values = new String[len];
    	    	for(int i = 0; i < len; i++) {
    	    		values[i] = "" + id[i] + "-" + name[i];
    	    	}
    	    } catch(Exception ex) {
    	    	ex.printStackTrace();
    	    }
    	    
    		pInfoChoseCombo = new JComboBox(values);
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 1;
    		gridBagCon.gridy = 5;
    		gridBagCon.gridwidth = 1;
    		gridBagCon.gridheight = 1;
    		gridBagCon.insets = new Insets(15,10,10,10);
    		gridBag.setConstraints(pInfoChoseCombo, gridBagCon);
    		centerPanel.add(pInfoChoseCombo);
    		
    		//添加修改按钮到面板上
    		gridBagCon = new GridBagConstraints();
    		modifyInfoButton.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 2;
    		gridBagCon.gridy = 5;
    		gridBagCon.insets = new Insets(10,10,10,10);
    		gridBag.setConstraints(modifyInfoButton, gridBagCon);
    		centerPanel.add(modifyInfoButton);
    		
    		//添加清空按钮到面板上
    		gridBagCon = new GridBagConstraints();
    		clearInfoButton.setFont(new Font("Dialog",0,15));
    		gridBagCon.gridx = 3;
    		gridBagCon.gridy = 5;
    		gridBagCon.insets = new Insets(10,10,10,10);
    		gridBag.setConstraints(clearInfoButton, gridBagCon);
    		centerPanel.add(clearInfoButton);	
    		
    		jScrollPane = new JScrollPane(centerPanel);
    		jScrollPane.setPreferredSize(new Dimension(900,750));
    		
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,0,0,0);
    		gridBag.setConstraints(jScrollPane,gridBagCon);
    		upPanel.add(jScrollPane);
    	}
    	
    	public void panelInit() throws Exception {
    		this.setLayout(new BorderLayout());
    		upPanel.setLayout(gridBag);
    		gridBagCon = new GridBagConstraints();
    		title.setFont(new Font("Dialog",0,25));
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		
    		//所有文本框初始都设置为不可用,直到选中一个人,然后再将文本框设置为可用。
    		pIdText.setEditable(false);
    	    pNameText.setEditable(false);
    	    pSexText.setEditable(false);
    	    pBirthDateText.setEditable(false);
    	    pNationText.setEditable(false);
    	    pAddressText.setEditable(false);
    	    pOtherText.setEditable(false);
    	    
    	    modifyInfoButton.setEnabled(false);
    	    
    	    this.add(upPanel,BorderLayout.NORTH);
    	}
    	/**
    	 * 为一些控件添加事件监听器
    	 * @throws Exception
    	 */
    	public void addListener() throws Exception {
    		modifyInfoButton.addActionListener(this);
    		clearInfoButton.addActionListener(this);
    		pInfoChoseCombo.addItemListener(this);
    	}
    	
    	/**
    	 * 实现对下拉列表发出事件的响应。
    	 */
    	@Override
    	public void itemStateChanged(ItemEvent event) {
    		// TODO Auto-generated method stub
    		if(event.getStateChange() == ItemEvent.SELECTED) {
    			String temp = "" + event.getItem();   //获取被选中的信息
    			int i = temp.indexOf("-");           //找到'-'所在的位置,然后进行求字串的操作
    			String pId = ""  + temp.substring(0,i);    //查找该编号人员的所有信息
    			PersonBean bean = new PersonBean();
    			//查找该编号对应人员的所有信息,并且显示在文本框内
    			String[] info = bean.searchInfo(pId); 
    			pIdText.setText(info[0]);         
    			pNameText.setText(info[1]);
    			pSexText.setText(info[2]);
    			pBirthDateText.setText(info[3]);
    			pNationText.setText(info[4]);
    			pAddressText.setText(info[5]);
    			Did = info[6];
    			Salary = info[7];
    			Assess = info[8];
    			pOtherText.setText(info[9]);
    			
    			//设置修改按钮可用
    			modifyInfoButton.setEnabled(true);
    			
    			//一般一个人他的姓名、地址和其他信息可能改变,其他信息应该不会改变
    		    pNameText.setEditable(true);
    		    pAddressText.setEditable(true);
    		    pOtherText.setEditable(true);
    		}
    	}
    
    	/**
    	 * 点击不同的按钮,执行不同的操作。
    	 */
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		//修改按钮,执行更新操作
    		if(event.getSource() == modifyInfoButton) {
    			PersonBean bean = new PersonBean();
    			try {
    				bean.modifyInfo(pIdText.getText(), pNameText.getText(), pSexText.getText(), pBirthDateText.getText(),pNationText.getText(), pAddressText.getText(),Did, Salary, Assess, pOtherText.getText());
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} 
    		else if(event.getSource() == clearInfoButton) {
    			//点击清空按钮,将所有信息清空
    			setNull();
    		}
    	}
    	void setNull() {
    		//把所有内容置空
    		pIdText.setText(null);
    	    pNameText.setText(null);
    	    pSexText.setText(null);
    	    pBirthDateText.setText(null);
    	    pNationText.setText(null);
    	    pAddressText.setText(null);
    	    pOtherText.setText(null);
    	    //将所有按钮重新设置为不可用的状态
    		pIdText.setEditable(false);
    	    pNameText.setEditable(false);
    	    pSexText.setEditable(false);
    	    pBirthDateText.setEditable(false);
    	    pNationText.setEditable(false);
    	    pAddressText.setEditable(false);
    	    pOtherText.setEditable(false);
    	}
    }
    

     

     

     

    1.3删除人员信息(NodeOnePanelThree.java)

     

    package HRPackage;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    import DataOperator.PersonBean;
    
    /**
     * 该面板用来实现删除员工信息,将所有员工的信息呈现,
     * 选中一条记录后可以执行删除操作。
     * @author YaXin Wen
     * @date 2017/10/22
     */
    public class NodeOnePanelThree extends JPanel implements ActionListener, ListSelectionListener {
     
    	private static final Container BottomPanel = null;
    	//该模块整个界面分为三个部分
    	JPanel upPanel = new JPanel();   	//上部面板用来盛装显示该模块作用的标签
    	JPanel centerPanel = new JPanel();  //中部面板用来展示员工的各项信息
    	JPanel bottomPanel = new JPanel();  //下部面板用来展示欲删除的员工的信息
    	
    	JLabel title = new JLabel("人员信息删除");
    	JLabel pIdLabel = new JLabel();     		//人员编号静态文本
    	JLabel pNameLabel = new JLabel();   		//人员姓名静态文本
    	JLabel pDepartmentLabel = new JLabel();    //显示人员部门静态文本
    	
    	JTextField pIdText = new JTextField(15);    //显示欲删除人员的编号
    	JTextField pNameText = new JTextField(20);  //显示欲删除人员的姓名
    	JTextField pDepartmentText = new JTextField(15); //显示欲删除人员所在的部门
    	
    	JButton deleteButton = new JButton("删    除");
    	
    	//定义一个可以滚动的面板
    	JScrollPane jScrollPanel;
    	//定义一个表格
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	//设置表的字段信息
    	String[] colName = {"编 号","姓 名","出生年月","民 族","地 址","部  门",};
    	String[][] colValue;
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	/**
    	 * 构造函数完成对象的初始化工作
    	 */
    	public NodeOnePanelThree() {
    		this.setLayout(new BorderLayout());
    		try{
    			upPanelInit();
    			centerPanelInit();
    			bottomPanelInit();
    			
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}	
    	}
    	/**
    	 * 完成上部面板的初始化工作,该工作主要是让所有员工的信息
    	 * 用表显示出来。
    	 * @throws Exception
    	 */
    	public void upPanelInit() throws Exception {
    		//定义PersonBean用来实现对员工信息的各种操作
    		PersonBean bean = new PersonBean();
    		//设置上部面板的布局方式为网格布局
    		upPanel.setLayout(gridBag);
    		//设置该模块标题的字体大小
    		title.setFont(new Font("Dialog",0,25));
    		
    		//将模块标题添加到上部面板
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		
    		//colValue用来存放表的记录,通过调用searchAllForNode方法查找员工表中的所有信息并返回
    		colValue = bean.searchAllForNode();
    		//对表格实例化,并将查询到的信息绑定到表上。
    		table = new JTable(colValue,colName); 
    		//设置表的大小
    		table.setPreferredScrollableViewportSize(new Dimension(900,750));
    		//设置表只能选中一行
    		listSelectionModel = table.getSelectionModel();
    		listSelectionModel.setSelectionMode(listSelectionModel.SINGLE_SELECTION);
    		//添加监听器,当选中表的某条记录时触发
    		listSelectionModel.addListSelectionListener(this);
    		//将表格放到滚动面板里面
    		jScrollPanel = new JScrollPane(table);
    		//设置滚动面板的大小。
    		jScrollPanel.setPreferredSize(new Dimension(900,750));
    		
    		//将滚动面板添加到上部面板上
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,0,0,0);
    		gridBag.setConstraints(jScrollPanel,gridBagCon);
    		upPanel.add(jScrollPanel);
    		//将上部面板添加到当前面板的上部
    		this.add(upPanel,BorderLayout.NORTH);
    	}
    	/**
    	 * 中部面板的布局
    	 */
    	public void centerPanelInit() throws Exception {
    		this.add(centerPanel);
    	}
    	/**
    	 * 下部面板的布局,由几个标签和几个文本框和一个删除按钮
    	 * 构成,标签用来显示数据的字段名,文本框用来呈现选中记
    	 * 录对应的人员信息,
    	 */
    	public void bottomPanelInit() {
    		//设置标签的文本内容和字体大小。
    		pIdLabel.setText("编号:");
    		pIdLabel.setFont(new Font("Dialog",0,20));
    		//将标签和其相对应的文本框添加到面板上
    		bottomPanel.add(pIdLabel);
    		bottomPanel.add(pIdText);
    		
    		//设置标签的文本内容和字体大小
    		pNameLabel.setText("姓名:");
    		pNameLabel.setFont(new Font("Dialog",0,20));
    		//将标签和其相对应的文本框添加到面板上
    		bottomPanel.add(pNameLabel);
    		bottomPanel.add(pNameText);
    		
    		//设置标签的文本内容和字体大小
    		pDepartmentLabel.setText("部门:");
    		pDepartmentLabel.setFont(new Font("Dialog",0,20));
    		//将标签和其相对应的文本框添加到面板上
    		bottomPanel.add(pDepartmentLabel);
    		bottomPanel.add(pDepartmentText);
    		
    		//设置各个文本框中的字体大小。
    		pIdText.setFont(new Font("Dialog",0,15));
    		pNameText.setFont(new Font("Dialog",0,15));
    		pDepartmentText.setFont(new Font("Dialog",0,15));
    		//所有文本框初始时刻都设置为不可编辑,这些文本框只用来呈现信息。
    		pIdText.setEditable(false);
    		pNameText.setEditable(false);
    		pDepartmentText.setEditable(false);
    		
    		//设置按钮的字体大小,设置按钮初始不可用,并为按钮添加事件监听器
    		deleteButton.setFont(new Font("Dialog",0,15));
    		bottomPanel.add(deleteButton);
    		deleteButton.setEnabled(false);
    		deleteButton.addActionListener(this);
    		
    		//将下部面板添加到主面板的下部
    		this.add(bottomPanel,BorderLayout.SOUTH);
    		
    	}
    	
    	/**
    	 * 当选中的表格中的某条记录,将该记录对应人员的工号,姓名,
    	 * 和所在部门显示在下部的文本框中,并且把删除按钮设置为可用
    	 */
    	@Override
    	public void valueChanged(ListSelectionEvent lse) {
    		// TODO Auto-generated method stub
    		int selectedRow = table.getSelectedRow();
    		pIdText.setText(colValue[selectedRow][0]);
    		pNameText.setText(colValue[selectedRow][1]);
    		pDepartmentText.setText(colValue[selectedRow][5]);
    		deleteButton.setEnabled(true);
    	}
    
    	/**
    	 * 编写各个控件的事件响应方法。
    	 */
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		Object obj = event.getSource();
    		//当点击删除按钮的时候,删除对应的记录
    		if(obj == deleteButton) {
    			PersonBean bean = new PersonBean();
    			try {
    				//success 用来记录记录的删除是否成功
    				boolean success = bean.deleteInfo(pIdText.getText());
    				//删除成功,界面中表的内容需要被更新。
    				if(success == true) {
    					NodeOnePanelThree nodePanel13 = new NodeOnePanelThree();
    					HrMain.splitPane.setRightComponent(nodePanel13);
    				}
    			} 
    			catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		}
    	}
    
    }
    

     

     

     

    1.4查询人员信息(NodeOnePanelFour.java)

     

    package HRPackage;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    
    import DataOperator.PersonBean;
    
    /**
     * 该模块用来实现显示所有人员信息的功能
     * @author Yaxin Wen
     * @date 2017/11/18
     */
    public class NodeOnePanelFour extends JPanel implements ActionListener {
    	//定义所需要的面板
    	JPanel upPanel = new JPanel();
    	//定义标签,用来显示该模块的功能
    	JLabel title = new JLabel("人员信息查询");
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	//定义表格字段
    	String[] colName = {"编 号","姓 名","出生年月","民 族","地 址","部门"};
    	//定义存放表格记录所需的二维素组
    	String[][] colValue;
    	
    	//定义网格布局
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	/**
    	 * 构造函数完成初始化工作
    	 */
    	public NodeOnePanelFour() {
    		this.setLayout(new BorderLayout());
    		try{
    			upPanelInit();
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	/**
    	 * 对上部面板进行初始化,在上面添加模块标题和表格
    	 * @throws Exception
    	 */
    	public void upPanelInit() throws Exception {
    		PersonBean bean = new PersonBean();
    		//设置面板的布局方式为网格布局
    		upPanel.setLayout(gridBag);
    		
    		//将标题添加到面板上
    		title.setFont(new Font("Dialog",0,25));
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		
    		try {
    			//获取员工表的所有信息并返回给colValue
    			colValue = bean.searchAllForNode();
    			//初始化表并将得到的数据绑定到表上
    			table = new JTable(colValue,colName);
    			//设置表格大小
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			//将表格添加到滚动面板上
    			jScrollPane = new JScrollPane(table);
    			//设置滚动面板的大小
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    			
    			//将滚动面板添加到面板上
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 1;
    			gridBagCon.insets = new Insets(0,0,0,0);
    			gridBag.setConstraints(jScrollPane, gridBagCon);
    			upPanel.add(jScrollPane);
    			
    			this.add(upPanel,BorderLayout.NORTH);
    			
    		} catch(Exception ex){
    			ex.printStackTrace();
    		}
    	}
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

     

     

     

    1.5部门管理(NodeOnePanelFive.java)

     

    package HRPackage;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    import DataOperator.DeptBean;
    
    /**
     * 该模块用来实现部门管理的功能,包括部门添加,部门修改,
     * 部门删除等操作。
     * @author YaXin Wen
     * @date 2017/11/17
     */
    public class NodeOnePanelFive extends JPanel implements ActionListener, ListSelectionListener {
    
    	//定义所需要用的面板
    	JPanel upPanel = new JPanel();
    	JPanel centerPanel = new JPanel();
    	JPanel bottomPanel = new JPanel();
    	
    	//定义三个需要的文本标签
    	JLabel departIdLabel;   	//部门编号
    	JLabel firstLevelDepart;    //一级部门
    	JLabel secondLevelDepart;   //二级部门
    	
    	//定义三个所需的文本框
    	JTextField departIdText = new JTextField(10);   	//用来显示或填写部门编号
    	JTextField firstLevelText = new JTextField(15);	    //用来显示或填写一级部门
    	JTextField secondLevelText = new JTextField(15); 	//用来显示或填写二级部门
    	
    	//定义五个按钮
    	//获取新编号按钮,点击此按钮,为当前要添加的部门分配新的表闹
    	JButton getNewIdBtn = new JButton("获取新编号");     
    	//添加按钮,点击该按钮可以实现增加部门的功能
    	JButton addInfoBtn = new JButton("增加");
    	//修改按钮,点击该按钮可以实现部门的修改功能
    	JButton modifyInfoBtn = new JButton("修改");
    	//删除按钮,点击该按钮实现删除该部门
    	JButton deleteInfoBtn = new JButton("删除");
    	//清空按钮,当点击清空按钮的时候,清空文本框内的值
    	JButton clearInfoBtn = new JButton("清空");
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	//定义表格的字段
    	String[] colName = {"部门编号","一级部门","二级部门"};
    	//用于存放表格记录的二维数组
    	String[][] colValue;
    	
    	//定义网格布局方式
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon = new GridBagConstraints();
    	
    	/**
    	 * 构造函数完成类的初始化工作。
    	 */
    	public NodeOnePanelFive() {
    		//设计当前面板采用BorderLayout布局
    		this.setLayout(new BorderLayout());
    		try {
    			upPanelInit();	   //上部面板初始化
    			centerPanelInit(); //中部面板初始化
    			bottomPanelInit(); //下部面板的布局
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	/**
    	 * 上部面板初始化,上部面板主要用来盛放部门表
    	 * @throws Exception
    	 */
    	public void upPanelInit() throws Exception {
    		//DeptBean可以完成对部门信息的各种操作
    		DeptBean bean = new DeptBean();
    		try {
    			//获取部门表中的信息并返回给colValue
    			colValue = bean.searchAll();
    			//将从表中获取到的值绑定到表格上
    			table = new JTable(colValue,colName);
    			//设置表格大小
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			//设置表格选择记录时只能选择一行
    			listSelectionModel = table.getSelectionModel();
    			listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    			//添加事件监听器
    			listSelectionModel.addListSelectionListener(this);
    			jScrollPane = new JScrollPane(table);
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    				
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    		upPanel.add(jScrollPane);
    		this.add(upPanel,BorderLayout.NORTH);
    	}
    	/**
    	 * 中部面板的布局,将所需要的文本框和所需要的标签添加
    	 * 到中部面板
    	 * @throws Exception
    	 */
    	public void centerPanelInit() throws Exception {
    		//设置标签文本,和字体大小
    		departIdLabel = new JLabel("编 号:");
    		departIdLabel.setFont(new Font("Dialog",0,15));
    		//添加编号标签和其对应的文本框
    		centerPanel.add(departIdLabel);
    		centerPanel.add(departIdText);
    		
    		//设置标签文本,和字体大小
    		firstLevelDepart = new JLabel("一级部门:") ;
    		firstLevelDepart.setFont(new Font("Dialog",0,15));
    		//添加一级部门标签和其对应的文本框
    		centerPanel.add(firstLevelDepart);
    		centerPanel.add(firstLevelText);
    		
    		//设置标签文本,和字体大小
    		secondLevelDepart = new JLabel("二级部门:");
    		secondLevelDepart.setFont(new Font("Dialog",0,15));
    		//添加二级部门标签和其对应的文本框
    		centerPanel.add(secondLevelDepart);
    		centerPanel.add(secondLevelText);
    		
    		/*初始所有文本框都设置为不可用,当在表格总选中一条记录的
    		 * 时候,或者点击获取编号按钮的时候(即欲添加新部门的时候)
    		 * 将部分文本再设置为可用。
    		 */
    		departIdText.setEditable(false);
    		firstLevelText.setEditable(false);
    		secondLevelText.setEditable(false);
    		//将中部面板添加到主面板的中部
    		this.add(centerPanel);
    	}
    	/**
    	 * 下部面板的初始化,将各个按钮添加到下部面板上
    	 */
    	public void bottomPanelInit(){
    		//获取新编号按钮,点击按钮,分配一个编号给当前欲添加的部门
    		getNewIdBtn.setFont(new Font("Dialog",0,15));
    		getNewIdBtn.addActionListener(this);
    		bottomPanel.add(getNewIdBtn);
    		
    		//添加新部门按钮,点击按钮,向部门表中添加一条新记录
    		addInfoBtn.setFont(new Font("Dialog",0,15));
    		addInfoBtn.addActionListener(this);
    		bottomPanel.add(addInfoBtn);
    		
    		//修改按钮,点击按钮,可以修改部门的名称
    		modifyInfoBtn.setFont(new Font("Dialog",0,15));
    		modifyInfoBtn.addActionListener(this);
    		bottomPanel.add(modifyInfoBtn);
    		
    		//删除部门按钮,点击按钮,如果员工表中没有该部门的员工,则允许删除一条记录。
    		deleteInfoBtn.setFont(new Font("Dialog",0,15));
    		deleteInfoBtn.addActionListener(this);
    		bottomPanel.add(deleteInfoBtn);
    		
    		//清空按钮,当点击清空按钮,清空所有文本框中的值。
    		clearInfoBtn.setFont(new Font("Dialog",0,15));
    		clearInfoBtn.addActionListener(this);
    		bottomPanel.add(clearInfoBtn);
    		
    		//初始各个按钮均不可用。
    		getNewIdBtn.setEnabled(true);
    		addInfoBtn.setEnabled(false);
    		modifyInfoBtn.setEnabled(false);
    		deleteInfoBtn.setEnabled(false);
    		clearInfoBtn.setEnabled(true);
    		
    		//将下部面板添加到主面板的下部。
    		this.add(bottomPanel,BorderLayout.SOUTH);
    	}
    	
    	/**
    	 * 当选中表中的一条记录时,将该记录的信息显示在下部的文本框
    	 */
    	@Override
    	public void valueChanged(ListSelectionEvent lse) {
    		// TODO Auto-generated method stub
    		int selectionRow = table.getSelectedRow();
    		for(int i = 0; i < 3; i++) {
    			//将选中的记录的信息显示在下部的文本框
    			departIdText.setText(colValue[selectionRow][0]);
    			firstLevelText.setText(colValue[selectionRow][1]);
    			secondLevelText.setText(colValue[selectionRow][2]);
    		}
    		firstLevelText.setEditable(true); 	 //一级部门设置为可编辑
    		secondLevelText.setEditable(true);   //二级部门设置为可编辑
    		addInfoBtn.setEnabled(false);        //添加信息按钮设置为不可用
    		modifyInfoBtn.setEnabled(true);      //修改信息按钮设置为可用
    		deleteInfoBtn.setEnabled(true);      //删除信息按钮设置为可用
    		clearInfoBtn.setEnabled(true);       //清空各项信息
    	}
    	/**
    	 * 为某些控件编写事件响应方法
    	 */
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		/**
    		 * 如果当前点击的按钮是获取新编号,则为将要添加的
    		 * 的部门信息分配一个新的编号
    		 */
    		if(event.getSource() == getNewIdBtn) {
    			setNull();
    			DeptBean bean = new DeptBean();
    			try {
    				int newId = bean.getNewId();
    				departIdText.setText(String.valueOf(newId));
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    			firstLevelText.setEditable(true);
    		    secondLevelText.setEditable(true);
    		    addInfoBtn.setEnabled(true);
    		    modifyInfoBtn.setEnabled(false);
    		    deleteInfoBtn.setEnabled(false);
    		} 
    		else if(event.getSource() == addInfoBtn) { 
    			//如果当前要添加该记录。则将该记录添加到表中,并更新表。
    			DeptBean bean = new DeptBean();
    			try {
    				boolean success = bean.addInfo(departIdText.getText(), firstLevelText.getText(), secondLevelText.getText());
    				//如果插入成功,重新生成界面
    				if(success == true) {
    					NodeOnePanelFive nodePanel15 = new NodeOnePanelFive();
    					HrMain.splitPane.setRightComponent(nodePanel15);
    				}
    			} 
    			catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} 
    		else if(event.getSource() == modifyInfoBtn) {
    			/*如果要修改当前记录,人员信息表中由于存在的是部门的编号,
    			 * 所以其相应信息已经根着改变。*/
    			DeptBean bean = new DeptBean();
    			try {
    				boolean success = bean.modifyInfo(departIdText.getText(), firstLevelText.getText(), secondLevelText.getText());
    				if(success == true) {
    					NodeOnePanelFive nodePanel15 = new NodeOnePanelFive();
    					HrMain.splitPane.setRightComponent(nodePanel15);
    				}
    			} 
    			catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} 
    		else if(event.getSource() == deleteInfoBtn) {
    			/*如果要删除该部门,则如果人员表中没有该部门的人了,则允许删除,否则不允许删除*/
    			DeptBean bean = new DeptBean();
    			try {
    				//判断该id在员工信息表中是否存在,如果存在,则不能删除,否则可以删除,并将该编号存入unUsedDepartId
    				boolean exist = bean.isExist(departIdText.getText());  
    				if(exist == false) {
    					bean.deleteInfo(departIdText.getText());
    					NodeOnePanelFive nodePanel15 = new NodeOnePanelFive();
    					HrMain.splitPane.setRightComponent(nodePanel15);
    				}
    				else {
    					JOptionPane.showMessageDialog(null,"该部门中尚有员工,不可删除");
    				}
    			} 
    			catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} 
    		else if(event.getSource() == clearInfoBtn) {
    			setNull();
    		}
    	}
    	/**
    	 * 对所有文本框进行制空操作。
    	 */
    	void setNull() {
    		departIdText.setText(null);
    		firstLevelText.setText(null);
    		secondLevelText.setText(null);
    	}
    }
    

     

     

    2.人员调动管理

    2.1人员调动(NodeTwoPanelOne.java)

     

    package JobTransfer;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.*;
    import javax.swing.JPanel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    import DataOperator.DeptBean;
    import DataOperator.PersonBean;
    import HRPackage.HrMain;
    
    /**
     * 该类用于实现人员调动
     * @author Yaxin Wen
     * @data 2017/11/13
     *
     */
    public class NodeTwoPanelOne extends JPanel implements ActionListener, ListSelectionListener, ItemListener {
    
    	//定义所用的面板
    	JPanel upPanel = new JPanel();   	//上部面板
    	JPanel centerPanel = new JPanel();  //中部面板
    	JPanel bottomPanel = new JPanel();  //下部面板
    	
    	JLabel title = new JLabel("人员调动");  //表明该模块的作用
    	JLabel pNameLabel = new JLabel();             
    	JTextField pNameText = new JTextField(15);    //存放人员姓名
    	JLabel oldDepartNameLabel = new JLabel();
    	JTextField oldDepartNameText = new JTextField(15);  //显示原部门名称的文本框
    	JLabel newDepartNameLabel = new JLabel(); 
    	JComboBox newDepartNameCon = null;              
    	//定义下拉列表,人员调用是将人员从原部门调用到公司已存在的另一个部门
    	
    	//定义两个所需要的按钮
    	JButton transToNewDepartBtn = new JButton("调入新部门");
    	JButton clearInfoBtn = new JButton("清空信息");
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	//定义表的字段
    	String[] colName = {"工号","姓名","性别","部门","薪酬","考核信息"};
    	String[][] colValue;
    	String pId;    	  	//人员工号
    	String newDeptId; 	//新部门编号
    	String newDeptName;
    	
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	//构造函数完成该类对象的初始化工作
    	public NodeTwoPanelOne() {
    		//设置当前面板的布局方式为BorderLayout
    		this.setLayout(new BorderLayout()); 
    		try{
    			upPanelInit();    		//上部面板初始化
    			centerPanelInit(); 	    //中部面板初始化
    			bottomPanelInit();  	//下部面板初始化
    			addActionListener();  	//为相应的控件添加事件监听器
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	//上部面板初始化函数
    	public void upPanelInit() throws Exception {
    		PersonBean bean = new PersonBean();
    		//设置上部面板的布局方式为网格布局
    		try{
    			upPanel.setLayout(gridBag);
    			title.setFont(new Font("Dialog",0,25));  //设置字号
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 0;
    			gridBagCon.insets = new Insets(0,10,0,10);
    			gridBag.setConstraints(title,gridBagCon);
    			upPanel.add(title);
    			
    			colValue = bean.searchAll();
    			table = new JTable(colValue,colName);
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			listSelectionModel = table.getSelectionModel();
    			listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    			listSelectionModel.addListSelectionListener(this);
    			jScrollPane = new JScrollPane(table);
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    			
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 1;
    			gridBagCon.insets = new Insets(0,0,0,0);
    			gridBag.setConstraints(jScrollPane,gridBagCon);
    			upPanel.add(jScrollPane);
    			this.add(upPanel,BorderLayout.NORTH);
    			
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	public void centerPanelInit() throws Exception{
    		pNameLabel.setText("姓名:");   //姓名
    		pNameLabel.setFont(new Font("Dialog",0,15));
    		oldDepartNameLabel.setText("原部门:");
    		oldDepartNameLabel.setFont(new Font("Dialog",0,15));
    		newDepartNameLabel.setText("新部门:");
    		newDepartNameLabel.setFont(new Font("Dialog",0,15));
    		try{
    			DeptBean bean = new DeptBean();
    			String[] allType = bean.getAllNodeInfor();
    			newDepartNameCon = new JComboBox(allType);
    			
    			//将这些控件添加到面板上
    			centerPanel.add(pNameLabel);
    			centerPanel.add(pNameText);
    			centerPanel.add(oldDepartNameLabel);
    			centerPanel.add(oldDepartNameText);
    			centerPanel.add(newDepartNameLabel);
    			centerPanel.add(newDepartNameCon);
    			
    			//设置所有文本框都不可更改,原来的信息不允许变动
    			pNameText.setEditable(false);
    			oldDepartNameText.setEditable(false);
    			
    			this.add(centerPanel,BorderLayout.CENTER);  //将该面板添加到中部
    			
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	public void bottomPanelInit() {
    		transToNewDepartBtn.setFont(new Font("Dialog",0,15));
    		transToNewDepartBtn.setEnabled(false);
    		clearInfoBtn.setFont(new Font("Dialog",0,15));
    		
    		//将控件添加到下部面板上
    		bottomPanel.add(transToNewDepartBtn);
    		bottomPanel.add(clearInfoBtn);
    		this.add(bottomPanel,BorderLayout.SOUTH);
    	}
    	public void addActionListener() {
    		transToNewDepartBtn.addActionListener(this);
    		clearInfoBtn.addActionListener(this);
    		newDepartNameCon.addItemListener(this);
    		
    	}
    	@Override
    	public void itemStateChanged(ItemEvent event) {
    		// TODO Auto-generated method stub
    		if(event.getStateChange() == ItemEvent.SELECTED) {
    			newDeptName = "" + event.getItem();
    			int i = newDeptName.indexOf("-");
    			newDeptId = newDeptName.substring(0,i);
    		}
    	}
    
    	@Override
    	public void valueChanged(ListSelectionEvent arg0) {
    		// TODO Auto-generated method stub
    		int selectedRow= table.getSelectedRow();   				//获取选中的行号
    		pNameText.setText(colValue[selectedRow][1]);  			//获取姓名
    		oldDepartNameText.setText(colValue[selectedRow][3]);	//原部门
    		pId = colValue[selectedRow][0];   	//获取员工工号。
    		transToNewDepartBtn.setEnabled(true);  //设置按钮可用
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		Object obj = event.getSource();
    		//如果事件来源是调入新部门的按钮,就执行修改操作。
    		if(obj == transToNewDepartBtn) {
    			String name = pNameText.getText();  //名字
    			String oldDeptName = oldDepartNameText.getText();  //旧名
    			PersonBean bean = new PersonBean();
    			try {
    				boolean success = bean.updateDept(pId,name, newDeptId, oldDeptName, newDeptName);
    				if(success == true) {
    					NodeTwoPanelOne nodePanel21 = new NodeTwoPanelOne();
    					HrMain.splitPane.setRightComponent(nodePanel21);
    				}
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} else if(obj == clearInfoBtn) {
    			setNull();
    			transToNewDepartBtn.setEnabled(false);
    		}
    	}
    	void setNull() {
    		pNameText.setText(null);
    		oldDepartNameText.setText(null);
    	}
    }
    

     

     

     

     

     

    2.2调动历史查询(NodeTwoPanelTwo.java)

     

    package JobTransfer;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    
    import DataOperator.JobChangeHistory;
    
    /**
     * 该模块用来显示人员调动的历史
     * @author 57215
     *
     */
    public class NodeTwoPanelTwo extends JPanel implements ActionListener {
    
    	//定义所用面板
    	JPanel upPanel = new JPanel();
    	
    	JLabel title = new JLabel("调动历史查询");
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	String[] colName = {"流水号","员工编号","员工姓名","原部门","新部门","变更次数","变更日期"};
    	String[][] colValue;
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	//构造函数完成对象的初始化工作
    	public NodeTwoPanelTwo() {
    		this.setLayout(new BorderLayout()); 
    		try {
    			upPanelInit();
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	//上部面板初始化
    	public void upPanelInit() {
    		JobChangeHistory bean = new JobChangeHistory();
    		upPanel.setLayout(gridBag);
    		title.setFont(new Font("Dialog",0,25));
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		
    		colValue = bean.searchAll();
    		table = new JTable(colValue,colName);
    		table.setPreferredScrollableViewportSize(new Dimension(900,750));
    		jScrollPane = new JScrollPane(table);
    		jScrollPane.setPreferredSize(new Dimension(900,750));
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 1;
    		gridBagCon.insets = new Insets(0,0,0,0);
    		gridBag.setConstraints(jScrollPane, gridBagCon);
    		upPanel.add(jScrollPane);
    		this.add(upPanel);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

     

     

     

     

     

    3.人员考核管理

    3.1人员考核(NodeThreePanelOne.java)

     

    package PersonAccess;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    import DataOperator.PersonBean;
    import HRPackage.HrMain;
    
    /**
     * 该模块用来实现人员的考核功能。
     * @author Yaxin Wen
     * @data 2017/11/13
     */
    public class NodeThreePanelOne extends JPanel implements ActionListener, ItemListener, ListSelectionListener {
    	//定义所用的面板
    	JPanel upPanel = new JPanel();
    	JPanel centerPanel = new JPanel();
    	JPanel bottomPanel = new JPanel();
    	
    	//当以三个所需要的静态文本
    	JLabel title = new JLabel("人员考核");
    	JLabel pNameLabel = new JLabel();
    	JTextField pNameText = new JTextField(15);
    	JLabel oldAccessRecordLabel = new JLabel();
    	JTextField oldAccessRecordText = new JTextField(10);
    	JLabel newAccessRecordLabel = new JLabel();
    	JComboBox newAccessRecordCom = null;
    	
    	JButton okBtn = new JButton("确定");
    	JButton clearBtn = new JButton("清空");
    	
    	String pId;   //人员编号
    	String pName; //人员姓名
    	String oldAssess;  //上次考核
    	String newAssess;  //本次考核
    	
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	String[] colName = {"工号","姓名","性别","部门","薪酬","考核信息"};
    	String[][] colValue;
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon = new GridBagConstraints();
    	//构造寒素完成对象的初始化工作
    	public NodeThreePanelOne() {
    		//设置当前面板布局方式为borderLayout
    		this.setLayout(new BorderLayout());
    		try {
    			upPanelInit();
    			centerPanelInit();
    			bottomPanelInit();
    			addActionListener();
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	//该函数用来完成上部面板的初始化工作
    	public void upPanelInit() throws Exception{
    		PersonBean bean = new PersonBean();
    		//设置上部面板的布局方式为网格布局
    		upPanel.setLayout(gridBag);
    		try{
    			title.setFont(new Font("Dialog",0,25));
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 0;
    			gridBagCon.insets = new Insets(0,10,0,10);
    			gridBag.setConstraints(title,gridBagCon);
    			upPanel.add(title);
    			
    			colValue = bean.searchAll();
    			table = new JTable(colValue,colName);
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			listSelectionModel = table.getSelectionModel();
    			listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    			listSelectionModel.addListSelectionListener(this);
    			jScrollPane = new JScrollPane(table);
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    			
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 1;
    			gridBagCon.insets = new Insets(0,0,0,0);
    			gridBag.setConstraints(jScrollPane,gridBagCon);
    			upPanel.add(jScrollPane);
    			this.add(upPanel,BorderLayout.NORTH);
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	public void centerPanelInit() throws Exception {
    		pNameLabel.setText("姓名:");
    		pNameLabel.setFont(new Font("Dialog",0,15));
    		oldAccessRecordLabel.setText("上次考核:");
    		oldAccessRecordLabel.setFont(new Font("Dialog",0,15));
    		newAccessRecordLabel.setText("本次考核:");
    		newAccessRecordLabel.setFont(new Font("Dialog",0,15));
    		String[] value = {"优秀","合格","不合格"};
    		newAccessRecordCom = new JComboBox(value);
    		
    		pNameText.setEditable(false);
    		oldAccessRecordText.setEditable(false);
    		
    		okBtn.setEnabled(false);
    		
    		centerPanel.add(pNameLabel);
    		centerPanel.add(pNameText);
    		centerPanel.add(oldAccessRecordLabel);
    		centerPanel.add(oldAccessRecordText);
    		centerPanel.add(newAccessRecordLabel);
    		centerPanel.add(newAccessRecordCom);
    		
    		this.add(centerPanel);
    	}
    	public void bottomPanelInit() {
    		okBtn.setFont(new Font("Dialog",0,15));
    		clearBtn.setFont(new Font("Dialog",0,15));
    		bottomPanel.add(okBtn);
    		bottomPanel.add(clearBtn);
    		this.add(bottomPanel,BorderLayout.SOUTH);
    	}
    	void addActionListener() {
    		okBtn.addActionListener(this);
    		clearBtn.addActionListener(this);
    		newAccessRecordCom.addItemListener(this);
    	}
    	void setNull() {
    		pNameText.setText(null);
    		oldAccessRecordText.setText(null);
    		pNameText.setEditable(false);
    		oldAccessRecordText.setEditable(false);
    		okBtn.setEnabled(false);
    		clearBtn.setEnabled(false);
    		newAccessRecordCom.setEnabled(false);
    	}
    	@Override
    	public void valueChanged(ListSelectionEvent lse) {
    		// TODO Auto-generated method stub
    		int selectedRow = table.getSelectedRow();
    		pId = colValue[selectedRow][0];
    		pName = colValue[selectedRow][1];
    		pNameText.setText(colValue[selectedRow][1]);
    		oldAccessRecordText.setText(colValue[selectedRow][5]);
    		oldAssess = colValue[selectedRow][5];   //旧的考核信息
    		okBtn.setEnabled(true);
    	}
    
    	@Override
    	public void itemStateChanged(ItemEvent event) {
    		// TODO Auto-generated method stub
    		if(event.getStateChange() == ItemEvent.SELECTED) {
    			newAssess = "" + event.getItem();
    		}
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		Object obj = event.getSource();
    		//点击确定按钮的时候,进行信息更改
    		if(obj == okBtn) {
    			PersonBean bean = new PersonBean();
    			try {
    				boolean success = bean.updateAssess(pId, pName, oldAssess, newAssess);
    				if(success == true) {
    					NodeThreePanelOne nodePanel31 = new NodeThreePanelOne();
    					HrMain.splitPane.setRightComponent(nodePanel31);
    				}
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} else if(obj == clearBtn) {
    			setNull();
    			okBtn.setEnabled(false);
    		}
    	}
    }
    

     

     

     

    3.2考核历史查询(NodeThreePanelTwo.java)

     

    package PersonAccess;
    
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    
    import javax.swing.*;
    
    import DataOperator.AssessChangeHistory;
    
    /**
     * 该模块用来实现人员考核历史的查询。
     * @author YaXin Wen
     * @date 2017/11/18
     *
     */
    public class NodeThreePanelTwo extends JPanel {
    	JPanel upPanel = new JPanel();
    	JLabel title = new JLabel("人员考核历史查询");
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table = new JTable();
    	ListSelectionModel listSelectionModel = null;
    	String[] colName = {"流水号","员工编号","员工姓名","上次考核","本次考核","变更次数","变更日期"};
    	String[][] colValue;
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon = new GridBagConstraints();
    	
    	//构造函数完成对象的初始化工作
    	public NodeThreePanelTwo() {
    		try {
    			upPanelInit();
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	public void upPanelInit() {
    		AssessChangeHistory bean = new AssessChangeHistory();
    		upPanel.setLayout(gridBag);
    		title.setFont(new Font("Dialog",0,15));
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx = 0;
    		gridBagCon.gridy = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		 
    		try {
    			colValue = bean.searchAll();
    			table = new JTable(colValue,colName);
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			jScrollPane = new JScrollPane(table);
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    			
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 1;
    			gridBagCon.insets = new Insets(0,0,0,0);
    			gridBag.setConstraints(jScrollPane, gridBagCon);
    			upPanel.add(jScrollPane);
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    		this.add(upPanel);
    	}
    }
    

     

     

     

     

     

    4.劳资管理

    4.1劳资分配管理(NodeFourPanelOne.java)

     

    package LaborManagement;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    import javax.swing.JPanel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    import DataOperator.PersonBean;
    import HRPackage.HrMain;
    
    /**
     * @author Yaxin Wen
     * @date 2017/11/18
     */
    public class NodeFourPanelOne extends JPanel implements ActionListener, ListSelectionListener {
    
    	//定义所用的面板
    	JPanel upPanel = new JPanel();
    	JPanel centerPanel = new JPanel();
    	JPanel bottomPanel = new JPanel();
    	
    	//定义四个所需的静态文本
    	JLabel title = new JLabel("劳资分配");
    	JLabel pNameLabel = new JLabel("姓名:");
    	JLabel oldSalaryLabel = new JLabel("调整前的工资:");
    	JLabel newSalaryLabel = new JLabel("调整后的工资:");
    	
    	//定义三个需要的文本框
    	JTextField pNameText = new JTextField(10);
    	JTextField oldSalaryText = new JTextField(10);
    	JTextField newSalaryText = new JTextField(10);
    	
    	//定义需要用的两个按钮
    	JButton okBtn = new JButton("确定");
    	JButton clearBtn = new JButton("清空");
    	
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	String[] colName = {"工号","姓名","性别","部门","薪酬","考核信息"};
    	String[][] colValue;
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	String pId;   	//员工编号
    	String pName;   //员工姓名
    	String oldSalary;  //原来的工资
    	String newSalary;  //新调整的工资。
    	
    	public NodeFourPanelOne() {
    		//设置布局方式为BorderLayout
    		this.setLayout(new BorderLayout()); 
    		try {
    			upPanelInit();   //上部面板布局
    			centerPanelInit();
    			bottomPanelInit();
    			addActionListener();
    			
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	
    	public void upPanelInit() throws Exception{
    		PersonBean bean = new PersonBean();
    		upPanel.setLayout(gridBag);
    		
    		try {
    			title.setFont(new Font("Dialog",0,25));
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 0;
    			gridBagCon.insets = new Insets(0,10,0,10);
    			gridBag.setConstraints(title,gridBagCon);
    			upPanel.add(title);
    			
    			colValue = bean.searchAll();
    			table = new JTable(colValue,colName);
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			listSelectionModel = table.getSelectionModel();
    			listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    			listSelectionModel.addListSelectionListener(this);
    			jScrollPane = new JScrollPane(table);
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    			
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 1;
    			gridBagCon.insets = new Insets(0,0,0,0);
    			gridBag.setConstraints(jScrollPane,gridBagCon);
    			upPanel.add(jScrollPane);
    			
    			this.add(upPanel,BorderLayout.NORTH);
    			
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	
    	//中部面板的布局
    	public void centerPanelInit() throws Exception {
    		pNameLabel.setFont(new Font("Dialog",0,15));
    		oldSalaryLabel.setFont(new Font("Dialog",0,15));
    		newSalaryLabel.setFont(new Font("Dialog",0,15));
    		
    		//将控件添加到面板上
    		centerPanel.add(pNameLabel);
    		centerPanel.add(pNameText);
    		centerPanel.add(oldSalaryLabel);
    		centerPanel.add(oldSalaryText);
    		centerPanel.add(newSalaryLabel);
    		centerPanel.add(newSalaryText);
    		
    		pNameText.setEditable(false);
    		oldSalaryText.setEditable(false);
    		newSalaryText.setEditable(false);
    		
    		
    		this.add(centerPanel);
    	}
    	
    	public void bottomPanelInit() {
    		
    		okBtn.setFont(new Font("Dialog",0,15));
    		clearBtn.setFont(new Font("Dialog",0,15));
    		okBtn.setEnabled(false);
    		clearBtn.setEnabled(true);
    		bottomPanel.add(okBtn);
    		bottomPanel.add(clearBtn);
    		this.add(bottomPanel,BorderLayout.SOUTH);
    	}
    	
    	public void addActionListener() {
    		
    		okBtn.addActionListener(this);
    		clearBtn.addActionListener(this);
    	}
    	@Override
    	public void valueChanged(ListSelectionEvent lse) {
    		// TODO Auto-generated method stub
    		//当表格被选中的时候执行这些操作
    		int selectedRow = table.getSelectedRow();
    		pId = colValue[selectedRow][0];   	//员工编号
    		pName = colValue[selectedRow][1];   //员工姓名
    		oldSalary = colValue[selectedRow][4]; //原来的工资
    		
    		pNameText.setText(pName);
    		oldSalaryText.setText(oldSalary);
    		newSalaryText.setEditable(true);
    		okBtn.setEnabled(true);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent event) {
    		// TODO Auto-generated method stub
    		Object obj = new Object();
    		obj = event.getSource();
    		if(obj == okBtn) {
    			PersonBean bean = new PersonBean();
    			try {
    				newSalary = newSalaryText.getText();
    				boolean success = bean.updateSalary(pId, pName, oldSalary, newSalary);
    				if(success == true) {
    					NodeFourPanelOne nodePanel41 = new NodeFourPanelOne();
    					HrMain.splitPane.setRightComponent(nodePanel41);
    				}
    			} catch(Exception ex) {
    				ex.printStackTrace();
    			}
    		} else if(obj == clearBtn){
    			setNull();
    			okBtn.setEnabled(false);
    		}
    	}
    	void setNull() {
    		pNameText.setText(null);
    		oldSalaryText.setText(null);
    		newSalaryText.setText(null);
    		pNameText.setEditable(false);
    		oldSalaryText.setEditable(false);
    		newSalaryText.setEditable(false);
    		okBtn.setEnabled(false);
    	}
    
    }
    

     

     

     

    4.2劳资历史查询(NodeFourPanelTwo.java)

     

    package LaborManagement;
    
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    
    import javax.swing.*;
    
    import DataOperator.salaryChangeHistory;
    
    /**
     * @author Yaxin Wen
     * @date 2017/11/18
     */
    public class NodeFourPanelTwo extends JPanel {
    	JPanel upPanel = new JPanel();
    	
    	JLabel title = new JLabel("劳资管理历史查询");
    	//定义表格
    	JScrollPane jScrollPane;
    	JTable table;
    	ListSelectionModel listSelectionModel = null;
    	String[] colName = {"流水号","员工编号","员工姓名","原薪资","当前薪资","变更次数","变更日期"};
    	String[][] colValue;
    	
    	GridBagLayout gridBag = new GridBagLayout();
    	GridBagConstraints gridBagCon;
    	
    	//构造函数完成初始化工作
    	public NodeFourPanelTwo() {
    		try {
    			upPanelInit();
    		} 
    		catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	public void upPanelInit() {
    		upPanel.setLayout(gridBag);
    		salaryChangeHistory bean = new salaryChangeHistory();
    		title.setFont(new Font("Dialog",0,25));
    		gridBagCon = new GridBagConstraints();
    		gridBagCon.gridx  = 0;
    		gridBagCon.gridy  = 0;
    		gridBagCon.insets = new Insets(0,10,0,10);
    		gridBag.setConstraints(title, gridBagCon);
    		upPanel.add(title);
    		
    		try {
    			colValue = bean.searchAll();
    			table = new JTable(colValue,colName);
    			table.setPreferredScrollableViewportSize(new Dimension(900,750));
    			jScrollPane = new JScrollPane(table);
    			jScrollPane.setPreferredSize(new Dimension(900,750));
    			
    			gridBagCon = new GridBagConstraints();
    			gridBagCon.gridx = 0;
    			gridBagCon.gridy = 1;
    			gridBagCon.insets = new Insets(0,0,0,0);
    			gridBag.setConstraints(jScrollPane, gridBagCon);
    			upPanel.add(jScrollPane);
    		} 
    		catch(Exception ex) {
    			ex.printStackTrace();
    		}
    		this.add(upPanel);
    	}
    }
    

     

     

     

     

     

    5.数据库操作

    5.1 数据库操作文件(Database.java)

     

    package DataOperator;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    /**
     * 连接数据库操作的类
     * @author 温雅新
     * @date 2017/11/15
     */
    public class Database {
    	private Statement stmt = null;
    	ResultSet rs = null;
    	private Connection conn = null;
    	String url = "jdbc:Access:///E:/HRdatabase.accdb";   //数据库链接
    	//构造函数
    	public Database() {
    		
    	}
    	/**
    	 * 打开数据库连接
    	 */
    	public void OpenConn() throws Exception {
    		try {
    			Class.forName("com.hxtt.sql.access.AccessDriver");
    			conn = DriverManager.getConnection(url);
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    	/**
    	 * 执行查询语句返回结果集rs
    	 */
    	public ResultSet QueryInfo(String sql) {
    		stmt = null;
    		rs = null;
    		try {
    			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    			rs = stmt.executeQuery(sql);
    		} catch (Exception ex) {
    			System.err.println("executeQuery:" + ex.getMessage());
    		}
    		return rs;
    	}
    	public int RecordNumber(String sql) {
    		stmt = null;
    		rs = null;
    		int row = 0;
    		try {
    			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    			rs = stmt.executeQuery(sql);
    			if(rs.last()) {
    				row = rs.getRow();
    			}
    		} catch(Exception ex) {
    			System.err.println("executeQuery:" + ex.getMessage());
    		}
    		return row;
    	}
    	public int getMaxId(String sql) throws Exception {
    		stmt = null;
    		rs = null;
    		int number = -1;
    		try{
    			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    			rs = stmt.executeQuery(sql);
    			while(rs.next()) {
    				if(number < rs.getInt(1)) {
    					number = rs.getInt(1);
    				}
    			}
    		} catch(Exception ex) {
    			System.err.println("executeQuery:" + ex.getMessage());
    		}
    		return number;
    	}
    	public int getMinId(String sql) throws Exception {
    		stmt = null;
    		rs = null;
    		int number = 100000;
    		try{
    			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    			rs = stmt.executeQuery(sql);
    			while(rs.next()) {
    				if(number > rs.getInt(1)) {
    					number = rs.getInt(1);
    				}
    			}
    		} catch(Exception ex) {
    			System.err.println("executeQuery:" + ex.getMessage());
    		}
    		return number;
    	}
    	/**
    	 * 执行更新语句
    	 */
    	public void UpdateInfo(String sql) {
    		stmt = null;
    		try {
    			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    			stmt.executeUpdate(sql);
    		} catch(Exception ex) {
    			System.err.println("executeQuery:" + ex.getMessage());
    		}
    	}
    	/**
    	 * 关闭Statement 
    	 */
    	public void closeStmt() {
    		try{
    			stmt.close();
    		} catch(Exception ex) {
    			System.err.println("executeQuery:" + ex.getMessage());
    		}
    	}
    	/**
    	 * 关闭数据库连接
    	 */
    	public void closeConn() {
    		try{
    			conn.close();
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    	}
    }
    

     

     

     

    5.2 员工信息表操作文件(PersonBean.java)

     

    package DataOperator;
    
    import java.sql.ResultSet;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.swing.JOptionPane;
    
    /**
     * 该类用来实现员工信息的增删查改。
     * @author YaXin Wen
     * @date 2017/11/15
     */
    public class PersonBean {
    	ResultSet rs = null;
    	String sql;         //存放sql语句
    	String pId;         //员工编号
    	String pName;       //员工姓名
    	String pSex;        //员工性别
    	String pBirth;      //出生年月
    	String pNation;     //民族
    	String pAddress;    //地址
    	String Did;         //所属部门编号
    	String pSalary;     //工资
    	String pAssess;     //是否考核
    	String pOther;      //其他
    	
    	/**
    	 * @param name    员工姓名
    	 * @param sex     员工性别
    	 * @param birth   员工出生年月
    	 * @param nation  员工民族
    	 * @param address 员工地址
    	 * @return 如果信息合法,返回true,否则返回false
    	 */
    	public boolean isLegal(String name,String sex,String birth,String nation,String address) {
    		if(name==null || name.equals("")) {
    			JOptionPane.showMessageDialog(null, "请输入姓名","错误",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		if(sex==null || sex.equals("")) {
    			JOptionPane.showMessageDialog(null, "请输入性别","错误",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		if(birth==null || birth.equals("")) {
    			JOptionPane.showMessageDialog(null, "请输入出生年月","错误",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		if(nation==null || nation.equals("")) {
    			JOptionPane.showMessageDialog(null,"请输入民族","错误",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		if(address==null || address.equals("")) {
    			JOptionPane.showMessageDialog(null, "请输入地址","错误",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		return true;
    	}
    	/**
    	 * 
    	 * @param id  		员工编号
    	 * @param name		员工姓名
    	 * @param sex		员工性别
    	 * @param birth		员工出生年月
    	 * @param nation	员工民族
    	 * @param address	员工家庭住址
    	 * @param did		员工所属部门
    	 * @param salary	员工薪资
    	 * @param access	员工考核
    	 * @param other		其他信息
    	 */
    	public void addInfo(String id,String name,String sex,String birth,String nation,String address,String did,String salary,String access,String other) {
    		
    		//如果信息合法
    		this.pId = id;
    		this.pName = name;
    		this.pSex = sex;
    		this.pBirth = birth;
    		this.pNation = nation;
    		this.pAddress = address;
    		this.Did = did;
    		this.pSalary = salary;
    		this.pAssess = access;
    		this.pOther = other;
    		
    		if(isLegal(name,sex,birth,nation,address)) {
    			Database db = new Database();
    			sql = "insert into Person(pId,pName,pSex,pBirth,pNation,pAddress,DeptId,pSalary,pAccess,pOther) ";
    			String temp = "values('"+pId+"','"+pName+"','"+pSex+"','"+pBirth+"','"+pNation+"','"+pAddress+"','"+Did+"','"+pSalary+"','"+pAssess+"','"+pOther+"')";
    			sql += temp;
    			try {
    				db.OpenConn();  //打开连接
    				db.UpdateInfo(sql);  //插入数据
    				//删除未使用编号表中的相关的编号
    				int t = Integer.valueOf(pId);
    				sql = "delete from unUsedPersonId where personId='"+t+"'";
    				db.UpdateInfo(sql);
    				JOptionPane.showMessageDialog(null,"成功添加一条新的纪录");
    			} catch(Exception ex) {
    				System.out.println(ex);
    				JOptionPane.showMessageDialog(null,"信息添加失败","错误",JOptionPane.ERROR_MESSAGE);
    			} finally {
    				db.closeStmt();
    				db.closeConn();
    			}
    		}
    	}
    	
    	/**
    	 * 该函数用来实现信息的修改。
    	 * @param id
    	 * @param name
    	 * @param sex
    	 * @param birth
    	 * @param nation
    	 * @param address
    	 * @param did
    	 * @param salary
    	 * @param access
    	 * @param other
    	 */
    	public void modifyInfo(String id,String name,String sex,String birth,String nation,String address,String did,String salary,String access,String other) {
    		
    		//如果信息合法
    		this.pId = id;
    		this.pName = name;
    		this.pSex = sex;
    		this.pBirth = birth;
    		this.pNation = nation;
    		this.pAddress = address;
    		this.Did = did;
    		this.pSalary = salary;
    		this.pAssess = access;
    		this.pOther = other;
    		
    		if(isLegal(name,sex,birth,nation,address))  {
    			Database db = new Database();
    			try {
    				int temp = Integer.valueOf(id);
    				sql = "update Person set pName='"+pName+"',pSex='"+pSex+"',pBirth='"+pBirth+"',pNation='"+pNation+"',pOther='"+pOther+"' where pId = '"+temp+"'";
    				db.OpenConn();  //打开连接
    				db.UpdateInfo(sql);
    				JOptionPane.showMessageDialog(null,"修改成功");
    			} catch(Exception ex) {
    				System.out.println(ex);
    				JOptionPane.showMessageDialog(null,"信息修改失败","错误",JOptionPane.ERROR_MESSAGE);
    			} finally {
    				db.closeStmt();
    				db.closeConn();
    			}
    		}
    	}
    	public boolean updateDept(String id,String name,String newDeptId,String oldName,String newName) {
    		Database db = new Database();
    		int Did = Integer.valueOf(newDeptId);
    		int Pid = Integer.valueOf(id);
    		sql = "update Person set DeptId='"+Did+"' where pId='"+Pid+"'";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);  //改变部门编号
    			JOptionPane.showMessageDialog(null, "人员调动成功");
    			sql = "select * from jobChange where pId='"+Pid+"'";
    			int time = 0;
    			rs = db.QueryInfo(sql);
    			if(rs.last()) {
    				time = rs.getRow();
    			}
    			time++;
    			//获取当前时间
    			Date nowTime = new Date();
    			//设置时间格式
    			SimpleDateFormat matter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			//日期
    			String date = matter.format(nowTime);
    			sql = "insert into jobChange(pId,pName,oldDept,newDept,modifyTime,modifyDate) values('"+id+"','"+name+"','"+oldName+"','"+newName+"','"+String.valueOf(time)+"','"+date+"')";
    			db.UpdateInfo(sql);
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			db.closeStmt();
    			db.closeConn();
    			ex.printStackTrace();
    			return false;
    		} 
    	}
    	public boolean updateAssess(String id,String name,String oldAssess,String newAssess) {
    		Database db = new Database();
    		int temp = Integer.valueOf(id);  //将编号转换成整数
    		sql = "update Person set pAccess='"+newAssess+"' where pId='"+temp+"'";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);
    			JOptionPane.showMessageDialog(null, "考核信息修改成功");
    			sql = "select * from assessChange where pId='"+temp+"'";
    			rs = db.QueryInfo(sql);
    			int time = 0;
    			if(rs.last()) {
    				time = rs.getRow();
    			}
    			time++;
    			//获取当前时间
    			Date nowTime = new Date();
    			//设置时间格式
    			SimpleDateFormat matter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			//日期
    			String date = matter.format(nowTime);
    			sql = "insert into assessChange(pId,pName,oldAssess,newAssess,modifyTime,modifyDate) values('"+id+"','"+name+"','"+oldAssess+"','"+newAssess+"','"+time+"','"+date+"')";
    			db.UpdateInfo(sql);
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			ex.printStackTrace();
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    	}
    	public boolean updateSalary(String id,String name,String oldSalary,String newSalary) {
    		Database db = new Database();
    		int temp = Integer.valueOf(id);
    		sql = "update Person set pSalary='"+newSalary+"' where pId='"+temp+"'";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);
    			JOptionPane.showMessageDialog(null, "成功修改薪资");
    			sql = "select * from salaryChange where pId='"+temp+"'";
    			rs = db.QueryInfo(sql);
    			int time = 0;
    			if(rs.last()) {
    				time = rs.getRow();
    			}
    			time++;
    			//获取当前时间
    			Date nowTime = new Date();
    			//设置时间格式
    			SimpleDateFormat matter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			//日期
    			String date = matter.format(nowTime);
    			sql = "insert into salaryChange(pId,pName,oldSalary,newSalary,modifyTime,modifyDate) values('"+id+"','"+name+"','"+oldSalary+"','"+newSalary+"','"+time+"','"+date+"')";
    			db.UpdateInfo(sql);
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			ex.printStackTrace();
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    	}
    	
    	/**
    	 * 该函数用来实现返回某个员工的所有信息
    	 * @param id
    	 * @return
    	 */
    	public String[] searchInfo(String id) {
    		Database db = new Database();
    		String[] s = new String[15];
    		int temp = Integer.valueOf(id);
    		sql = "select * from Person where pId = '"+temp+"'";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			if(rs.next()) {
    				s[0] = rs.getString("pId");
    				s[1] = rs.getString("pName");
    				s[2] = rs.getString("pSex");
    				s[3] = rs.getString("pBirth");
    				s[4] = rs.getString("pNation");
    				s[5] = rs.getString("pAddress");
    				s[6] = rs.getString("DeptId");
    				s[7] = rs.getString("pSalary");
    				s[8] = rs.getString("pAccess");
    				s[9] = rs.getString("pOther");
    			} 
    			else 
    				s = null;
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		} finally {
    			db.closeStmt();
    			db.closeConn();
    		}
    		return s;
    	}
    	/**
    	 * 该方法用来实现查询该字段的所有值。
    	 * @param field   字段名
    	 * @return
    	 */
    	public String[] selectField(String field) {
    		String[] s = null;
    		Database db = new Database();
    		int row = 0;
    		try {
    			sql = "select " + field + " from Person order by pId";  //查找该字段的所有值
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			if(rs.last()) {
    				row = rs.getRow();
    			}
    			if(row == 0) {
    				s = new String[1];
    				s[0] = "	";
    			}
    			else {
    				s = new String[row];
    				rs.first();
    				rs.previous();
    				int i = 0;
    				while(rs.next()) {
    					s[i++] = rs.getString(1);
    				}
    			}
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		} finally {
    			db.closeStmt();
    			db.closeConn();
    		}
    		return s;
    	}
    	//人员调动模块使用
    	public String[][] searchAll() {
    		Database db = new Database();
    		String[][] sn = null;
    		int row = 0;
    		int i = 0;
    		sql = "select pId,pName,pSex,DeptId,pSalary,pAccess from Person order by pId";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(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("pId");
    					sn[i][1] = rs.getString("pName");
    					sn[i][2] = rs.getString("pSex");
    					sn[i][3] = rs.getString("DeptId");
    					if(sn[i][3].equals("0")) {
    						sn[i][3] = "0-未分配部门";
    					} 
    					else {
    						int temp = Integer.valueOf(sn[i][3]);
    						sql = "select FatherDept,SonDept from DeptTable where DeptId='"+temp+"'";
    						ResultSet rs1 = db.QueryInfo(sql);
    						if(rs1.next()) {
    							sn[i][3]  += "-" + rs1.getString("FatherDept") + "-" + rs1.getString("SonDept");
    						}
    					}
    					sn[i][4] = rs.getString("pSalary");
    					sn[i][5] = rs.getString("pAccess");
    					i++;
    				}
    			}
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		} finally{
    			db.closeStmt();
    			db.closeConn();
    		}
    		return sn;
    	}
    	public String[][] searchAllForNode() {
    		Database db = new Database();
    		String[][] sn = null;
    		int row = 0;
    		int i = 0;
    		sql = "select pId,pName,pBirth,pNation,pAddress,DeptId from Person order by pId";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(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("pId");   	 //编号
    					sn[i][1] = rs.getString("pName");    //姓名
    					sn[i][2] = rs.getString("pBirth");   //出生年月
    					sn[i][3] = rs.getString("pNation");  //民族
    					sn[i][4] = rs.getString("pAddress"); //地址
    					sn[i][5] = rs.getString("DeptId");   //部门
    					if(sn[i][5].equals("0")) {
    						sn[i][5] = "未分配部门";
    					} else {
    						int temp = Integer.valueOf(sn[i][5]);
    						sql = "select FatherDept,SonDept from DeptTable where DeptId = '"+temp+"'";
    						ResultSet rs1 = db.QueryInfo(sql);
    						if(rs1 != null) {
    							if(rs1.next()) {
    								sn[i][5] = "" + rs1.getString("FatherDept") +"-" + rs1.getString("SonDept");
    							}
    						}
    					}
    					i++;
    				}
    			}
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		} finally {
    			db.closeStmt();
    			db.closeConn();
    		}
    		return sn;
    	}
    	public boolean deleteInfo(String id) {
    		this.pId = id;
    		int temp = Integer.valueOf(pId);
    		Database db = new Database();
    		sql = "delete from Person where pId='"+temp+"'";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);
    			JOptionPane.showMessageDialog(null,"成功删除一条记录");
    			sql = "insert into unUsedPersonId(personId) values('"+temp+"')";
    			db.UpdateInfo(sql);
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			JOptionPane.showMessageDialog(null, "删除信息失败");
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    	}
    	/**
    	 * 该函数实现获取新编号的功能
    	 * @return 返回新编号
    	 */
    	public int getNewId() {
    		Database db = new Database();
    		try{
    			db.OpenConn();   //打开连接
    			sql = "select * from Person";   //获取员工表的记录条数
    			int number = db.RecordNumber(sql);   ///获取表的记录数
    			if(number == 0) {
    				db.closeStmt();
    				db.closeConn();
    				return 1;///如果表中没有记录。
    			}
    			int Max = db.getMaxId(sql);   ///获取最大编号
    			//如果最大表闹和表中记录条数一样,则返回number+1
    			if(Max == number) {
    				db.closeStmt();
    				db.closeConn();
    				Max++;
    				return Max;
    			} 
    			else {   ///
    				sql = "select * from unUsedPersonId";
    				int Min = db.getMinId(sql);
    				db.closeStmt();
    				db.closeConn();
    				return Min;
    			}
    		} catch(Exception ex) {
    			System.out.println(ex);
    			JOptionPane.showMessageDialog(null,"出错","错误",JOptionPane.ERROR_MESSAGE);
    			db.closeStmt();
    			db.closeConn();
    			return -1;
    		}		
    	}
    }
    

     

     

     

    5.3 部门信息表操作文件(DeptBean.java)

     

    package DataOperator;
    
    import java.sql.ResultSet;
    
    import javax.swing.JOptionPane;
    
    /**
     * 该类用来实现对部门相关信息进行数据库操作的功能
     * @author YaXin Wen
     * @date 2017/11/15
     */
    public class DeptBean {
    	ResultSet rs = null;
    	String sql;         //存放sql语句
    	String Did;    		//部门编号
    	String firstLevel;  //一级部门
    	String secondLevel; //二级部门
    	
    	String colName;    //列名
    	String colValue;   //列值
    	String colValue2;  //列值
    	
    	/**
    	 * 添加相关信息
    	 */
    	public boolean addInfo(String id,String first,String second) {
    		Database db = new Database();
    		
    		this.Did = id;
    		this.firstLevel = first;
    		this.secondLevel = second;
    		
    		if(firstLevel == null || firstLevel == "") {
    			JOptionPane.showMessageDialog(null, "请输入一级部门名称","错误",JOptionPane.ERROR_MESSAGE);
    			return false;  //记录添加失败
    		}
    		else if(secondLevel == null || secondLevel == "") {
    			JOptionPane.showConfirmDialog(null, "请输入二级部门名称","错误",JOptionPane.ERROR_MESSAGE);
    			return false; //记录添加失败
    		}
    		sql = "insert into DeptTable(DeptId,FatherDept,SonDept) values('"+Did+"','"+firstLevel+"','"+secondLevel+"')";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);
    			JOptionPane.showMessageDialog(null, "成功添加一条记录");
    			sql = "delete from unUsedDeptId where DeptId = '"+id+"'";
    			db.UpdateInfo(sql);
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			System.out.println(ex);
    			JOptionPane.showMessageDialog(null, "保存失败","错误",JOptionPane.ERROR_MESSAGE);
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    	}
    	//获取部门编号
    	public int getNewId() throws Exception{
    		Database db = new Database();
    		db.OpenConn();   //打开连接
    		sql = "select * from DeptTable";
    		int number = db.RecordNumber(sql);   ///获取表的记录数
    		if(number == 0) {
    			db.closeStmt();
    			db.closeConn();
    			return 1;///如果表中没有记录。
    		}
    		int Max = db.getMaxId(sql);   ///获取最大编号
    		//如果最大表闹和表中记录条数一样,则返回number+1
    		if(Max == number) {
    			db.closeStmt();
    			db.closeConn();
    			Max++;
    			return Max;
    		} 
    		else {   ///
    			sql = "select * from unUsedDeptId";
    			int Min = db.getMinId(sql);
    			db.closeStmt();
    			db.closeConn();
    			return Min;
    		}
    	}
    	/**
    	 * @param id  		部门编号
    	 * @param first     一级部门名称
    	 * @param second    二级部门名称
    	 * @return          修改成功返回true,否则返回false
    	 * @throws Exception
    	 */
    	public boolean modifyInfo(String id,String first,String second) throws Exception {
    		Database db = new Database();
    		
    		this.Did = id;
    		this.firstLevel = first;
    		this.secondLevel = second;
    		
    		if(firstLevel == null || firstLevel == "") {
    			JOptionPane.showMessageDialog(null, "请输入一级部门名称","错误",JOptionPane.ERROR_MESSAGE);
    			return false;  //记录添加失败
    		}
    		else if(secondLevel == null || secondLevel == "") {
    			JOptionPane.showConfirmDialog(null, "请输入二级部门名称","错误",JOptionPane.ERROR_MESSAGE);
    			return false; //记录添加失败
    		}
    		int temp = Integer.valueOf(Did);
    		sql = "update DeptTable set FatherDept='"+first+"',SonDept='"+second+"' where DeptId='"+temp+"'";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);  //更新信息
    			JOptionPane.showMessageDialog(null, "成功修改一条记录");
    			/**
    			 * 将相应的人员信息也进行更新。
    			 */
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			System.out.println(ex);
    			JOptionPane.showMessageDialog(null, "保存失败","错误",JOptionPane.ERROR_MESSAGE);
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    		
    	}
    	/**
    	 * 判断符合要求的记录是否存在。如果存在返回true,否则返回false;
    	 * @param id
    	 * @return
    	 * @throws Exception
    	 */
    	public boolean isExist(String id) throws Exception{
    		Database db = new Database();
    		int temp = Integer.valueOf(id);
    		sql = "select * from Person where DeptId = '"+id+"'";
    		boolean flag = false;  //假设不存在。
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			int num = 0;
    			while(rs.next()) {
    				num++;
    				db.closeStmt();
    				db.closeConn();
    				return true;
    			}
    		} catch(Exception ex) {
    			System.out.println(ex);
    			JOptionPane.showMessageDialog(null, "修改失败","错误",JOptionPane.ERROR_MESSAGE);
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    		return flag;
    	}
    	public boolean deleteInfo(String id) {
    		Database db = new Database();
    		this.Did = id;
    		int temp = Integer.valueOf(Did);
    		sql = "delete from DeptTable where DeptId = '"+temp+"'";
    		try {
    			db.OpenConn();
    			db.UpdateInfo(sql);  //删除该记录
    			JOptionPane.showMessageDialog(null, "成功删除一条记录");
    			//把编号插入到未使用编号表中
    			sql = "insert into unUsedDeptId(DeptId) values('"+Did+"')";
    			db.UpdateInfo(sql);
    			db.closeStmt();
    			db.closeConn();
    			return true;
    		} catch(Exception ex) {
    			System.out.println(ex);
    			JOptionPane.showMessageDialog(null, "删除失败","错误",JOptionPane.ERROR_MESSAGE);
    			db.closeStmt();
    			db.closeConn();
    			return false;
    		}
    	}
    	public String[] getAllNodeInfor() throws Exception{
    		Database db = new Database();
    		String[] sn = null;
    		int row = 0;
    		int i = 0;
    		sql = "select * from DeptTable order by DeptId";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			if(rs.last()) {
    				row = rs.getRow();
    			}
    			if(row == 0) {
    				sn = new String[1];
    				sn[0] = " ";
    			}
    			else {
    				sn = new String[row];
    				rs.first();
    				rs.previous();
    				while(rs.next()) {
    					sn[i] = "";
    					sn[i] += rs.getString("DeptId");
    					sn[i] += "-";
    					sn[i] += rs.getString("FatherDept");
    					sn[i] += "-";
    					sn[i] += rs.getString("SonDept");
    					i++;
    				}
    			}
    		} catch(Exception ex) {
    			System.out.println(ex);
    			JOptionPane.showMessageDialog(null, "失败","错误",JOptionPane.ERROR_MESSAGE);
    		} finally{
    			db.closeStmt();
    			db.closeConn();
    		}
    		return sn;
    	}
    	/**
    	 * 查询所有记录
    	 */
    	public String[][] searchAll() throws Exception {
    		Database db = new Database();
    		String[][] sn = null;
    		int row = 0;
    		int i = 0;
    		sql = "select * from DeptTable order by DeptId";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(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("DeptId");
    					sn[i][1] = rs.getString("FatherDept");
    					sn[i][2] = rs.getString("SonDept");
    					i++;
    				}
    			}
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		} finally{
    			db.closeStmt();
    			db.closeConn();
    		}
    		return sn;
    	}
    }
    

     

     

     

    5.4 人员调动记录表操作文件(JobChangeHistory.java)

     

    package DataOperator;
    
    import java.sql.ResultSet;
    
    /**
     * 该模块用于实现对jobChange表的各种操作
     * @author YaXin Wen
     * @date 2017/11/18
     */
    public class JobChangeHistory {
    	String sql;
    	ResultSet rs;
    	public String[][] searchAll(){
    		Database db = new Database();
    		String[][] sn = null;
    		sql = "select * from jobChange";
    		int row = 0;
    		int i = 0;
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			if(rs.last()) {
    				row = rs.getRow();
    			}
    			if(row == 0) {
    				sn = new String[1][7];
    				for(int j = 0; j < 7; j++) {
    					sn[0][j] = "	";
    				}
    			}
    			else {
    				sn = new String[row][7];
    				rs.first();
    				rs.previous();
    				while(rs.next()) {
    					sn[i][0] = rs.getString("operatorId");
    					sn[i][1] = rs.getString("pId");
    					sn[i][2] = rs.getString("pName");
    					sn[i][3] = rs.getString("oldDept");
    					sn[i][4] = rs.getString("newDept");
    					sn[i][5] = rs.getString("modifyTime");
    					sn[i][6] = rs.getString("modifyDate");
    					i++;
    				}
    			}
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		}
    		return sn;
    	}
    	
    }
    

     

     

     

    5.5 人员考核记录表操作文件(AssessChangeHistroy.java)

     

    package DataOperator;
    
    import java.sql.ResultSet;
    
    /**
     * 
     * @author YaXin Wen
     * @date 2017/11/18
     */
    public class AssessChangeHistory {
    	String sql;
    	ResultSet rs;
    	public String[][] searchAll() {
    		Database db = new Database();
    		String[][] sn=null;
    		int row=0,i=0;
    		sql = "select * from assessChange";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			if(rs.last()) {
    				row = rs.getRow();
    			}
    			if(row == 0) {
    				sn = new String[1][7];
    				for(int j = 0; j < 7; j++) {
    					sn[1][j] = "	";
    				}
    			}
    			else {
    				sn = new String[row][7];
    				rs.first();
    				rs.previous();
    				while(rs.next()) {
    					sn[i][0] = rs.getString("operatorId");
    					sn[i][1] = rs.getString("pId");
    					sn[i][2] = rs.getString("pName");
    					sn[i][3] = rs.getString("oldAssess");
    					sn[i][4] = rs.getString("newAssess");
    					sn[i][5] = rs.getString("modifyTime");
    					sn[i][6] = rs.getString("modifyDate");
    					i++;
    				}
    			}
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		} finally {
    			db.closeStmt();
    			db.closeConn();
    		}
    		return sn;
    	}
    }
    

     

     

     

    5.6 劳资记录表操作文件(salaryChangeHistroy.java)

     

    package DataOperator;
    
    import java.sql.ResultSet;
    
    /**
     * 
     * @author YaXin Wen
     * @date 2017/11/18
     */
    public class salaryChangeHistory {
    	String sql;
    	ResultSet rs;
    	
    	public String[][] searchAll() {
    		Database db = new Database();
    		String[][] sn = null;
    		int row = 0,i = 0;
    		sql = "select * from salaryChange";
    		try {
    			db.OpenConn();
    			rs = db.QueryInfo(sql);
    			if(rs.last()) {
    				row = rs.getRow();
    			} 
    			if(row == 0) {
    				sn = new String[1][7];
    				for(int j = 0; j <= 7; j++) {
    					sn[0][j] = "	";
    				}
    			}
    			else {
    				sn = new String[row][7];
    				rs.first();
    				rs.previous();
    				while(rs.next()) {
    					sn[i][0] = rs.getString("operatorId");
    					sn[i][1] = rs.getString("pId");
    					sn[i][2] = rs.getString("pName");
    					sn[i][3] = rs.getString("oldSalary");
    					sn[i][4] = rs.getString("newSalary");
    					sn[i][5] = rs.getString("modifyTime");
    					sn[i][6] = rs.getString("modifyDate");
    					i++;
    				}
    			}
    		}
    		catch(Exception ex) {
    			ex.printStackTrace();
    		}
    		finally{
    			db.closeStmt();
    			db.closeConn();
    		}
    		return sn;
    	}
    	
    }
    


    总结:

     

    虽然这个系统书上有代码,但是并没有直接上手写,在课上一直都是没着手写代码,而是看书上的功能描述,

    首先还是分析系统的功能和结构,然后看表的设计,然后思考功能的实现。做什么都得自己先理好思路才能

    更好、更快、更正确地写出来。对书上代码做了一些改进。

     

     

     

    展开全文
  • 在做毕业设计,我用的是非常落伍的applet,不知道怎么一个JFrame窗体里面打开任意的文件, package day.two.show.card; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Menu; import...
  • MSP430单片机课程设计(c#窗体应用)

    千次阅读 2017-01-15 18:51:25
    然后通过com口将计时数据发送到上位机(电脑),本来打算用java一个窗体程序接受数据,但是java需要导入第三方的包的动态库,而且实验室的电脑没有配置jdk,所以打算啃一下c#,以前真是没怎么接触过C#,硬着头皮上。...

    我们组抽到的任务是记录按键按下的时间,然后通过com口将计时数据发送到上位机(电脑),本来打算用java写一个窗体程序接受数据,但是java需要导入第三方的包的动态库,而且实验室的电脑没有配置jdk,所以打算啃一下c#,以前真是没怎么接触过C#,硬着头皮上。


    注意:实验所用的板子是MSP430f149,其他的板子,单片机程序可能要稍微修改。


    我先是了解了一下C#写窗体程序的套路,无非就是绑定控件和响应事件。还请教了一下其他专业学过c#的同学,基本上能用控件完成一些简单操作。剩下的就是怎么操作串口了。

    c# System.IO.Ports里有封装好的SerialPort类,可以对电脑的串口进行读写等控制。当时找了一个串口调试器的完整工程,看着这个工程,我自己先写了一个串口调试器(就是比着完全抄一遍,只看是看不太明白的)。差不多搞清楚后就可以写了。

    主要有四个模块:

    按键计时:


    倒计时:



    时钟:




    串口调试:



    代码就不贴了,分的文件太多,直接把工程目录打包上传了。

    单片机程序(c/c++):here

    上位机程序(c#):here


    展开全文
  • 思路:通过封装一个浏览器内核来解析web资源,通过java代码保证页面上可以添加js脚本,最后把这个页面借助javaSE窗体展现出来。 最终目的:实现一个很炫的效果,比如左边是我们想要设计的模板,右边是我们搜索素材...
  • 随着老板每天查岗的频率越来越高,奈何自己是十足的夜猫子,早晨的被窝就像块磁铁牢牢的吸着我,俗话说,懒人也有勤劳的时候,那一定是在想怎么可以偷懒,哈哈哈哈~~~偷偷制作了款在线助手,再也不用担心早上...
  • 一个友好的读者界面是一款软件成功的关键因素之一。布局管理器就是用来管理读者的界面。摆放的效果直接影响到界面是否美观。布局管理器通过布局管理类来对各种读者组件进行管理。使用布局管理器,不仅可以有序的排列...
  • GUI编程 GUI:Graphical User Interface 又称图形用户接口 Java不适合做界面设计 不过 Java自己都放弃GUI了,所以了解篇,你懂的 GUI怎么玩? 组件: ...2.2.认识第一个窗体 package com.gui.demo; imp
  • java画图板之新手入门

    2020-02-15 02:27:31
    初到蓝杰,才真正开始了我的代码生涯,以前也只是随便写过两句,没有一个大的项目或者目标,也不知道要去写什么,怎么去写。 首先,通过画图板项目,来学习java的基础知识。 drawUI类 1、 设计窗体(名称、大小、...
  • 打造我的java向导型窗口

    千次阅读 2005-01-08 01:32:00
    整天在那边琢磨这个窗体是怎么做的,那个窗体是怎么设计的,恨不得把电脑里装的程序一个个大卸八块仔细研究研究(走火入魔了,-_-|||)。今天琢磨了一下向导的制做方法,弄出来大家讨论讨论…… [Sorry,今天重新看...
  • Java编程五子棋小游戏(全代码)

    千次阅读 多人点赞 2019-08-07 16:47:25
    这是这三天自己跟着学习完成的简单五子棋小游戏的全部代码,通过这个小游戏,我学到了很多,包括程序的设计以及怎么将自己想实现的功能转化成代码,用代码编写出来,对我的Java学习之路又有一个新的提升。...
  • 在分论()讨论了贪吃蛇和随机点的设计,挡在窗体中定义好贪吃蛇和随机点,那么,最关键的问题是如何定义贪吃蛇的移动,以及当碰到随机点以后会发生什么? 贪吃蛇的移动说白了是坐标的变化,如何控制坐标变化呢?...
  • 课程设计

    2015-09-26 18:23:06
    身份证解析,使我们组选的小项目,作为java学习的一个小检验,当每个组员分配任务后,发现问题其实挺多的。用JFrame实现内容的输出,因为老师主要讲的是NetBeans,所以JFrame这块需要我们自己研究。  如何给窗体...
  • 21天学通Java-由浅入深

    2011-06-06 09:59:14
    28 1.3 程序开发过程 29 1.4 编码规范 29 1.5 HelloWorld:第一个Java程序 30 1.5.1 编写程序代码 30 1.5.2 编译程序代码并运行 30 1.5.3 注意事项 31 1.6 使用Eclipse集成开发工具开发 32 1.7 综合练习 32 1.8 小结...
  • 用netbeans设计GUI

    千次阅读 2010-11-23 22:43:00
     最近用JAVA写了个管理系统,用netbeans设计GUI时,想在frame上添加一个背景图片,可是图片放上了怎么也没法在图片上添加控件,我在网上找了很多资料看,写的都很麻烦,有的根本是错的。网上的资料都是用API...
  • JFrame上加图片,图片上加控件

    千次阅读 2011-02-07 19:18:00
    最近用JAVA写了个管理系统,用netbeans设计GUI时,想在frame上添加一个背景图片,可是图片放上了怎么也没法在图片上添加控件,我在网上找了很多资料看,写的都很麻烦,有的根本是错的。网上的资料都是用API直接设计...
  • 画图板的总结

    2012-10-19 18:07:28
    在上第一堂java课程的时候老师就讲过:在做一次编程时,应当事先想好怎么做,在脑海中形成一个大致的模型,再来编写程序。这好比结构化软件开发方法中的系统分析与系统设计,他们都必须在系统实现之前完成好。因此,...
  • 亮剑.NET_图解C#开发实战_源码完整版

    热门讨论 2013-02-05 18:04:47
     12.3.1 设计一个绘图类  12.3.2 窗体编程  12.3.3 绘图是怎么实现的  12.4 本章小结  第13章 网络访问实例——邮件小助手  13.1 实例说明  13.2 实例用到的开发技术  13.2.1 其实邮件很简单  ...
  • asp.net知识库

    2015-06-18 08:45:45
    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...
  • 这是我第一个Java比较完整项目(上课的那种小例子可以不算项目),学会了怎么用JDBC,学会了Java的一般程序模型(DAO层、JavaBean、监听层、服务层、视图层等),了解了一个软件的开发和维护。总之实训结束的时候我...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...
  • C#微软培训资料

    2014-01-22 14:10:17
    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

java怎么设计一个窗体

java 订阅