学生考勤签到系统开源分享「Flask+wx-app」

cnblogs 2024-07-12 08:39:00 阅读 57

学生考勤签到系统开源分享「Flask+wx-app」

自制的学生考勤系统开源分享,前端是用微信原生语法写的,后端是用Flask框架搭建的,线上文档内有详细的部署步骤~

description

1. 简介 😝

这个项目是一款基于微信小程序Flask框架开发的应用,旨在帮助学校管理学生的考勤和课程信息。系统通过集成数据库管理、API开发以及前后端交互,实现了便捷的学生考勤记录、课程表管理和教师交互功能。其主要特点包括:

  1. 微信小程序支持:利用微信小程序的原生语法开发,提供便捷的移动端访问和用户体验。
  2. Flask框架后端:采用Python Flask框架搭建强大的后端服务,支持多种API接口的开发和管理。
  3. 多功能模块:包括学生考勤记录、课程表管理、教师考勤发布及审核等功能,满足学校日常管理需求。
  4. 数据库集成:支持与远程MySQL数据库的连接,实现数据的安全存储和高效管理。
  5. 持续更新与改进:系统在不断更新和改进中,通过版本迭代新增功能、优化性能,并修复已知问题,以提升系统的稳定性和用户满意度。

当然这个也是我们当时软件工程所交的期末大作业,可能有些许不合理的地方,不过请放心食用~

假若想要了解更多详情可以点击上面的徽章进行外部跳转,它们分别跳转到我们的Github仓库。仓库内也有线上部署的文档,欢迎各路佬提交PR以及提交Issue。

2. 项目结构说明

<code>student_attendance_system

├── MiniProgram

│ ├── app.js # 小程序主脚本文件

│ ├── app.json # 小程序全局配置文件

│ ├── app.wxss # 小程序全局样式表

│ ├── components # 组件目录

│ │ └── ………………… # 组件文件

│ ├── pages # 页面目录

│ │ ├── ………………… # 页面文件

│ │ ├── img # 图片资源目录

│ │ │ ├── loginbg.jpg # 登录背景图

│ │ │ ├── ………………… # 其他图片

│ ├── project.config.json # 项目配置文件

│ ├── project.private.config.json # 私有项目配置文件

│ ├── sitemap.json # 小程序站点地图文件

│ └── utils # 工具类文件目录

│ ├── ………………… # 工具文件

├── app.py # 主应用脚本

├── datasets # 数据集目录

│ ├── save_table.py # 数据表保存脚本

│ └── 学生考勤系统数据库用例表.xlsx # 数据库用例表

├── docs # 文档目录

│ ├── API # API 文档目录

│ │ ├── ………………… # API 文档文件

│ ├── QuickStart.md # 快速开始文档

│ ├── README.md # 项目简介文档

│ ├── _sidebar.md # 文档侧边栏配置文件

│ ├── index.html # 文档主页

│ ├── 系统实现.docx # 系统实现文档

│ ├── 需求分析.docx # 需求分析文档

│ ├── 代码规范.md # 代码规范文档

│ ├── 数据库设计.docx # 数据库设计文档

│ ├── 系统设计(UML与设计模式).docx # 系统设计文档(包含 UML 和设计模式)

│ ├── 系统安全性问题.docx # 系统安全性问题文档

│ └── 项目特色与创新点.docx # 项目特色与创新点文档

├── ds_tools # 数据结构工具目录

│ ├── pycache # 缓存目录

│ │ └── data_structure.cpython-38.pyc # 数据结构缓存文件

│ └── data_structure.py # 数据结构脚本

├── models # 数据模型目录

│ ├── pycache # 缓存目录

│ │ ├── ………………… # 缓存文件

│ ├── attendence_information_table.py # 考勤信息表模型

│ ├── class_schedule_table.py # 课程表模型

│ ├── course_selection_table.py # 选课表模型

│ ├── course_table.py # 课程表模型

│ ├── post_attendance_table.py # 发布考勤信息表模型

│ ├── student_information_table.py # 学生信息表模型

│ └── teacher_information_table.py # 教师信息表模型

├── project.config.json # 项目配置文件

├── project.private.config.json # 私有项目配置文件

├── requirements.txt # 依赖库配置文件

├── routes # 路由目录

│ ├── init.py # 路由初始化文件

│ ├── pycache # 缓存目录

│ │ ├── ………………… # 缓存文件

│ ├── student_routes.py # 学生路由脚本

│ └── teacher_routes.py # 教师路由脚本

├── sql # SQL 脚本目录

│ ├── create_procedure.sql # 存储过程创建脚本

│ ├── create_tabel.sql # 数据表创建脚本

│ ├── create_trigger.sql # 触发器创建脚本

│ ├── create_view.sql # 视图创建脚本

│ └── init # 初始化 SQL 脚本目录

│ ├── attendance_information.sql # 初始化考勤信息数据

│ ├── class_schedule.sql # 初始化课程表数据

│ ├── course.sql # 初始化课程数据

│ ├── course_selection.sql # 初始化选课数据

│ ├── post_attendance_information.sql # 初始化发布考勤信息数据

│ ├── student_information.sql # 初始化学生信息数据

│ └── teacher_information.sql # 初始化教师信息数据

├── student_attendance_system.drawio # 系统架构图文件

├── test # 测试目录

│ ├── pycache # 缓存目录

│ │ ├── ………………… # 缓存文件

│ ├── test_student_routes.py # 学生路由测试脚本

│ └── test_teacher_routes.py # 教师路由测试脚本

└── utils # 工具目录

├── pycache # 缓存目录

│ └── database_manager.cpython-38.pyc # 数据库管理缓存文件

└── database_manager.py # 数据库管理脚本

3. 怎么快速开始

这部分可以参考线上文档,内也有一样的教程~

3.1 后端Flask的快速部署

在这部分你需要有:

  1. MySql 8.3.0
  2. conda环境
  3. 一个数据库管理工具(以Navicat为例)

你准备了以上工具后,我们就开始部署吧~

3.1.1 数据库快速导入

  1. 打开Navicat选择本地连接,新建一个数据库

    在这里插入图片描述

注:建议新建的数据库名为“StudentAttendancnSystemDB”,不然请自行修改utils\database_manager.py里面的db_name

  1. 右键该新建的数据库,在选择栏中选择“运行SQL文件”

    在这里插入图片描述

  2. 依次导入sql文件夹中的init文件夹下所有sql文件,如:sql/init/xxx.sql

    在这里插入图片描述

3.1.2 虚拟环境的创建

  1. 在Terminal中创建一个新的conda虚拟环境,名为Flask。<code>conda create -name Flask python=3.8

  2. 激活新建的虚拟环境。conda activate Flask

    在这里插入图片描述

  3. 安装该项目的所有依赖 <code>conda install --file requirements.txt或者mamba install --file requirements.txt

3.1.3 数据库连接文件修改

  1. 在utils文件夹中找到database_manager.py文件
  2. 修改__init_函数的参数中的db_user/db_password/db_host等参数

def __init__(self, table_name, db_user='your_user', db_password='your_password', db_host='127.0.0.1', db_port=3306, db_name='StudentAttendancnSystemDB', ):code>

self.db_user = db_user

self.db_password = db_password

self.db_host = db_host

self.db_port = db_port

self.db_name = db_name

self.table_name = table_name

self.engine = create_engine(self._get_connection_string())

self.df = None

注:这里的db_name参数可以不用改,假如前面是按照该名称创建的数据库

完成上述步骤就可以启动后端了,在terminal中输入python app.py启动后端。返回如下信息则为开启服务成功

Flask app is running on http://0.0.0.0:5000

* Serving Flask app 'app'

* Debug mode: off

WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

* Running on all addresses (0.0.0.0)

* Running on http://127.0.0.1:5000

* Running on http://192.168.43.207:5000

Press CTRL+C to quit

在这里插入图片描述

3.1.4 进行端口测试

测试文件放在了test文件夹下,里面有两个路由测试文件,学生路由和老师路由的~

<code>Student Attendance System/

├── app.py

.......

├── test/

│ ├── test_teacher_routes.py

│ └── test_student_routes.py

使用pytest来进行路由端口测试,使用pytest test/test_student_routes.py来测试学生路由的端口是否正常,老师路由同理。通过的返回信息如下

(Flask) hiddensharp429@ZixiandeMBP Student Attendance System % pytest test/test_student_routes.py

============================================================== test session starts ==============================================================

platform darwin -- Python 3.8.19, pytest-8.2.2, pluggy-1.5.0

rootdir: /Users/hiddensharp429/Code/PYTHON/Student Attendance System

collected 7 items

test/test_student_routes.py ....... [100%]

=============================================================== warnings summary ================================================================

models/attendence_information_table.py:17

/Users/hiddensharp429/Code/PYTHON/Student Attendance System/models/attendence_information_table.py:17: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)

Base = declarative_base()

models/class_schedule_table.py:15

/Users/hiddensharp429/Code/PYTHON/Student Attendance System/models/class_schedule_table.py:15: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)

Base = declarative_base()

models/course_selection_table.py:15

/Users/hiddensharp429/Code/PYTHON/Student Attendance System/models/course_selection_table.py:15: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)

Base = declarative_base()

models/course_table.py:16

/Users/hiddensharp429/Code/PYTHON/Student Attendance System/models/course_table.py:16: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)

Base = declarative_base()

models/post_attendance_table.py:17

/Users/hiddensharp429/Code/PYTHON/Student Attendance System/models/post_attendance_table.py:17: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)

Base = declarative_base()

models/student_information_table.py:16

/Users/hiddensharp429/Code/PYTHON/Student Attendance System/models/student_information_table.py:16: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)

Base = declarative_base()

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

========================================================= 7 passed, 6 warnings in 0.28s =========================================================

显示全部都是passed的即为通过测试。

在这里插入图片描述

3.2 前端wx—miniprogram的快速部署

3.2.1 注册帐号(可选)以及工具安装

  1. 小程序开发的第一步,是去微信公众平台注册,申请一个 AppID,这是免费的。

注:这步不是必须的,假如不是自己想开发一个微信小程序,可以直接使用测试号,不需要自己注册一个AppID

  1. 下载微信提供的小程序开发工具。这个工具是必需的,因为只有它才能运行和调试小程序源码。

注:开发者工具支持 Windows 和 MacOS 两个平台。我装的是 MacOS (64位)的版本'

  1. 安装好打开这个软件,会要求你使用微信扫描二维码登录。
  2. 登录后,进入新建项目的页面,点击右侧的+号,就跳出了新建小程序的页面。

3.2.2 导入项目

  1. 我们需要导入项目文件里的<code>Miniprogram文件
  2. 可以选择用自己的AppID或者测试号
  3. 进入开发工具页面,完成项目导入

3.2.3 测试登陆

  1. 在首页输入测试帐号2021611011
  2. 在首页输入测试姓名“张三”
  3. 点击登陆后查看是否成功,若不成功请查看API文档中的相关的API错误码说明

    在这里插入图片描述

    在这里插入图片描述


结束语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?你们的认可是我最大的分享动力!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。