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

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


Employee:这是所有员工总的父类,
                     属性:员工的姓名,员工的生日月份。
                     方法:getSalary(int month) 根据参数月份来确定工资,
        如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。
        属性:月薪
HourlyEmployee:Employee的子类,按小时拿工资的员工,
                每月工作超出160小时的部分按照1.5倍工资发放。
        属性:每小时的工资、每月工作的小时数
SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。
        属性:月销售额、提成率
BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,
                    工资由底薪加上销售提成部分。
         属性:底薪。
写一个程序,把若干各种类型的员工放在一个Employee数组里,
写一个函数,打印出某月每个员工的工资数额。
注意:要求把每个类都做成完全封装,不允许非私有化属性。

public class Employee
//所有员工总的父类 
{
	private String name;
	private int month;//员工生日月份
	
	public Employee(String name,int month)
	{
		this.name=name;
		this.month=month;
	}
	
	public double getSalary(int month)
	{	
		if(this.month==month)
			return 100;
		else
			return 0;		
	}
	
	public String getName()
	{
		return name;
	}	
}

//固定工资的员工
class SalariedEmployee extends Employee
{
	private int monthly_salary;	//月薪

	public SalariedEmployee(String name,int month,int monthly_salary)
	{
		super(name,month);
		this.monthly_salary=monthly_salary;
	}
	
	public double getSalary(int month)
	{
		return monthly_salary+super.getSalary(month);
	}
}

//按小时拿工资的员工
class HourlyEmployee extends Employee
{
	private int hourly_wage;	//每小时的工资
	private int working_hours;	//每月的工作时长
	
	public HourlyEmployee (String name,int month,int hourly_wage,int working_hours)
	{
		super(name,month);
		this.hourly_wage=hourly_wage;
		this.working_hours=working_hours;
	}
	
	public double getSalary(int month)
	{
		double salary=0.0;
		if(working_hours>160)
			salary+=hourly_wage*(working_hours-160)*1.5+hourly_wage*160;
		else
			salary+=hourly_wage*working_hours;

		return salary+super.getSalary(month);
	}	
}

//销售人员
class SalesEmployee extends Employee
{
	private int monthly_sales;	//销售额
	private double rate_of_extraction;//提成率
	
	public SalesEmployee (String name,int month,int monthly_sales,double rate_of_extraction)
	{
		super(name,month);
		this.monthly_sales=monthly_sales;
		this.rate_of_extraction=rate_of_extraction;
	}

	public double getSalary(int month)
	{
		return monthly_sales*rate_of_extraction+super.getSalary(month);
	}
}

//有固定底薪的销售人员
class BasedPlusSalesEmployee extends SalesEmployee
{
	private int base_salary;	//底薪

	public BasedPlusSalesEmployee(String name,int month,
            int monthly_salese,double rate_of_extraction,int base_salary)
	{
		super(name,month,monthly_salese, rate_of_extraction);
		this.base_salary=base_salary;
	}
	public double getSalary(int month)
	{
		return base_salary+super.getSalary(month);
	}
}


=========================
查询代码:

import java.util.Scanner;
public class query
{
	public static void main(String[] args)
	{
		Employee[] staff = new Employee[4];
		staff[0]=new SalariedEmployee("赵一",1,6000);
		staff[1]=new HourlyEmployee("钱二",6,40,200);
		staff[2]=new SalesEmployee("孙三",9,40000,0.2);
		staff[3]=new BasedPlusSalesEmployee("李四",12,45000,0.22,2800);
		while(true)
		{
			System.out.print("输入要查询的月份(输入0退出):");
			Scanner sc = new Scanner(System.in);
			int month = sc.nextInt();

			if (month==0)
				break;

			if(month>12||month<1)
			{
				System.out.println("请输入正确的月份!");
				System.out.println("================");
				continue;
			}	
			
			System.out.println("=============================");
			for(int i=0;i<4;i++)
				System.out.println("姓名:"+staff[i].getName()+"\t"+"工资:"+staff[i].getSalary(month));
			System.out.println("=============================");
		
		}
	}
}

 

  • 30
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值