Java 员工考勤管理系统

1. 前言

随着企业规模的扩大,员工考勤管理变得越来越重要。为了解决考勤管理的问题,我们可以利用Java语言开发一个员工考勤管理系统。本文将介绍如何使用Java编写一个简单的员工考勤管理系统,该系统能够记录员工的考勤信息,并提供一些简单的统计功能。

2. 功能需求

在开始编写代码之前,我们首先需要明确系统的功能需求。根据实际情况,我们可以定义以下几个功能:

  1. 记录员工的考勤信息,包括员工姓名、考勤日期和考勤状态(正常、迟到、早退等)。
  2. 查询员工的考勤信息,包括某个员工的全部考勤记录和某个时间段内所有员工的考勤记录。
  3. 统计员工的考勤信息,包括某个员工的迟到次数、早退次数和缺勤次数,以及某个时间段内所有员工的迟到、早退和缺勤次数。

3. 数据模型设计

在开始编写代码之前,我们首先需要设计数据模型。根据功能需求,我们可以设计两个实体类:Employee(员工)和Attendance(考勤记录)。

3.1 Employee(员工)

public class Employee {
    private String name;
    // 其他员工属性,例如工号、部门等

    // 构造方法、getter和setter方法
}

3.2 Attendance(考勤记录)

public class Attendance {
    private Employee employee;
    private Date date;
    private String status;

    // 构造方法、getter和setter方法
}

4. 功能实现

4.1 记录员工的考勤信息

import java.util.Date;

public class AttendanceSystem {
    private List<Attendance> attendanceList;

    public AttendanceSystem() {
        this.attendanceList = new ArrayList<>();
    }

    public void recordAttendance(Employee employee, Date date, String status) {
        Attendance attendance = new Attendance(employee, date, status);
        attendanceList.add(attendance);
    }
}

4.2 查询员工的考勤信息

public class AttendanceSystem {
    // ...

    public List<Attendance> queryAttendance(Employee employee) {
        List<Attendance> result = new ArrayList<>();
        for (Attendance attendance : attendanceList) {
            if (attendance.getEmployee().equals(employee)) {
                result.add(attendance);
            }
        }
        return result;
    }

    public List<Attendance> queryAttendance(Date startDate, Date endDate) {
        List<Attendance> result = new ArrayList<>();
        for (Attendance attendance : attendanceList) {
            if (attendance.getDate().after(startDate) && attendance.getDate().before(endDate)) {
                result.add(attendance);
            }
        }
        return result;
    }
}

4.3 统计员工的考勤信息

public class AttendanceSystem {
    // ...

    public int countLateTimes(Employee employee) {
        int count = 0;
        for (Attendance attendance : attendanceList) {
            if (attendance.getEmployee().equals(employee) && attendance.getStatus().equals("迟到")) {
                count++;
            }
        }
        return count;
    }

    public int countEarlyLeaveTimes(Employee employee) {
        int count = 0;
        for (Attendance attendance : attendanceList) {
            if (attendance.getEmployee().equals(employee) && attendance.getStatus().equals("早退")) {
                count++;
            }
        }
        return count;
    }

    public int countAbsentTimes(Employee employee) {
        int count = 0;
        for (Attendance attendance : attendanceList) {
            if (attendance.getEmployee().equals(employee) && attendance.getStatus().equals("缺勤")) {
                count++;
            }
        }
        return count;
    }

    public int countLateTimes(Date startDate, Date endDate) {
        int count = 0;
        for (Attendance attendance : attendanceList) {
            if (attendance.getDate().after(startDate) && attendance.getDate().before(endDate) && attendance.getStatus().equals("迟到")) {
                count++;
            }
        }
        return count;
    }

    public int countEarlyLeaveTimes(Date startDate, Date endDate) {
        int count = 0;
        for (Attendance attendance : attendanceList) {
            if (attendance.getDate().after(startDate) && attendance.getDate().before(endDate) && attendance.getStatus().equals("早退")) {
                count++;
            }
        }
        return count;