java课程设计报告人事管理系统Word格式.docx
《java课程设计报告人事管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《java课程设计报告人事管理系统Word格式.docx(44页珍藏版)》请在冰点文库上搜索。
工资
Sal
float
员工考核表(Appraisal)
考核
Consequence
no
变更日期
RegDate
datetime
Yes
考核历史记录(History)
流水号
JourNo
Int
上次考核
OldInfo
本次考核
NewInfo
二.功能模块开发
(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(TreeSelectionEvente)方法,JSplitPane右边加入卡片布局CardEmploy类。
当JTree的TreeSelectionEvent事件发生时,调用CardEmploy的c.show方法切换不同卡片,实现不同的管理界面。
2.CardEmploy类
CardEmploy为卡片布局类的面板,主要功能是添加各个界面的卡片,当JTree的TreeSelectionEvent事件发生时。
切换不同的卡片
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)先通过调用AppraisalModel的queryAppraisal获取上次考核成绩,
(2)修改Appraisal表的考核成绩(3)再把上次考核成绩跟本次考核成绩加到History表中
8.History
这个类主要是把History表中的信息显示到界面上。
四.程序代码
(1)Manager
package.Manager;
importjava.awt.*;
importjavax.swing.*;
importjavax.swing.event.TreeSelectionEvent;
importjavax.swing.event.TreeSelectionListener;
importjavax.swing.tree.*;
importjava.awt.event.*;
publicclassManagerextendsJFrameimplementsTreeSelectionListener{
JPaneljp;
JSplitPanejs;
JScrollPanejsp;
JTreetree;
DefaultMutableTreeNoderoot,t1,t2,t1_1,t1_2,t1_3,t1_4,t1_5,t2_1,
t2_2;
CardEmployae;
EmployModelem;
publicstaticvoidmain(String[]args){
Managermanager=newManager();
}
publicManager(){
//给树的各个结点赋值
root=newDefaultMutableTreeNode("
人事管理系统"
);
t1=newDefaultMutableTreeNode("
基本信息管理"
t1_1=newDefaultMutableTreeNode("
查询员工"
t1_2=newDefaultMutableTreeNode("
添加员工"
t1_3=newDefaultMutableTreeNode("
修改员工信息"
t1_4=newDefaultMutableTreeNode("
删除员工资料"
t1_5=newDefaultMutableTreeNode("
查询全体员工"
t2=newDefaultMutableTreeNode("
人员考核管理"
t2_1=newDefaultMutableTreeNode("
人员考核"
t2_2=newDefaultMutableTreeNode("
考核历史查询"
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=newJTree(root);
//对树进行监听
tree.addTreeSelectionListener(this);
//实例化CardEmploy面板并加到jsplitpane的边
ae=newCardEmploy();
js=newJSplitPane();
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);
publicvoidvalueChanged(TreeSelectionEvente){
//获取点击结点名称
DefaultMutableTreeNodedpath=(DefaultMutableTreeNode)tree
.getLastSelectedPathComponent();
//通过点击不同结点切换不同界面
if(dpath.equals(t1_1)){
ae.c.show(ae,"
1"
}elseif(dpath.equals(t1_2)){
2"
}elseif(dpath.equals(t1_3)){
3"
}elseif(dpath.equals(t1_4)){
4"
}elseif(dpath.equals(t1_5)){
5"
}elseif(dpath.equals(t2_1)){
6"
}elseif(dpath.equals(t2_2)){
7"
}
}
(2)CardEmploy
/**
*用卡片布局设置各个界面
*/
publicclassCardEmployextendsPanel{
CardLayoutc;
//查询表
SelEmployselE;
//添加表
AddEmployaddE;
//修改员工信息表
ReviseEmployrevE;
//删除员工表格
DelEmploydelE;
//所有员工信息
AllEmployallE;
//员工考核表
ExamineexaE;
//历史记录界面
HistoryHis;
publicCardEmploy()
{
//查询员工表
selE=newSelEmploy();
//添加员工表
addE=newAddEmploy();
//修改员工信息
revE=newReviseEmploy();
delE=newDelEmploy();
allE=newAllEmploy();
exaE=newExamine();
His=newHistory();
JPaneljp=newJPanel();
//定义cardemploy面板为卡片布局
//把各个面板加入到C的卡片布局中
c=newCardLayout();
this.setLayout(c);
this.add(selE,"
this.add(addE,"
this.add(revE,"
this.add(delE,"
this.add(allE,"
this.add(exaE,"
this.add(His,"
(3)SelEmploy
*SelEmploy类设置查询员工界面
publicclassSelEmployextendsPanelimplementsActionListener{
JLabeljl;
JTextFieldjtf;
JButtonjb;
JTablejt;
JPaneljp1;
publicSelEmploy(){
//北部
jp1=newJPanel();
jl=newJLabel("
输入员工号:
"
jtf=newJTextField(20);
jb=newJButton("
查询"
//对查询按钮监听
jb.addActionListener(this);
jp1.add(jl);
jp1.add(jtf);
jp1.add(jb);
//中部
em=newEmployModel();
String[]paras={"
};
em.queryEmploy("
select*fromEmployinfowhere1=?
paras);
jt=newJTable(em);
jsp=newJScrollPane(jt);
this.setLayout(newBorderLayout());
this.add(jp1,BorderLayout.NORTH);
this.add(jsp,BorderLayout.CENTER);
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb){
Stringname=this.jtf.getText().trim();
Stringsql="
select*fromEmployinfowhereEmpno=?
;
String[]paras={name};
em=newEmployModel();
em.queryEmploy(sql,paras);
//查找成功更新表
jt.setModel(em);
(4)AddEmploy
publicclassAddEmployextendsPanelimplementsActionListener{
JLabeljl,jl1,jl2,jl3,jl4,jl5,jl6,jl7;
JButtonjb1,jb2;
JTextFieldjtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7;
JPaneljp1,jp2,jp3,jp4;
publicAddEmploy(){
jl1=newJLabel("
工号:
jl2=newJLabel("
:
jl3=newJLabel("
性别:
jl4=newJLabel("
出生年月:
jl5=newJLabel("
部门:
jl6=newJLabel("
职位:
jl7=newJLabel("
工资:
jtf1=newJTextField(20);
jtf2=newJTextField(20);
jtf3=newJTextField(20);
jtf4=newJTextField(20);
jtf5=newJTextField(20);
jtf6=newJTextField(20);
jtf7=newJTextField(20);
jb1=newJButton("
添加"
jb2=newJButton("
取消"
//监听‘添加’‘取消’按钮
jb1.addActionListener(this);
jb2.addActionListener(this);
jp1=newJPanel(newGridLayout(7,1));
jp2=newJPanel(newGridLayout(7,1));
jp3=newJPanel();
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=newJPanel(newBorderLayout());
jp4.add(jp1,BorderLayout.WEST);
jp4.add(jp2,BorderLayout.EAST);
jp4.setSize(300,300);
this.setLayout(newFlowLayout());
this.add(jp4);
this.add(jp3);
if(e.getSource()==jb1){
//调用EmployModel里的updEmploy方法,实现对表格的添加
insertintoEmployinfovalues(?
?
)"
String[]paras={jtf1.getText(),jtf2.getText(),jtf3.getText(),
jtf4.getText(),jtf5.getText(),jtf6.getText(),
jtf7.getText()};
if(em.updEmploy(sql,paras)){
//当添加新员工成功时,则弹出”添加成功“的对话框
JOptionPane.showMessageDialog(this,"
添加成功"
}elseif(!
em.updEmploy(sql,paras)){
添加失败"
}
//当新员工加入成功后,要把新加入员工的工号加到考核表
AppraisalModeltemp=newAppraisalModel();
Stringsql1="
insertintoAppraisal(Empno)values(?
String[]paras1={jtf1.getText()};
temp.updAppraisal(sql1,paras1);
}elseif(e.getSource()==jb2){
jtf1.setText("
jtf2.setText("
jtf3.setText("
jtf4.setText("
jtf5.setText("
jtf6.setText("
jtf7.setText("
(5)ReviseEmploy
*修改员工界面
publicclassReviseEmployextendsPanelimplementsActionListener{
JPaneljp1,jp2;
JLabeljl1;
publicReviseEmploy(){
JLabel.CENTER);
jl1.setFont(newFont("
宋体"
Font.BOLD,28));
jp2=newJPanel();
jp2.add(jl1);
修改"