72 lines
2.3 KiB
C++
72 lines
2.3 KiB
C++
#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
|