1、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 16i UpdDialog 18(6) DelEmploy 21(7) AllEmplo
2、y 22(8) Examine 23(9) History 27(10) EmployModel 28(11) AppraisalModel 30(12) SqlHelper 33一.系统需求分析:(1) 系统的功能设计i 员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii 员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2) 系统功能结构人事管理的系统结构功能结构如图所示:(3) 数据库设计员工基本表(Employinfo)名称字段名称数据类型主键非空工号Empnovarchar(10)YesYes姓名Enamevarchar
3、(10)No yes性别Sexvarchar(4)No yes出生年月BirthdayDatetimeNo Yes部门DeptNoChar(10)No Yes职务EjobChar(20)No Yes工资SalfloatNo Yes员工考核表(Appraisal)名称字段名称数据类型主键非空工号Empnovarchar(10)yesyes考核Consequencevarchar(10)noyes变更日期RegDatedatetimeNo Yes 考核历史记录(History)名称字段名称数据类型主键非空流水号JourNoIntYesyes工号Empnovarchar(10)noyes姓名Enam
4、evarchar(10)No Yes 上次考核OldInfovarchar(10)No Yes 本次考核NewInfovarchar(10)No Yes 变更日期RegDatedatetimeNo Yes 二. 功能模块开发(1) 查询人员信息界面 实例一个SelEmploy类,当点击“查询”时调用EmployModel类的queryEmploy方法实现查询(2) 添加员工界面 实例一个AddEmploy类当点击“添加”时调用EmployModel类的updEmploy方法实现添加功能(3) 修改员工信息界面实例一个ReviseEmploy类当点击“修改”时,先调用UpdDialo弹跳出一个修
5、改信息对话框,信息修改完毕后,调用EmployModel类的updEmploy方法实现修改功能(4) 删除员工界面实例一个DelEmploy类当点击“删除”时调用EmployModel类的updEmploy方法实现删除功能(5) 员工考核界面实例一个Examine类当点击“确认”时调用AppraisalModel类的updAppraisal方法来完成考核功能(6) 员工考核历史记录界面实例一个History类当点击时调用AppraisalModel类的updAppraisal方法来完成考核功能三. 各个类说明类之间的关系图:1. Manager类Manager类的一个实例,从而生成了人事管理系
6、统的界面,用JSplitPane类将整个界面分为左右两个部分。其中左侧实现了人事管理系统的功能树,采用JTree类构建,同时实现了TreeSelectionListener接口,定义了该接口所必须实现的valueChanged(TreeSelectionEvent e)方法,JSplitPane右边加入卡片布局CardEmploy类。当JTree的TreeSelectionEvent事件发生时,调用CardEmploy的c.show方法 切换不同卡片,实现不同的管理界面。2. CardEmploy类CardEmploy为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree的TreeSe
7、lectionEvent事件发生时。切换不同的卡片3. EmployModel、AppraisalModel类这两个类继承了AbstractTableModel,主要实现的功能是,存放调用sqlhelper类得到的数据。可以通过调用sqlhelper实现 增 删 查 改 功能4. SqlHelper类主要就是连接数据库的一些基础操作是,方便代码修改,重复使用5. SelEmploy这个类继承Panel,为“查询员工”的界面。实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类的queryEmploy方法实现查询6. AddEmploy、R
8、eviseEmploy、DelEmploy类这些类继承Pane,分别为“添加员工信息”“修改员工信息”“删除员工信息”的界面, 这些类实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类的updEmploy方法实现添加、查询、删除、功能7. Examine类这个类继承Panel,为“考核员工”界面。这个类实现了Actionlistener 接口,当ActionEvent 事件发生时,(1)先通过调用AppraisalModel的queryAppraisal获取上次考核成绩,(2)修改Appraisal表的考核成绩(3)再把上次考核成绩跟本
9、次考核成绩加到History表中8. History这个类主要是把History表中的信息显示到界面上。四. 程序代码(1) Managerpackage com.Manager;import java.awt.*;import javax.swing.*;importimport ;importimport .*;public class Manager extends JFrame implements TreeSelectionListener JPanel jp; JSplitPane js; JScrollPane jsp; JTree tree; DefaultMutableTre
10、eNode 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(人事管理系统); t1 = new DefaultMutableTreeNode(基本信息管理); t1_1 = new DefaultMutabl
11、eTreeNode(查询员工); 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 DefaultMutableTreeNo
12、de(考核历史查询); 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.setLeftCo
13、mponent(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 = (DefaultMutableT
14、reeNode) 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 (dp
15、ath.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; /删除员工
16、表格 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(); /历史记录界
17、面 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 类 设置查询员工界面 */packa
18、ge com.Manager;import java.awt.*;import javax.swing.*;importpublic 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 JTe
19、xtField(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 = ?, paras); jt = new JTable(em); jsp = new JScrollPane(jt); this.setLayout(new BorderLayou
20、t(); 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(
21、sql, paras); / 查找成功更新表 jt.setModel(em); (4) AddEmploypackage com.Manager;import java.awt.*;import javax.swing.*;importpublic 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; JP
22、anel 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(2
23、0); jtf4 = new JTextField(20); 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
24、, 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.ad
25、d(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 方法,实现对表格的添加 String sql = insert into Employinfo values(?,?
26、,?,?,?,?,?); 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) JO
27、ptionPane.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.s
28、etText(); jtf4.setText(); jtf5.setText(); jtf6.setText(); jtf7.setText(); (5) ReviseEmploypackage com.Manager;/* * 修改员工界面 */import java.awt.*;importimport 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 =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1