CHM_attendance/README.md
superlishunqin fe2d7fb3a2 READ
2025-06-11 19:58:35 +08:00

517 lines
14 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.

# 校园考勤打卡系统
一个基于Flask的校园考勤打卡管理系统支持学生考勤数据的录入、管理、统计和可视化展示。
## 📋 项目简介
本系统是为校园环境设计的考勤打卡管理平台,能够处理学生的日常打卡数据,提供完整的考勤统计分析功能。系统支持管理员和学生两种角色,实现了考勤数据的全生命周期管理。
## ✨ 主要功能
### 👨‍💼 管理员功能
- **学生管理**:添加、编辑、删除学生信息
- **考勤数据导入**支持CSV/XLSX格式的批量数据导入
- **考勤数据管理**:查看、编辑、删除考勤记录
- **统计分析**:生成各类考勤统计报表
- **权限管理**:用户角色和权限控制
- **数据修正**:修正错误的考勤时间和状态
### 👨‍🎓 学生功能
- **个人考勤查询**:查看个人从入学以来的所有考勤记录
- **考勤统计**:按周统计个人出勤时长、迟到、缺勤次数
- **请假管理**:提交请假申请,查看请假记录
- **个人信息**:查看和修改个人基本信息
- **密码管理**:修改登录密码
### 📊 数据展示
- **可视化界面**:直观的数据展示界面
- **多维度查询**:按年级、学号、姓名进行查询
- **实时统计**:实时显示各类考勤统计数据
- **历史记录**:完整的考勤历史记录追踪
## 🛠 技术栈
- **后端框架**Flask
- **数据库**MySQL
- **前端技术**HTML5, CSS3, JavaScript
- **数据处理**PandasCSV/XLSX处理
- **认证授权**Flask-Login
- **模板引擎**Jinja2
## 📁 项目结构
```
.
├── app/ # 应用主目录
│ ├── models/ # 数据模型
│ │ ├── user.py # 用户模型
│ │ ├── student.py # 学生模型
│ │ └── attendance.py # 考勤模型
│ ├── routes/ # 路由控制器
│ │ ├── auth.py # 认证路由
│ │ ├── admin.py # 管理员路由
│ │ └── student.py # 学生路由
│ ├── templates/ # 前端模板
│ │ ├── auth/ # 认证相关页面
│ │ ├── admin/ # 管理员页面
│ │ ├── student/ # 学生页面
│ │ └── layout/ # 布局模板
│ ├── static/ # 静态资源
│ │ ├── css/ # 样式文件
│ │ ├── js/ # JavaScript文件
│ │ └── images/ # 图片资源
│ └── utils/ # 工具函数
│ ├── database.py # 数据库操作
│ ├── auth_helpers.py # 认证辅助函数
│ └── attendance_importer.py # 考勤数据导入
├── config/ # 配置文件
├── tests/ # 测试文件
├── logs/ # 日志文件
├── requirements.txt # 依赖包列表
├── run.py # 应用启动文件
└── init_db.py # 数据库初始化脚本
```
## ⚙️ 考勤规则
### 工作日打卡时段
- **早上时段**6:00-12:00 可打卡要求9:45-11:30
- **下午时段**13:30-18:30 可打卡要求14:45-17:30
- **晚上时段**19:00-23:30 可打卡(非强制)
### 考勤计算规则
- **迟到计算**:超过规定上班时间即为迟到
- **缺卡处理**:未在规定时间内打卡视为缺卡
- **时长统计**
- 工作日有效打卡计入**实际出勤时长**和**班内工作时长**
- 休息日打卡计入**实际出勤时长**和**加班总时长**
## 🚀 安装部署
### 环境要求
- Python 3.8+
- MySQL 5.7+
- pip
### 安装步骤
1. **克隆项目**
```bash
git clone <repository-url>
cd attendance-system
```
2. **创建虚拟环境**
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
4. **配置数据库**
```bash
# 创建数据库
mysql -u root -p
CREATE DATABASE attendance_system;
```
5. **配置环境变量**
```bash
# 创建 .env 文件
cp .env.example .env
# 编辑数据库连接信息
```
6. **初始化数据库**
```bash
python init_db.py
```
7. **启动应用**
```bash
python run.py
```
### 环境变量配置
`.env` 文件中配置以下变量:
```env
# 数据库配置
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=attendance_system
# Flask配置
SECRET_KEY=your_secret_key
DEBUG=True
```
## 📖 使用说明
### 首次使用
1. **创建管理员账户**
```bash
python init_db.py --create-admin
```
2. **导入学生数据**
- 登录管理员账户
- 进入"学生管理"页面
- 使用"批量导入"功能导入学生信息
3. **上传考勤数据**
- 进入"考勤管理"页面
- 使用"数据导入"功能上传CSV/XLSX文件
### 数据导入格式
**学生信息CSV格式**
```csv
学号,姓名,性别,年级,专业,导师,学院,学位类型
2021001,张三,,2021,计算机科学,李教授,计算机学院,学硕
```
**考勤数据CSV格式**
```csv
学号,姓名,日期,签到时间,签退时间,状态
2021001,张三,2024-01-15,09:30,11:45,正常
```
## 👥 用户角色
### 管理员权限
- 查看所有学生信息和考勤数据
- 管理学生账户(增删改查)
- 导入和管理考勤数据
- 生成统计报表
- 系统配置管理
### 学生权限
- 查看个人考勤记录
- 查看个人统计数据
- 申请请假
- 修改个人信息
- 修改登录密码
## 📊 数据统计
系统提供多维度的数据统计功能:
- **个人统计**:个人出勤时长、迟到次数、缺勤次数
- **年级统计**:按年级汇总的考勤数据
- **时间统计**:按周、月、学期的考勤趋势
- **排行榜**:出勤时长排名、迟到次数排名等
## 🔧 开发说明
### 添加新功能
1. 在对应的模型文件中添加数据模型
2. 在路由文件中添加业务逻辑
3. 创建相应的HTML模板
4. 更新CSS和JavaScript文件
### 数据库迁移
```bash
# 备份数据库
mysqldump -u username -p attendance_system > backup.sql
# 修改数据库结构后重新初始化
python init_db.py --reset
```
## 📄 许可证
[MIT License](LICENSE)
## 🤝 贡献指南
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
## 📞 联系我们
如有问题或建议,请通过以下方式联系:
- 📧 Email: [your-email@example.com]
- 🐛 Issues: [GitHub Issues](https://github.com/your-username/attendance-system/issues)
## 🎯 Todo List
- [ ] 移动端适配
- [ ] 数据导出功能
- [ ] 邮件通知功能
- [ ] 更多统计图表
- [ ] API接口文档
- [ ] 单元测试覆盖
---
⭐ 如果这# 校园考勤打卡系统
一个基于Flask的校园考勤打卡管理系统支持学生考勤数据的录入、管理、统计和可视化展示。
## 📋 项目简介
本系统是为校园环境设计的考勤打卡管理平台,能够处理学生的日常打卡数据,提供完整的考勤统计分析功能。系统支持管理员和学生两种角色,实现了考勤数据的全生命周期管理。
## ✨ 主要功能
### 👨‍💼 管理员功能
- **学生管理**:添加、编辑、删除学生信息
- **考勤数据导入**支持CSV/XLSX格式的批量数据导入
- **考勤数据管理**:查看、编辑、删除考勤记录
- **统计分析**:生成各类考勤统计报表
- **权限管理**:用户角色和权限控制
- **数据修正**:修正错误的考勤时间和状态
### 👨‍🎓 学生功能
- **个人考勤查询**:查看个人从入学以来的所有考勤记录
- **考勤统计**:按周统计个人出勤时长、迟到、缺勤次数
- **个人信息**:查看和修改个人基本信息
- **密码管理**:修改登录密码
### 📊 数据展示
- **可视化界面**:直观的数据展示界面
- **多维度查询**:按年级、学号、姓名进行查询
- **实时统计**:实时显示各类考勤统计数据
- **历史记录**:完整的考勤历史记录追踪
## 🛠 技术栈
- **后端框架**Flask
- **数据库**MySQL
- **前端技术**HTML5, CSS3, JavaScript
- **数据处理**PandasCSV/XLSX处理
- **认证授权**Flask-Login
- **模板引擎**Jinja2
## 📁 项目结构
```
.
├── app/ # 应用主目录
│ ├── models/ # 数据模型
│ │ ├── user.py # 用户模型
│ │ ├── student.py # 学生模型
│ │ └── attendance.py # 考勤模型
│ ├── routes/ # 路由控制器
│ │ ├── auth.py # 认证路由
│ │ ├── admin.py # 管理员路由
│ │ └── student.py # 学生路由
│ ├── templates/ # 前端模板
│ │ ├── auth/ # 认证相关页面
│ │ ├── admin/ # 管理员页面
│ │ ├── student/ # 学生页面
│ │ └── layout/ # 布局模板
│ ├── static/ # 静态资源
│ │ ├── css/ # 样式文件
│ │ ├── js/ # JavaScript文件
│ │ └── images/ # 图片资源
│ └── utils/ # 工具函数
│ ├── database.py # 数据库操作
│ ├── auth_helpers.py # 认证辅助函数
│ └── attendance_importer.py # 考勤数据导入
├── config/ # 配置文件
├── tests/ # 测试文件
├── logs/ # 日志文件
├── requirements.txt # 依赖包列表
├── run.py # 应用启动文件
└── init_db.py # 数据库初始化脚本
```
## ⚙️ 考勤规则
### 工作日打卡时段
- **早上时段**6:00-12:00 可打卡要求9:45-11:30
- **下午时段**13:30-18:30 可打卡要求14:45-17:30
- **晚上时段**19:00-23:30 可打卡(非强制)
### 考勤计算规则
- **迟到计算**:超过规定上班时间即为迟到
- **缺卡处理**:未在规定时间内打卡视为缺卡
- **时长统计**
- 工作日有效打卡计入**实际出勤时长**和**班内工作时长**
- 休息日打卡计入**实际出勤时长**和**加班总时长**
## 🚀 安装部署
### 环境要求
- Python 3.8+
- MySQL 5.7+
- pip
### 安装步骤
1. **克隆项目**
```bash
git clone <repository-url>
cd attendance-system
```
2. **创建虚拟环境**
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
4. **配置数据库**
```bash
# 创建数据库
mysql -u root -p
CREATE DATABASE attendance_system;
```
5. **配置环境变量**
```bash
# 创建 .env 文件
cp .env.example .env
# 编辑数据库连接信息
```
6. **初始化数据库**
```bash
python init_db.py
```
7. **启动应用**
```bash
python run.py
```
### 环境变量配置
`.env` 文件中配置以下变量:
```env
# 数据库配置
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=attendance_system
# Flask配置
SECRET_KEY=your_secret_key
DEBUG=True
```
## 📖 使用说明
### 首次使用
1. **创建管理员账户**
```bash
python init_db.py --create-admin
```
2. **导入学生数据**
- 登录管理员账户
- 进入"学生管理"页面
- 使用"批量导入"功能导入学生信息
3. **上传考勤数据**
- 进入"考勤管理"页面
- 使用"数据导入"功能上传CSV/XLSX文件
### 数据导入格式
**学生信息CSV格式**
```csv
学号,姓名,性别,年级,专业,导师,学院,学位类型
2021001,张三,,2021,计算机科学,李教授,计算机学院,学硕
```
**考勤数据CSV格式**
```csv
学号,姓名,日期,签到时间,签退时间,状态
2021001,张三,2024-01-15,09:30,11:45,正常
```
## 👥 用户角色
### 管理员权限
- 查看所有学生信息和考勤数据
- 管理学生账户(增删改查)
- 导入和管理考勤数据
- 生成统计报表
- 系统配置管理
### 学生权限
- 查看个人考勤记录
- 查看个人统计数据
- 申请请假
- 修改个人信息
- 修改登录密码
## 📊 数据统计
系统提供多维度的数据统计功能:
- **个人统计**:个人出勤时长、迟到次数、缺勤次数
- **年级统计**:按年级汇总的考勤数据
- **时间统计**:按周、月、学期的考勤趋势
- **排行榜**:出勤时长排名、迟到次数排名等
## 🔧 开发说明
### 添加新功能
1. 在对应的模型文件中添加数据模型
2. 在路由文件中添加业务逻辑
3. 创建相应的HTML模板
4. 更新CSS和JavaScript文件
### 数据库迁移
```bash
# 备份数据库
mysqldump -u username -p attendance_system > backup.sql
# 修改数据库结构后重新初始化
python init_db.py --reset
```
## 📄 许可证
[MIT License](LICENSE)
## 🤝 贡献指南
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
## 📞 联系我们
如有问题或建议,请通过以下方式联系:
- 📧 Email: [2568813500@qq.com]
## 🎯 Todo List
- [ ] 移动端适配
- [ ] 数据导出功能
- [ ] 邮件通知功能
- [ ] 更多统计图表
- [ ] API接口文档
- [ ] 单元测试覆盖
---
⭐ 如果这个项目对你有帮助请给一个star吧