java課程設計(人事管理系統(tǒng)).doc
《java課程設計(人事管理系統(tǒng)).doc》由會員分享,可在線閱讀,更多相關《java課程設計(人事管理系統(tǒng)).doc(35頁珍藏版)》請在裝配圖網上搜索。
人事管理系統(tǒng) 一.系統(tǒng)需求分析: 2 (1) 系統(tǒng)的功能設計 2 (2) 系統(tǒng)功能結構 2 (3) 數據庫設計 2 二. 功能模塊開發(fā) 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 22 (8) Examine 23 (9) History 27 (10) EmployModel 28 (11) AppraisalModel 30 (12) SqlHelper 33 一.系統(tǒng)需求分析: (1) 系統(tǒng)的功能設計 i 員工信息管理:員工信息管理包括對員工基本信息和情況進行查詢、添加、刪除和修改及部門管理 ii 員工考核管理:包括對員工的考核情況進行操作,還可以對歷史考核情況進行瀏覽 (2) 系統(tǒng)功能結構 人事管理的系統(tǒng)結構功能結構如圖所示: (3) 數據庫設計 員工基本表(Employinfo) 名稱 字段名稱 數據類型 主鍵 非空 工號 Empno varchar(10) Yes Yes 姓名 Ename varchar(10) No yes 性別 Sex varchar(4) No yes 出生年月 Birthday Datetime No Yes 部門 DeptNo Char(10) No Yes 職務 Ejob Char(20) No Yes 工資 Sal float No Yes 員工考核表(Appraisal) 名稱 字段名稱 數據類型 主鍵 非空 工號 Empno varchar(10) yes yes 考核 Consequence varchar(10) no yes 變更日期 RegDate datetime No Yes 考核歷史記錄(History) 名稱 字段名稱 數據類型 主鍵 非空 流水號 JourNo Int Yes yes 工號 Empno varchar(10) no yes 姓名 Ename varchar(10) No Yes 上次考核 OldInfo varchar(10) No Yes 本次考核 NewInfo varchar(10) No Yes 變更日期 RegDate datetime No Yes 二. 功能模塊開發(fā) (1) 查詢人員信息界面 實例一個SelEmploy類,當點擊“查詢”時調用EmployModel類的queryEmploy方法實現(xiàn)查詢 (2) 添加員工界面 實例一個AddEmploy類當點擊“添加”時調用EmployModel類的updEmploy方法實現(xiàn)添加功能 (3) 修改員工信息界面 實例一個ReviseEmploy類當點擊“修改”時,先調用UpdDialo彈跳出一個修改信息對話框,信息修改完畢后,調用EmployModel類的updEmploy方法實現(xiàn)修改功能 (4) 刪除員工界面 實例一個DelEmploy類當點擊“刪除”時調用EmployModel類的updEmploy方法實現(xiàn)刪除功能 (5) 員工考核界面 實例一個Examine類當點擊“確認”時調用AppraisalModel類的updAppraisal方法來完成考核功能 (6) 員工考核歷史記錄界面 實例一個History類當點擊時調用AppraisalModel類的updAppraisal方法來完成考核功能 三. 各個類說明 類之間的關系圖: 1. Manager類 Manager類的一個實例,從而生成了人事管理系統(tǒng)的界面,用JSplitPane類將整個界面分為左右兩個部分。其中左側實現(xiàn)了人事管理系統(tǒng)的功能樹,采用JTree類構建,同時實現(xiàn)了TreeSelectionListener接口,定義了該接口所必須實現(xiàn)的valueChanged(TreeSelectionEvent e)方法,JSplitPane右邊加入卡片布局CardEmploy類。當JTree的TreeSelectionEvent事件發(fā)生時,調用CardEmploy的c.show方法 切換不同卡片,實現(xiàn)不同的管理界面。 2. CardEmploy類 CardEmploy為卡片布局類的面板,主要功能是添加各個界面的卡片,當JTree的TreeSelectionEvent事件發(fā)生時。切換不同的卡片 3. EmployModel、AppraisalModel類 這兩個類繼承了AbstractTableModel,主要實現(xiàn)的功能是,存放調用sqlhelper 類得到的數據。可以通過調用sqlhelper實現(xiàn) 增 刪 查 改 功能 4. SqlHelper類 主要就是連接數據庫的一些基礎操作是,方便代碼修改,重復使用 5. SelEmploy 這個類繼承Panel,為“查詢員工”的界面。實現(xiàn)了Actionlistener 接口,當ActionEvent 事件發(fā)生時,調用EmployModel類的queryEmploy方法實現(xiàn)查詢 6. AddEmploy、ReviseEmploy、DelEmploy類 這些類繼承Pane,分別為“添加員工信息”“修改員工信息”“刪除員工信息”的界面, 這些類實現(xiàn)了Actionlistener 接口,當ActionEvent 事件發(fā)生時,調用EmployModel類的updEmploy方法實現(xiàn)添加、查詢、刪除、功能 7. Examine類 這個類繼承Panel,為“考核員工”界面。這個類實現(xiàn)了Actionlistener 接口,當ActionEvent 事件發(fā)生時,(1)先通過調用AppraisalModel的queryAppraisal獲取上次考核成績,(2)修改Appraisal表的考核成績(3)再把上次考核成績跟本次考核成績加到History表中 8. History 這個類主要是把History表中的信息顯示到界面上。 四. 程序代碼 (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 { JPanel jp; JSplitPane js; JScrollPane jsp; JTree tree; DefaultMutableTreeNode root, t1, t2, t1_1, t1_2, t1_3, t1_4, t1_5, t2_1, t2_2; CardEmploy ae; EmployModel em; public static void main(String[] args) { Manager manager = new Manager(); } public Manager() { // 給樹的各個結點賦值 root = new DefaultMutableTreeNode("人事管理系統(tǒng)"); 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("人員考核"); 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); // 對樹進行監(jiān)聽 tree.addTreeSelectionListener(this); // 實例化CardEmploy面板 并加到jsplitpane的邊 ae = new CardEmploy(); js = new JSplitPane(); js.setLeftComponent(tree); js.setRightComponent(ae); this.getContentPane().add(js); this.setTitle("人事管理系統(tǒng)"); this.setVisible(true); this.setSize(600, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void valueChanged(TreeSelectionEvent e) { // 獲取點擊結點名稱 DefaultMutableTreeNode dpath = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); // 通過點擊不同結點切換不同界面 if (dpath.equals(t1_1)) { ae.c.show(ae, "1"); } else if (dpath.equals(t1_2)) { ae.c.show(ae, "2"); } else if (dpath.equals(t1_3)) { ae.c.show(ae, "3"); } else if (dpath.equals(t1_4)) { ae.c.show(ae, "4"); } else if (dpath.equals(t1_5)) { ae.c.show(ae, "5"); } else if (dpath.equals(t2_1)) { ae.c.show(ae, "6"); } else if (dpath.equals(t2_2)) { ae.c.show(ae, "7"); } } } (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; 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 /** * 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("查詢"); // 對查詢按鈕監(jiān)聽 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 = ?", paras); 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) { 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); jtf5 = new JTextField(20); jtf6 = new JTextField(20); jtf7 = new JTextField(20); jb1 = new JButton("添加"); jb2 = new JButton("取消"); // 監(jiān)聽‘添加’ ‘取消’按鈕 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); } public void actionPerformed(ActionEvent e) { if (e.getSource() == jb1) { // 調用EmployModel 里的updEmploy 方法,實現(xiàn)對表格的添加 String sql = "insert into Employinfo values(?,?,?,?,?,?,?)"; String[] paras = { jtf1.getText(), jtf2.getText(), jtf3.getText(), jtf4.getText(), jtf5.getText(), jtf6.getText(), jtf7.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); }else if(e.getSource() == jb2){ jtf1.setText(""); jtf2.setText(""); jtf3.setText(""); jtf4.setText(""); jtf5.setText(""); jtf6.setText(""); jtf7.setText(""); } } } (5) ReviseEmploy package com.Manager; /** * 修改員工界面 */ 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; JLabel jl1; 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("刷新"); // 對兩個按鈕進行監(jiān)聽 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); 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; } // 彈出修改對話框 new UpdDialog(em, rowNum); } else if (e.getSource() == jb2) { // 刷新修改界面中的表格 em = new EmployModel(); String[] paras1 = { "1" }; em.queryEmploy("select * from Employinfo where 1 = ?", paras1); jt.setModel(em); } } } i UpdDialog package com.Manager; /** * 彈出修改界面 */ import javax.swing.*; import java.awt.*; import java.awt.event.*; public class UpdDialog extends JDialog implements ActionListener { JLabel jl1, jl2, jl3, jl4, jl5, jl6, jl7; JButton jb1, jb2; JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7; JPanel jp1, jp2, jp3; public UpdDialog(EmployModel em, int rowNums) { 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(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("取消"); // 對兩個按鈕監(jiān)聽 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); 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(), jtf4.getText(), jtf5.getText(), jtf6.getText(), jtf7.getText(), jtf1.getText() }; EmployModel temp = new EmployModel(); // 如果修改語句運行成功 則彈出“修改成功”對話框 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(); 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); } } } (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 = ?", paras); jt = new JTable(em); jsp = new JScrollPane(jt); this.setLayout(new BorderLayout()); this.add(jp,BorderLayout.NORTH); this.add(jsp,BorderLayout.CENTER); } } (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); // 監(jiān)聽jtable 點擊表格時獲取點擊的行數 并通過鼠標點擊事件給 jtf1,jtf2 賦值 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("優(yōu)秀"); 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); 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 { sqh = new SqlHelper(); ResultSet rs = sqh.queryExecute(sql, paras); rs.next(); OldInfo = rs.getString(1); } catch (Exception e1) { e1.printStackTrace(); } finally { sqh.close(); } // 對考核表進行修改 修改考核記錄的sql語句 String sql1 = "update Appraisal set Consequence = ? where Empno =?"; String[] paras1 = { Consequence, Empno }; AppraisalModel temp = new AppraisalModel(); if (temp.updAppraisal(sql1, paras1)) { JOptionPane.showMessageDialog(this, "考核成功"); } // 再把"上次考核記錄"以及"本次操作記錄" 插入到 history表中 String sql2 = "insert into History(Empno,Ename,OldInfo,NewInfo) values(?,?,?,?)"; String[] paras2 = { Empno, Ename, OldInfo, Consequence }; AppraisalModel temp1 = new AppraisalModel(); temp1.updAppraisal(sql2, paras2); } else if (e.g- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- java 課程設計 人事管理系統(tǒng)
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
相關搜索
鏈接地址:http://m.kudomayuko.com/p-9339686.html