java大作业编一个程序打印出公司某月各员工工资
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:王镱澍
Java大作业
一、题目
白浪公司的雇员根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
雇员分为以下若干类:
SalariedEmployee:拿固定工资的员工。
HourlyEmployee:按小时拿工资的员工。
SalesEmployee:销售人员,工资由月销售额和提成率决定。
BasePlusSalesEmployee:有固定底薪的销售人员,工资由底薪加上销售提成。
公司会给SalaryEmployee每月另外发放2000元加班费,给 BasePlusSalesEmployee发放1000元加班费。编一个java程序创建上述若干类,并实现确定月份以及该月不同员工的工作情况后打印出该公司该月各员工工资,公司总的工资支出情况。
二、程序功能说明
编一个java程序创建上述若干类,并实现确定该月不同员工的工作情况以及输入月份后打印出该公司该月各员工工资,公司总的工资支出情况。
三、类、属性、方法说明
程序中已给出详细解释在此只作简要说明:
Employee:这是所有员工总的父类。
属性:员工的姓名和生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。
属性:月薪。
方法:每月工作超出160小时的部分按照1.5倍工资发放。
HourlyEmployee:Employee的子类,按小时拿工资的员工。
属性:每小时的工资、每月工作的小时数。
SalesEmployee:Employee的子类,销售人员。
属性:月销售额、提成率。
方法:工资由月销售额和提成率决定。
BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员。
属性:底薪。
方法:工资由底薪加上销售提成部分。
四、程序代码
import java.util.*;
class MyException extends Exception
{
MyException(){} //创建自己的异常定义
}
public class EmployeeTest
{
//月份输入函数。
static int scanf() throws MyException
{
Scanner in=new Scanner(System.in);
int s=in.nextInt();
if(s<1|s>12) { throw new MyException(); } //月份不正确时抛出定义的异常。 else return s;
}
//主函数入口。
public static void main(String[] args)
{
Employee ep[] = new Employee[4];
ep[0] = new SalariedEmployee("魏威",2,5000);
ep[1] = new HourlyEmployee("段利峰",8,80,242);
ep[2] = new SalesEmployee("林龙",11,300000,0.1);
ep[3] = new BasedPlusSalesEmployee("华溪",1,100000,0.15,1500);
System.out.println("请输入月份:");
int month=1;
int data=1;
while(data==1)
{
try {month=scanf();data=0;}
catch(MyException e) { System.out.println("月份是1-12月请输入正确月份"); }
}
System.out.println("白浪集团"+month+"月工资表:");
for(int i=0;i { System.out.println(ep[i].getName()+": "+ep[i].getSalary(month)); } //统计加班费 int result = 0; for(int i=0;i System.out.println("加班费: "+result); //统计本月给出员工的总工资 int salary=0; for(int i=0;i { salary +=ep[i].getSalary(month)+ep[i].getAddtionalSalary();} System.out.println("本月给出员工的总工资: "+salary); } //定义加班费接口 interface AddtionalSalary { int getAddtionalSalary(); } /** *这是所有员工总的父类。 *属性:员工的姓名和生日月份。 *方法:getSalary(),getName(),getAddtionalSalary() */ class Employee implements AddtionalSalary { private String name;//员工姓名 private int birth;//员工生日月份 public Employee(String name,int birth) { = name;this.birth = birth;} /** *方法说明:根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖 *励100元。 */ public int getSalary(int month) { int result = 0; if(month==birth) result = 100; return result; } public String getName() {return name;} //方法说明:获取员工姓名。 /** *方法说明: 公司会给SalaryEmployee每月另外发放2000元加班费,给 *BasePlusSalesEmployee发放1000元加班费 */ public int getAddtionalSalary() {return 0;} } /** *Employee的子类,拿固定工资的SalariedEmployee员工。 *属性:月薪 *方法:getSalary(),getAddtionalSalary(). */ class SalariedEmployee extends Employee { private int salaryPerMonth; public SalariedEmployee(String name,int birth,int salaryPerMonth)