计算员工的月工资
任务需求
某公司分为多个部门,每个部门有一个经理和多个员工,每个员工根据职称发基本工资。员工的工资由基本工资、日加班工资组成。具体需求如下所示:
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);
}
}