Java实现员工管理系统

 更新时间:2018年01月11日 11:52:24   作者:SleepException  
这篇文章主要为大家详细介绍了Java实现员工管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java实现员工管理系统的具体代码,供大家参考,具体内容如下

本系统主要练习到的相关内容:

1、 流程控制语句
2、 类、对象
3、 封装、继承、多态
4、 方法的重载、重写
5、 访问修饰符
6、 static

需求说明:

员工信息的基本情况
—————————普通员工—————————–
属性:员工编号、员工姓名、员工职务、请假天数、基本工资
普通员工工资:
在基本工资的基础上增加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
——————————–其他———————————
工资扣除部分,所有员工都一样
无请假,基本工资全发,有请假,扣除每天平均工资 * 请假天数

大体设计思路:

员工父类一个,普通员工,经理,董事长子类各一个,分别重写父类的工资方法。最后一个测试类。
实现后界面如图:

父类子类的编写没什么问题,注意尽量做好封装,属性最好用private修饰。小编偷了个懒,主要把时间用在测试类的编写上o( ̄ε ̄*)o。
注意:由于本系统只是将对象存于对象数组,数组初始化时定长设定为100,系统会自动初始化每个数组元素为null,所以在写测试类的方法时一定注意写好判断预防遍历赋值发生的空指针错误,小编比较笨,所以饶了好一会才写出来(¬_¬)
还有就是如果更改员工的资料时注意,若是员工的职位发生变化该怎么处理,毕竟对象变了,处理工资的方法也不一样。

以下贴出代码:

首先是父类Employee

//父类
public class Employee {
 String ID;
 String name;
 String position;
 int holiday;
 double salary;
 public Employee(){}
 public void sumSalary(){}
 public void display(){
  System.out.println("ID:"+ID+",姓名:"+name+",职位:"+position+",请假天数:"+holiday+",工资:"+salary);
 }
}

三个子类:

public class CommonEmployee extends Employee{
 @Override
 public void sumSalary(){
  super.salary=super.salary+super.salary*0.1+super.salary*0.5+200-super.holiday*(super.salary/30);
 }
}
public class Manager extends Employee{
 @Override
 public void sumSalary(){
  super.salary=super.salary+super.salary*0.2+super.salary*0.5+200-super.holiday*(super.salary/30);
 }
}
public class Director extends Employee{
 @Override
 public void sumSalary(){
  super.salary=super.salary+super.salary*0.08+super.salary*0.3+2000+3000-super.holiday*(super.salary/30);
 }
}

接下来就是关键的测试类,这里完成增删改查== 有点多。

public class TestEMD {
 static Scanner sc = new Scanner(System.in);
 static Employee[] em = new Employee[100];

 public static void caoZuo() {
  System.out.println("----  工资管理系统     ----");
  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("-------------------------------");
  System.out.println("请输入你要选择的操作:");
  Scanner sc = new Scanner(System.in);
  String s = sc.next();
  switch (s) {
  case "1":
   addEmployee();
   break;
  case "2":
   delEmployee();
   break;
  case "3":
   updateEmployee();
   break;
  case "4":
   queryEmployee();
   break;
  case "0":
   System.out.println("谢谢使用O(∩_∩)O");
   break;
  default:
   System.out.println("指令错误请重新输入!");
   caoZuo();
   break;
  }
 }

 public static void addEmployee() {
  System.out.println("------增加员工------");
  System.out.println("请输入相关信息:");
  System.out.print("ID:");
  String id = sc.next();
  System.out.print("姓名:");
  String name = sc.next();
  System.out.print("职务:");
  String position = sc.next();
  System.out.print("请假天数:");
  int holiday = sc.nextInt();
  System.out.print("基本工资:");
  double salary = sc.nextDouble();
  switch (position) {
  case "普通员工":
   Employee a = new CommonEmployee();
   a.ID = id;
   a.name = name;
   a.position = "普通员工";
   a.holiday = holiday;
   a.salary = salary;
   a.sumSalary();
   for (int i = 0; i < 100; i++) {
    if (em[i] == null) {
     em[i] = a;
     System.out.println("添加成功!");
     em[i].display();
     break;
    } else {
     continue;
    }
   }
   break;
  case "经理":
   Employee b = new Manager();
   b.ID = id;
   b.name = name;
   b.position = "经理";
   b.holiday = holiday;
   b.salary = salary;
   b.sumSalary();
   for (int i = 0; i < 100; i++) {
    if (em[i] == null) {
     em[i] = b;
     System.out.println("添加成功!");
     em[i].display();
     break;
    } else {
     continue;
    }
   }
   break;
  case "董事长":
   Employee c = new Director();
   c.ID = id;
   c.name = name;
   c.position = "董事长";
   c.holiday = holiday;
   c.salary = salary;
   c.sumSalary();
   for (int i = 0; i < 100; i++) {
    if (em[i] == null) {
     em[i] = c;
     System.out.println("添加成功!");
     em[i].display();
     break;
    } else {
     continue;
    }
   }
   break;
  default:
   System.out.println("不存在此职务,请重新输入!");
   addEmployee();
   break;
  }
  caoZuo();
 }

 public static void delEmployee() {
  System.out.println("----------删除员工---------");
  System.out.println("请输入员工姓名:");
  String n = sc.next();
  for (int i = 0; i < 100; i++) {
   if (em[i] != null) {
    if (em[i].name.equals(n)) {
     System.out.println("你要删除的是:" + em[i].toString());
     System.out.println("你确定要删除吗?\n [Y]确定,[N]取消");
     String s = sc.next();
     if (s.equals("y")) {
      em[i] = null;
      System.out.println("删除成功!");
      try {
       Thread.sleep(2000);
      } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      caoZuo();
     } else if (s.equals("n")) {
      caoZuo();
     } else {
      System.out.println("输入指令不正确,请重新输入!");
      delEmployee();
     }
    } else {
     if (i != 99) {
      continue;
     } else {
      System.out.println("你输入的账号不存在!请重新输入!");
      delEmployee();
     }

    }
   } else {
    if (i != 99) {
     continue;
    } else {
     System.out.println("你输入的账号不存在!请重新输入!");
     delEmployee();
    }
   }
  }
 }

 public static void updateEmployee() {
  System.out.println("--------------修改员工资料-------------");
  System.out.println("请输入你要修改的姓名:");
  String s = sc.next();
  out: for (int i = 0; i < 100; i++) {
   if (em[i] != null) {
    if (em[i].name.equals(s)) {
     System.out.println("你要修改的是:");
     em[i].display();
     System.out.println("请重新输入相关信息:");
     System.out.print("ID:");
     String id = sc.next();
     System.out.print("姓名:");
     String name = sc.next();
     System.out.print("职务:");
     String position = sc.next();
     System.out.print("请假天数:");
     int holiday = sc.nextInt();
     System.out.print("基本工资:");
     double salary = sc.nextDouble();
     switch (position) {
     case "普通员工":
      if (em[i].position.equals("普通员工")) {
       em[i].ID = id;
       em[i].name = name;
       em[i].position = position;
       em[i].holiday = holiday;
       em[i].salary = salary;
       em[i].sumSalary();
       System.out.println("修改成功!");
       em[i].display();
      } else {
       em[i] = null;
       Employee a = new CommonEmployee();
       a.ID = id;
       a.name = name;
       a.position = "普通员工";
       a.holiday = holiday;
       a.salary = salary;
       a.sumSalary();
       for (int j = 0; j < 100; j++) {
        if (em[j] == null) {
         em[j] = a;
         System.out.println("修改成功!");
         em[j].display();
         break;
        } else {
         continue;
        }
       }
      }
      break;
     case "经理":
      if (em[i].position.equals("经理")) {
       em[i].ID = id;
       em[i].name = name;
       em[i].position = position;
       em[i].holiday = holiday;
       em[i].salary = salary;
       em[i].sumSalary();
       System.out.println("修改成功!");
       em[i].display();
      } else {
       em[i] = null;
       Employee b = new Manager();
       b.ID = id;
       b.name = name;
       b.position = "经理";
       b.holiday = holiday;
       b.salary = salary;
       b.sumSalary();
       for (int j = 0; j < 100; j++) {
        if (em[j] == null) {
         em[j] = b;
         System.out.println("修改成功!");
         em[j].display();
         break;
        } else {
         continue;
        }
       }
      }
      break;
     case "董事长":
      if (em[i].position.equals("董事长")) {
       em[i].ID = id;
       em[i].name = name;
       em[i].position = position;
       em[i].holiday = holiday;
       em[i].salary = salary;
       em[i].sumSalary();
       System.out.println("修改成功!");
       em[i].display();
      } else {
       em[i] = null;
       Employee c = new Director();
       c.ID = id;
       c.name = name;
       c.position = "董事长";
       c.holiday = holiday;
       c.salary = salary;
       c.sumSalary();
       for (int j = 0; j < 100; j++) {
        if (em[j] == null) {
         em[j] = c;
         System.out.println("添加成功!");
         em[j].display();
         break;
        } else {
         continue;
        }
       }
      }
      break;
     default:
      System.out.println("不存在此职务,请重新输入!");
      addEmployee();
      break;
     }

     try {
      Thread.sleep(2000);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     caoZuo();
    } else {
     if (i != 99) {
      continue out;
     } else {
      System.out.println("你输入的员工不存在!请重新输入!");
      caoZuo();
     }
    }
   } else {
    if (i != 99) {
     continue out;
    } else {
     System.out.println("你输入的员工不存在!请重新输入!");
     caoZuo();
    }
   }
  }
 }

 public static void queryEmployee() {
  System.out.println("--------------所有员工信息---------------");
  for (int i = 0; i < 100; i++) {
   if (em[i] != null) {
    em[i].display();
   }
  }
  try {
   Thread.sleep(2000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  caoZuo();
 }

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  TestEMD.caoZuo();
 }

}

程序刚写完就来发帖了,简单测试并未发现什么问题,若是大家发现有什么不对的欢迎指正,谢谢啦。

更多学习资料请关注专题《管理系统开发》。

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

相关文章

  • Java创建student类详细代码例子

    Java创建student类详细代码例子

    这篇文章主要给大家介绍了关于Java创建student类的相关资料,学生类(Student)是一种面向对象的编程概念,其主要用于描述学生的属性和行为,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • SpringBoot中fastjson自定义序列化和反序列化的实战分享

    SpringBoot中fastjson自定义序列化和反序列化的实战分享

    在fastjson库中,为了提供灵活的序列化和反序列化机制,设计了一系列的扩展点,以下是在SpringBoot和SpringClould环境中对这些扩展点的详细介绍及其实战使用,通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-07-07
  • SpringCloud基本Rest微服务工程搭建过程

    SpringCloud基本Rest微服务工程搭建过程

    这篇文章主要介绍了SpringCloud基本Rest微服务工程搭建,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java泛型通配符的使用详解

    Java泛型通配符的使用详解

    本文主要介绍了Java泛型通配符的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 关于JVM翻越内存管理的墙

    关于JVM翻越内存管理的墙

    这篇文章主要介绍了JVM翻越内存管理的墙,由虚拟机管理内存看起来一切都很美好,但也正是因为把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,就不得不从Java虚拟机角度上去排查问题,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Spring配置数据源流程与作用详解

    Spring配置数据源流程与作用详解

    这篇文章主要介绍了使用SpringBoot配置多数据源的经验分享,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Spring AOP注解失效的坑及JDK动态代理

    Spring AOP注解失效的坑及JDK动态代理

    这篇文章主要介绍了Spring AOP注解失效的坑及JDK动态代理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Spring Cloud Eureka 搭建 & 集群方式

    Spring Cloud Eureka 搭建 & 集群方式

    这篇文章主要介绍了Spring Cloud Eureka 搭建 & 集群方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实现登录注册界面

    java实现登录注册界面

    这篇文章主要为大家详细介绍了java实现登录注册界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Java中null的意义及其使用时的注意事项说明

    Java中null的意义及其使用时的注意事项说明

    这篇文章主要介绍了Java中null的意义及其使用时的注意事项说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论