java 员工管理系统
员工管理系统数组版
第一部分 案例描述
案例目的
学习面向对象的主要特征和基本概念,包括类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字等。
案例难度
★★★
案例覆盖技能点
1、 流程控制语句
2、 类、对象
3、 封装、继承、多态
4、 方法的重载、重写
5、 访问修饰符
6、 static、finally
适用课程和对象
JAVA面向对象编程基础
第二部分 需求和开发环境
使用技术和开发环境
JEclipse3.0或以上、JDK7.0或以上
案例需求
需求说明:
员工信息的基本情况
普通员工 属性:员工编号、员工姓名、员工职务、请假天数、基本工资 普通员工工资: 在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助 基本工资+基本工资*0.1+基本工资*0.5+200 |
经理 属性:员工编号、员工姓名、员工职务、请假天数、基本工资 经理工资: 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助 基本工资+基本工资*0.2+基本工资*0.5+500 |
董事 属性:员工编号、员工姓名、员工职务、请假天数、基本工资 董事工资: 在基本工资的基础上增加8%的工作餐,30%的岗位补助,2000元住房补助,3000元投资补助 基本工资+基本工资*0.08+基本工资*0.3+2000+3000 |
工资扣除部分,所有员工都一样 无请假,基本工资全发,有请假,扣除每天平均工资 * 请假天数 |
通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为100,业务流程如下
一、 启动业务选择界面
二、 增加员工
1.增加普通员工
2.增加经理
3.增加董事长
三、 删除
四、 修改
4、查询
系统基本模块包括:
功能点 |
难度 |
备注 |
父类Employee类的创建 |
★★★ |
|
三个子类:CommonEmployee类,Manager类和Director类的创建 |
★★★ |
|
管理类TestEMD类——增加 |
★★★★ |
|
管理类TestEMD类——删除 |
★★★★ |
|
管理类TestEMD类——修改 |
★★★★ |
|
管理类TestEMD类——查询 |
★★★★ |
|
项目类汇总
//源代码
package com.hp.employees;
public class Employee {
private String id;
private String name;
private String position;
private int holiday;
private double salary;
/*
* 创建类的时候如果自己没有写构造方法,
* 系统提供一个默认的无参构造方法
*/
public Employee(){}////如不写 系统会提供默认的构造函数
/*
* 重载
*/
public Employee(String id,String name,
String position,int holiday,double salary){
this.id=id;
this.name=name;
this.position=position;
this.holiday=holiday;
this.salary=salary;
}
/*
* get set函数(方法)
*
*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public int getHoliday() {
return holiday;
}
public void setHoliday(int holiday) {
this.holiday = holiday;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
/*
* 工资计算方式
*/
public double sumSalary(int holiday){
return 1;
}
/*
* 显示详细信息
*/
public void display(){
System.out.println("编号: "+this.id+" 姓名: "+this.name
+" 职务: "+this.position+" 请假天数:"+this.holiday
+" 工资: "+this.sumSalary(this.holiday));
}
}
//普通员工类
package com.hp.employees;
public class CommonEmployee extends Employee {
/*
* 构造方法
*/
public CommonEmployee(String id,String name,
String position,int holiday,double salary){
super(id, name, position, holiday, salary);
this.setId(id);
this.setName(name);
this.setPosition(position);
this.setHoliday(holiday);
this.setSalary(salary);
}
/*
* 重写父类工资计算方法
*/
public double sumSalary(int holiday){
return (this.getSalary()*1.6+200)/30*(30-this.getHoliday());
}
}
//经理类
package com.hp.employees;
public class Manager extends Employee{
/*
* 构造方法
*/
public Manager(String id,String name,String position,
int holiday,double salary){
this.setId(id);
this.setName(name);
this.setPosition(position);
this.setHoliday(holiday);
this.setSalary(salary);
}
/*
* 重写父类工资计算方法
*/
public double sumSalary(int holiday){
return (this.getSalary()*1.7+500)/30*(30-this.getHoliday());
}
}
//董事长类
package com.hp.employees;
public class Director extends Employee{
/*
* 构造方法
*/
public Director(String id,String name,String position,
int holiday,double salary){
this.setId(id);
this.setName(name);
this.setPosition(position);
this.setHoliday(holiday);
this.setSalary(salary);
}
/*
* 重写父类工资计算方法
*/
public double sumSalary(int holiday){
return (this.getSalary()*1.38+2000+3000)/30*(30-this.getHoliday());
}
}
//测试类
package com.hp.employees;
import java.util.Scanner;
public class TestEMD {
/*
* 成员属性
*/
public static Employee[] ems=new Employee[100];
public static int maxIndex=-1;
/*
* 增加
*/
public static void addEmplyee(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入员工编号:");
String id=sc.next();
System.out.println("请输入员工姓名:");
String name=sc.next();
System.out.println("请输入员工职务(普通员工,经理,董事长):");
String position=sc.next();
System.out.println("请输入员工请假天数:");
int holiday=sc.nextInt();
System.out.println("请输入员工基本工资:");
double salary=sc.nextDouble();
if(position.equals("普通员工")){
Employee newOne=new CommonEmployee(id, name, position, holiday, salary);
System.out.println("增加数据成功");
newOne.display();
maxIndex++;
ems[maxIndex]=newOne;
}
else if(position.equals("经理")){
Employee newOne=new Manager(id, name, position, holiday, salary);
System.out.println("增加数据成功");
newOne.display();
maxIndex++;
ems[maxIndex]=newOne;
}
else if(position.equals("董事长")){
Employee newOne=new Director(id, name, position, holiday, salary);
System.out.println("增加数据成功");
newOne.display();
maxIndex++;
ems[maxIndex]=newOne;
}
else{
System.out.println("你所输入的职务不存在");
}
}
/*
* 删除
*/
public static void delEmployee(){
Scanner sc= new Scanner(System.in);
System.out.println("请输入要删除的员工姓名");
String delName=sc.next();
boolean b1=false;
for(int i=0;i<=maxIndex;i++){
if(ems[i].getName().equals(delName)){
ems[i].display();
System.out.println("删除数据成功");
for(;i<=maxIndex;i++){
ems[i]=ems[i+1];
b1=true;
maxIndex--;
}
}
}
if(!b1){
System.out.println("你要删除的人不存在");
}
}
/*
* 修改
*/
public static void updateEmployee(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要修改的员工姓名");
String updateName=sc.next();
boolean b1=false;
for(int i=0;i<=maxIndex;i++){
if(ems[i].getName().equals(updateName)){
ems[i].display();
System.out.println("请重新输入员工信息");
System.out.println("请输入员工编号");
String id=sc.next();
System.out.println("请输入员工姓名");
String name=sc.next();
System.out.println("请输入员工职务(普通员工,经理,董事长)");
String position=sc.next();
System.out.println("请输入员工请假天数");
int holiday=sc.nextInt();
System.out.println("请输入员工基本工资");
double salary=sc.nextDouble();
if(position.equals("普通员工")){
Employee newOne=new CommonEmployee(id, name, position, holiday, salary);
System.out.println("修改数据成功");
newOne.display();
ems[i]=newOne;
}
else if(position.equals("经理")){
Employee newOne=new Manager(id, name, position, holiday, salary);
System.out.println("修改数据成功");
newOne.display();
ems[i]=newOne;
}
else if(position.equals("董事长")){
Employee newOne=new Director(id, name, position, holiday, salary);
System.out.println("修改数据成功");
newOne.display();
ems[i]=newOne;
}
else{
System.out.println("你所输入的职务不存在");
}
}
}
}
/*
* 查找
*/
public static void queryEmployee(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入员工姓名");
String name=sc.next();
boolean b1=false;
for(int i=0;i<=maxIndex;i++){
if(ems[i].getName().equals(name)){
ems[i].display();
b1=true;
}
}
if(!b1){
System.out.println("你要查找的人不存在");
}
}
/*
* main方法
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 业务选择界面
*
*/
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("|--------------|");
System.out.println("|----1 增加-----|");
System.out.println("|----2 删改-----|");
System.out.println("|----3 修改-----|");
System.out.println("|----4 查询-----|");
System.out.println("|----5 退出-----|");
System.out.println("|--------------|");
System.out.println("请选择业务:");
int choose=sc.nextInt();
/*
* switch语句
*/
switch(choose){
case 1:
addEmplyee();
break;
case 2:
delEmployee();
break;
case 3:
updateEmployee();
break;
case 4:
queryEmployee();
break;
case 5:
System.exit(0);
default:
System.out.println("你所需的业务不存在,重新输入");
}
}
}
}