姓名:王镱澍
Java大作业
一、题目
白浪公司的雇员根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
雇员分为以下若干类:
SalariedEmployee:拿固定工资的员工。
HourlyEmployee:按小时拿工资的员工。
SalesEmployee:销售人员,工资由月销售额和提成率决定。
BasePlusSalesEmployee:有固定底薪的销售人员,工资由底薪加上销售提成。
公司会给SalaryEmployee每月另外发放2000元加班费,给 BasePlusSalesEmployee发放1000元加班费。
编一个java程序创建上述若干类,并实现确定月份以及该月不同员工的工作情况后打印出该公司该月各员工工资,公司总的工资支出情况。
二、程序功能说明
编一个java程序创建上述若干类,并实现确定该月不同员工的工作情况以及输入月份后打印出该公司该月各员工工资,公司总的工资支出情况。
三、类、属性、方法说明
程序中已给出详细解释在此只作简要说明:
Employee:这是所有员工总的父类。
属性:员工的姓名和生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。
属性:月薪。
方法:每月工作超出160小时的部分按照倍工资发放。
HourlyEmployee:Employee的子类,按小时拿工资的员工。
属性:每小时的工资、每月工作的小时数。
SalesEmployee:Employee的子类,销售人员。
属性:月销售额、提成率。
方法:工资由月销售额和提成率决定。
BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员。
属性:底薪。
方法:工资由底薪加上销售提成部分。
四、程序代码
import .*;
class MyException extends Exception
{
MyException(){} etAddtionalSalary();}
etSalary(month)+ep[i].getAddtionalSalary();}
}
}
*/
class SalariedEmployee extends Employee
{
private int salaryPerMonth;
public SalariedEmployee(String name,int birth,int salaryPerMonth)
{
super(name,birth);
= salaryPerMonth;
}
public int getSalary(int month)
{
return + (month)+
();
}
public int getAddtionalSalary() {return 2000;}
}
/**
*Employee的子类,按小时拿工资的员工。
*属性:每小时的工资、每月工作的小时数。
*方法:getSalary()
*/
class HourlyEmployee extends Employee
{
private int salaryPerHour;
private int hoursPerMonth;
public HourlyEmployee(String name,int birth,int salaryPerHour,int hoursPerMonth) {
super(name,birth);
= salaryPerHour;
= hoursPerMonth;
}
public int getSalary(int month)
{
int result = 0;
if<=160)
{result = hoursPerMonth*salaryPerHour;}
else
{
result = 160*salaryPerHour +
(int)((hoursPerMonth-160)**salaryPerHour);
}
return result+(month);
}
}
/**
*Employee的子类,销售人员.
*属性: 月销售额、提成率.
*方法: getSalary().
*/
class SalesEmployee extends Employee
{
private int sales;
private double rate;
public SalesEmployee(String name,int birth,int sales,double rate)
{
super(name,birth);
= sales;
= rate;
}
public int getSalary(int month)
{return (int)(sales*rate)+(month);}
}
/**
*SalesEmployee的子类,有固定底薪的销售人员.
*属性: 底薪.
*方法: getSalary(),getAddtionalSalary().
*/
class BasedPlusSalesEmployee extends SalesEmployee
{
private int basedSalary;
public BasedPlusSalesEmployee(String name,int birth,int sales,double rate,int basedSalary)
{
super(name,birth,sales,rate);
= basedSalary;
}
public int getSalary(int month)// 工资由底薪加上销售提成部分
{
return +(month) +
();
}
public int getAddtionalSalary()
{return 1000;}
}
五、运行结果
在C:\Program Files\Java\text目录下产生的类文件:
六、结果说明
当输入正确的1-12月月份后程序就根据开始定义的员工生日情况给本月过生的员工增加100工资例如输入月份为2时魏威工资7000+100=7100,同理分析列出的其他员工的工资情况和公司支出情况,与笔算结果相符,可见程序实现了题目的功能。
七、心得体会
通过这几个月的学习我感受到java是一门非常有用的面向对象语言,有着广泛的应用,我印象较深的是它可以创建丰富精彩的图形用户界面,这在互联网可以看到很多例子。
这次编程虽然只是实现了一些简单的功能但是通过实践让我对java面向对象思想有了一定的体会,学到了一些基本的编程、调试步骤和方法。
然而毕竟是初学者,很多概念还不够熟悉,我认识到只有经过更多实践练习才能掌握这种强大有用的语言。