雇员管理系统叶飞.docx
《雇员管理系统叶飞.docx》由会员分享,可在线阅读,更多相关《雇员管理系统叶飞.docx(28页珍藏版)》请在冰豆网上搜索。
雇员管理系统叶飞
java程序设计课程设计报告
课题:
雇员信息管理系统
姓名:
叶飞
学号:
201017010223
同组姓名:
杨克斯刘再科蔡双
专业班级:
计科10102班
指导教师:
唐石
设计时间:
2012年6月4号----2012年6月10日
评阅意见:
评定成绩:
指导老师签名:
年月日
目录
1、开发背景2
2、系统描述2
3、分析与设计2
3.1、功能模块划分2
3.2、数据库结构描述3
3.3、系统功能模块图…………………………………………………………………………4
3.4、各模块的实现方法………………………………………………………………………4
4、系统测试6
5.总结及体会7
6、参考文献8
7、附录(源代码)……………………………………………………………………………………8
1.开发背景
二十一世纪是信息的社会,信息作为最主要的资源,将成为战略资源引起人们的广泛关注。
尤其在当今的企业,几乎在所有产业的各个领域,信息及信息流通成为必不可少的部分。
例如招聘员工、员工培训以及职位调动、工资管理,无不需要信息的存储和参考。
面对庞大的信息量,雇员信息管理系统用来提高公司档案管理的工作率,帮助公司对雇员档案进行系统化、计算机化、规范化管理,促进固原档案的完整、规范和全面,保证雇员信息管理工作有条不紊的进行。
2、系统描述
雇员信息管理系统实现的功能主要是雇员信息管理,如雇员基本信息查询、修改、添加、删除,雇员职位调动时工资的调整,可以对雇员的姓名、部门号、职务、经理号等信息进行修改。
3、分析与设计
3.1功能模块划分
界面设计
根据需要,界面应该提供如下功能:
雇员编号、姓、名、电子邮件、电话号码、雇佣日期、从事工作编号、薪水、有关薪水的升降操作、所属主管的编号、部门编号等。
查阅模块
通过主界面的“前一条”、“下一条”按钮可以查阅整个员工工资及信息情况。
工资管理模块
单击主界面上的“提升工资”、“降低工资”,并选择工资变动的等级,然后单击“提交”按钮,就可以对员工的薪水进行设置。
3.2数据库结构描述
数据库名称:
雇员信息表
表名称:
Employees
字段名
数据类型
长度
备注
EMPLOYEE_ID
字符
10
主码
FIRST_NAME
字符
20
非空
LAST_NAME
字符
20
非空
EMAIL
字符
20
PHONE_NUMBER
字符
20
True或者false
Hire_Date
datetime
JOB_ID
字符
20
SALARY
Real
MANAGER_ID
字符
10
DEPARTMENT_ID
字符
10
3.3系统功能模块图
3.4各模块的实现方法(关键代码)
雇员加薪和减薪的实现方法
publicvoidpromoteSalary(intdegree){
switch(degree){
case-1:
break;
casePromoteDegree.PromoteLeve0:
this.Salary=this.getSalary()+100;
break;
casePromoteDegree.PromoteLeve1:
this.Salary=this.getSalary()+500;
break;
casePromoteDegree.PromoteLeve2:
this.Salary=this.getSalary()+1000;
break;
default:
break;}
}/**
*@authorAdministrator
*@paramdegree根据员工的违规等级扣薪水
*/
publicvoiddemoteSalary(intdegree){
switch(degree){
case-1:
break;
caseDemoteDegree.DemoteLevel0:
if(this.getSalary()<=100.0)
this.Salary=0;
else
this.Salary=this.getSalary()-100;
break;
caseDemoteDegree.DemoteLevel1:
if(this.getSalary()<=500.0)
this.Salary=0;
else
this.Salary=this.getSalary()-500;
break;
caseDemoteDegree.DemoteLevel2:
if(this.getSalary()<=1000.0)
this.Salary=0;
else
this.Salary=this.getSalary()-1000;
break;
default:
break;
}
}
雇员基本信息的修改实现方法
publicbooleanupdateEmployeeInfo(){
StringupdateSql="UPDATEEmployees"+
"SETFIRST_NAME='"+this.FirstName+"',LAST_NAME='"+this.LastName+
"',EMAIL='"+this.Email+"',PHONE_NUMBER='"+this.Phone_Number+
"',JOB_ID='"+this.Job_ID+"',SALARY="+this.Salary+",MANAGER_ID="+
this.Manager_ID+",DEPARTMENT_ID="+this.Department_ID+
"WHERE1=1ANDEMPLOYEE_ID="+this.Employee_ID+"";
System.out.println(updateSql);
returnnewTableData().UpdateTableData(updateSql)}
4、系统测试
主界面
雇员加薪、加薪成功
5、总结及体会
通过为期一周的课程设计,我们小组4人以分工的形式完成了雇员信息管理系统。
杨克斯做用户界面设计和雇员信息查询功能这一块,叶飞做类的定义以及成员方法的定义和雇员工资管理这一块,刘再科和蔡双做的是数据库的设计、表的建立以及数据库的连接。
我们在做的过程中都遇到了一些问题,以前我们做课程设计时没有涉及到数据库,做Java实验时很少用到eclipse软件,所以相对来说挑战有点大。
经过查阅参考资料,我们一起讨论怎么解决问题,以及在老师的帮助下,终于把这个系统中涉及的知识点弄明白了,并把程序调试出来了。
我们了解到,eclipse软件是一款很棒的开发Java工程的软件,它会自动提示错误,让我们把时间主要花在设计的工作上,而不是枯燥乏味的改错上。
另外,数据库非常重要,我们接触过的数据库有Access,SQLServer和Oracle,分别为小型,中型,大型数据库。
如果我们要做一个成功的实用的系统,数据库的设计是占了比较大的比重的。
这一次课程设计,我们的系统,即雇员信息管理系统,比较不足的地方是实现的功能少,因为雇员信息管理包括培训信息,工资管理,职位调动、离岗信息,部门信息等。
在一个企业,人事管理部门需要对以上信息进行有效的管理,员工也可以查询相关信息,各个功能模块间的联系也比较大。
由于时间和精力有限,我们只完成了一小部分。
6、参考文献
李尊朝,苏军.Java语言程序设计(第二版).北京:
中国铁道出版社,2004
黄晓东.Java课程设计案例精编(第二版).北京:
中国水利水电出版社,2004
7、附录(源代码)
packageUI;
importrecords.*;
importaccessDB.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.*;
publicclassDisplayUIextendsJFrame{
publicstaticVectorEmpList=null;
publicstaticintCurrentPosition=0;
privateJTextFieldtxtEmployee_ID;
privateJTextFieldtxtFirstName;
privateJTextFieldtxtLastName;
privateJTextFieldtxtEmail;
privateJTextFieldtxtTel;
privateJTextFieldtxtEmployeeDate;
privateJTextFieldtxtEmployeeJob;
privateJTextFieldtxtSalary;
privateJTextFieldtxtManagerID;
privateJTextFieldtxtDepartmentID;
privateCheckboxrdbPromote;
privateCheckboxrdbDemote;
privateJComboBoxcmbBox;
privateCheckboxGroupchkGroup;
privatevoidAddControlToPane()
{this.setSize(800,600);//设置布局管理器
GridBagConstraintscons=newGridBagConstraints();
this.setLayout(newGridBagLayout());
cons.gridx=0;
cons.gridy=0;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblEmployee_ID=newJLabel("雇员编号");
this.add(lblEmployee_ID,cons);
cons.gridx=1;
cons.gridy=0;
cons.gridwidth=1;
cons.gridheight=1;
txtEmployee_ID=newJTextField(10);
txtEmployee_ID.setEditable(true);
this.add(txtEmployee_ID,cons);
cons.gridx=0;
cons.gridy=1;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblFirstName=newJLabel("姓:
");
this.add(lblFirstName,cons);
cons.gridx=1;
cons.gridy=1;
cons.gridwidth=1;
cons.gridheight=1;
txtFirstName=newJTextField(10);
txtFirstName.setEditable(true);
this.add(txtFirstName,cons);
cons.gridx=2;
cons.gridy=1;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblLastName=newJLabel("名:
");
lblLastName.setAlignmentX(0);
this.add(lblLastName,cons);
cons.gridx=3;
cons.gridy=1;
cons.gridwidth=1;
cons.gridheight=1;
txtLastName=newJTextField(10);
txtLastName.setEditable(true);
this.add(txtLastName,cons);
cons.gridx=0;
cons.gridy=2;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblEmail=newJLabel("电子邮件:
");
this.add(lblEmail,cons);
cons.gridx=1;
cons.gridy=2;
cons.gridwidth=1;
cons.gridheight=1;
txtEmail=newJTextField(10);
this.add(txtEmail,cons);
cons.gridx=2;
cons.gridy=2;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblTel=newJLabel("电话号码:
");
this.add(lblTel,cons);
cons.gridx=3;
cons.gridy=2;
cons.gridwidth=1;
cons.gridheight=1;
txtTel=newJTextField(10);
this.add(txtTel,cons);
cons.gridx=0;
cons.gridy=3;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblEmployeeDate=newJLabel("雇佣日期:
");
this.add(lblEmployeeDate,cons);
cons.gridx=1;
cons.gridy=3;
cons.gridwidth=1;
cons.gridheight=1;
txtEmployeeDate=newJTextField(10);
this.add(txtEmployeeDate,cons);
cons.gridx=2;
cons.gridy=3;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblEmployeeJob=newJLabel("从事工作:
");
this.add(lblEmployeeJob,cons);
cons.gridx=3;
cons.gridy=3;
cons.gridwidth=1;
cons.gridheight=1;
txtEmployeeJob=newJTextField(10);
this.add(txtEmployeeJob,cons);
cons.gridx=0;
cons.gridy=4;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblManagerID=newJLabel("主管编号:
");
this.add(lblManagerID,cons);
cons.gridx=1;
cons.gridy=4;
cons.gridwidth=1;
cons.gridheight=1;
txtManagerID=newJTextField(10);
this.add(txtManagerID,cons);
cons.gridx=2;
cons.gridy=4;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblDepartmentID=newJLabel("部门编号:
");
this.add(lblDepartmentID,cons);
cons.gridx=3;
cons.gridy=4;
cons.gridwidth=1;
cons.gridheight=1;
txtDepartmentID=newJTextField(10);
this.add(txtDepartmentID,cons);
cons.gridx=0;
cons.gridy=5;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblSalary=newJLabel("薪水:
");
this.add(lblSalary,cons);
cons.gridx=1;
cons.gridy=5;
cons.gridwidth=1;
cons.gridheight=1;
txtSalary=newJTextField(10);
txtSalary.setEditable(true);
this.add(txtSalary,cons);
cons.gridx=0;
cons.gridy=6;
cons.gridwidth=1;
cons.gridheight=1;
rdbPromote=newCheckbox("提升工资:
");
this.add(rdbPromote,cons);
cons.gridx=1;
cons.gridy=6;
cons.gridwidth=1;
cons.gridheight=1;
rdbDemote=newCheckbox("降低工资");
this.add(rdbDemote,cons);
chkGroup=newCheckboxGroup();
rdbPromote.setCheckboxGroup(chkGroup);
rdbDemote.setCheckboxGroup(chkGroup);
chkGroup.setSelectedCheckbox(null);
cons.gridx=2;
cons.gridy=6;
cons.gridwidth=1;
cons.gridheight=1;
JLabellblGrade=newJLabel("变动等级:
");
this.add(lblGrade,cons);
cons.gridx=3;
cons.gridy=6;
cons.gridwidth=1;
cons.gridheight=1;
cmbBox=newJComboBox(newString[]{"","一级","二级","三级"});
this.add(cmbBox,cons);
//当下拉列表框选项内容发生变化时,调用DisplaySalary函数,正确显示当前设定的薪水数目
cmbBox.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
DisplaySalary();}
});
cons.gridx=0;
cons.gridy=7;
cons.gridwidth=1;
cons.gridheight=1;
JButtonbtnSubmit=newJButton("提交:
");
this.add(btnSubmit,cons);//注册失败,处理提交情况
btnSubmit.setActionCommand("Submit");
btnSubmit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand().equals("Submit")){//读取数据并保存
if(txtEmployee_ID.getText().equals("")==false)
{Employeeemp=newEmployee();//显示雇员的相关信息
emp.setEmployee_ID(Integer.parseInt(txtEmployee_ID.getText()));
emp.setFirstName(txtFirstName.getText());
emp.setLastName(txtLastName.getText());
emp.setEmail(txtEmail.getText());
emp.setPhone_Number(txtTel.getText());
emp.setJob_ID(txtEmployeeJob.getText());
emp.setSalary(Float.parseFloat(txtSalary.getText()));
emp.setManager_ID(Integer.parseInt(txtManagerID.getText()));
emp.setDepartment_ID(txtDepartmentID.getText());
EmpList.setElementAt(emp,DisplayUI.CurrentPosition);//向数据库中保存记录
BooleaniRet=((Employee)(EmpList.elementAt(DisplayUI.CurrentPosition))).updateEmployeeInfo();
if(iRet==true)
{JOptionPane.showMessageDialog(null,"更新成功","正确",JOptionPane.INFORMATION_MESSAGE);}
else
{JOptionPane.showMessageDialog(null,"更新失败","错误",JOptionPane.ERROR_MESSAGE);}
}
else
JOptionPane.showMessageDialog(null,"更新失败","错误",JOptionPane.ERROR_MESSAGE);}
}
});
cons.gridx=1;
cons.gridy=7;
cons.gridwidth=1;
cons.gridheight=1;
JButtonbtnPrex=newJButton("前一条");
this.add(btnPrex,cons);//注册事件
btnPrex.setActionCommand("PrexRecord");
btnPrex.addActionListener(newActionListener()