Java统计加班时长 年假表设计

在现代社会,工作压力越来越大,加班已经成为很多人生活中的常态。对于企业来说,合理统计和管理员工的加班时长是非常重要的。同时,企业也需要为员工提供年假来保障员工的健康和工作积极性。在本文中,我们将介绍如何使用Java设计一个简单的加班时长和年假表,并提供相应的代码示例。

加班时长表设计

加班时长表是记录员工每天加班时长的表格,通常包含以下字段:

  • 员工ID:唯一标识员工的ID
  • 日期:加班日期
  • 加班时长:当天的加班时长

我们可以使用一个Java类来表示加班时长表中的一行数据,如下所示:

public class OvertimeRecord {
    private int employeeId;
    private LocalDate date;
    private double hours;

    // 构造函数
    public OvertimeRecord(int employeeId, LocalDate date, double hours) {
        this.employeeId = employeeId;
        this.date = date;
        this.hours = hours;
    }

    // Getters and Setters
    // ...
}

每一条加班记录都有员工ID、日期和加班时长三个属性,我们可以使用相应的Getter和Setter方法来获取和设置这些属性的值。

接下来,我们可以使用一个ArrayList来表示整个加班时长表,如下所示:

public class OvertimeTable {
    private List<OvertimeRecord> records;

    // 构造函数
    public OvertimeTable() {
        records = new ArrayList<>();
    }

    // 添加一条加班记录
    public void addRecord(OvertimeRecord record) {
        records.add(record);
    }

    // 获取指定员工的加班总时长
    public double getTotalHours(int employeeId) {
        double total = 0;
        for (OvertimeRecord record : records) {
            if (record.getEmployeeId() == employeeId) {
                total += record.getHours();
            }
        }
        return total;
    }

    // 获取指定日期的加班总时长
    public double getTotalHours(LocalDate date) {
        double total = 0;
        for (OvertimeRecord record : records) {
            if (record.getDate().equals(date)) {
                total += record.getHours();
            }
        }
        return total;
    }
}

在OvertimeTable类中,我们可以添加一条加班记录,并且可以根据员工ID或日期来获取加班总时长。

年假表设计

年假表是记录员工年假信息的表格,通常包含以下字段:

  • 员工ID:唯一标识员工的ID
  • 年假总时长:员工的年假总时长
  • 已休年假:员工已经休假的时长

我们可以使用一个Java类来表示年假表中的一行数据,如下所示:

public class AnnualLeaveRecord {
    private int employeeId;
    private double totalHours;
    private double takenHours;

    // 构造函数
    public AnnualLeaveRecord(int employeeId, double totalHours, double takenHours) {
        this.employeeId = employeeId;
        this.totalHours = totalHours;
        this.takenHours = takenHours;
    }

    // Getters and Setters
    // ...
}

每一条年假记录都有员工ID、年假总时长和已休年假时长三个属性,我们可以使用相应的Getter和Setter方法来获取和设置这些属性的值。

接下来,我们可以使用一个HashMap来表示整个年假表,以员工ID作为键,年假记录作为值,如下所示:

public class AnnualLeaveTable {
    private Map<Integer, AnnualLeaveRecord> records;

    // 构造函数
    public AnnualLeaveTable() {
        records = new HashMap<>();
    }

    // 添加一条年假记录
    public void addRecord(AnnualLeaveRecord record) {
        records.put(record.getEmployeeId(), record);
    }

    // 获取指定员工的年假总时长
    public double getTotalHours(int employeeId) {
        AnnualLeaveRecord record = records.get(employeeId);
        if (record != null) {
            return record.getTotalHours();
        }
        return 0;
    }

    // 获取指定员工的已休