java运用计算工资

计算员工的月工资
任务需求
某公司分为多个部门,每个部门有一个经理和多个员工,每个员工根据职称发基本工资。员工的工资由基本工资、日加班工资组成。具体需求如下所示:
1.员工的基本信息,包括部门、职务、职称以及工资记录等信息。
2. 能记录员工的每一个职称信息,并授予相应的职称,系统在计算员工工资的时候选取职称对应的最高职称津贴。
3. 员工的工资的计算公式:基本工资+加班工资加班时长-缺勤天数缺勤工资。
4.员工的基本工资是3000,加班一小时20,缺勤一天扣100。
5. 经理的基本工资是5000,加班一小时50,缺勤一天扣100。
6.在控制台上需要打印出的信息有工号、姓名、所在部门、职位、工资。需要打印一个经理和一个员工的工资。

你这是要设计数据库,还算是通过什么去实现呢,虽然业务逻辑比较清晰了,但是整体需求还是不是很明朗呢

我知道是java 语言写的,但是你需要用什么实现呢,需要关系数据库吗?还是说只是控制台输出这种


/**
 * 员工
 */
public class Employee {
    /**
     *
     * 工号
     */
    private String jobNumber;

    /**
     * 员工姓名
     */
    private String employeeName;

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 对应职位
     */
    private EmployeePost employeePost;

    /**
     * 员工应得薪资
     */
    private Integer employeeSalary;


    /**
     * 有参构造
     * @param jobNumber
     * @param employeeName
     * @param deptName
     * @param employeePost
     * @param employeeSalary
     */
    public Employee(String jobNumber, String employeeName, String deptName, EmployeePost employeePost, Integer employeeSalary) {
        this.jobNumber = jobNumber;
        this.employeeName = employeeName;
        this.deptName = deptName;
        this.employeePost = employeePost;
        this.employeeSalary = employeeSalary;
    }


    /**
     * 计算薪资,并赋值到员工应得薪资
     * @param overtime 加班小时数
     * @param absenteeism 旷工天数
     * @return
     */
    public void calculateSalary(Integer overtime,Integer absenteeism){
        if(this.employeePost == null){
            System.out.println("计算薪资失败,该员工没职位");
        }
        //基本工资
        Integer basicSalary = this.employeePost.getBasicSalary();
        //每小时加班工资
        Integer overtimeSalary = this.employeePost.getOvertimeSalary();
        //旷工一天扣除工资
        Integer absenteeismSalary = this.employeePost.getAbsenteeismSalary();

        this.employeeSalary = basicSalary+(overtimeSalary*overtime)-(absenteeismSalary*absenteeism);
    }

    public String getJobNumber() {
        return jobNumber;
    }

    public void setJobNumber(String jobNumber) {
        this.jobNumber = jobNumber;
    }

    public String getEmployeeName() {
        return employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public EmployeePost getEmployeePost() {
        return employeePost;
    }

    public void setEmployeePost(EmployeePost employeePost) {
        this.employeePost = employeePost;
    }

    public Integer getEmployeeSalary() {
        return employeeSalary;
    }

    public void setEmployeeSalary(Integer employeeSalary) {
        this.employeeSalary = employeeSalary;
    }


    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("员工信息{");
        sb.append("工号='").append(jobNumber).append('\'');
        sb.append(", 姓名='").append(employeeName).append('\'');
        sb.append(", 部门='").append(deptName).append('\'');
        sb.append(", 职位=").append(employeePost.getPostName());
        sb.append(", 工资=").append(employeeSalary);
        sb.append('}');
        return sb.toString();
    }
}



/**
 *
 * 员工职位
 */
public class EmployeePost {

    /**
     * 职位名称
     */
    private String postName;

    /**
     * 基本薪资
     */
    private Integer basicSalary;

    /**
     * 加班一小时薪资
     */
    private Integer overtimeSalary;

    /**
     * 缺勤一天扣除薪资
     */
    private Integer absenteeismSalary;

    /**
     * 有参构造
     * @param postName
     * @param basicSalary
     * @param overtimeSalary
     * @param absenteeismSalary
     */
    public EmployeePost(String postName, Integer basicSalary, Integer overtimeSalary, Integer absenteeismSalary) {
        this.postName = postName;
        this.basicSalary = basicSalary;
        this.overtimeSalary = overtimeSalary;
        this.absenteeismSalary = absenteeismSalary;
    }



    public String getPostName() {
        return postName;
    }

    public void setPostName(String postName) {
        this.postName = postName;
    }

    public Integer getBasicSalary() {
        return basicSalary;
    }

    public void setBasicSalary(Integer basicSalary) {
        this.basicSalary = basicSalary;
    }

    public Integer getOvertimeSalary() {
        return overtimeSalary;
    }

    public void setOvertimeSalary(Integer overtimeSalary) {
        this.overtimeSalary = overtimeSalary;
    }

    public Integer getAbsenteeismSalary() {
        return absenteeismSalary;
    }

    public void setAbsenteeismSalary(Integer absenteeismSalary) {
        this.absenteeismSalary = absenteeismSalary;
    }







/**
 * 测试
 */
public class TestMation {

    public static void main(String[] args) {
        //创建经理和员工职位并初始化
        //创建经理岗位
        EmployeePost managerPost = new EmployeePost("经理",5000,50,100);
        //创建员工岗位
        EmployeePost employeePost = new EmployeePost("员工",3000,20,100);

        //创建员工
        //创建张三员工并赋予经理角色
        Employee zs = new Employee("001","张三","市场部",managerPost,0);
        //创建李四员工并赋予员工角色
        Employee ls = new Employee("002","李四","市场部",employeePost,0);


        //计算工资
        //假设张三这个月加班2小时,缺勤1天
        zs.calculateSalary(2,1);
        //打印张三信息
        System.out.println(zs);

        //假设李四这个月加班10小时,缺勤0天
        ls.calculateSalary(10,0);
        //打印李四信息
        System.out.println(ls);


    }

}