您的位置:首页 > 编程语言 > Java开发

员工管理系统java版

2017-11-14 14:56 651 查看

员工管理系统要求如下:

通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为100。

实现页面:

添加员工

查找员工

修改员工

删除员工、退出

工程目录结构:

1.Employee基类

/**
* @author 李广亮
*
*/
public class Employee {
/**
* 成员属性:ID、姓名、职务、请假天数、基本工资
*/
private String ID;
private String name;
private String job;
private int holiday;
private double salary;
/**
* 计算工资
*/
public double sunSalary(double salary, int holiday) {
return salary - (salary/30) * holiday;
}
/**
* get和set方法
*/
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
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;
}
/**
* toString()方法
*/
public String toString() {
return "编号:" + ID + ", 姓名:" + name + ", 职务" + job
+ ", 请假天数:" + holiday + ", 工资:" + salary;
}
}

2.普通员工类CommonEmployee

public class CommonEmployee extends Employee {
/**
* 普通员工工资
* 在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助
* @param 工资
* @param 请假天数
*/
@Override
public double sunSalary(double salary, int holiday) {
double sum = salary + salary*0.1 + salary*0.5 + 200;
return sum - sum/30 * holiday;
}
}

3.经理ManagerEmployee

public class ManagerEmployee extends Employee {
/**
* 经理工资
* 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
* @param 工资
* @param 请假天数
*/
@Override
public double sunSalary(double salary, int holiday) {
double sum = salary + salary*0.2 + salary*0.5 + 500;
return sum - sum/30 * holiday;
}
}

4.懂事DirectorEmployee

public class ManagerEmployee extends Employee {
/**
* 经理工资
* 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
* @param 工资
* @param 请假天数
*/
@Override
public double sunSalary(double salary, int holiday) {
double sum = salary + salary*0.2 + salary*0.5 + 500;
return sum - sum/30 * holiday;
}
}

5.业务逻辑类TestEMD

/**
* @author 李广亮
*
*/
public class TestEMD {
/**
* len代表数组的当前下标
*/
static int len = -1;
static Employee[] emp = new Employee[100];
static Scanner sc = new Scanner(System.in);
/**
* 增加新雇员
*/
public void addEmployee() {
Employee em = null;
System.out.println("---增加员工---");
System.out.print("请输入员工编号:");
String id = sc.next();
System.out.print("请输入员工姓名:");
String name = sc.next();
System.out.print("请输入员工职务(员工、经理、懂事):");
String job = sc.next();
System.out.print("请输入员工请假天数:");
int holiday = sc.nextInt();
System.out.print("请输入员工基本工资:");
double salary = sc.nextDouble();
//在此作一下逻辑判断,根据job的不同,创建不同的Employee子类
if(job.equals("员工")) {
em = new CommonEmployee();
} else if(job.equals("经理")) {
em = new ManagerEmployee();
} else if(job.equals("懂事")) {
em = new DirectorEmployee();
} else {
System.out.println("输入不正确!");
}
em.setID(id);
em.setName(name);
em.setJob(job);
em.setHoliday(holiday);
em.setSalary(salary);
//len先加1后使用,变为emp[0]
emp[++len] = em;
printEmployee(emp[len]);
System.out.println("添加成功!");
}
/**
* 删除员工
*/
public void deleteEmployee() {
System.out.println("------删除员工------");
System.out.println("---请输入员工姓名:---");
//设置一个boolean类型的flg标志,若查找不到则为false
boolean flg = false;
String name = sc.next();
for(int i=0; i<=len; i++) {
//若查找成功,则把emp[i]数组后面的指针往前移一位,覆盖掉当前的指向对象
if(emp[i].getName().equals(name)) {
printEmployee(emp[i]);
for(int j=i; j<=len; j++) {
emp[j] = emp[j+1];
}
//前移后,最后一位置空,len--
emp[len] = null;
len--;
System.out.println("删除成功!");
flg = true;
break;
}
}
if(!flg) {
System.out.println("查无此人,请重新输入:");
deleteEmployee();
}
}
/**
* 修改雇员信息
* @param args
* @return
*/
public void updateEmployee() {
System.out.println("------修改员工------");
System.out.println("---请输入员工姓名:---");
//设置一个boolean类型的flg标志,若查找不到则为false
boolean flg = false;
String name = sc.next();
for(int i=0; i<=len; i++) {
if(emp[i].getName().equals(name)) {
printEmployee(emp[i]);
System.out.println("---请按照提示输入修改信息---");
System.out.print("请输入员工编号:");
emp[i].setID(sc.next());
System.out.print("请输入员工姓名:");
emp[i].setName(sc.next());
System.out.print("请输入员工职务(员工、经理、懂事):");
emp[i].setJob(sc.next());
System.out.print("请输入员工请假天数:");
emp[i].setHoliday(sc.nextInt());
System.out.print("请输入员工基本工资:");
emp[i].setSalary(sc.nextDouble());
//修改完成后打印一下
printEmployee(emp[i]);
System.out.println("修改成功!");
flg = true;
break;
}
}
if(!flg) {
System.out.println("查无此人,请重新输入:");
updateEmployee();
}
}
/**
* 根据姓名查找雇员信息
* @param args
*/
public void findEmployee() {
System.out.println("------查找员工------");
System.out.println("---请输入员工姓名:---");
//设置一个boolean类型的flg标志,若查找不到则为false
boolean flg = false;
String name = sc.next();
for( int i=0; i<=len; i++) {
if(emp[i].getName().equals(name)) {
printEmployee(emp[i]);
System.out.println("查找成功!");
flg = true;
break;
}
}
if(!flg) {
System.out.println("查无此人,请重新输入:");
findEmployee();
}
}
/**
* 打印雇员信息
* @param args
*/
public void printEmployee(Employee em) {
System.out.print(" 编号: " + em.getID());
System.out.print(" 姓名: " + em.getName());
System.out.print(" 职务: " + em.getJob());
System.out.print(" 请假天数 : " + em.getHoliday());
//参数:1.基本工资 2.请假天数
double sum = em.sunSalary(em.getSalary(), em.getHoliday());
System.out.println(" 工资:" + sum);
}
public static void main(String[] args) {
TestEMD te = new TestEMD();
//开始界面
System.out.println("|----------------|");
System.out.println("|-----1. 增加 -----|");
System.out.println("|-----2. 删除 -----|");
System.out.println("|-----3. 修改 -----|");
System.out.println("|-----4. 查询 -----|");
System.out.println("|-----0. 退出 -----|");
System.out.println("|----------------|");
//业务选择
label : while(true) {
System.out.println("请选择业务:");
int select = sc.nextInt();
switch (select) {
case 1: //添加新雇员
te.addEmployee();
break;
case 2: //删除雇员
te.deleteEmployee();
break;
case 3: //修改雇员信息
te.updateEmployee();
break;
case 4: //根据姓名查找雇员信息
te.findEmployee();
break;
case 0: //退出
System.out.println("退出成功!");
break label;
default:
System.out.println("您输入的数字不正确!");
break;
}
}
}
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 员工管理系统