# 校园考勤打卡系统 一个基于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 ### 安装步骤 1. **克隆项目** ```bash git clone 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 - **数据处理**: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 ### 安装步骤 1. **克隆项目** ```bash git clone 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吧!