《java课程设计(人事管理系统)》由会员分享,可在线阅读,更多相关《java课程设计(人事管理系统)(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)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 javax.swing.event.TreeSelectionListener;import javax.swing.tree.*;import java.awt.event.*;public class Manager extends JFrame implements TreeSelectionListener JPanel jp;JSplitPane js;JS
10、crollPane 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(人事管理系统);t1 = new DefaultMutableTreeNod
11、e(基本信息管理);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
12、 = 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);/ 实例化CardEmploy面板 并加到jsplitpane的边ae = new CardEmploy();js = new JSplitPane();j
13、s.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 valueChanged(TreeSelectionEvent e) / 获取点击结点名称DefaultMutableTreeNode dpath = (DefaultMutab
14、leTreeNode) 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.eq