某公司的一次开卷笔试题:
以下是Java试题,需要您注意:
1.一定要考虑到封装性和体现面向对象的设计思想,需要创建类,留意类的设计和代码的可扩展性方面,面试官主要考核的是良好的设计思想和结构以及最终结果;
2.此试题需要在Java开发环境中做,做完后可自行运行下结果是否正确,再做调整;
3. 此试题您做完压缩打包邮件发我,试题最终提交截止时间:2020/07/05 24:00
如有任何问题 ,可随时邮件联系。
题目:
请为XX公司设计一套工资计算系统。
XX公司有三种类型的雇工, 不同类型的员工有不同的工资计算方式, 具体如下。 另外该公司有一种福利,如果该月员工过生日,则公司会额外奖励100元。
固定工资的员工,每月固定工资为6000元。小时工,每小时薪资为35元。每月工作160小时,超出部分薪资按照1.3倍发放。销售人员, 基础工资为每月3000,每月基础销售额应为20000,如果销售额为20000-30000,则超出部分(超出20000部分)提成率为5%,如果销售额为30000及以上,则超出部分(超出20000部分)提成率为8%。
请注意:
员工的固定工资,时薪,提成率和底薪都可能会调整。员工类型可能会增加。
请设计程序解析以下xml数据,并计算9月和10月份,公司应支付员工工资总额。最终结果应该四舍五入为两位小数。
问题分析:
1. 首先所有的工资计算基本上都用策略模式。
2. 员工类型可拓展,必然要创建一个员工的接口。
代码试下如下:
测试类:
package com.interview.web;
import com.interview.inteface.EmployeeSalaryStrategy;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Test {
public static void m