【Introducción del caso】
- detalles de la misión
Una empresa tiene varios departamentos. La información del empleado incluye nombre, tipo, departamento y salario básico.
basicSalary, existen tres tipos de empleados: administradores, vendedores y trabajadores.
El personal del departamento financiero de la empresa debe calcular los salarios reales de los empleados cada mes.
Salario real = ingreso mensual – impuesto sobre la renta personal a pagar.
en:
(1) El método de cálculo del ingreso mensual se determina según el tipo:
Administrador: ingreso mensual = salario base + bonificación
Vendedor: ingreso mensual = salario básico + ventas monto de ventas * tasa de comisión
Trabajadores: ingreso mensual = salario base + pago de horas extrasPago de horas extras
(2) Se unifica la forma de pago del IRPF y se deducen distintas proporciones del IRPF según los ingresos mensuales:
Ingreso mensual 5000 yuanes, impuesto sobre la renta: 0 yuanes.
5000<ingreso mensual⩽15000, impuesto sobre la renta: ingreso mensual*5%.
15.000<ingreso mensual, impuesto sobre la renta: ingreso mensual*20%.
Se requiere escribir 5 clases, a saber: clase abstracta Empleado, clase administrador Admin, clase vendedor
Clase vendedor y trabajador, y escribir clase de demostración SalayDemo para pruebas.
Se requiere que estas clases se coloquen en el paquete cn.edu.gpnu.company.
【Objetivo del caso】
Aprenda a analizar las ideas lógicas para realizar la tarea de "calcular los salarios de los empleados".
Capaz de completar de forma independiente la redacción, compilación y operación del código fuente del programa "calcular el salario de los empleados".
Dominar los puntos de conocimiento de la herencia en Java.
Dominar la escritura y el uso de clases abstractas y métodos abstractos.
[Resultados de la ejecución]
[Código de ejecución]
1.
package cn.edu.gpnu.bank.company;
class Admin extends Employee {
double bonus;
public Admin(String name, String type, String department, double basicSalary, double bonus) {
super(name, type, department, basicSalary);
this.bonus = bonus;
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
public double getIncome(){
return (getBasicSalary()+getBonus());
}
}
package cn.edu.gpnu.bank.company;
abstract public class Employee {
String name;
String type;
String department;
double basicSalary;
public Employee(String name, String type, String department, double basicSalary) {
this.name = name;
this.type = type;
this.department = department;
this.basicSalary = basicSalary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public double getBasicSalary() {
return basicSalary;
}
public void setBasicSalary(double basicSalary) {
this.basicSalary = basicSalary;
}
abstract public double getIncome();
public double getTax(){
double income = getIncome();
if(income<=5000)
{
return 0;
}
if(income>5000 && income<=15000)
{
return income*0.05;
}
else
{
return income * 0.2;
}
}
public String info(){
return"姓名:"+this.name+",类型:"+this.type+",部门:"+this.department
+",月收入:"+getIncome()+"元,所得税:"+getTax()+"元,实发工资:"
+(getIncome()-getTax())+"元";
}
}
package cn.edu.gpnu.bank.company;
class Salesman extends Employee {
double saleAmount;
double rate;
public Salesman(String name, String type, String department, double basicSalary, double saleAmount, double rate) {
super(name, type, department, basicSalary);
this.saleAmount = saleAmount;
this.rate = rate;
}
public double getSaleAmount() {
return saleAmount;
}
public void setSaleAmount(double saleAmount) {
this.saleAmount = saleAmount;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public double getIncome() {
return (getBasicSalary()+getSaleAmount()*getRate());
}
}
package cn.edu.gpnu.bank.company;
class Worker extends Employee {
double overtimePay;
public Worker(String name, String type, String department, double basicSalary, double overtimePay) {
super(name, type, department, basicSalary);
this.overtimePay = overtimePay;
}
public double getOvertimePay() {
return overtimePay;
}
public void setOvertimePay(double overtimePay) {
this.overtimePay = overtimePay;
}
public double getIncome() {
return (getBasicSalary()+getOvertimePay());
}
}
package cn.edu.gpnu.bank.company;
public class SalayDemo {
public static void main(String[] args) {
Admin admin = new Admin("张三", "管理员",
"研发部", 14000, 5600);
Salesman salesman = new Salesman("李四", "销售员",
"天河销售部", 6000, 98900, 0.03);
Worker worker = new Worker("王五", "工人",
"南沙制造场", 2500, 1350);
System.out.println(admin.info());
System.out.println(salesman.info());
System.out.println(worker.info());
}
}