java課程設(shè)計(jì)(人事管理系統(tǒng)).doc
《java課程設(shè)計(jì)(人事管理系統(tǒng)).doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《java課程設(shè)計(jì)(人事管理系統(tǒng)).doc(35頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
人事管理系統(tǒng) 一.系統(tǒng)需求分析: 2 (1) 系統(tǒng)的功能設(shè)計(jì) 2 (2) 系統(tǒng)功能結(jié)構(gòu) 2 (3) 數(shù)據(jù)庫(kù)設(shè)計(jì) 2 二. 功能模塊開(kāi)發(fā) 3 (1) 查詢(xún)?nèi)藛T信息界面 3 (2) 添加員工界面 3 (3) 修改員工信息界面 4 (4) 刪除員工界面 5 (5) 員工考核界面 5 (6) 員工考核歷史記錄界面 6 三. 各個(gè)類(lèi)說(shuō)明 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)的功能設(shè)計(jì) i 員工信息管理:?jiǎn)T工信息管理包括對(duì)員工基本信息和情況進(jìn)行查詢(xún)、添加、刪除和修改及部門(mén)管理 ii 員工考核管理:包括對(duì)員工的考核情況進(jìn)行操作,還可以對(duì)歷史考核情況進(jìn)行瀏覽 (2) 系統(tǒng)功能結(jié)構(gòu) 人事管理的系統(tǒng)結(jié)構(gòu)功能結(jié)構(gòu)如圖所示: (3) 數(shù)據(jù)庫(kù)設(shè)計(jì) 員工基本表(Employinfo) 名稱(chēng) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 主鍵 非空 工號(hào) Empno varchar(10) Yes Yes 姓名 Ename varchar(10) No yes 性別 Sex varchar(4) No yes 出生年月 Birthday Datetime No Yes 部門(mén) DeptNo Char(10) No Yes 職務(wù) Ejob Char(20) No Yes 工資 Sal float No Yes 員工考核表(Appraisal) 名稱(chēng) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 主鍵 非空 工號(hào) Empno varchar(10) yes yes 考核 Consequence varchar(10) no yes 變更日期 RegDate datetime No Yes 考核歷史記錄(History) 名稱(chēng) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 主鍵 非空 流水號(hào) JourNo Int Yes yes 工號(hào) Empno varchar(10) no yes 姓名 Ename varchar(10) No Yes 上次考核 OldInfo varchar(10) No Yes 本次考核 NewInfo varchar(10) No Yes 變更日期 RegDate datetime No Yes 二. 功能模塊開(kāi)發(fā) (1) 查詢(xún)?nèi)藛T信息界面 實(shí)例一個(gè)SelEmploy類(lèi),當(dāng)點(diǎn)擊“查詢(xún)”時(shí)調(diào)用EmployModel類(lèi)的queryEmploy方法實(shí)現(xiàn)查詢(xún) (2) 添加員工界面 實(shí)例一個(gè)AddEmploy類(lèi)當(dāng)點(diǎn)擊“添加”時(shí)調(diào)用EmployModel類(lèi)的updEmploy方法實(shí)現(xiàn)添加功能 (3) 修改員工信息界面 實(shí)例一個(gè)ReviseEmploy類(lèi)當(dāng)點(diǎn)擊“修改”時(shí),先調(diào)用UpdDialo彈跳出一個(gè)修改信息對(duì)話(huà)框,信息修改完畢后,調(diào)用EmployModel類(lèi)的updEmploy方法實(shí)現(xiàn)修改功能 (4) 刪除員工界面 實(shí)例一個(gè)DelEmploy類(lèi)當(dāng)點(diǎn)擊“刪除”時(shí)調(diào)用EmployModel類(lèi)的updEmploy方法實(shí)現(xiàn)刪除功能 (5) 員工考核界面 實(shí)例一個(gè)Examine類(lèi)當(dāng)點(diǎn)擊“確認(rèn)”時(shí)調(diào)用AppraisalModel類(lèi)的updAppraisal方法來(lái)完成考核功能 (6) 員工考核歷史記錄界面 實(shí)例一個(gè)History類(lèi)當(dāng)點(diǎn)擊時(shí)調(diào)用AppraisalModel類(lèi)的updAppraisal方法來(lái)完成考核功能 三. 各個(gè)類(lèi)說(shuō)明 類(lèi)之間的關(guān)系圖: 1. Manager類(lèi) Manager類(lèi)的一個(gè)實(shí)例,從而生成了人事管理系統(tǒng)的界面,用JSplitPane類(lèi)將整個(gè)界面分為左右兩個(gè)部分。其中左側(cè)實(shí)現(xiàn)了人事管理系統(tǒng)的功能樹(shù),采用JTree類(lèi)構(gòu)建,同時(shí)實(shí)現(xiàn)了TreeSelectionListener接口,定義了該接口所必須實(shí)現(xiàn)的valueChanged(TreeSelectionEvent e)方法,JSplitPane右邊加入卡片布局CardEmploy類(lèi)。當(dāng)JTree的TreeSelectionEvent事件發(fā)生時(shí),調(diào)用CardEmploy的c.show方法 切換不同卡片,實(shí)現(xiàn)不同的管理界面。 2. CardEmploy類(lèi) CardEmploy為卡片布局類(lèi)的面板,主要功能是添加各個(gè)界面的卡片,當(dāng)JTree的TreeSelectionEvent事件發(fā)生時(shí)。切換不同的卡片 3. EmployModel、AppraisalModel類(lèi) 這兩個(gè)類(lèi)繼承了AbstractTableModel,主要實(shí)現(xiàn)的功能是,存放調(diào)用sqlhelper 類(lèi)得到的數(shù)據(jù)??梢酝ㄟ^(guò)調(diào)用sqlhelper實(shí)現(xiàn) 增 刪 查 改 功能 4. SqlHelper類(lèi) 主要就是連接數(shù)據(jù)庫(kù)的一些基礎(chǔ)操作是,方便代碼修改,重復(fù)使用 5. SelEmploy 這個(gè)類(lèi)繼承Panel,為“查詢(xún)員工”的界面。實(shí)現(xiàn)了Actionlistener 接口,當(dāng)ActionEvent 事件發(fā)生時(shí),調(diào)用EmployModel類(lèi)的queryEmploy方法實(shí)現(xiàn)查詢(xún) 6. AddEmploy、ReviseEmploy、DelEmploy類(lèi) 這些類(lèi)繼承Pane,分別為“添加員工信息”“修改員工信息”“刪除員工信息”的界面, 這些類(lèi)實(shí)現(xiàn)了Actionlistener 接口,當(dāng)ActionEvent 事件發(fā)生時(shí),調(diào)用EmployModel類(lèi)的updEmploy方法實(shí)現(xiàn)添加、查詢(xún)、刪除、功能 7. Examine類(lèi) 這個(gè)類(lèi)繼承Panel,為“考核員工”界面。這個(gè)類(lèi)實(shí)現(xiàn)了Actionlistener 接口,當(dāng)ActionEvent 事件發(fā)生時(shí),(1)先通過(guò)調(diào)用AppraisalModel的queryAppraisal獲取上次考核成績(jī),(2)修改Appraisal表的考核成績(jī)(3)再把上次考核成績(jī)跟本次考核成績(jī)加到History表中 8. History 這個(gè)類(lèi)主要是把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() { // 給樹(shù)的各個(gè)結(jié)點(diǎn)賦值 root = new DefaultMutableTreeNode("人事管理系統(tǒng)"); t1 = new DefaultMutableTreeNode("基本信息管理"); t1_1 = new DefaultMutableTreeNode("查詢(xún)員工"); t1_2 = new DefaultMutableTreeNode("添加員工"); t1_3 = new DefaultMutableTreeNode("修改員工信息"); t1_4 = new DefaultMutableTreeNode("刪除員工資料"); t1_5 = new DefaultMutableTreeNode("查詢(xún)?nèi)w員工"); t2 = new DefaultMutableTreeNode("人員考核管理"); t2_1 = new DefaultMutableTreeNode("人員考核"); t2_2 = new DefaultMutableTreeNode("考核歷史查詢(xún)"); 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); // 對(duì)樹(shù)進(jìn)行監(jiān)聽(tīng) tree.addTreeSelectionListener(this); // 實(shí)例化CardEmploy面板 并加到j(luò)splitpane的邊 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) { // 獲取點(diǎn)擊結(jié)點(diǎn)名稱(chēng) DefaultMutableTreeNode dpath = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); // 通過(guò)點(diǎn)擊不同結(jié)點(diǎn)切換不同界面 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 /** * 用卡片布局設(shè)置各個(gè)界面 */ package com.Manager; import javax.swing.*; import java.awt.*; public class CardEmploy extends Panel{ CardLayout c; //查詢(xún)表 SelEmploy selE; //添加表 AddEmploy addE; //修改員工信息表 ReviseEmploy revE; //刪除員工表格 DelEmploy delE; //所有員工信息 AllEmploy allE; //員工考核表 Examine exaE; //歷史記錄界面 History His; public CardEmploy() { //查詢(xún)員工表 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面板 為卡片布局 //把各個(gè)面板加入到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 類(lèi) 設(shè)置查詢(xún)員工界面 */ 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("輸入員工號(hào):"); jtf = new JTextField(20); jb = new JButton("查詢(xún)"); // 對(duì)查詢(xún)按鈕監(jiān)聽(tīng) 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("工號(hào):"); jl2 = new JLabel("姓名:"); jl3 = new JLabel("性別:"); jl4 = new JLabel("出生年月:"); jl5 = new JLabel("部門(mén):"); 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)聽(tīng)‘添加’ ‘取消’按鈕 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) { // 調(diào)用EmployModel 里的updEmploy 方法,實(shí)現(xiàn)對(duì)表格的添加 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)) { // 當(dāng)添加新員工成功時(shí),則彈出”添加成功“的對(duì)話(huà)框 JOptionPane.showMessageDialog(this, "添加成功"); } else if (!em.updEmploy(sql, paras)) { JOptionPane.showMessageDialog(this, "添加失敗"); } // 當(dāng)新員工加入成功后,要把新加入員工的工號(hào)加到考核表 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("刷新"); // 對(duì)兩個(gè)按鈕進(jìn)行監(jiān)聽(tīng) 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, "請(qǐng)選擇一行"); return; } // 彈出修改對(duì)話(huà)框 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("工號(hào):"); jl2 = new JLabel("姓名:"); jl3 = new JLabel("性別:"); jl4 = new JLabel("出生年月:"); jl5 = new JLabel("部門(mén):"); 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數(shù)據(jù) 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("取消"); // 對(duì)兩個(gè)按鈕監(jiān)聽(tīng) jb1.addActionListener(this); jb2.addActionListener(this); jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new JPanel(); // 設(shè)置布局 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 語(yǔ)句,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(); // 如果修改語(yǔ)句運(yùn)行成功 則彈出“修改成功”對(duì)話(huà)框 if (temp.updEmploy(sql, paras)) { JOptionPane.showMessageDialog(this, "修改成功"); } this.dispose(); } else if (e.getSource() == jb2) { // 關(guān)閉對(duì)話(huà)框 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) { // 返回用戶(hù)點(diǎn)中的行 int rowNum = this.jt.getSelectedRow(); if (rowNum == -1) { JOptionPane.showMessageDialog(this, "請(qǐng)選擇一行"); return; } // 得到學(xué)生編號(hào) String Empno = (String) em.getValueAt(rowNum, 0); // 刪除記錄的sql語(yǔ)句 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() { // 北部 為標(biāo)題文字 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)聽(tīng)jtable 點(diǎn)擊表格時(shí)獲取點(diǎn)擊的行數(shù) 并通過(guò)鼠標(biāo)點(diǎn)擊事件給 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("工號(hào):"); jl3 = new JLabel("姓名:"); jl4 = new JLabel("考核"); jtf1 = new JTextField(10); jtf2 = new JTextField(10); jtf1.setEditable(false); jtf2.setEditable(false); // 實(shí)例單選框組件,并賦值 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("確認(rèn)"); 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(); } // 對(duì)考核表進(jìn)行修改 修改考核記錄的sql語(yǔ)句 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- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- java 課程設(shè)計(jì) 人事管理系統(tǒng)
鏈接地址:http://m.appdesigncorp.com/p-9339686.html