您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页java课程设计(人事管理系统)

java课程设计(人事管理系统)

来源:化拓教育网
人事管理系统

一.系统需求分析:........................................................................................................................... 2

(1) 系统的功能设计 ....................................................................................................... 2 (2) 系统功能结构 ........................................................................................................... 2 (3) 数据库设计 ............................................................................................................... 2 二。 功能模块开发 ................................................................................................................... 3

(1) 查询人员信息界面 ................................................................................................... 3 (2) 添加员工界面 ........................................................................................................... 3 (3) 修改员工信息界面 ................................................................................................... 4 (4) 删除员工界面 ........................................................................................................... 5 (5) 员工考核界面 ........................................................................................................... 5 (6) 员工考核历史记录界面 ........................................................................................... 6 三。 各个类说明....................................................................................................................... 6 四。 程序代码........................................................................................................................... 9

(1) Manager .................................................................................................................. 9 (2) CardEmploy ............................................................................................................. 11 (3) SelEmploy ............................................................................................................... 12 (4) AddEmploy ............................................................................................................... 14 (5) ReviseEmploy ......................................................................................................... 16

i UpdDialog ............................................................................................................... 18 (6) DelEmploy ............................................................................................................... 21 (7) AllEmploy ............................................................................................................... 23 (8) Examine ................................................................................................................... 24 (9) History ................................................................................................................... 27 (10) EmployModel ....................................................................................................... 29 (11) AppraisalModel ................................................................................................. 30 (12) SqlHelper ........................................................................................................... 33

一。系统需求分析:

(1) 系统的功能设计

i 员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、

添加、删除和修改及部门管理

ii 员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核

情况进行浏览

(2) 系统功能结构

人事管理的系统结构功能结构如图所示:

(3) 数据库设计

员工基本表(Employinfo) 名称 工号 姓名 性别 出生年月 部门 职务 工资 字段名称 Empno Ename Sex Birthday DeptNo Ejob Sal 数据类型 varchar(10) varchar(10) varchar(4) Datetime Char(10) Char(20) float 主键 Yes No No No No No No 非空 Yes yes yes Yes Yes Yes Yes

员工考核表(Appraisal) 名称 工号 考核 字段名称 Empno 数据类型 主键 非空 yes yes varchar(10) yes Consequence varchar(10) no

2

变更日期 RegDate datetime No Yes

考核历史记录(History)

名称 流水号 工号 姓名 上次考核 本次考核 变更日期 字段名称 JourNo Empno Ename OldInfo NewInfo RegDate 数据类型 Int 主键 Yes 非空 yes yes Yes Yes Yes Yes varchar(10) no varchar(10) No varchar(10) No varchar(10) No datetime No

二. 功能模块开发

(1) 查询人员信息界面

实例一个SelEmploy类,当点击“查询”时调用EmployModel

类的queryEmploy方法实现查询

(2) 添加员工界面

3

实例一个AddEmploy类当点击“添加”时调用EmployModel

类的updEmploy方法实现添加功能

(3) 修改员工信息界面

实例一个ReviseEmploy类当点击“修改”时,先调用UpdDialo弹

跳出一个修改信息对话框,信息修改完毕后,调用

EmployModel类的updEmploy方法实现修改功能

4

(4) 删除员工界面

实例一个DelEmploy类当点击“删除\"时调用EmployModel类的updEmploy方法实现删除功能

(5) 员工考核界面

实例一个Examine类当点击“确认”时调用AppraisalModel类的

5

updAppraisal方法来完成考核功能

(6) 员工考核历史记录界面

实例一个History类当点击时调用AppraisalModelupdAppraisal方法来完成考核功能

三.各个类说明

类之间的关系图:

6

类的

1. Manager类

Manager类的一个实例,从而生成了人事管理系统的界面,用JSplitPane类将整个界面分为左右两个部分。其中左侧实现了人事管理系统的功能树,采用JTree类构建,同时实现了TreeSelectionListener接口,定义了该接口所必须实现的valueChanged(TreeSelectionEvent e)方法,JSplitPane右边加入卡片布局CardEmploy类。当JTree的TreeSelectionEvent事件发生时,调用CardEmploy的c。show方法 切换不同卡片,实现不同的管理界面.

2. CardEmploy类

CardEmploy为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree的TreeSelectionEvent事件发生时。切换不同的卡片

3. EmployModel、AppraisalModel类

这两个类继承了AbstractTableModel,主要实现的功能是,存放调用sqlhelper 类得到的数据。可以通过调用sqlhelper实现 增 删 查 改 功能

4. SqlHelper类

主要就是连接数据库的一些基础操作是,方便代码修改,重复使用

5. SelEmploy

这个类继承Panel,为“查询员工\"的界面.实现了Actionlistener 接口,当

7

ActionEvent 事件发生时,调用EmployModel类的queryEmploy方法实现查询

6. AddEmploy、ReviseEmploy、DelEmploy类

这些类继承Pane,分别为“添加员工信息”“修改员工信息”“删除员工信息”的界面, 这些类实现了Actionlistener 接口,当ActionEvent 事件发

生时,调用EmployModel类的updEmploy方法实现添加、查询、删除、功能

7. Examine类

这个类继承Panel,为“考核员工”界面。这个类实现了Actionlistener 接

口,当ActionEvent 事件发生时,(1)先通过调用AppraisalModel的queryAppraisal获取上次考核成绩(,2)修改Appraisal表的考核成绩(3)再把上次考核成绩跟本次考核成绩加到History表中 8. History

这个类主要是把History表中的信息显示到界面上.

8

四.程序代码

(1) Manager

package com。Manager;

import java.awt.*; import javax.swing.*;

import javax.swing。event。TreeSelectionEvent; import javax。swing。event。TreeSelectionListener; import javax.swing.tree。*; import java。awt。event。*;

public class Manager extends JFrame implements TreeSelectionListener {

public Manager() {

// 给树的各个结点赋值

root = new DefaultMutableTreeNode(”人事管理系统”); t1 = new DefaultMutableTreeNode(\"基本信息管理”); t1_1 = new DefaultMutableTreeNode(\"查询员工\"); t1_2 = new DefaultMutableTreeNode(\"添加员工”); t1_3 = new DefaultMutableTreeNode(\"修改员工信息”); t1_4 = new DefaultMutableTreeNode(”删除员工资料”); t1_5 = new DefaultMutableTreeNode(\"查询全体员工”); t2 = new DefaultMutableTreeNode(”人员考核管理\"); t2_1 = new DefaultMutableTreeNode(”人员考核”); JPanel jp; JSplitPane js; JScrollPane jsp; JTree tree;

DefaultMutableTreeNode root, t1, t2, t1_1, t1_2, t1_3, t1_4, t1_5,

t2_2;

t2_1,

CardEmploy ae; EmployModel em;

public static void main(String[] args) { Manager manager = new Manager(); }

9

t2_2 = new DefaultMutableTreeNode(\"考核历史查询”); t1。add(t1_1); t1。add(t1_2); t1.add(t1_3); t1.add(t1_4); t1.add(t1_5); t2。add(t2_1); t2。add(t2_2); root.add(t1); root。add(t2);

tree = new JTree(root); // 对树进行监听

tree。addTreeSelectionListener(this); // 实例化CardEmploy面板 并加到jsplitpane的边 ae = new CardEmploy(); js = new JSplitPane(); js。setLeftComponent(tree); js.setRightComponent(ae); this。getContentPane()。add(js); this。setTitle(”人事管理系统”); this。setVisible(true);

this。setSize(600, 500);

this。setDefaultCloseOperation(JFrame。EXIT_ON_CLOSE); }

public void valueChanged(TreeSelectionEvent e) { // 获取点击结点名称

DefaultMutableTreeNode dpath = (DefaultMutableTreeNode) .getLastSelectedPathComponent(); // 通过点击不同结点切换不同界面 if (dpath。equals(t1_1)) { ae。c。show(ae, ”1\"); } else if (dpath。equals(t1_2)) {

ae。c.show(ae, \"2\");

10

tree

}

} else if (dpath。equals(t1_3)) { }

ae。c。show(ae, ”3\"); ae。c.show(ae, ”4\"); ae。c。show(ae, ”5”); ae.c。show(ae, ”6”); ae。c.show(ae, \"7”);

} else if (dpath。equals(t1_4)) { } else if (dpath.equals(t1_5)) { } else if (dpath。equals(t2_1)) { } else if (dpath。equals(t2_2)) {

(2) CardEmploy

/**

* 用卡片布局设置各个界面 */

package com。Manager; import javax.swing。*; import java.awt。*;

public class CardEmploy extends Panel{

CardLayout c; SelEmploy selE; //添加表

AddEmploy addE; //查询表

//修改员工信息表 ReviseEmploy revE;

//删除员工表格 DelEmploy delE;

//所有员工信息 AllEmploy allE;

//员工考核表 Examine exaE;

//历史记录界面 History His;

11

public CardEmploy() {

//查询员工表

selE = new SelEmploy();

//添加员工表

addE = new AddEmploy();

//修改员工信息

revE = new ReviseEmploy(); //删除员工表格

delE = new DelEmploy(); //所有员工信息

allE =new AllEmploy(); //员工考核表

exaE = new Examine(); //历史记录界面

His = new History();

JPanel jp = new JPanel();

//定义cardemploy面板 为卡片布局 //把各个面板加入到C的卡片布局中 c = new CardLayout(); this。setLayout(c); this。add(selE,\"1”); this.add(addE,\"2\"); this。add(revE,\"3\"); this.add(delE,”4”); this。add(allE,”5\"); this.add(exaE,”6”); this.add(His,”7”); } }

(3) SelEmploy

/**

12

* SelEmploy 类 设置查询员工界面 */

package com.Manager;

import java.awt。*; import javax.swing.*; import java.awt。event。*;

public class SelEmploy extends Panel implements ActionListener { EmployModel em; JLabel jl;

JTextField jtf; JButton jb; JTable jt; JScrollPane jsp; JPanel jp1;

public SelEmploy() { // 北部

jp1 = new JPanel();

jl = new JLabel(”输入员工号:”); jtf = new JTextField(20); jb = new JButton(\"查询”); // 对查询按钮监听

jb.addActionListener(this); jp1.add(jl); jp1.add(jtf); jp1.add(jb); // 中部

em = new EmployModel(); String[] paras = { \"1” };

em。queryEmploy(”select * from Employinfo where 1 = ?”, jt = new JTable(em);

jsp = new JScrollPane(jt);

this。setLayout(new BorderLayout()); this。add(jp1, BorderLayout。NORTH); this.add(jsp, BorderLayout。CENTER);

public void actionPerformed(ActionEvent e) {

13

); paras if (e。getSource() == jb) { String name = this.jtf.getText()。trim();

String sql = ”select * from Employinfo where Empno = ?”; String[] paras = { name }; em = new EmployModel(); em。queryEmploy(sql, paras);

// 查找成功更新表

jt.setModel(em); }

}

}

(4) AddEmploy

package com.Manager;

import java。awt.*;

import javax。swing。*;

import java。awt。event.*;

public class AddEmploy extends Panel implements ActionListener JLabel jl, jl1, jl2, jl3, jl4, jl5, jl6, jl7; JButton jb1, jb2;

JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7; JPanel jp1, jp2, jp3, jp4; EmployModel em; public AddEmploy() { jl1 = new JLabel(\"工号:\"); jl2 = new JLabel(”姓名:”); jl3 = new JLabel(\"性别:”); jl4 = new JLabel(”出生年月:\"); jl5 = new JLabel(”部门:”); jl6 = new JLabel(”职位:”); jl7 = new JLabel(\"工资:\"); jtf1 = new JTextField(20); jtf2 = new JTextField(20); jtf3 = new JTextField(20);

jtf4 = new JTextField(20);

14

jtf5 = new JTextField(20); jtf6 = new JTextField(20); jtf7 = new JTextField(20); jb1 = new JButton(\"添加\"); jb2 = new JButton(”取消\"); // 监听‘添加’ ‘取消'按钮

jb1。addActionListener(this); jb2.addActionListener(this);

jp1 = new JPanel(new GridLayout(7, 1)); jp2 = new JPanel(new GridLayout(7, 1)); jp3 = new JPanel(); jp1.add(jl1); jp1.add(jl2); jp1。add(jl3); jp1。add(jl4); jp1.add(jl5); jp1。add(jl6); jp1。add(jl7); jp2.add(jtf1); jp2。add(jtf2); jp2。add(jtf3); jp2。add(jtf4); jp2。add(jtf5); jp2.add(jtf6); jp2。add(jtf7); jp3。add(jb1); jp3.add(jb2);

jp4 = new JPanel(new BorderLayout()); jp4。add(jp1, BorderLayout.WEST); jp4.add(jp2, BorderLayout。EAST); jp4。setSize(300, 300);

this。setLayout(new FlowLayout()); this。add(jp4); this.add(jp3);

15

}

}

public void actionPerformed(ActionEvent e) { }

if (e.getSource() == jb1) {

// 调用EmployModel 里的updEmploy 方法,实现对表格的添加

String sql = ”insert into Employinfo values(?,?,?,?,?,?,?)String[] paras = { jtf1。getText(), jtf2。getText(), jtf3。

jtf4。getText(), jtf5。getText(), jtf6.getText(), jtf7.getText() };

\";

getText(),

em = new EmployModel();

if (em.updEmploy(sql, paras)) {

// 当添加新员工成功时,则弹出”添加成功“的对话框

JOptionPane.showMessageDialog(this, ”添加成功\");

} else if (!em。updEmploy(sql, paras)) {

JOptionPane.showMessageDialog(this, \"添加失败”); }

// 当新员工加入成功后,要把新加入员工的工号加到考核表 AppraisalModel temp = new AppraisalModel();

String sql1 = \"insert into Appraisal(Empno) values(?)”; String[] paras1 = { jtf1。getText() }; temp.updAppraisal(sql1, paras1); jtf1。setText(”\"); jtf2。setText(\"”); jtf3。setText(”\"); jtf4.setText(””); jtf5。setText(”\"); jtf6。setText(\"”);

}else if(e。getSource() == jb2){

jtf7。setText(\"”); }

(5) ReviseEmploy

package com。Manager;

16

/**

* 修改员工界面 */

import java。awt。*; import java.awt。event。*; import javax。swing.*;

public class ReviseEmploy extends Panel implements ActionListener {

JTable jt; JScrollPane jsp; JButton jb1, jb2; JPanel jp1,jp2; EmployModel em;

public ReviseEmploy() {

jl1 = new JLabel(\"修改员工信息”,JLabel。CENTER); jl1.setFont(new Font(”宋体\", Font。BOLD, 28)); jp2 = new JPanel(); jp2。add(jl1);

em = new EmployModel(); String[] paras = { ”1” };

em。queryEmploy(”select * from Employinfo where 1 = ?\", paras); jt = new JTable(em);

jsp = new JScrollPane(jt); jb1 = new JButton(”修改\"); jb2 = new JButton(”刷新”); // 对两个按钮进行监听

jb1.addActionListener(this); jb2.addActionListener(this);

this。setLayout(new BorderLayout()); jp1 = new JPanel(); jp1。add(jb1); jp1。add(jb2);

this。add(jp2,BorderLayout。NORTH); this。add(jsp, BorderLayout.CENTER);

JLabel jl1;

this。add(jp1, BorderLayout。SOUTH); }

17

public void actionPerformed(ActionEvent e) { }

if (e.getSource() == jb1) {

int rowNum = this.jt.getSelectedRow(); if (rowNum == —1) { }

// 弹出修改对话框

new UpdDialog(em, rowNum);

JOptionPane.showMessageDialog(this, ”请选择一行”); return;

} else if (e。getSource() == jb2) { }

// 刷新修改界面中的表格 em = new EmployModel(); String[] paras1 = { \"1” };

em。queryEmploy(”select * from Employinfo where 1 = ?\", jt。setModel(em);

paras1);

i

UpdDialog

package com.Manager; /**

* 弹出修改界面 */

import javax。swing。*; import java。awt.*;

import java。awt。event。*;

public class UpdDialog extends JDialog implements ActionListener {

public UpdDialog(EmployModel em, int rowNums) {

jl1 = new JLabel(”工号:”); jl2 = new JLabel(\"姓名:”);

JLabel jl1, jl2, jl3, jl4, jl5, jl6, jl7; JButton jb1, jb2;

JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7; JPanel jp1, jp2, jp3;

18

jl3 = new JLabel(”性别:”); jl4 = new JLabel(”出生年月:\"); jl5 = new JLabel(”部门:\"); jl6 = new JLabel(”职位:”); jl7 = new JLabel(\"工资:”); jtf1 = new JTextField(20); jtf2 = new JTextField(30); jtf3 = new JTextField(30); jtf4 = new JTextField(30); jtf5 = new JTextField(30); jtf6 = new JTextField(30); jtf7 = new JTextField(30); // 初始化jtextfield数据

jtf1。setText((String) em.getValueAt(rowNums, 0)); jtf1。setEditable(false);

jtf2。setText((String) em.getValueAt(rowNums, 1)); jtf3.setText((String) em.getValueAt(rowNums, 2)); jtf4。setText((String) em。getValueAt(rowNums, 3)); jtf5。setText((String) em。getValueAt(rowNums, 4)); jtf6。setText((String) em。getValueAt(rowNums, 5)); jtf7。setText((String) em.getValueAt(rowNums, 6)); jb1 = new JButton(”修改\"); jb2 = new JButton(”取消\"); // 对两个按钮监听

jb1。addActionListener(this); jb2。addActionListener(this); jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new JPanel(); // 设置布局

jp1。setLayout(new GridLayout(7, 1)); jp2。setLayout(new GridLayout(7, 1)); // 添加组件 jp1。add(jl1); jp1。add(jl2); jp1。add(jl3); jp1.add(jl4);

19

jp1。add(jl5); jp1.add(jl6); jp1.add(jl7); jp2。add(jtf1); jp2.add(jtf2); jp2。add(jtf3); jp2。add(jtf4); jp2。add(jtf5); jp2。add(jtf6); jp2.add(jtf7); jp3。add(jb1); jp3。add(jb2);

this.add(jp1, BorderLayout。WEST); this。add(jp2, BorderLayout.CENTER); this。add(jp3, BorderLayout.SOUTH); this.setSize(300, 250); this。setVisible(true); this.setLocation(200, 200);

this。addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) { }

dispose();

}); }

public void actionPerformed(ActionEvent e) {

if (e。getSource() == jb1) {

// 修改员工信息的 sql 语句,paras 为待注入的值 String sql = ”update Employinfo set ”

+ ”Ename = ?,Sex = ?,Birthday = ?, DeptNo = ?, Ejob

= ? ,Sal=? where Empno = ?”;

String[] paras = { jtf2。getText(), jtf3.getText(),

jtf5。getText(), jtf6.getText(), jtf7。getText(), jtf1。getText() };

jtf4.getText(),

EmployModel temp = new EmployModel(); // 如果修改语句运行成功 则弹出“修改成功”对话框

20

if (temp。updEmploy(sql, paras)) { JOptionPane。showMessageDialog(this, \"修改成功\");

this。dispose();

} else if (e。getSource() == jb2) { // 关闭对话框 this.dispose();

}

(6) DelEmploy

/**

* 删除员工 */

package com.Manager;

import javax。swing.*;

import java.awt。*;

import java.awt。event。*;

public class DelEmploy extends Panel implements ActionListener JTable jt; JScrollPane jsp; JButton jb1, jb2; JPanel jp1, jp2; JLabel jl1;

EmployModel em;

public DelEmploy() { // 北部

jl1 = new JLabel(”删除员工”, JLabel。CENTER); jl1.setFont(new Font(\"黑体\", Font.BOLD, 30)); jp2 = new JPanel(); jp2.add(jl1); // 中部

em = new EmployModel();

21

String[] paras = { ”1” };

em。queryEmploy(\"select * from Employinfo where 1 = ?”, paras); jt = new JTable(em); jsp = new JScrollPane(jt); // 南部

jp1 = new JPanel(); jb1 = new JButton(\"删除”); jb2 = new JButton(”取消”); jb1.addActionListener(this); jp1。add(jb1); jp1。add(jb2);

this。setLayout(new BorderLayout()); this.add(jp2, BorderLayout。NORTH); this.add(jsp, BorderLayout.CENTER); this。add(jp1, BorderLayout。SOUTH);

public void actionPerformed(ActionEvent e) {

if (e。getSource() == jb1) {

// 返回用户点中的行

int rowNum = this。jt。getSelectedRow(); if (rowNum == —1) {

JOptionPane。showMessageDialog(this, ”请选择一行”); return; }

// 得到学生编号

String Empno = (String) em.getValueAt(rowNum, 0); // 删除记录的sql语句

String sql = ”delete from Employinfo where Empno = ?\"; String[] paras = { Empno };

EmployModel temp = new EmployModel(); temp。updEmploy(sql, paras); // 删除员工成功后,更新员工表 em = new EmployModel(); String[] paras1 = { \"1\" };

em。queryEmploy(”select * from Employinfo where 1 = ?”, paras1); jt.setModel(em);

22

}

}

(7) AllEmploy

/**

* 遍历所有员工 */

package com.Manager; import java.awt.*;

import javax。swing。*;

public class AllEmploy extends Panel{ EmployModel em; JTable jt;

JScrollPane jsp;

JLabel jl1; JPanel jp; public AllEmploy() { //北部

jp = new JPanel();

jl1 = new JLabel(”全体员工\",JLabel.CENTER);

jl1。setFont(new Font(\"黑体”, Font。BOLD, 30));

jp。add(jl1);

//中部 em = new EmployModel(); String []paras ={\"1”};

em.queryEmploy(”select * from Employinfo where 1 = ?\",

jt = new JTable(em);

jsp = new JScrollPane(jt);

this.setLayout(new BorderLayout()); this。add(jp,BorderLayout。NORTH);

this。add(jsp,BorderLayout.CENTER);

23

); paras}

(8) Examine

/**

* 员工考核界面 */

package com。Manager;

import java。awt。*;

import java。awt。event。*; import java.sql。ResultSet; import java.util。Vector; import java.sql.*; import javax。swing.*;

public class Examine extends Panel implements ActionListener {

JLabel jl1, jl2, jl3, jl4; JTable jt;

JScrollPane jsp;

JTextField jtf1, jtf2; Choice ch;

JButton jb1, jb2;

JPanel jp1, jp2, jp3, jp4; AppraisalModel am; SqlHelper sqh; public Examine() {

// 北部 为标题文字 jp4 = new JPanel();

jl1 = new JLabel(”员工考核”, JLabel.CENTER); jl1。setFont(new Font(\"黑体”, Font.BOLD, 30)); jp4。add(jl1); // 中部

am = new AppraisalModel();

am.queryAppraisal(”select E。Empno,E。Ename,A.Consequence,A。RegDate from ”

+ ”Employinfo as E,Appraisal as A where E.Empno=A.Empno”);

jt = new JTable(am); jsp = new JScrollPane(jt);

// 监听jtable 点击表格时获取点击的行数 并通过鼠标点击事件给 jtf1,jtf2

赋值

24

jt。addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) { }

int rowNum = jt。getSelectedRow();

jtf1。setText((String) am。getValueAt(rowNum, 0)); jtf2.setText((String) am.getValueAt(rowNum, 1));

});

jl2 = new JLabel(\"工号:”); jl3 = new JLabel(\"姓名:\"); jl4 = new JLabel(”考核”); jtf1 = new JTextField(10); jtf2 = new JTextField(10); jtf1.setEditable(false); jtf2。setEditable(false); // 实例单选框组件,并赋值 ch = new Choice(); ch。add(”未考核\"); ch。add(\"不合格”); ch.add(”合格\"); ch。add(\"优秀”); jp1 = new JPanel(); jp1.add(jl2); jp1.add(jtf1); jp1。add(jl3); jp1.add(jtf2); jp1。add(jl4); jp1。add(ch);

jp2 = new JPanel(new BorderLayout()); jp2。add(jsp, BorderLayout.CENTER); jp2.add(jp1, BorderLayout.SOUTH); // 南部

jb1 = new JButton(”确认”); jb2 = new JButton(”刷新”); jp3 = new JPanel();

jb1。addActionListener(this); jb2。addActionListener(this);

25

jp3。add(jb1); jp3。add(jb2);

this.setLayout(new BorderLayout()); this。add(jp4, BorderLayout。NORTH); this.add(jp2, BorderLayout.CENTER); this。add(jp3, BorderLayout。SOUTH);

public void actionPerformed(ActionEvent e) {

if (e。getSource() == jb1) {

String Empno = jtf1。getText(); String Ename = jtf2。getText();

String Consequence = ch。getSelectedItem(); // 先获取上次考核记录

String sql = \"select Consequence from Appraisal where Empno String[] paras = { Empno }; String OldInfo = ””; try { }

// 对考核表进行修改 修改考核记录的sql语句

String sql1 = ”update Appraisal set Consequence = ? where Empno String[] paras1 = { Consequence, Empno }; AppraisalModel temp = new AppraisalModel(); if (temp。updAppraisal(sql1, paras1)) { }

// 再把”上次考核记录\"以及”本次操作记录” 插入到 history表中 String sql2 = \"insert into History(Empno,Ename,OldInfo,

JOptionPane。showMessageDialog(this, \"考核成功\"); sqh = new SqlHelper();

ResultSet rs = sqh。queryExecute(sql, paras); rs。next();

OldInfo = rs。getString(1); e1。printStackTrace(); sqh。close();

=?”;

} catch (Exception e1) { } finally {

=?\";

26

NewInfo) values(?,?,?,?)\";

String[] paras2 = { Empno, Ename, OldInfo, Consequence }; AppraisalModel temp1 = new AppraisalModel(); temp1。updAppraisal(sql2, paras2);

} else if (e。getSource() == jb2) {

// 刷新员工考核表

am = new AppraisalModel(); String[] paras3 = { ”1” };

am。queryAppraisal(”select E。Empno,E.Ename,A.Consequence,A.RegDate from \" }

+ ”Employinfo as E,Appraisal as A where E。Empno=A。

Empno”);

this.jt。setModel(am);

(9) History

/**

* 历史记录界面 */

package com.Manager;

import java。awt。*; import java.awt.event.*; import javax.swing。*;

public class History extends Panel implements ActionListener {

AppraisalModel am; JTable jt;

JScrollPane jsp; JLabel jl1;

JPanel jp, jp1, jp2; JButton jb1, jb2; public History() {

// 北部

jp = new JPanel();

27

jl1 = new JLabel(\"员工考核历史记录”, JLabel。CENTER); jl1.setFont(new Font(”黑体\", Font。BOLD, 30)); jp.add(jl1); // 中部

am = new AppraisalModel(); String[] paras = { ”1\" };

am.queryHistory(\"select * from History where 1 = ?”, paras); jt = new JTable(am); jsp = new JScrollPane(jt); // 南部

jp2 = new JPanel(); jb1 = new JButton(\"清空\"); jb2 = new JButton(”刷新\"); jb1。addActionListener(this); jb2.addActionListener(this); jp2。add(jb1); jp2。add(jb2);

this。setLayout(new BorderLayout()); this.add(jp, BorderLayout。NORTH); this。add(jsp, BorderLayout。CENTER); this.add(jp2, BorderLayout。SOUTH);

public void actionPerformed(ActionEvent e) { }

if (e。getSource() == jb1) {

// 删除历史记录 并更新表

am = new AppraisalModel(); String[] paras = { \"1” };

am。updAppraisal(\"delete History where 1 = ?\", paras); am。queryHistory(”select * from History where 1 = ?”, paras); this。jt。setModel(am); // 刷新表格

am = new AppraisalModel(); String[] paras = { \"1\" };

am。queryHistory(”select * from History where 1 = ?\", paras);

} else if (e。getSource() == jb2) {

this。jt.setModel(am); }

28

(10)EmployModel

/**

* 重写TableModel */

package com.Manager;

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

public class EmployModel extends AbstractTableModel{

Vector rowData,columnNames; //实现查询

public void queryEmploy(String sql,String []paras)

SqlHelper sqh = null;

//用columnNames 存放 表的列名 columnNames。add(”工号”); columnNames.add(”姓名\"); columnNames。add(”性别”); columnNames。add(\"出生年月”); columnNames。add(\"部门\"); columnNames.add(”职位”); columnNames.add(\"工资”);

//rowData 存放表格的各行数据 rowData = new Vector(); try {

sqh = new SqlHelper();

ResultSet rs = sqh。queryExecute(sql, paras); while(rs。next())

{ Vector hang = new Vector();

hang.add(rs。getString(1)); hang.add(rs。getString(2));

columnNames = new Vector();

29

hang.add(rs。getString(3)); hang。add(rs。getString(4)); hang.add(rs。getString(5)); hang.add(rs.getString(6)); hang。add(rs。getString(7)); rowData.add(hang);

} catch (Exception e) {

e.printStackTrace(); }finally{ sqh。close(); }

//实现 表格 增 修 改 功能

public boolean updEmploy(String sql,String []paras) {

SqlHelper sqh = new SqlHelper(); return sqh。updExecute(sql, paras); }

public String getColumnName(int column) {

return (String)this。columnNames.get(column); }

public int getColumnCount() { }

public Object getValueAt(int row, int column) { }

//获得某一个单元格的数值

return ((Vector)this。rowData。get(row))。get(column);

return this。columnNames。size(); }

public int getRowCount() { return this。rowData.size(); }

(11)AppraisalModel

/**

30

* 重写TableModel 为考核类的table模板 */

package com.Manager;

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

public class AppraisalModel extends AbstractTableModel Vector rowData, columnNames; // 实现查询

public void queryAppraisal(String sql) { SqlHelper sqh = null; // 用columnNames 存放 表的列名 columnNames = new Vector(); columnNames.add(\"工号”); columnNames.add(”姓名”); columnNames.add(”上次考核”); columnNames。add(”考核时间”); // rowData 存放表格的各行数据 rowData = new Vector(); try { sqh = new SqlHelper();

ResultSet rs = sqh。queryExecute(sql); while (rs。next()) { Vector hang = new Vector(); hang.add(rs。getString(1)); hang。add(rs.getString(2)); hang。add(rs。getString(3));

hang.add(rs。getString(4));

rowData。add(hang);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

31

{ sqh.close();

} }

// 查询员工考核历史记录方法

public void queryHistory(String sql, String[] paras) { SqlHelper sqh = null; // 用columnNames 存放 表的列名 columnNames = new Vector(); columnNames。add(”流水号”); columnNames。add(”工号”); columnNames。add(”姓名”); columnNames.add(\"上次考核”); columnNames。add(”本次考核\"); columnNames。add(”更改时间”); // rowData 存放表格的各行数据 rowData = new Vector(); try { sqh = new SqlHelper();

ResultSet rs = sqh。queryExecute(sql, paras); while (rs。next()) { Vector hang = new Vector(); hang.add(rs。getString(1)); hang。add(rs.getString(2)); hang。add(rs.getString(3)); hang.add(rs.getString(4)); hang.add(rs.getString(5)); hang.add(rs。getString(6)); rowData.add(hang);

} catch (Exception e) {

e。printStackTrace(); } finally { sqh.close(); }

// 实现 表格 增 修 改 功能

public boolean updAppraisal(String sql, String[] paras)32

SqlHelper sqh = new SqlHelper(); return sqh.updExecute(sql, paras);

public int getRowCount() { return this.rowData。size(); }

public String getColumnName(int column) {

return (String) this.columnNames。get(column); } public int getColumnCount() { return this.columnNames。size(); }

public Object getValueAt(int row, int column) { // 获得某一个单元格的数值

return ((Vector) this。rowData.get(row))。get(column); }

(12)SqlHelper

/**

* 后台 通过调用SqlHelper实现对sql数据库的各个操作 */

package com。Manager;

import java.sql.*;

public class SqlHelper { Connection ct = null;

PreparedStatement ps = null; ResultSet rs = null;

String driver = \"sun.jdbc。odbc。JdbcOdbcDriver”; String url = ”jdbc:odbc:Manager\"; // 查询数据库操作

public ResultSet queryExecute(String sql, String[] paras)

try {

33

{ Class。forName(driver);

ct = DriverManager。getConnection(url); ps = ct。prepareStatement(sql);

for (int i = 0; i 〈 paras。length; i++) { ps。setString(i + 1, paras[i]);

rs = ps.executeQuery();

} catch (Exception e) { e。printStackTrace(); }

return rs;

}

//没注入式查询数据库操作

public ResultSet queryExecute(String sql) { try { Class。forName(driver);

ct = DriverManager。getConnection(url); ps = ct.prepareStatement(sql); rs = ps.executeQuery(); } catch (Exception e) {

e。printStackTrace();

return rs;

// 增 删 改 功能

public boolean updExecute(String sql, String[] paras) boolean b = true; try { Class.forName(driver);

ct = DriverManager。getConnection(url); ps = ct.prepareStatement(sql);

for (int i = 0; i 〈 paras。length; i++) { ps。setString(i + 1, paras[i]); }

if (ps。executeUpdate() != 1)

b = false;

} catch (Exception e) {

b = false;

e。printStackTrace();

} finally {

this。close(); }

return b;

34

{

// 重写 close 关闭数据库资源 public void close() { try { } }

if (rs != null) rs.close(); if (ps != null)

ps。close(); ct。close(); if (ct != null)

}

} catch (Exception e2) {

e2。printStackTrace();

35

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务