Advertisement

公司计算员工工资

阅读量:

一、定义Employee

该父类涵盖了所有员工的相关信息。
属性包括每位员工的姓名以及其出生月份。
该方法通过参数month获取对应的工资标准;当该月恰为员工生日时,默认会额外发放100元。

复制代码
 public abstract class Employee {

    
  
    
     private String name; //员工姓名
    
     private int month; // 员工生日月份
    
  
    
     public abstract double salary(int month);
    
  
    
     public Employee() {
    
     }
    
  
    
     public Employee(String name, int month) {
    
     this.name = name;
    
     this.month = month;
    
     }
    
  
    
     public String getName() {
    
     return name;
    
     }
    
  
    
     public void setName(String name) {
    
     this.name = name;
    
     }
    
  
    
     public int getMonth() {
    
     return month;
    
     }
    
  
    
     public void setMonth(int month) {
    
     this.month = month;
    
     }
    
 }

HourlyEmployee:该类子类为按小时计酬的员工,在每月工作时间超出160小时的部分将按照加班费支付方式结算。参数包括每小时的工资以及每位员工当月的工作时长。

复制代码
 public class HourlyEmployee extends Employee{

    
     private double hourSalary; //时薪
    
     private int hours; //工作时长
    
  
    
     public HourlyEmployee(double hourSalary, int hours) {
    
     this.hourSalary = hourSalary;
    
     this.hours = hours;
    
     }
    
  
    
     public HourlyEmployee(String name, int month, double hourSalary, int hours) {
    
     super(name, month);
    
     this.hourSalary = hourSalary;
    
     this.hours = hours;
    
     }
    
  
    
     public double getHourSalary() {
    
     return hourSalary;
    
     }
    
  
    
     public void setHourSalary(double hourSalary) {
    
     this.hourSalary = hourSalary;
    
     }
    
  
    
     public int getHours() {
    
     return hours;
    
     }
    
  
    
     public void setHours(int hours) {
    
     this.hours = hours;
    
     }
    
  
    
     @Override
    
     public double salary(int month) {
    
     double salary = 0;
    
  
    
     //判断每月工作时长是否超过160小时
    
     if (hours > 160){
    
         salary = 160 * this.hourSalary + (this.hours - 160) * 1.5 * this.hourSalary;
    
     }
    
     //判断工作月份是否过生日
    
     if (super.getMonth() == month){
    
         salary += 400;
    
         System.out.println(super.getName() + "本月过生日,奖励400元");
    
     }
    
     return salary;
    
     }
    
 }

SalesEmployee:作为Employee的一个子类,在销售领域工作的人工智能系统角色;其薪酬体系基于月销售额以及相应的提成比例计算得出。其属性包括:每月销售额以及提成百分比

复制代码
 public class SalesEmployee extends Employee{

    
     private double monthSum; //月销售额
    
     private double upRate; //提成率
    
  
    
     public SalesEmployee(double monthSum, double upRate) {
    
     this.monthSum = monthSum;
    
     this.upRate = upRate;
    
     }
    
  
    
     public SalesEmployee(String name, int month, double monthSum, double upRate) {
    
     super(name, month);
    
     this.monthSum = monthSum;
    
     this.upRate = upRate;
    
     }
    
  
    
     @Override
    
     public double salary(int month) {
    
     double salary = this.monthSum * this.upRate;
    
     if (super.getMonth() == month){
    
         salary += 400;
    
         System.out.println(super.getName() + "本月过生日,奖励400元");
    
     }
    
     return salary;
    
     }
    
  
    
  
    
     public SalesEmployee() {
    
  
    
     }
    
  
    
     public double getMonthSum() {
    
     return monthSum;
    
     }
    
  
    
     public void setMonthSum(double monthSum) {
    
     this.monthSum = monthSum;
    
     }
    
  
    
     public double getUpRate() {
    
     return upRate;
    
     }
    
  
    
     public void setUpRate(double upRate) {
    
     this.upRate = upRate;
    
     }
    
 }

BasePlusSalesEmployee继承自SalesEmployee,并具有固定底薪的销售人员特征。该类员工的基本薪酬与他们的销售业绩直接挂钩。其工资结构包括基本薪酬与销售业绩相关的提成。属性:基本薪酬

复制代码
 public class BasePlusSaleEmployee extends SalesEmployee{

    
     private double baseSalary;
    
     
    
     public double getBaseSalary() {
    
     return baseSalary;
    
     }
    
  
    
     public void setBaseSalary(double baseSalary) {
    
     this.baseSalary = baseSalary;
    
     }
    
  
    
     public BasePlusSaleEmployee(String name, int month, double monthSum, double upRate, double baseSalary) {
    
     super(name, month, monthSum, upRate);
    
     this.baseSalary = baseSalary;
    
     }
    
  
    
     public BasePlusSaleEmployee(double baseSalary) {
    
     this.baseSalary = baseSalary;
    
     }
    
  
    
     @Override
    
     public double salary(int month) {
    
     double finalSalary = baseSalary + super.getUpRate() * super.getMonthSum();
    
     if (super.getMonth() == month){
    
         finalSalary += 400;
    
         System.out.println(super.getName() + "过生日,奖励400元");
    
     }
    
     return finalSalary;
    
 //        return 0;
    
     }
    
 }

三、测试类

根据要求对文本进行改写

复制代码
 public class Test {

    
     public static void main(String[] args) {
    
     Employee[] employees = new Employee[10];
    
     employees[0] = new SalariedEmployee("张三",3,3000);
    
     employees[1] = new HourlyEmployee("李四",5,15.0,240);
    
     employees[2] = new SalesEmployee("王五",6,5000,0.8);
    
     employees[3] = new BasePlusSaleEmployee("张安", 6, 5000.0, 0.6, 3500);
    
     for (int i = 0; i < employees.length; i++){
    
         if (employees[i] != null){
    
             double salary = employees[i].salary(6);
    
             System.out.println(employees[i].getName() + "的工资是" + salary);
    
         }
    
     }
    
     }
    
 }

全部评论 (0)

还没有任何评论哟~