收藏 分销(赏)

java专业课程设计人事标准管理系统.doc

上传人:a199****6536 文档编号:2727214 上传时间:2024-06-05 格式:DOC 页数:48 大小:390.54KB 下载积分:12 金币
下载 相关 举报
java专业课程设计人事标准管理系统.doc_第1页
第1页 / 共48页
java专业课程设计人事标准管理系统.doc_第2页
第2页 / 共48页


点击查看更多>>
资源描述
人事管理系统 一.系统需求分析: 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 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 一.系统需求分析: (1) 系统功效设计 i 职员信息管理:职员信息管理包含对职员基础信息和情况进行查询、添加、删除和修改及部门管理 ii 职员考评管理:包含对职员考评情况进行操作,还能够对历史考评情况进行浏览 (2) 系统功效结构 人事管理系统结构功效结构图所表示: (3) 数据库设计 职员基础表(Employinfo) 名称 字段名称 数据类型 主键 非空 工号 Empno varchar(10) Yes Yes 姓名 Ename varchar(10) No yes 性别 Sex 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 yes 变更日期 RegDate datetime No Yes 考评历史统计(History) 名称 字段名称 数据类型 主键 非空 流水号 JourNo Int Yes yes 工号 Empno 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) 添加职员界面 实例一个AddEmploy类当点击“添加”时调用EmployModel类updEmploy方法实现添加功效 (3) 修改职员信息界面 实例一个ReviseEmploy类当点击“修改”时,先调用UpdDialo弹跳出一个修改信息对话框,信息修改完成后,调用EmployModel类updEmploy方法实现修改功效 (4) 删除职员界面 实例一个DelEmploy类当点击“删除”时调用EmployModel类updEmploy方法实现删除功效 (5) 职员考评界面 实例一个Examine类当点击“确定”时调用AppraisalModel类updAppraisal方法来完成考评功效 (6) 职员考评历史统计界面 实例一个History类当点击时调用AppraisalModel类updAppraisal方法来完成考评功效 三. 各个类说明 类之间关系图: 1. Manager类 Manager类一个实例,从而生成了人事管理系统界面,用JSplitPane类将整个界面分为左右两个部分。其中左侧实现了人事管理系统功效树,采取JTree类构建,同时实现了TreeSelectionListener接口,定义了该接口所必需实现valueChanged(TreeSelectionEvent e)方法,JSplitPane右边加入卡片布局CardEmploy类。当JTreeTreeSelectionEvent事件发生时,调用CardEmployc.show方法 切换不一样卡片,实现不一样管理界面。 2. CardEmploy类 CardEmploy为卡片布局类面板,关键功效是添加各个界面卡片,当JTreeTreeSelectionEvent事件发生时。切换不一样卡片 3. EmployModel、AppraisalModel类 这两个类继承了AbstractTableModel,关键实现功效是,存放调用sqlhelper 类得到数据。能够经过调用sqlhelper实现 增 删 查 改 功效 4. SqlHelper类 关键就是连接数据库部分基础操作是,方便代码修改,反复使用 5. SelEmploy 这个类继承Panel,为“查询职员”界面。实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类queryEmploy方法实现查询 6. AddEmploy、ReviseEmploy、DelEmploy类 这些类继承Pane,分别为“添加职员信息”“修改职员信息”“删除职员信息”界面, 这些类实现了Actionlistener 接口,当ActionEvent 事件发生时,调用EmployModel类updEmploy方法实现添加、查询、删除、功效 7. Examine类 这个类继承Panel,为“考评职员”界面。这个类实现了Actionlistener 接口,当ActionEvent 事件发生时,(1)先经过调用AppraisalModelqueryAppraisal获取上次考评成绩,(2)修改Appraisal表考评成绩(3)再把上次考评成绩跟此次考评成绩加到History表中 8. History 这个类关键是把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() { // 给树各个结点赋值 root = new DefaultMutableTreeNode("人事管理系统"); t1 = new DefaultMutableTreeNode("基础信息管理"); 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 = 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(); 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 valueChanged(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, "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; import javax.swing.*; import java.awt.*; public class CardEmploy extends Panel{ CardLayout c; //查询表 SelEmploy selE; //添加表 AddEmploy addE; //修改职员信息表 ReviseEmploy revE; //删除职员表格 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(); //历史统计界面 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 类 设置查询职员界面 */ 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("输入职员号:"); jtf = new JTextField(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 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("工号:"); 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); 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, 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) { // 调用EmployModel 里updEmploy 方法,实现对表格添加 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.showMessageDialog(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.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("刷新"); // 对两个按钮进行监听 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, "请选择一行"); 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 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("工号:"); 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(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.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("取消"); // 对两个按钮监听 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.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 语句,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(); // 假如修改语句运行成功 则弹出“修改成功”对话框 if (temp.updEmploy(sql, 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 { 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);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服