Java实现员工管理系统

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

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

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

需求说明:

员工信息的基本情况
―――――――――普通员工―――――――――C
属性:员工编号、员工姓名、员工职务、请假天数、基本工资
普通员工工资:
在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助
基本工资+基本工资*0.1+基本工资*0.5+200
―――――――――C经理――――――――――C
属性:员工编号、员工姓名、员工职务、请假天数、基本工资
经理工资:
在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
基本工资+基本工资*0.2+基本工资*0.5+500
――――――――――-董事――――――――――C
属性:员工编号、员工姓名、员工职务、请假天数、基本工资
董事工资:
在基本工资的基础上增加8%的工作餐,30%的岗位补助,2000元住房补助,3000元投资补助
基本工资+基本工资*0.08+基本工资*0.3+2000+3000
――――――――――C其他―――――――――――
工资扣除部分,所有员工都一样
无请假,基本工资全发,有请假,扣除每天平均工资 * 请假天数

大体设计思路:

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

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

以下贴出代码:

首先是父类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();
 }

}

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 连接 连接池产生原因 连接池实现原理 小结 TEMPERANCE:Eat not to dullness;drink not to elevation.节制
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上。-- 毕玄 1. 命名风格 【书摘】类名用 UpperCamelC
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个人在用”。哪怕只是throw了一个新的Exception。哈哈,这是我犯的错误。一、接口和抽象类类,即一个对象。先抽象类,就是抽象出类的基础部分,即抽象基类(抽象类)。官方定义让人费解,但是记忆方法是也不错的 —包含抽象方法的类叫做抽象类。接口
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket一、引子文件,作为常见的数据源。关于操作文件的字节流就是 —FileInputStream&amp;FileOutputStream。
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节。交流QQ群:【编程之美 365234583】http://qm.qq.com/cgi-bin/qm/qr?k=FhFAoaWwjP29_Aonqz
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程与多线程 线程是什么? 线程(Thread)是一个对象(Object)。用来干什么?Java 线程(也称 JVM 线程)是 Java 进程内允许多个同时进行的任务。该进程内并发的任务成为线程(Thread),一个进程里至少一个线程。 Ja
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket在面向对象编程中,编程人员应该在意“资源”。比如?1String hello = &quot;hello&quot;; 在代码中,我们
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 《程序兵法:Java String 源码的排序算法(一)》 文章工程:* JDK 1.8* 工程名:algorithm-core-le
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 一、父子类变量名相同会咋样? 有个小故事,今天群里面有个人问下面如图输出什么? 我回答:60。但这是错的,答案结果是 40 。我知错能改,然后说了下父子类变
作者:泥瓦匠 出处:https://www.bysocket.com/2021-10-26/mac-create-files-from-the-root-directory.html Mac 操作系统挺适合开发者进行写代码,最近碰到了一个问题,问题是如何在 macOS 根目录创建文件夹。不同的 ma
作者:李强强上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。一、引子在Java世界里,99%的工作都是处理这高层。那么二进制,字节码这些会在哪里用到呢?自问自答:在跨平台的时候,就凸显神功了。比如说文件读写,数据通信,还
1 线程中断 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程表示一个运行中的线程,通过其他线程调用了该线程的 方法,使得该线程中断标志位属性改变。 深入思考下,线程中断不是去中断了线程,恰恰是用来通知该线程应该被中断了。具体是一个标志位属性,
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocketReprint it anywhere u want需求 项目在设计表的时候,要处理并发多的一些数据,类似订单号不能重复,要保持唯一。原本以为来个时间戳,精确到毫秒应该不错了。后来觉得是错了,测试环境下很多一
纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 加微信:bysocket01
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocketReprint it anywhere u want.文章Points:1、介绍RESTful架构风格2、Spring配置CXF3、三层初设计,实现WebService接口层4、撰写HTTPClient 客户
Writer :BYSocket(泥沙砖瓦浆木匠)什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过(逃哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉。不妨总结总结。一、什么是回调回调,回调。要先有调用,才有调用者和被调用者之间的回调。所以在百
Writer :BYSocket(泥沙砖瓦浆木匠)一、什么大小端?大小端在计算机业界,Endian表示数据在存储器中的存放顺序。百度百科如下叙述之:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加
What is a programming language? Before introducing compilation and decompilation, let&#39;s briefly introduce the Programming Language. Programming la
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket泥瓦匠喜欢Java,文章总是扯扯Java。 I/O 基础,就是二进制,也就是Bit。一、Bit与二进制什么是Bit(位)呢?位是CPU
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocket一、前言 泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标:专注很重要。专注Java 基础 + H5(学习) 其他操作系统,算法,数据结构当成课外书博览。有时候,就是那样你越是专注方面越