Java项目案例之---计算公司员工的工资(面向对象复习)

摘要:
计算公司员工的工资某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:doublegetSalary根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额。
计算公司员工的工资(面向对象复习)

某公司的雇员分为以下若干类:

Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。

SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪

HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数

SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率

BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。

写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额。

注意:要求把每个类都做成完全封装,不允许非私有化属性。

importjava.util.Calendar;

public classEmployee {
    private String name;//员工姓名
    private int month;//生日月份
    publicEmployee(){

    }
    public Employee(String name,intmonth){
        this.setName(name);
        this.setMonth(month);
    }
    publicString getName() {
        returnname;
    }

    public voidsetName(String name) {
        this.name =name;
    }

    public intgetMonth() {
        returnmonth;
    }

    public void setMonth(intmonth) {
        this.month =month;
    }

    /*** 判断员工是否当月过生日
     * @parammonth
     * @return是的话返回100,不是返回0
     */
    public static double getSalary(intmonth){
        //获取当前月份,属于工具类中的内容
        Calendar ca=Calendar.getInstance();
        int m=ca.get(Calendar.MONTH)+1;
        if(month==m){
            return 100;
        }else{
            return 0;
        }
    }
}
//固定月薪

public class SalariedEmployee extendsEmployee {

    private double monthsalary;//月薪

    publicSalariedEmployee(){



    }

    public SalariedEmployee(String name,intmonth){

        super(name,month);

    }

    public doublegetMonthsalary() {

        returnmonthsalary;

    }



    public void setMonthsalary(doublemonthsalary) {

        this.monthsalary =monthsalary;

    }



    /**
     * 计算固定月薪员工的工资

     * @parammonthsalary

     * @parammonth

     * @return固定月薪员工的工资

     */

    public double getmonth(double monthsalary,intmonth){

        double n=monthsalary+Employee.getSalary( month);

        returnn;

    }
}
//时薪*小时   超过160小时,超过部分1.5工资

public class HourlyEmployee extendsEmployee{

    private double hourlyWage;//时薪

    private int hour;//总时长

    publicHourlyEmployee(){



    }

    public HourlyEmployee(String name,intmonth){

        super(name,month);

    }

    public doublegetHourlyWage() {

        returnhourlyWage;

    }



    public void setHourlyWage(doublehourlyWage) {

        this.hourlyWage =hourlyWage;

    }



    public intgetHour() {

        returnhour;

    }



    public void setHour(inthour) {

        this.hour =hour;

    }



    /**
     * 计算时薪员工的工资

     * @paramhour

     * @paramhourlyWage

     * @parammonth

     * @return时薪员工的工资

     */

    public double gethour(int hour,double hourlyWage,intmonth){

        doublen;

        if(hour>160){

           n=160*hourlyWage+(hour-160)*hourlyWage*1.5+Employee.getSalary(month);

        }else{

            n=hour*hourlyWage+Employee.getSalary(month);

        }

        returnn;

    }

}
//销售额*提成率

public class SalesEmployee extendsEmployee{

    private int salesVolume;//销售额

    private double royalty;//提成率

    publicSalesEmployee(){



    }

    public SalesEmployee(String name,intmonth){

        super(name,month);

    }

    public intgetSalesVolume() {

        returnsalesVolume;

    }



    public void setSalesVolume(intsalesVolume) {

        this.salesVolume =salesVolume;

    }



    public doublegetRoyalty() {

        returnroyalty;

    }



    public void setRoyalty(doubleroyalty) {

        this.royalty =royalty;

    }



    /**
     * 计算提成

     * @paramsalesVolume

     * @paramroyalty

     * @return提成

     */

    public double getroyalty(int salesVolume,doubleroyalty){

       return salesVolume*royalty;

    }

}
//销售额*提成+底薪

public class BasePlusSalesEmployee extendsSalesEmployee{

   private double baseSalary;//底薪

    publicBasePlusSalesEmployee(){



    }

    public BasePlusSalesEmployee(String name,intmonth){

        super(name,month);

    }

    public doublegetBaseSalary() {

        returnbaseSalary;

    }



    public void setBaseSalary(doublebaseSalary) {

        this.baseSalary =baseSalary;

    }



    /**
     * 计算销售人员的工资

     * @paramsalesVolume

     * @paramroyalty

     * @parambaseSalary

     * @parammonth

     * @return销售人员月薪

     */

    public double getroyalty(int salesVolume,double royalty,double baseSalary,intmonth){

        return salesVolume*royalty+baseSalary+Employee.getSalary(month);

    }

}
public classEmployeeTest {
    public static voidmain(String[] args){
        SalariedEmployee a=new SalariedEmployee("月薪人",7);
        HourlyEmployee b=new HourlyEmployee("时薪人",10);
        BasePlusSalesEmployee c=new BasePlusSalesEmployee("提成人",1);
        System.out.println( a.getName()+":
月薪"+a.getmonth(10000,a.getMonth()));
        System.out.println(b.getName()+":
月薪"+b.gethour(170,20,b.getMonth()));
        System.out.println(c.getName()+":
月薪"+c.getroyalty(100,50,1000,c.getMonth()));

    }
}

运行结果:

月薪人:

月薪10100.0

时薪人:

月薪3500.0

提成人:

月薪6000.0

免责声明:文章转载自《Java项目案例之---计算公司员工的工资(面向对象复习)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python版的读取声音文件到常量数组Redis热点数据高频访问问题以及解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

vue之文本渲染

以前,我们一直使用{{}}的形式来呈现文本,但除了此方法之外,vue还提供了其他几种常见的文本呈现方法:v-text:更新元素的innerTextv html:更新元素一次的innerHTMLv:静态插值v-pre:以原始格式输出v-cooke:保留元素上的指令,直到相关实例完成编译˂!幸运的是,Vue还提供了v-text和v-html来呈现文本或元素。...

SQL Server中执行正则表达式

如果执行上述函数,将报告以下错误:SQL Server阻塞进程'syssp_可以为OACreate的访问执行以下SQL语句:USEmasterGOsp_configure'showadvancedoptions',1;戈尔配置;GOsp_配置'OleAutomationProcedures',1;戈尔配置;GOsp_配置'AdHocDistributedQu...

oracle触发器调试

如果触发器执行成功,不会出现第4个图,不成功,会出现数据调试信息,具体报错位置会定位到。F7单步执行4.出错时,会出现调试数据,双击调试数据,可以复制出来...

页面加载时自动执行(加载)js的几种方法

Js调用onload方法window.onload=function(){func1();func2();func3();}二、JQ方法1.整个页面的document全部加载完成以后执行。不幸的这种方式不仅要求页面的DOMtree全部加载完成,而且要求所有的外部图片和资源全部加载完成。更不幸的是,如果外部资源,例如图片需要很长时间来加载,那么这个js方法执行...

安装gulp教程(整理)

所以安装nodejs。...

neo4j修改密码

输入neo4j提供的可视界面,并输入::serverchange密码。键入原始密码和新密码以修改浏览器。在系统数据库(:usesystem)中,执行以下命令ALTERUSERneo4jSETPASSWORD“mynewpass”:;...