校园考勤打卡系统
一个基于Flask的校园考勤打卡管理系统,支持学生考勤数据的录入、管理、统计和可视化展示。
📋 项目简介
本系统是为校园环境设计的考勤打卡管理平台,能够处理学生的日常打卡数据,提供完整的考勤统计分析功能。系统支持管理员和学生两种角色,实现了考勤数据的全生命周期管理。
✨ 主要功能
👨💼 管理员功能
- 学生管理:添加、编辑、删除学生信息
- 考勤数据导入:支持CSV/XLSX格式的批量数据导入
- 考勤数据管理:查看、编辑、删除考勤记录
- 统计分析:生成各类考勤统计报表
- 权限管理:用户角色和权限控制
- 数据修正:修正错误的考勤时间和状态
👨🎓 学生功能
- 个人考勤查询:查看个人从入学以来的所有考勤记录
- 考勤统计:按周统计个人出勤时长、迟到、缺勤次数
- 请假管理:提交请假申请,查看请假记录
- 个人信息:查看和修改个人基本信息
- 密码管理:修改登录密码
📊 数据展示
- 可视化界面:直观的数据展示界面
- 多维度查询:按年级、学号、姓名进行查询
- 实时统计:实时显示各类考勤统计数据
- 历史记录:完整的考勤历史记录追踪
🛠 技术栈
- 后端框架:Flask
- 数据库:MySQL
- 前端技术:HTML5, CSS3, JavaScript
- 数据处理:Pandas(CSV/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
安装步骤
- 克隆项目
git clone <repository-url>
cd attendance-system
- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
- 安装依赖
pip install -r requirements.txt
- 配置数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE attendance_system;
- 配置环境变量
# 创建 .env 文件
cp .env.example .env
# 编辑数据库连接信息
- 初始化数据库
python init_db.py
- 启动应用
python run.py
环境变量配置
在 .env
文件中配置以下变量:
# 数据库配置
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=attendance_system
# Flask配置
SECRET_KEY=your_secret_key
DEBUG=True
📖 使用说明
首次使用
- 创建管理员账户
python init_db.py --create-admin
-
导入学生数据
- 登录管理员账户
- 进入"学生管理"页面
- 使用"批量导入"功能导入学生信息
-
上传考勤数据
- 进入"考勤管理"页面
- 使用"数据导入"功能上传CSV/XLSX文件
数据导入格式
学生信息CSV格式:
学号,姓名,性别,年级,专业,导师,学院,学位类型
2021001,张三,男,2021,计算机科学,李教授,计算机学院,学硕
考勤数据CSV格式:
学号,姓名,日期,签到时间,签退时间,状态
2021001,张三,2024-01-15,09:30,11:45,正常
👥 用户角色
管理员权限
- 查看所有学生信息和考勤数据
- 管理学生账户(增删改查)
- 导入和管理考勤数据
- 生成统计报表
- 系统配置管理
学生权限
- 查看个人考勤记录
- 查看个人统计数据
- 申请请假
- 修改个人信息
- 修改登录密码
📊 数据统计
系统提供多维度的数据统计功能:
- 个人统计:个人出勤时长、迟到次数、缺勤次数
- 年级统计:按年级汇总的考勤数据
- 时间统计:按周、月、学期的考勤趋势
- 排行榜:出勤时长排名、迟到次数排名等
🔧 开发说明
添加新功能
- 在对应的模型文件中添加数据模型
- 在路由文件中添加业务逻辑
- 创建相应的HTML模板
- 更新CSS和JavaScript文件
数据库迁移
# 备份数据库
mysqldump -u username -p attendance_system > backup.sql
# 修改数据库结构后重新初始化
python init_db.py --reset
📄 许可证
🤝 贡献指南
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 创建 Pull Request
📞 联系我们
如有问题或建议,请通过以下方式联系:
- 📧 Email: [your-email@example.com]
- 🐛 Issues: GitHub Issues
🎯 Todo List
- 移动端适配
- 数据导出功能
- 邮件通知功能
- 更多统计图表
- API接口文档
- 单元测试覆盖
⭐ 如果这# 校园考勤打卡系统
一个基于Flask的校园考勤打卡管理系统,支持学生考勤数据的录入、管理、统计和可视化展示。
📋 项目简介
本系统是为校园环境设计的考勤打卡管理平台,能够处理学生的日常打卡数据,提供完整的考勤统计分析功能。系统支持管理员和学生两种角色,实现了考勤数据的全生命周期管理。
✨ 主要功能
👨💼 管理员功能
- 学生管理:添加、编辑、删除学生信息
- 考勤数据导入:支持CSV/XLSX格式的批量数据导入
- 考勤数据管理:查看、编辑、删除考勤记录
- 统计分析:生成各类考勤统计报表
- 权限管理:用户角色和权限控制
- 数据修正:修正错误的考勤时间和状态
👨🎓 学生功能
- 个人考勤查询:查看个人从入学以来的所有考勤记录
- 考勤统计:按周统计个人出勤时长、迟到、缺勤次数
- 个人信息:查看和修改个人基本信息
- 密码管理:修改登录密码
📊 数据展示
- 可视化界面:直观的数据展示界面
- 多维度查询:按年级、学号、姓名进行查询
- 实时统计:实时显示各类考勤统计数据
- 历史记录:完整的考勤历史记录追踪
🛠 技术栈
- 后端框架:Flask
- 数据库:MySQL
- 前端技术:HTML5, CSS3, JavaScript
- 数据处理:Pandas(CSV/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
安装步骤
- 克隆项目
git clone <repository-url>
cd attendance-system
- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
- 安装依赖
pip install -r requirements.txt
- 配置数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE attendance_system;
- 配置环境变量
# 创建 .env 文件
cp .env.example .env
# 编辑数据库连接信息
- 初始化数据库
python init_db.py
- 启动应用
python run.py
环境变量配置
在 .env
文件中配置以下变量:
# 数据库配置
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=attendance_system
# Flask配置
SECRET_KEY=your_secret_key
DEBUG=True
📖 使用说明
首次使用
- 创建管理员账户
python init_db.py --create-admin
-
导入学生数据
- 登录管理员账户
- 进入"学生管理"页面
- 使用"批量导入"功能导入学生信息
-
上传考勤数据
- 进入"考勤管理"页面
- 使用"数据导入"功能上传CSV/XLSX文件
数据导入格式
学生信息CSV格式:
学号,姓名,性别,年级,专业,导师,学院,学位类型
2021001,张三,男,2021,计算机科学,李教授,计算机学院,学硕
考勤数据CSV格式:
学号,姓名,日期,签到时间,签退时间,状态
2021001,张三,2024-01-15,09:30,11:45,正常
👥 用户角色
管理员权限
- 查看所有学生信息和考勤数据
- 管理学生账户(增删改查)
- 导入和管理考勤数据
- 生成统计报表
- 系统配置管理
学生权限
- 查看个人考勤记录
- 查看个人统计数据
- 申请请假
- 修改个人信息
- 修改登录密码
📊 数据统计
系统提供多维度的数据统计功能:
- 个人统计:个人出勤时长、迟到次数、缺勤次数
- 年级统计:按年级汇总的考勤数据
- 时间统计:按周、月、学期的考勤趋势
- 排行榜:出勤时长排名、迟到次数排名等
🔧 开发说明
添加新功能
- 在对应的模型文件中添加数据模型
- 在路由文件中添加业务逻辑
- 创建相应的HTML模板
- 更新CSS和JavaScript文件
数据库迁移
# 备份数据库
mysqldump -u username -p attendance_system > backup.sql
# 修改数据库结构后重新初始化
python init_db.py --reset
📄 许可证
🤝 贡献指南
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 创建 Pull Request
📞 联系我们
如有问题或建议,请通过以下方式联系:
- 📧 Email: [2568813500@qq.com]
🎯 Todo List
- 移动端适配
- 数据导出功能
- 邮件通知功能
- 更多统计图表
- API接口文档
- 单元测试覆盖
⭐ 如果这个项目对你有帮助,请给一个star吧!
Description
Languages
HTML
60.4%
Python
38.5%
CSS
1%
JavaScript
0.1%