员工管理系统java版

 更新时间:2017年11月14日 14:56:40   作者:李广亮  
这篇文章主要为大家详细介绍了java版的员工管理系统,,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

员工管理系统要求如下:

通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为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中的纸老虎之泛型

    Java中的纸老虎之泛型

    泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。
    2021-09-09
  • Java中用POI实现将数据导出到Excel

    Java中用POI实现将数据导出到Excel

    这篇文章主要介绍了Java中用POI实现将数据导出到Excel,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java小白第一次就能看懂的网络编程

    Java小白第一次就能看懂的网络编程

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。本文介绍了一些网络编程基础的概念,并用Java来实现TCP和UDP的Socket的编程,来让读者更好的了解其原理
    2021-08-08
  • JAVA线上常见问题排查手段(小结)

    JAVA线上常见问题排查手段(小结)

    这篇文章主要介绍了JAVA线上常见问题排查手段(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • mybatis 使用jdbc.properties文件设置不起作用的解决方法

    mybatis 使用jdbc.properties文件设置不起作用的解决方法

    这篇文章主要介绍了mybatis 使用jdbc.properties文件设置不起作用的解决方法,需要的朋友可以参考下
    2018-03-03
  • Java+Appium实现屏幕录制功能

    Java+Appium实现屏幕录制功能

    这篇文章主要介绍了Java如何利用Appium实现屏幕录制功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 利用Java制作字符动画实例代码

    利用Java制作字符动画实例代码

    这篇文章主要给大家介绍了关于如何利用Java制作字符动画的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Java使用sftp定时下载文件的示例代码

    Java使用sftp定时下载文件的示例代码

    SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。接下来通过本文给大家介绍了Java使用sftp定时下载文件的示例代码,感兴趣的朋友跟随程序员之家小编一起看看吧
    2018-05-05
  • SpringBoot Validation入参校验国际化的项目实践

    SpringBoot Validation入参校验国际化的项目实践

    在Spring Boot中,可以使用Validation和国际化来实现对入参的校验,本文就来介绍一下SpringBoot Validation入参校验国际化,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Springboot自动扫描包路径来龙去脉示例详解

    Springboot自动扫描包路径来龙去脉示例详解

    这篇文章主要介绍了Springboot自动扫描包路径来龙去脉示例详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论

?


http://www.vxiaotou.com