001/include/attendance.hpp

72 lines
2.3 KiB
C++
Raw Permalink Normal View History

2026-04-15 08:34:21 +00:00
#ifndef ATTENDANCE_SYSTEM_ATTENDANCE_HPP
#define ATTENDANCE_SYSTEM_ATTENDANCE_HPP
#include <string>
#include <ctime>
namespace AttendanceSystem {
// 考勤状态枚举
enum class AttendanceStatus {
NORMAL, // 正常
LATE, // 迟到
EARLY_LEAVE, // 早退
ABSENT, // 缺勤
OVERTIME // 加班
};
class AttendanceResult {
public:
AttendanceResult();
AttendanceResult(const std::string& resultId, const std::string& employeeId,
time_t date, AttendanceStatus status, int duration = 0,
const std::string& remarks = "");
// Getter方法
std::string getResultId() const { return resultId_; }
std::string getEmployeeId() const { return employeeId_; }
time_t getDate() const { return date_; }
AttendanceStatus getStatus() const { return status_; }
int getDuration() const { return duration_; } // 时长(分钟)
std::string getRemarks() const { return remarks_; }
time_t getCreateTime() const { return createTime_; }
// Setter方法
void setResultId(const std::string& id) { resultId_ = id; }
void setEmployeeId(const std::string& empId) { employeeId_ = empId; }
void setDate(time_t date) { date_ = date; }
void setStatus(AttendanceStatus status) { status_ = status; }
void setDuration(int duration) { duration_ = duration; }
void setRemarks(const std::string& remarks) { remarks_ = remarks; }
// 验证结果是否有效
bool isValid() const;
// 获取状态字符串
std::string getStatusString() const;
// 获取格式化日期字符串
std::string getFormattedDate() const;
// 显示考勤结果
void display() const;
// 计算是否应该扣款(根据状态)
bool shouldDeductSalary() const;
// 计算是否应该支付加班费
bool shouldPayOvertime() const;
private:
std::string resultId_; // 结果ID
std::string employeeId_; // 员工ID
time_t date_; // 日期
AttendanceStatus status_; // 状态
int duration_; // 时长(分钟)
std::string remarks_; // 备注
time_t createTime_; // 创建时间
};
} // namespace AttendanceSystem
#endif // ATTENDANCE_SYSTEM_ATTENDANCE_HPP