收藏 分享(赏)

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

上传人:精品资料 文档编号:8125997 上传时间:2019-06-09 格式:DOC 页数:35 大小:489KB
下载 相关 举报
java课程设计(人事管理系统).doc_第1页
第1页 / 共35页
java课程设计(人事管理系统).doc_第2页
第2页 / 共35页
java课程设计(人事管理系统).doc_第3页
第3页 / 共35页
java课程设计(人事管理系统).doc_第4页
第4页 / 共35页
java课程设计(人事管理系统).doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、人事管理系统一.系统需求分析: 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) CardEmploy11(3) SelEmploy12(4) AddEmploy14(5) ReviseEmploy16i UpdDialog18(6) DelEmploy21(7) AllEmploy22(8) Examine23(9)

2、History27(10) EmployModel28(11) AppraisalModel30(12) SqlHelper332一.系统需求分析:(1) 系统的功能设计i 员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii 员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2) 系统功能结构人事管理的系统结构功能结构如图所示:(3) 数据库设计员工基本表(Employinfo)名称 字段名称 数据类型 主键 非空工号 Empno varchar(10) Yes Yes姓名 Ename varchar(10) No yes性别 S

3、ex 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 yes3变更日期 RegDate datetime No Yes 考核历史记录(History)名称 字段名称 数据类型 主键 非空流水号 JourNo Int Yes yes工号 E

4、mpno varchar(10) no yes姓名 Ename varchar(10) No Yes 上次考核 OldInfo varchar(10) No Yes 本次考核 NewInfo varchar(10) No Yes 变更日期 RegDate datetime No Yes 二. 功能模块开发(1) 查询人员信息界面实例一个 SelEmploy 类,当点击“查询”时调用EmployModel 类的 queryEmploy 方法实现查询(2) 添加员工界面4实例一个 AddEmploy 类当点击“添加 ”时调用 EmployModel类的 updEmploy 方法实现添加功能(3)

5、修改员工信息界面实例一个 ReviseEmploy 类当点击“修改”时,先调用 UpdDialo弹跳出一个修改信息对话框,信息修改完毕后,调用EmployModel 类的 updEmploy 方法实现修改功能5(4) 删除员工界面实例一个 DelEmploy 类当点击“删除”时调用 EmployModel 类的 updEmploy 方法实现删除功能(5) 员工考核界面实例一个 Examine 类当点击“确认”时调用 AppraisalModel 类的6updAppraisal 方法来完成考核功能(6) 员工考核历史记录界面实例一个 History 类当点击时调用 AppraisalModel

6、类的updAppraisal 方法来完成考核功能三.各个类说明类之间的关系图:71.Manager 类Manager 类的一个实例,从而生成了人事管理系统的界面,用 JSplitPane 类将整个界面分为左右两个部分。其中左侧实现了人事管理系统的功能树,采用 JTree 类构建,同时实现了 TreeSelectionListener 接口,定义了该接口所必须实现的 valueChanged(TreeSelectionEvent e)方法,JSplitPane 右边加入卡 片 布 局 CardEmploy 类。当 JTree 的 TreeSelectionEvent 事件发生时,调用 CardE

7、mploy 的 c.show 方法 切换不同卡片,实现不同的管理界面。2.CardEmploy类CardEmploy 为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree 的 TreeSelectionEvent 事件发生时。切换不同的卡片3.EmployModel、 AppraisalModel类这两个类继承了 AbstractTableModel,主要实现的功能是,存放调用sqlhelper类得到的数据。可以通过调用 sqlhelper 实现 增 删 查 改 功能4.SqlHelper 类主要就是连接数据库的一些基础操作是,方便代码修改,重复使用5.SelEmploy8这个类继承

8、 Panel,为“查询员工”的界面。实现了 Actionlistener 接口,当 ActionEvent 事件发生时,调用 EmployModel 类的queryEmploy 方法实现查询6.AddEmploy、 ReviseEmploy、 DelEmploy类这些类继承 Pane,分别为 “添加员工信息” “修改员工信息” “删除员工信息”的界面, 这些类实现了 Actionlistener 接口,当 ActionEvent 事件发生时,调用 EmployModel 类的 updEmploy 方法实现添加、查询、删除、功能7.Examine类这个类继承 Panel,为“考核员工”界面。这个

9、类实现了 Actionlistener 接口,当 ActionEvent 事件发生时,(1)先通过调用 AppraisalModel 的queryAppraisal 获取上次考核成绩,(2)修改 Appraisal 表的考核成绩(3)再把上次考核成绩跟本次考核成绩加到 History 表中8.History这个类主要是把 History 表中的信息显示到界面上。9四.程序代码(1) Managerpackage com.Manager;import java.awt.*;import javax.swing.*;import javax.swing.event.TreeSelectionEve

10、nt;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;Car

11、dEmploy ae;EmployModel em;public static void main(String args) Manager manager = new Manager();public Manager() / 给树的各个结点赋值root = new DefaultMutableTreeNode(“人事管理系统“);t1 = new DefaultMutableTreeNode(“基本信息管理 “);t1_1 = new DefaultMutableTreeNode(“查询员工“);t1_2 = new DefaultMutableTreeNode(“添加员工“);t1_3 =

12、 new DefaultMutableTreeNode(“修改员工信息“);t1_4 = new DefaultMutableTreeNode(“删除员工资料“);t1_5 = new DefaultMutableTreeNode(“查询全体员工“);t2 = new DefaultMutableTreeNode(“人员考核管理 “);10t2_1 = new DefaultMutableTreeNode(“人员考核“);t2_2 = new DefaultMutableTreeNode(“考核历史查询“);t1.add(t1_1);t1.add(t1_2);t1.add(t1_3);t1.a

13、dd(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);t

14、his.setTitle(“人事管理系统“);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.equal

15、s(t1_1) ae.c.show(ae, “1“); else if (dpath.equals(t1_2) 11ae.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

16、.c.show(ae, “7“);(2) CardEmploy/* 用卡片布局设置各个界面*/package com.Manager;import javax.swing.*;import java.awt.*;public class CardEmploy extends PanelCardLayout c;/查询表SelEmploy selE;/添加表AddEmploy addE;/修改员工信息表ReviseEmploy revE;/删除员工表格DelEmploy delE;/所有员工信息AllEmploy allE;/员工考核表Examine exaE;/历史记录界面12History

17、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 Ca

18、rdLayout();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) SelEmploy13/* SelEmploy 类 设置查询员工界面*/package com.Manager;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Sel

19、Employ 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);

20、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);14public void act

21、ionPerformed(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) AddEmploypackage com.Manager;import java.awt.*;impor

22、t 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(“工号:“)

23、;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);15jtf4 = new JTextField(20);jtf5 = new JTextField(20);jtf6 = new JTextField

24、(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

25、(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 Flo

26、wLayout();this.add(jp4);this.add(jp3);16public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) / 调用EmployModel 里的updEmploy 方法,实现对表格的添加String sql = “insert into Employinfo values(?,?,?,?,?,?,?)“;String paras = jtf1.getText(), jtf2.getText(), jtf3.getText(),jtf4.getText(), jtf5.getText(),

27、 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

28、();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) ReviseEmploy17package com.Manager;

29、/* 修改员工界面*/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(

30、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)

31、;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);18public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) int rowNum = this.jt

32、.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 UpdDialogp

33、ackage 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 UpdD

34、ialog(EmployModel em, int rowNums) jl1 = new JLabel(“工号:“);19jl2 = 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 JTex

35、tField(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.getVa

36、lueAt(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

37、 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);20jp1.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

38、);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(););pu

39、blic 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.getTe

40、xt(), jtf7.getText(),jtf1.getText() ;EmployModel temp = new EmployModel();21/ 如果修改语句运行成功 则弹出“修改成功”对话框if (temp.updEmploy(sql, paras) JOptionPane.showMessageDialog(this, “修改成功“);this.dispose(); else if (e.getSource() = jb2) / 关闭对话框this.dispose();(6) DelEmploy/* 删除员工*/package com.Manager;import javax.s

41、wing.*;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,

42、30);jp2 = new JPanel();jp2.add(jl1);/ 中部22em = 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(

43、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.

44、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

45、 = “1“ ;em.queryEmploy(“select * from Employinfo where 1 = ?“, 23paras1);jt.setModel(em);(7) AllEmploy/* 遍历所有员工*/package com.Manager;import java.awt.*;import javax.swing.*;public class AllEmploy extends PanelEmployModel em;JTable jt;JScrollPane jsp;JLabel jl1;JPanel jp;public AllEmploy()/北部jp = new

46、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(j

47、p,BorderLayout.NORTH);this.add(jsp,BorderLayout.CENTER);24(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 j

48、l1, 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

49、 = 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);25/ 监听jtable 点击表格时获取点击的行数 并通过鼠标点击事件给 jtf1,jtf2 赋值jt.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报