001/README.md

131 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智能考勤管理系统 (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. 性能约束(高并发、大数据量)需要分布式架构支持
## 许可证
本项目仅供学习参考使用。