2026-04-15 08:34:21 +00:00
|
|
|
|
# 智能考勤管理系统 (C++17 CMake 工程)
|
|
|
|
|
|
|
|
|
|
|
|
基于《智能考勤管理系统》软件设计说明书实现的C++示例工程。
|
|
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
|
|
这是一个简化版的智能考勤管理系统,展示了核心数据结构和基本操作。项目采用模块化设计,包含以下功能:
|
|
|
|
|
|
|
|
|
|
|
|
- 员工管理(Employee)
|
|
|
|
|
|
- 排班规则管理(ScheduleRule)
|
|
|
|
|
|
- 考勤打卡记录(CheckInRecord)
|
|
|
|
|
|
- 考勤结果计算(AttendanceResult)
|
|
|
|
|
|
- 异常事件记录(AlertEvent)
|
|
|
|
|
|
|
|
|
|
|
|
## 编译说明
|
|
|
|
|
|
|
|
|
|
|
|
### 前置要求
|
|
|
|
|
|
- CMake 3.12 或更高版本
|
|
|
|
|
|
- 支持C++17的编译器(GCC 7+, Clang 5+, MSVC 2017+)
|
|
|
|
|
|
|
|
|
|
|
|
### 编译步骤
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 1. 创建构建目录
|
|
|
|
|
|
mkdir build
|
|
|
|
|
|
cd build
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 生成构建系统
|
|
|
|
|
|
cmake ..
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 编译项目
|
|
|
|
|
|
cmake --build .
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 运行主程序
|
|
|
|
|
|
./bin/attendance_system
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 运行测试
|
|
|
|
|
|
./bin/basic_test
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
.
|
|
|
|
|
|
├── CMakeLists.txt # CMake构建配置文件
|
|
|
|
|
|
├── README.md # 项目说明文档
|
|
|
|
|
|
├── include/ # 头文件目录
|
|
|
|
|
|
│ ├── app.hpp # 应用程序主头文件
|
|
|
|
|
|
│ ├── employee.hpp # 员工数据结构
|
|
|
|
|
|
│ ├── schedule.hpp # 排班规则结构
|
|
|
|
|
|
│ ├── checkin.hpp # 打卡记录结构
|
|
|
|
|
|
│ ├── attendance.hpp # 考勤结果结构
|
|
|
|
|
|
│ └── alert.hpp # 异常事件结构
|
|
|
|
|
|
├── src/ # 源文件目录
|
|
|
|
|
|
│ ├── main.cpp # 程序入口
|
|
|
|
|
|
│ ├── app.cpp # 应用程序逻辑
|
|
|
|
|
|
│ ├── employee.cpp # 员工管理实现
|
|
|
|
|
|
│ ├── schedule.cpp # 排班管理实现
|
|
|
|
|
|
│ ├── checkin.cpp # 打卡记录实现
|
|
|
|
|
|
│ ├── attendance.cpp # 考勤计算实现
|
|
|
|
|
|
│ └── alert.cpp # 异常事件实现
|
|
|
|
|
|
└── tests/ # 测试文件目录
|
|
|
|
|
|
└── basic_test.cpp # 基本功能测试
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 核心数据结构
|
|
|
|
|
|
|
|
|
|
|
|
根据需求文档,实现了以下核心数据结构:
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Employee(员工档案)
|
|
|
|
|
|
- employeeId:员工ID
|
|
|
|
|
|
- name:姓名
|
|
|
|
|
|
- departmentId:部门ID
|
|
|
|
|
|
- position:职位
|
|
|
|
|
|
- mobile:手机号
|
|
|
|
|
|
- email:邮箱
|
|
|
|
|
|
|
|
|
|
|
|
### 2. ScheduleRule(排班规则)
|
|
|
|
|
|
- ruleId:规则ID
|
|
|
|
|
|
- shiftName:班次名称
|
|
|
|
|
|
- startTime:上班时间
|
|
|
|
|
|
- endTime:下班时间
|
|
|
|
|
|
- breakDuration:休息时长
|
|
|
|
|
|
- overtimeThreshold:加班阈值
|
|
|
|
|
|
|
|
|
|
|
|
### 3. CheckInRecord(打卡记录)
|
|
|
|
|
|
- recordId:记录ID
|
|
|
|
|
|
- employeeId:员工ID
|
|
|
|
|
|
- method:打卡方式(FACE/GPS/CARD)
|
|
|
|
|
|
- timestamp:时间戳
|
|
|
|
|
|
- location:位置信息
|
|
|
|
|
|
|
|
|
|
|
|
### 4. AttendanceResult(考勤结果)
|
|
|
|
|
|
- resultId:结果ID
|
|
|
|
|
|
- employeeId:员工ID
|
|
|
|
|
|
- date:日期
|
|
|
|
|
|
- status:状态(LATE/EARLY/ABSENT/OVERTIME)
|
|
|
|
|
|
- duration:时长
|
|
|
|
|
|
- remarks:备注
|
|
|
|
|
|
|
|
|
|
|
|
### 5. AlertEvent(异常事件)
|
|
|
|
|
|
- eventId:事件ID
|
|
|
|
|
|
- employeeId:员工ID
|
|
|
|
|
|
- alertType:异常类型
|
|
|
|
|
|
- time:时间
|
|
|
|
|
|
- reason:原因
|
|
|
|
|
|
- notifiedChannels:通知渠道
|
|
|
|
|
|
|
|
|
|
|
|
## 使用示例
|
|
|
|
|
|
|
|
|
|
|
|
程序启动后会:
|
|
|
|
|
|
1. 创建示例员工和排班规则
|
|
|
|
|
|
2. 模拟员工打卡
|
|
|
|
|
|
3. 计算考勤结果
|
|
|
|
|
|
4. 检测异常事件
|
|
|
|
|
|
5. 输出统计信息
|
|
|
|
|
|
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
|
|
|
|
|
|
项目包含基本的单元测试,验证核心数据结构的功能正确性。
|
|
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
|
|
1. 这是一个演示工程,实现了核心数据结构但未包含完整业务逻辑
|
|
|
|
|
|
2. 实际生产环境需要添加数据库连接、网络通信、加密存储等功能
|
|
|
|
|
|
3. 安全约束(如TLS加密、JWT认证)需要额外实现
|
|
|
|
|
|
4. 性能约束(高并发、大数据量)需要分布式架构支持
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
本项目仅供学习参考使用。
|