#ifndef ATTENDANCE_SYSTEM_ATTENDANCE_HPP #define ATTENDANCE_SYSTEM_ATTENDANCE_HPP #include #include 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