【Python+微信小程序】学生考勤签到系统(已开源)

description description description

1. 简介 😝

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

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

当然这个也是我们当时软件工程所交的期末大作业,可能有些许不合理的地方,不过请放心食用~
假若想要了解更多详情可以点击上面三个徽章进行外部跳转,它们分别跳转到我们的Github仓库、Gitee仓库以及我们的线上“食用”文档。欢迎各路佬提交PR以及提交Issue。

2. 项目结构说明

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。conda create -name Flask python=3.8

  2. 激活新建的虚拟环境。conda activate Flask
    在这里插入图片描述

  3. 安装该项目的所有依赖 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', ):
        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文件夹下,里面有两个路由测试文件,学生路由和老师路由的~

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. 我们需要导入项目文件里的Miniprogram文件
  2. 可以选择用自己的AppID或者测试号
  3. 进入开发工具页面,完成项目导入
3.2.3 测试登陆
  1. 在首页输入测试帐号2021611011
  2. 在首页输入测试姓名“张三”
  3. 点击登陆后查看是否成功,若不成功请查看API文档中的相关的API错误码说明
    在这里插入图片描述
    在这里插入图片描述

结束语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/769129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序化交易广告及其应用

什么是程序化交易广告? 程序化交易广告是以实时竞价技术即RTB(real-time bidding)为核心的广告交易方式。说到这里,你可能会有疑问:像百度搜索关键词广告还有百度网盟的广告,不也是CPC实时竞价的吗&#x…

Python学习笔记22:进阶篇(十一)常见标准库使用之访问互联网功能urllib模块的学习使用,requests库和aiohttp库了解

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 互联网访…

【基于R语言群体遗传学】-5-扩展到两个以上等位基因及多基因位点

我们现在继续对于群体遗传学进行统计建模,书接上回,我们讨论了孤雌生殖的物种违反哈代温伯格遗传比例的例子,那我们现在来看多于两个等位基因的情况的计算。 如果没有看过之前文章的同学,可以先去看一下之前的文章: …

1.2 ROS2安装

1.2.1 安装ROS2 整体而言,ROS2的安装步骤不算复杂,大致步骤如下: 准备1:设置语言环境;准备2:启动Ubuntu universe存储库;设置软件源;安装ROS2;配置环境。 请注意&…

多模态图像生成的突破:Image Anything一种无需训练的智能框架

多模态图像生成是内容创作领域的热点技术,尤其在媒体、艺术和元宇宙等领域。该技术旨在模拟人类的想象力,将视觉、文本和音频等多种模态属性相关联,以生成图像。早期的方法主要侧重于单一模态输入的图像生成,例如基于图像、文本或…

240703_昇思学习打卡-Day15-K近邻算法实现红酒聚类

KNN(K近邻)算法实现红酒聚类 K近邻算法,是有监督学习中的分类算法,可以用于分类和回归,本篇主要讲解其在分类上的用途。 文章目录 KNN(K近邻)算法实现红酒聚类算法原理数据下载数据读取与处理模型构建--计算距离模型预测 算法原理 KNN算法虽…

Mac单机游戏推荐:星际争霸母巢之战 for Mac v1.16.1汉化版

星际争霸母巢之战 for Mac是一款深受玩家的即时战略游戏,延续了原版《星际争霸》的剧情,并加入了新的游戏单位、科技、地图样式、背景音乐及平衡性调整。《星际争霸》与其它的即时战略类型游戏。 下载地址:点击下载 与原作相同,《…

一图胜千言|用Python搞定统计结果展示!

分享一份原创Python可视化教程:530张图形8000行代码,轻松搞定统计结果展示,部分如下, 每类图表包含详细代码详细代码注释,多达8000行代码,例如, 如何加入学习? 👇&#…

免费分享:2022年全国地铁站点数据(附下载方法)

数据简介 2022年全国地铁站点数据不仅反应我国城市交通网络的日益完善,也为城市规划、公共交通优化、商业布局、应急响应及智慧城市建设提供了宝贵的数据支持与参考,助力城市发展与居民生活质量的全面提升。 数据属性 数据名称:全国地铁站点…

Java同步包装器

通过 Collections.synchronizedList() 方法将一个普通的 ArrayList 包装成了线程安全的 List&#xff1a; import java.util.*;public class SynchronizedWrapperExample {public static void main(String[] args) {// 创建一个非线程安全的 ArrayListList<String> list…

python gdal 压缩栅格数据

1 压缩方法LZW 使用 LZW&#xff08;Lempel-Ziv-Welch&#xff09;&#xff0c;主要对图像数据压缩&#xff0c;可逆 2 代码 函数gdal_translate()&#xff1a;转换栅格的不同格式 我们使用的数据是GTiff格式的数据 GTiff – GeoTIFF File Format — GDAL documentation 参…

MySQL安装与环境配置

1.打开安装程序 2.默认配置&#xff0c;如下二三图 3.配置密码 4.等待安装完毕 5.检查 6.配置环境变量 7.从控制台登录检测

STM32F1+HAL库+FreeTOTS学习4——任务挂起与恢复

STM32F1HAL库FreeTOTS学习4——任务挂起与恢复 任务挂起和恢复的API介绍代码实现 上一期我们学习了FreeRTOS中任务创建的两种方法&#xff0c;这一期我们学习任务的挂起和恢复。 任务挂起和恢复的API介绍 在 &#xff1a;STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 的学习中&…

苹果电脑虚拟机运行Windows Mac环境安装Win PD19虚拟机 parallels desktop19虚拟机安装教程免费密钥激活

在如今多元的数字时代&#xff0c;我们经常需要在不同的操作系统环境下进行工作和学习。而对于 Mac 用户来说&#xff0c;有时候需要在自己的电脑上安装 Windows 操作系统&#xff0c;以体验更多软件及功能&#xff0c;而在 Mac 安装 Windows 虚拟机是常用的一种操作。下面就来…

Python28-5 k-means算法

k-means 算法介绍 k-means 算法是一种经典的聚类算法&#xff0c;其目的是将数据集分成 ( k ) 个不同的簇&#xff0c;每个簇内的数据点尽可能接近。算法的基本思想是通过反复迭代优化簇中心的位置&#xff0c;使得每个簇内的点与簇中心的距离之和最小。k-means 算法的具体步骤…

【FFmpeg】avformat_find_stream_info函数

【FFmpeg】avformat_find_stream_info 1.avformat_find_stream_info1.1 初始化解析器&#xff08;av_parser_init&#xff09;1.2 查找探测解码器&#xff08;find_probe_decoder&#xff09;1.3 尝试打开解码器&#xff08;avcodec_open2&#xff09;1.4 读取帧&#xff08;re…

嵌入式Linux之Uboot简介和移植

uboot简介 uboot 的全称是 Universal Boot Loader&#xff0c;uboot 是一个遵循 GPL 协议的开源软件&#xff0c;uboot是一个裸机代码&#xff0c;可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、USB 等高级功能。 也就是说&#xff0c;可以在没有系统的情况…

创建kobject

1、kobject介绍 kobject的全称是kernel object&#xff0c;即内核对象。每一个kobject都会对应系统/sys/下的一个目录。 2、相关结构体和api介绍 2.1 struct kobject // include/linux/kobject.h 2.2 kobject_create_and_add kobject_create_and_addkobject_createkobj…

开源自动化热键映射工具autohotkey十大用法及精选脚本

AutoHotkey&#xff08;AHK&#xff09;是一款功能强大的热键脚本语言工具&#xff0c;它允许用户通过编写脚本来自动化键盘、鼠标等设备的操作&#xff0c;从而极大地提高工作效率。以下是AutoHotkey的十大经典用法&#xff0c;这些用法不仅解放了用户的双手&#xff0c;还展示…

字节码编程ASM之插桩方法调用记录

写在前面 源码 。 正式开始之前&#xff0c;先分享一个让人”悲伤“的真实的故事。 那是一个风和日丽的周六的下午&#xff0c;俺正在开开心心的打着羽毛球&#xff0c;突然接到了来自于最不想联系的那个人&#xff08;没错&#xff0c;这个人就是我的领导&#xff01;&#x…