




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.人事管理系统一 . 系统需求分析:2( 1)系统的功能设计.2( 2)系统功能结构.2( 3)数据库设计 .2二 .功能模块开发.3( 1)查询人员信息界面.3( 2)添加员工界面.4( 3)修改员工信息界面.4( 4)删除员工界面.5( 5)员工考核界面.6( 6)员工考核历史记录界面.6三 .各个类说明7四 .程序代码11( 1)Manager .11( 2)CardEmploy .13( 3)SelEmploy .14( 4)AddEmploy .16( 5)ReviseEmploy .18iUpdDialog .20( 6)DelEmploy .23( 7)AllEmploy .25
2、( 8)Examine .25( 9)History.29( 10)EmployModel .30( 11)AppraisalModel.32( 12)SqlHelper .35.一 . 系统需求分析:(1) 系统的功能设计i 员工信息管理:员工信息管理包括对员工基本信息和情况进行查询、添加、删除和修改及部门管理ii 员工考核管理:包括对员工的考核情况进行操作,还可以对历史考核情况进行浏览(2) 系统功能结构人事管理的系统结构功能结构如图所示:(3) 数据库设计员工基本表( Employinfo )名称字段名称数据类型主键非空工号Empnovarchar(10)YesYes姓名Enamevar
3、char(10)Noyes2性别Sexvarchar(4)Noyes出生年月BirthdayDatetimeNoYes部门DeptNoChar(10)NoYes职务EjobChar(20)NoYes工资SalfloatNoYes员工考核表( Appraisal )名称字段名称数据类型主键非空工号Empnovarchar(10)yesyes考核Consequencevarchar(10)noyes变更日期RegDatedatetimeNoYes考核历史记录( History )名称字段名称数据类型主键非空流水号JourNoIntYesyes工号Empnovarchar(10)noyes姓名Ena
4、mevarchar(10)NoYes上次考核OldInfovarchar(10)NoYes本次考核NewInfovarchar(10)NoYes变更日期RegDatedatetimeNoYes二 .功能模块开发( 1) 查询人员信息界面3实例一个 SelEmploy 类,当点击“查询”时调用 EmployModel类的 queryEmploy 方法实现查询( 2) 添加员工界面实例一个 AddEmploy 类当点击“添加”时调用EmployModel 类的 updEmploy方法实现添加功能( 3) 修改员工信息界面4实例一个ReviseEmploy 类当点击“修改”时,先调用UpdDialo
5、弹跳出一个修改信息对话框,信息修改完毕后,调用EmployModel类的 updEmploy方法实现修改功能( 4) 删除员工界面实例一个 DelEmploy 类当点击“删除”时调用EmployModel 类的5updEmploy方法实现删除功能( 5) 员工考核界面实例一个 Examine 类当点击“确认”时调用AppraisalModel类的updAppraisal方法来完成考核功能( 6) 员工考核历史记录界面6实 例 一 个History类 当点 击 时 调 用AppraisalModel类 的updAppraisal方法来完成考核功能三 . 各个类说明类之间的关系图 :71. Man
6、ager 类Manager 类的一个实例,从而生成了人事管理系统的界面, 用 JSplitPane类将整个界面分为左右两个部分。其中左侧实现了人事管理系统的功能树,采用 JTree 类构建,同时实现了TreeSelectionListener接口,定义了该接 口 所 必 须 实 现 的valueChanged(TreeSelectionEvente) 方 法 ,JSplitPane右 边 加 入 卡 片 布 局CardEmploy类 。 当JTree的TreeSelectionEvent事件发生时,调用 CardEmploy 的 c.show 方法切换不同卡片,实现不同的管理界面。2. Car
7、dEmploy类CardEmploy 为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree 的 TreeSelectionEvent事件发生时。切换不同的卡片83. EmployModel、AppraisalModel类这两个类继承了AbstractTableModel,主要实现的功能是,存放调用sqlhelper类得到的数据。可以通过调用sqlhelper实现 增 删 查 改 功能4. SqlHelper 类主要就是连接数据库的一些基础操作是,方便代码修改,重复使用5. SelEmploy这个类继承 Panel ,为“查询员工” 的界面。 实现了 Actionlistener接口,
8、当ActionEvent事件发生时,调用EmployModel 类 的queryEmploy 方法实现查询6. AddEmploy、ReviseEmploy、DelEmploy类这些类继承 Pane,分别为“添加员工信息”“修改员工信息”“删除员工信息”的界面, 这些类实现了 Actionlistener 接口,当 ActionEvent 事件发生时,调用 EmployModel 类的 updEmploy方法实现添加、查询、删除、功能7. Examine类这个类继承 Panel ,为“考核员工” 界面。这个类实现了Actionlistener接口,当ActionEvent事件发生时, (1)
9、先通过调用AppraisalModel的 queryAppraisal 获取上次考核成绩, (2) 修改 Appraisal 表的考核成绩( 3)再把上次考核成绩跟本次考核成绩加到History表中8. History9这个类主要是把History表中的信息显示到界面上。10四 . 程序代码( 1) Managerpackage com.Manager;importjava.awt.*;importjavax.swing.*;importjavax.swing.event.TreeSelectionEvent;importjavax.swing.event.TreeSelectionListe
10、ner;importjavax.swing.tree.*;importjava.awt.event.*;publicclass Manager extends JFrame implementsTreeSelectionListener JPaneljp ;JSplitPanejs ;JScrollPanejsp ;JTreetree;DefaultMutableTreeNoderoot , t1 , t2 , t1_1 ,t1_2 , t1_3 , t1_4 , t1_5 , t2_1 ,t2_2 ;CardEmployae;EmployModelem;publicstaticvoid ma
11、in(String args) Manager manager =new Manager();publicManager() / 给树的各个结点赋值root=new DefaultMutableTreeNode( 人事管理系统 );t1 =new DefaultMutableTreeNode( 基本信息管理 );t1_1=new DefaultMutableTreeNode( 查询员工 );t1_2=new DefaultMutableTreeNode( 添加员工 );t1_3=new DefaultMutableTreeNode( 修改员工信息 );t1_4=new DefaultMutab
12、leTreeNode( 删除员工资料 );t1_5=new DefaultMutableTreeNode( 查询全体员工 );t2 =new DefaultMutableTreeNode( 人员考核管理 );t2_1=new DefaultMutableTreeNode( 人员考核 );t2_2=new DefaultMutableTreeNode( 考核历史查询 );11t1 .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 );
13、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(
14、true);this.setSize(600, 500);this.setDefaultCloseOperation(JFrame.);EXIT_ON_CLOSEpublicvoidvalueChanged(TreeSelectionEvent e) /获取点击结点名称DefaultMutableTreeNode dpath = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();/ 通过点击不同结点切换不同界面if(dpath.equals(t1_1 ) ae. c.show(ae,1 );elseif(dpath.equa
15、ls(t1_2) ae. c.show(ae,2 );elseif(dpath.equals(t1_3) 12ae. c.show(ae,3 );elseif(dpath.equals(t1_4) ae. c.show(ae,4 );elseif(dpath.equals(t1_5) ae. c.show(ae,5 );elseif(dpath.equals(t2_1) ae. c.show(ae,6 );elseif(dpath.equals(t2_2) ae. c.show(ae,7 );( 2) CardEmploy/* 用卡片布局设置各个界面*/package com.Manager;
16、importjavax.swing.*;importjava.awt.*;publicclassCardEmployextendsPanelCardLayoutc;/ 查询表SelEmployselE ;/ 添加表AddEmploy addE;/ 修改员工信息表ReviseEmployrevE ;/ 删除员工表格DelEmploydelE ;/ 所有员工信息AllEmployallE ;/ 员工考核表ExamineexaE;/ 历史记录界面HistoryHis ;publicCardEmploy()13/ / 查询员工表selE =new SelEmploy();/ 添加员工表addE =ne
17、w AddEmploy();/ / 修改员工信息r evE =new ReviseEmploy();/ 删除员工表格delE =new DelEmploy();/ 所有员工信息allE= new AllEmploy();/ 员工考核表exaE =new Examine();/ 历史记录界面His =new History();JPanel jp =new JPanel();/ / 定义 cardemploy 面板为卡片布局/ 把各个面板加入到 C的卡片布局中c =new CardLayout();t his .setLayout(c);t his .add( selE , 1 );t his
18、.add( addE, 2 );t his .add( revE , 3 );t his .add( delE , 4 );t his .add(allE , 5);t his.add(exaE, 6);t his.add(His , 7 );( 3) SelEmploy/* SelEmploy类设置查询员工界面14*/package com.Manager;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;public class SelEmploy extends Panel implements ActionListe
19、ner EmployModel em;JLabeljl;JTextFieldjtf;JButtonjb ;JTablejt ;JScrollPanejsp ;JPaneljp1 ;publicSelEmploy() / 北部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 EmployM
20、odel();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);publicvoidactionPerformed(ActionEvent e) if(e.getSource() =jb
21、) 15String 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;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;public class
22、AddEmployextendsPanelimplementsActionListener JLabeljl ,jl1,jl2,jl3,jl4,jl5,jl6,jl7;JButtonjb1, jb2 ;JTextFieldjtf1,jtf2,jtf3,jtf4,jtf5,jtf6, jtf7 ;JPaneljp1 ,jp2 ,jp3 ,jp4 ;EmployModelem;publicAddEmploy() jl1=new JLabel(工号:);jl2=new JLabel(姓名:);jl3=new JLabel(性别:);jl4=new JLabel( 出生年月 : );jl5=new J
23、Label(部门:);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);16jtf6=new JTextField(20);jtf7=new JTextField(20);jb1 =new JButton( 添加 );jb2 =new JButton( 取消 );/ 监听添加 取消按钮jb1 .addActionListener
24、(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)
25、;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 );17publicvoidactionPerfor
26、med(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
27、(sql, paras) / 当添加新员工成功时,则弹出”添加成功“的对话框JOptionPane.showMessageDialog( this , 添加成功 );elseif(!em.updEmploy(sql, paras) JOptionPane.showMessageDialog( this , 添加失败 );/ 当新员工加入成功后,要把新加入员工的工号加到考核表AppraisalModel temp =new AppraisalModel();String sql1 =insert into Appraisal(Empno) values(?);String paras1 = jt
28、f1.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) ReviseEmploypackage com.Manager;/* 修改员工界面18*/importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publiccla
29、ssReviseEmployextendsPanelimplementsActionListener JTablejt ;JScrollPanejsp ;JButtonjb1 ,jb2 ;JPaneljp1 , jp2 ;EmployModelem;JLabeljl1;publicReviseEmploy() jl1=new JLabel( 修改员工信息 ,JLabel.CENTER);jl1 .setFont(new Font( 宋体 , Font.BOLD,28);jp2 =new JPanel();jp2 .add( jl1 );em =new EmployModel();String
30、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 );
31、jp1 .add( jb2 );this .add( jp2 ,BorderLayout.NORTH);this .add( jsp , BorderLayout.CENTER);this .add( jp1 , BorderLayout.SOUTH);publicvoidactionPerformed(ActionEvent e) if(e.getSource() =jb1 ) 19introwNum =this . jt .getSelectedRow();if(rowNum = -1) JOptionPane.showMessageDialog( this , 请选择一行 );retur
32、n;/ 弹出修改对话框new UpdDialog(em, rowNum); elseif(e.getSource() =jb2 ) / 刷新修改界面中的表格em =new EmployModel();String paras1 = 1;em.queryEmploy(select * from Employinfo where 1 = ?, paras1);jt .setModel(em);i UpdDialogpackage com.Manager;/* 弹出修改界面*/importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;pu
33、blic classUpdDialogextendsJDialogimplementsActionListener JLabeljl1 ,jl2,jl3 ,jl4 ,jl5,jl6, jl7;JButtonjb1, jb2 ;JTextFieldjtf1,jtf2, jtf3,jtf4,jtf5, jtf6, jtf7 ;JPaneljp1 ,jp2 ,jp3 ;publicUpdDialog(EmployModel em,int rowNums) jl1=new JLabel(工号:);jl2=new JLabel(姓名:);jl3=new JLabel(性别:);jl4=new JLabe
34、l( 出生年月 :);jl5=new JLabel(部门:);jl6=new JLabel(职位:);20jl7=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(rowN
35、ums, 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.getValue
36、At(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
37、.add( jl3 );jp1 .add( jl4 );jp1 .add( jl5 );jp1 .add( jl6 );jp1 .add( jl7 );21jp2 .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.);CENTERthis .
38、add( jp3 , BorderLayout.SOUTH);this.setSize(300, 250);this.setVisible(true );this.setLocation(200, 200);this.addWindowListener(new WindowAdapter() publicvoidwindowClosing(WindowEvent e) dispose(););publicvoidactionPerformed(ActionEvent e) if (e.getSource() =jb1 ) /修改员工信息的sql语句, paras为待注入的值String sql
39、 =update Employinfo set + Ename = ?,Sex = ?,Birthday= ?, DeptNo = ?, Ejob = ? ,Sal=?whereEmpno = ? ;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();22 elseif(e.getSource() =jb2 ) / 关闭对话框this .dispose();( 6) DelEmploy/* 删除员工*/package com.Manager;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassDelEmploy extends Pane
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品安全管理-蜜饯篇
- 农学创新创业项目
- 2025河南省建筑安全员《A证》考试题库
- 2025年-贵州省建筑安全员-A证考试题库及答案
- 2025年青海省建筑安全员考试题库及答案
- 2025年-江西省安全员B证考试题库及答案
- 2025年-黑龙江省安全员-B证考试题库及答案
- 2025年贵州省安全员-A证考试题库及答案
- 高钾的临床表现及处理
- 2025年-陕西省建筑安全员C证(专职安全员)考试题库
- 注射用重组人TNK组织型纤溶酶原激活剂-药品临床应用解读
- GB/T 18385-2024纯电动汽车动力性能试验方法
- 社会救助内容和工作职责
- 艾滋病合并肺孢子菌肺炎临床路径
- 银发【2007】246号
- 小学六年级上册信息技术-第11课让电子作品集动起来南方版(18张)ppt课件
- 04-涉密人员考试试题库保密基本知识试题(答案)
- 最全的遗传概率计算方法(高中生物)
- 学校工会组织机构(共3页)
- KTV夜场服务日常操作规范与技巧
- 燃气激波吹灰器
评论
0/150
提交评论