NEFU 《JAVA语言程序设计》实验三 类的继承、接口和多态

1. (程序题)设计具有工作能力接口Workable,声明抽象方法updateName(),通过传入的字符串修改姓名;声明抽象方法calculateSalary(),返回计算的薪资

设计员工实体类Employee,公司下所有员工均包含,姓名,基本工资属性;并实现Workable接口,所有公司职员均具有相同的修改姓名行为

设计经理实体类Manager,经理也是一类员工,拥有经理级别;经理薪资 = 基本工资 * 级别 * 80%

设计销售实体类Seller,销售也是一类员工,拥有销售额,销售提成;销售薪资 = 基本工资 + 销售额 * 销售提成

所有员工一定是2种类型之一,即系统种不存在员工,只存在经理和销售

设计薪资业务逻辑操作类SalaryService,提供getTotalSalaries()方法,统计返回,传入的所有工作员工的薪资总额。

创建Test类,在主函数,输入一个经理的名字,一个经理的基本工资,一个经理的级别;再输入一个销售人员的名字,销售人员的基本工资,销售额,及销售提成。通过调用业务逻辑类计算的薪资总额,并输出,薪资保留两位小数。

输入输出例子:

输入:

zansan 5000 2

lisi 3000 20000 0.15

输出:

薪资总额: 14000.00

提交提醒:

(1)只有Test类是public的,且一定要放在最前面。

(2)所有类提交的时候不能有创建包的语句。

java 复制代码
package com.nefu.lessons;
// Test类
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class a08_experiment03_t1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入经理信息

        String[] managerInfo = scanner.nextLine().split(" ");
        String managerName = managerInfo[0];
        double managerBaseSalary = Double.parseDouble(managerInfo[1]);
        int managerLevel = Integer.parseInt(managerInfo[2]);

        // 输入销售人员信息

        String[] sellerInfo = scanner.nextLine().split(" ");
        String sellerName = sellerInfo[0];
        double sellerBaseSalary = Double.parseDouble(sellerInfo[1]);
        double salesAmount = Double.parseDouble(sellerInfo[2]);
        double salesCommission = Double.parseDouble(sellerInfo[3]);

        // 创建经理对象和销售人员对象
        Manager manager = new Manager(managerName, managerBaseSalary, managerLevel);
        Seller seller = new Seller(sellerName, sellerBaseSalary, salesAmount, salesCommission);

        // 创建员工列表
        List<Employee> employees = new ArrayList<>();
        employees.add(manager);
        employees.add(seller);

        // 计算薪资总额
        SalaryService salaryService = new SalaryService();
        double totalSalaries = salaryService.getTotalSalaries(employees);

        // 输出薪资总额
        System.out.printf("薪资总额: %.2f\n", totalSalaries);

        scanner.close();
    }
}
// 接口Workable
interface Workable {
    void updateName(String newName);
    double calculateSalary();
}

// 员工实体类Employee
abstract class Employee implements Workable {
    protected String name;
    protected double baseSalary;

    public Employee(String name, double baseSalary) {
        this.name = name;
        this.baseSalary = baseSalary;
    }

    @Override
    public void updateName(String newName) {
        this.name = newName;
    }
}

// 经理实体类Manager
class Manager extends Employee {
    private int level;

    public Manager(String name, double baseSalary, int level) {
        super(name, baseSalary);
        this.level = level;
    }

    @Override
    public double calculateSalary() {
        return baseSalary * level * 80 / 100.0;
    }
}

// 销售实体类Seller
class Seller extends Employee {
    private double salesAmount;
    private double salesCommission;

    public Seller(String name, double baseSalary, double salesAmount, double salesCommission) {
        super(name, baseSalary);
        this.salesAmount = salesAmount;
        this.salesCommission = salesCommission;
    }

    @Override
    public double calculateSalary() {
        return baseSalary + salesAmount * salesCommission;
    }
}

// 薪资业务逻辑操作类SalaryService
class SalaryService {
    public double getTotalSalaries(List<Employee> employees) {
        double totalSalaries = 0;
        for (Employee employee : employees) {
            totalSalaries += employee.calculateSalary();
        }
        return totalSalaries;
    }
}
相关推荐
呆呆敲代码的小Y1 分钟前
【游戏开发】C# 中的迭代器
java·开发语言·c#·迭代器
TinyMemory2 分钟前
Java 面向对象核心入门(六):this 关键字完全解析
java·笔记·面向对象·java新手·this关键字
benchmark_cc3 分钟前
K 线数据断层会对回测造成什么影响?从一个缺失交易日看懂量化策略为什么会失真
大数据·开发语言·数据分析·量化·股票数据·quantdash·量化数据源
萧瑟余晖4 分钟前
Java深入解析篇九之JavaStream API详解
java
benchmark_cc9 分钟前
数据 API 稳定性为什么会影响量化策略?从数据获取到信号执行的完整分析
开发语言·python·数据分析·量化·股票数据·quantdash·量化数据源
一只QAQ9 分钟前
c++项目
java·c++·算法
小蒜学长16 分钟前
基于SpringBoot + Vue的智能健身房管理系统的设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
DolitD17 分钟前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
jun_bai22 分钟前
Ecplise中发布项目到配置的tomcat中
java·服务器
liangbo722 分钟前
JVM规范第 6 章:Java 虚拟机指令集
java·jvm