版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人事管理系统一.系统需求分析:2(1)系统的功能设计2(2)系统功能结构2(3)数据库设计2二.功能模块开发3(1)查询人员信息界面3(2)添加员工界面3(3)修改员工信息界面4(4)删除员工界面5(5)员工考核界面5(6)员工考核历史记录界面6三.各个类说明6四.程序代码9(1)Manager9(2)CardEmploy11(3)SelEmploy12(4)AddEmploy14(5)ReviseEmploy16iUpdDialog18(6)DelEmploy21(7)AllEmploy22(8)Examine23(9)History27(10)EmployModel28(11)Apprai
2、salModel30(12)SqlHelper33一.系统需求分析:(1) 系统的功能设计i 员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii 员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2) 系统功能结构人事管理的系统结构功能结构如图所示:(3) 数据库设计员工基本表(Employinfo)名称字段名称数据类型主键非空工号Empnovarchar(10)YesYes姓名Enamevarchar(10)No yes性别Sexvarchar(4)No yes出生年月BirthdayDatetimeNo Yes部门DeptNo
3、Char(10)No Yes职务EjobChar(20)No Yes工资SalfloatNo Yes员工考核表(Appraisal)名称字段名称数据类型主键非空工号Empnovarchar(10)yesyes考核Consequencevarchar(10)noyes变更日期RegDatedatetimeNo Yes 考核历史记录(History)名称字段名称数据类型主键非空流水号JourNoIntYesyes工号Empnovarchar(10)noyes姓名Enamevarchar(10)No Yes 上次考核OldInfovarchar(10)No Yes 本次考核NewInfovarcha
4、r(10)No Yes 变更日期RegDatedatetimeNo Yes 二. 功能模块开发(1) 查询人员信息界面 实例一个SelEmploy类,当点击“查询”时调用EmployModel类的queryEmploy方法实现查询(2) 添加员工界面 实例一个AddEmploy类当点击“添加”时调用EmployModel类的updEmploy方法实现添加功能(3) 修改员工信息界面实例一个ReviseEmploy类当点击“修改”时,先调用UpdDialo弹跳出一个修改信息对话框,信息修改完毕后,调用EmployModel类的updEmploy方法实现修改功能(4) 删除员工界面实例一个DelE
5、mploy类当点击“删除”时调用EmployModel类的updEmploy方法实现删除功能(5) 员工考核界面实例一个Examine类当点击“确认”时调用AppraisalModel类的updAppraisal方法来完成考核功能(6) 员工考核历史记录界面实例一个History类当点击时调用AppraisalModel类的updAppraisal方法来完成考核功能三. 各个类说明类之间的关系图:1. Manager类Manager类的一个实例,从而生成了人事管理系统的界面,用JSplitPane类将整个界面分为左右两个部分。其中左侧实现了人事管理系统的功能树,采用JTree类构建,同时实现了
6、TreeSelectionListener接口,定义了该接口所必须实现的valueChanged(TreeSelectionEvent e)方法,JSplitPane右边加入卡片布局CardEmploy类。当JTree的TreeSelectionEvent事件发生时,调用CardEmploy的c.show方法 切换不同卡片,实现不同的管理界面。2. CardEmploy类CardEmploy为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree的TreeSelectionEvent事件发生时。切换不同的卡片3. EmployModel、AppraisalModel类这两个类继承了Abs
7、tractTableModel,主要实现的功能是,存放调用sqlhelper类得到的数据。可以通过调用sqlhelper实现 增 删 查 改 功能4. SqlHelper类主要就是连接数据库的一些基础操作是,方便代码修改,重复使用5. SelEmploy这个类继承Panel,为“查询员工”的界面。实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类的queryEmploy方法实现查询6. AddEmploy、ReviseEmploy、DelEmploy类这些类继承Pane,分别为“添加员工信息”“修改员工信息”“删除员工信息”的界面, 这
8、些类实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类的updEmploy方法实现添加、查询、删除、功能7. Examine类这个类继承Panel,为“考核员工”界面。这个类实现了Actionlistener 接口,当ActionEvent 事件发生时,(1)先通过调用AppraisalModel的queryAppraisal获取上次考核成绩,(2)修改Appraisal表的考核成绩(3)再把上次考核成绩跟本次考核成绩加到History表中8. History这个类主要是把History表中的信息显示到界面上。四. 程序代码(1) Ma
9、nagerpackage com.Manager;import java.awt.*;import javax.swing.*;import javax.swing.event.TreeSelectionEvent;import ;import javax.swing.tree.*;import .*;public class Manager extends JFrame implements TreeSelectionListener JPanel jp;JSplitPane js;JScrollPane jsp;JTree tree;DefaultMutableTreeNode root,
10、 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 DefaultM
11、utableTreeNode("查询员工");t1_2 = new DefaultMutableTreeNode("添加员工");t1_3 = new DefaultMutableTreeNode("修改员工信息");t1_4 = new DefaultMutableTreeNode("删除员工资料");t1_5 = new DefaultMutableTreeNode("查询全体员工");t2 = new DefaultMutableTreeNode("人员考核管理");t
12、2_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);/ 对树进行监听tree.addTreeSelectionListener(this);/ 实例化CardEm
13、ploy面板 并加到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 valueChang
14、ed(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, &quo
15、t;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;impo
16、rt javax.swing.*;import java.awt.*;public class CardEmploy extends PanelCardLayout c; /查询表SelEmploy selE;/添加表AddEmploy addE; /修改员工信息表 ReviseEmploy revE; /删除员工表格 DelEmploy delE; /所有员工信息 AllEmploy allE; /员工考核表 Examine exaE; /历史记录界面 History His; public CardEmploy() /查询员工表 selE = new SelEmploy();/添加员工表a
17、ddE = 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,&
18、quot;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
19、 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("查询&qu
20、ot;);/ 对查询按钮监听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,
21、 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);/
22、 查找成功更新表jt.setModel(em);(4) AddEmploypackage 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;JPa
23、nel 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("工资:");jtf
24、1 = 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("取消");/ 监听添加 取消按钮jb1.addActionListener(this);jb2.addActionL
25、istener(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);jp
26、3.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 里的updEmplo
27、y 方法,实现对表格的添加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.show
28、MessageDialog(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.u
29、pdAppraisal(sql1, paras1);else if(e.getSource() = jb2)jtf1.setText("");jtf2.setText("");jtf3.setText("");jtf4.setText("");jtf5.setText("");jtf6.setText("");jtf7.setText("");(5) ReviseEmploypackage com.Manager;/* * 修改员工界面 */import
30、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
31、("宋体", 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("刷新"
32、;);/ 对两个按钮进行监听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.
33、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 * fr
34、om Employinfo where 1 = ?", paras1);jt.setModel(em);i UpdDialogpackage 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 j
35、tf1, 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(&quo
36、t;职位:");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.se
37、tEditable(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);j
38、b1 = 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
39、.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
40、(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 "
41、+ "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,
42、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
43、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" ;e
44、m.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
45、.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;/ 得到学生
46、编号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(&quo
47、t;select * from Employinfo where 1 = ?", paras1);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 JPanel();jl1 =
48、 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
49、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 ;import java.sql.*;import javax.swing.*;public class Examine extends Panel implements ActionListen
50、er 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.
51、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 赋值jt.a
52、ddMouseListener(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);jtf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSES 198-2025 T/CHTS 10234-2025钢渣细集料稳定黄土路床应用技术规范
- T/UNP 84-2024建筑工程管理BIM技术应用规范
- T/GSJX 5-2024北方黄酒
- T/CI 935-2025智慧轨道交通技术人才评价
- T/CAHPE 001-2024健康县区评价
- T/CSAE 354-2024 T/CHTS 10144-2024车路协同 智能路侧决策系统 数据接口规范
- AI在约鲁巴语中的应用
- 广东省湛江地区六校联考2027届数学八上期末学业质量监测试题含解析
- 2026学年安徽省芜湖市四年级数学期末深度自测快速提分卷(附答案)详细答案和解析
- 2025-2026学年江西省宜春市初中数学九年级期末上册高分通关经典测试题(附答案)
- Unit 3 Welcome to our school 单元重难点精练(含解析)- 2026-2027学年译林版(2024)七年级上册英语
- 萍乡市投发集团2026年度下半年高层次及急需紧缺人才招聘笔试模拟试题及答案解析
- 八年级网络安全与手机管理活动方案课件
- 军官转业申请书
- (正式版)DB4403∕T 481-2024 《电动自行车充换电柜消防安全要求》
- 2026年公路检测工程师《水运材料》模拟试题及答案
- 卡通风可爱宝宝生日周岁宴请模板
- 2026中国光纤在医疗领域的创新应用与市场前景报告
- QJLDH0122025氟化钠(电子级)
- 外研版高二英语上册(必修第三册)全册重点单词、短语、句型归纳
- ESG可持续发展治理体系
评论
0/150
提交评论