Lesson_10 作业----计算工资
2013-01-22 00:46
495 查看
/** * 一家公司按星期支付员工的工资。 * 该公司有四种员工: * 拿薪水的 : 每个星期发给他固定的工资,而不计他们的工作小时数; * 钟 点 工: 按小时算,没有加班费; * 代 理 人: 按销售业绩按一定的比例抽取佣金. * 拿薪代理人: 报酬为基本工资 + 销售额的一定比例的佣金。 * 本月公司决定为拿薪金的代理增加10%的基本工资。 * 公司希望写一个Java程序来动态的计算工资。 * @author CocoonFan * */ public class CalcSalary { public static void main(String[] args) { CalculateSalary calculateSalary = new CalculateSalary(); BaseSalaryWorker baseSalaryWorker = new BaseSalaryWorker("拿薪水的", 5000); calculateSalary.calcSalary(baseSalaryWorker); HourWorker hourWorker = new HourWorker("钟点工", 0, 300, 15); calculateSalary.calcSalary(hourWorker); ResultsWorker resultsWorker = new ResultsWorker("代理人", 0, 35000, 0.2); calculateSalary.calcSalary(resultsWorker); AgentWorker agentWorker = new AgentWorker("拿薪代理人", 3000, 40000, 0.15); calculateSalary.calcSalary(agentWorker); } } class Worker{ private String workerName;// private double baseSalary = 3000.0;//基本工资 public Worker(String workerName, double baseSalary) { this.workerName = workerName; this.baseSalary = baseSalary; } public String getWorkerName() { return workerName; } public void setWorkerName(String workerName) { this.workerName = workerName; } public double getBaseSalary() { return baseSalary; } public void setBaseSalary(double baseSalary) { this.baseSalary = baseSalary; } public void calcSalary(Worker worker){ System.out.println("计算工资"); } } class BaseSalaryWorker extends Worker{ public BaseSalaryWorker(String workerName, double baseSalary) { super(workerName, baseSalary); } public void calcSalary(Worker worker){ System.out.println(super.getWorkerName() + "本月工资为:" + super.getBaseSalary()); } } class HourWorker extends Worker{ private int workHour; private double salaryPerHour; public HourWorker(String workerName, double baseSalary, int workHour,double salaryPerHour) { super(workerName, baseSalary); this.workHour = workHour; this.salaryPerHour = salaryPerHour; } @Override public void calcSalary(Worker worker){ System.out.println(super.getWorkerName() + "本月工资为:" + workHour*salaryPerHour); } } class ResultsWorker extends Worker{ private double results;//业绩 private double ratio;//比例 public ResultsWorker(String workerName, double baseSalary,double results,double ratio) { super(workerName, baseSalary); this.results = results; this.ratio = ratio; } @Override public void calcSalary(Worker worker){ System.out.println(super.getWorkerName() + "本月工资为:" + results*ratio); } } class AgentWorker extends Worker{ private double results;//业绩 private double ratio;//比例 public AgentWorker(String workerName, double baseSalary,double results,double ratio) { super(workerName, baseSalary); this.results = results; this.ratio = ratio; } @Override public void calcSalary(Worker worker){ System.out.println(super.getWorkerName() + "本月工资为:" + (results*ratio + super.getBaseSalary()*1.1)); } } class CalculateSalary { public void calcSalary(Worker worker){ System.out.println("正在计算工资..."); worker.calcSalary(worker); System.out.println(); } }
运行结果
![](http://images.cnitblog.com/blog/489434/201301/22004642-a3a9984e5e1242e4aaaa736aeed37409.jpg)
相关文章推荐
- C++初学者的足迹10 作业报告9 计算周工资
- PAT基础编程 5-10 计算工资 (15分)
- 5-10 计算工资 (15分)
- 5-10 计算工资
- 5-10 计算工资 (15分)
- C++初学者的足迹6 作业报告5 计算员工的周工资
- 7-10 计算工资
- 5-10 计算工资 (15分)
- 第三课作业1计算:1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=?
- Lesson_5 作业_2 ---- 计算圆的面积和周长
- 7-10 计算工资
- 5-10 计算工资 (15分)
- 剑指offer 面试题10 计算数字中1的个数
- 作业 3 应用分支与循环结构解决问题 计算分段函数的值
- QS0002-2012 瞿氏标准(Qu's Standards)IT从业人员工资计算标准
- 使用Pear的RPN库处理工资计算公式
- lesson 2:作业1:请定义一个交通工具(Vehicle)的类
- 阶乘之和 输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤10 6 ,n!表示 前n个正整数之积。
- 第11周项目10-计算n个数相加之和
- PHP工资计算之逆波兰式