java根据给定的条件计算每月工资和年终奖有多少

题目描述

教师按职称,可分为教授,副教授,讲师和助教。其中教师除基本工资外,还有课酬。 教授,副教授,讲师和助教的基本工资分别为:7500,5500,4200,4100

按职称的不同,课酬标准也略有不同,教授,副教授,讲师和助教,无论哪个级别全年都必须要达到256课时基本工作量

对于超出的部分,标准分别为80 70 60 60进行计算,再平均到12个月进行发放。

教师在年终会根据综合表现进行评级,有优秀、称职、基本称职和不称职四个等级, 根据考评等级,

按150%,100%,80%,60%进行年终奖的发放。

请合理设计并实现相应的类,完成以下问题

张三是我院的一名教授,2023年被评为优秀教师,他今年共承担了345课时的总工作量,请你帮他算算每月工资有多少?年终奖是多少?

源代码

class Teacher {
    private String name;
    private String title;
    private double basicSalary;
    private int totalWorkload;
    private String evaluation;

    public Teacher(String name, String title, double basicSalary, int totalWorkload, String evaluation) {
        this.name = name;
        this.title = title;
        this.basicSalary = basicSalary;
        this.totalWorkload = totalWorkload;
        this.evaluation = evaluation;
    }

    public double calculateMonthlySalary() {
        double coursePayRate;
        if (title.equals("教授")) {
            coursePayRate = 80;
        } else if (title.equals("副教授")) {
            coursePayRate = 70;
        } else if (title.equals("讲师") || title.equals("助教")) {
            coursePayRate = 60;
        } else {
            coursePayRate = 0;
        }

        int baseWorkload = 256;
        int extraWorkload = Math.max(totalWorkload - baseWorkload, 0);
        double extraPay = extraWorkload * basicSalary / baseWorkload * coursePayRate / 100;
        double monthlySalary = (basicSalary + extraPay) / 12;
        return monthlySalary;
    }

    public double calculateYearEndBonus() {
        double bonusRate;
        if (evaluation.equals("优秀")) {
            bonusRate = 1.5;
        } else if (evaluation.equals("称职")) {
            bonusRate = 1.0;
        } else if (evaluation.equals("基本称职")) {
            bonusRate = 0.8;
        } else if (evaluation.equals("不称职")) {
            bonusRate = 0.6;
        } else {
            bonusRate = 0;
        }

        double yearEndBonus = basicSalary / 12 * bonusRate;
        return yearEndBonus;
    }
}

public class Main {
    public static void main(String[] args) {
        Teacher zhangSan = new Teacher("张三", "教授", 7500, 345, "优秀");
        double monthlySalary = zhangSan.calculateMonthlySalary();
        double yearEndBonus = zhangSan.calculateYearEndBonus();

        System.out.printf("张三的每月工资为:%.2f\n", monthlySalary);
        System.out.printf("张三的年终奖为:%.2f\n", yearEndBonus);
    }
}

以上代码中,我们创建了一个Teacher类来表示教师。在构造函数中,我们传入教师的姓名、职称、基本工资、总工作量和考评等级。然后,我们定义了calculateMonthlySalary方法来计算每月工资,根据教师的职称和总工作量,计算出超出基本工作量部分的课酬,并将其平均到12个月进行发放。最后,我们定义了calculateYearEndBonus方法来计算年终奖,根据教师的考评等级,按照一定的比例计算年终奖金额。

main函数中,我们创建了一个名为zhangSan的教师对象,表示张三。根据题目中的条件,我们传入张三的相关信息,并调用calculateMonthlySalarycalculateYearEndBonus方法来计算每月工资和年终奖。最后,使用System.out.printf方法输出结果,保留两位小数。

请注意,以上代码中的职称和考评等级的判断是基于字符串的比较,因此需要确保传入的职称和考评等级与题目中的要求一致。同时,代码中假设每个月的天数相等,没有考虑闰年的情况。

运行截图

图片[1]-java根据给定的条件计算每月工资和年终奖有多少-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享