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

news2024/10/7 18:22:30
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错误码说明
    在这里插入图片描述
    在这里插入图片描述

结束语

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

intellij idea中使用R语言plot画图无图像问题

1、在intellij idea中使用R语言plot函数时,会遇到各种各样的问题,会出现图片不显示问题, 可以看到,目前我电脑r语言版本为4.2.1,输入下面代码: # # 安装包 # install.packages(ggplot2) # library(ggplot2…

AI是在帮助开发者还是取代他们

目录 1.概述 1.1.AI助力开发者 1.2.AI对开发者的挑战 2.AI工具现状 2.1. GitHub Copilot 2.2. TabNine 2.3.小结 3.AI对开发者的影响 3.1.对开发者的影响 3.2.开发者需要掌握的新技能 3.3.在AI辅助的环境中保持竞争力的策略 4.AI开发的未来 5.总结 1.概述 生成式…

【VScode】常用配置

1.indenticator 增加白色竖条,显示方法范围 2.Git Graph 给git变换分支增添颜色区分 3.Vue 系列 vue 系列:给纯白色代码添加 颜色区分 3.eslint eslint警告,比如{ } 只写了半个会标红提示错误 等错误信息提示 需要配置js等页面 非下…

使用CiteSpace软件对知网文献进行关键词共现/聚类/突现分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【前端】vue 报错:The template root requires exactly one element

【前端】vue 报错:The template root requires exactly one element 写在最前面Prettier - Code formatter插件解决 Vue 报错:The template root requires exactly one element错误原因示例 解决方法更复杂的示例使用 Fragment 解决问题 小结 &#x1f3…

深度学习——卷积神经网络(convolutional neural network)CNN详解(一)——概述. 步骤清晰0基础可看

在CNN的学习过程中我会提供相应的手算例子帮助理解训练过程。 其他关于神经网络的学习链接如下: 一、了解卷积神经网络 卷积神经网络的作用 总的来说,卷积神经网络的第一个主要作用是对图像进行特征提取,所谓特征提取,就是明白…

亚马逊测评策略全攻略:详析各方案优势与局限,你精通了吗?

亚马逊测评,一个绕不开的话题。不管是对于新手卖家还是资深卖家来说,它都是提升产品销量和排名的有效手段之一。接下来,我将为大家详细解析亚马逊测评的各种方式和注意事项。 一、精准筛选真人测评资源 在寻找真人测评资源时,许多…

【深度学习】扫描全能王的AI驱动创新与智能高清滤镜技术解析

目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下,文档扫描功能…

记录一次MySQL恢复

一、前言 此文章由一次数据库被黑客删除而引发 由于对于Linux操作、docker使用、MySQL原理这些都相对不是很熟悉,所以记录下来避免以后在工作中遇到类似的问题而惊慌失措。 1.MySQL环境现状 docker管理的,8.0.26版本 启动语句: docker run -d -p 33…

python pdfplumber优化表格提取

样例pdf 直接使用文本提取效果: 使用表格提取 根据提取的文本信息是没办法获取到表格数据的,太乱了。尤其是 3 4列。 解决: 自行画线,根据画线进行提取。 效果: 思路: 1.根据表头进行画竖线 2.根据行坐…

vue3 ~ pinia学习

先看两个图 一个vuex 一个pinia 根据图看出来 pinia更简单了 那么具体怎么操作呢 我们来看下~ 第一步 下载 yarn add pinia # 或者使用 npm npm install pinia 第二步 注册 创建一个 pinia 实例 (根 store) 并将其传递给应用: import { createApp } from v…

vue的$nextTick是什么是干什么用的?

为什么需要使用$nextTick?他的使用场景 1.你在接口返回之后在获取高度 正常等页面加载在mounted这个钩子函数里 这时候就需要找到接口赋值的地方 这样就可以获取到数据操作以后的dom元素了 $nextTick是什么是干什么用的? $nextTick() 是 Vue.js 框…

超详细:安装Linux系统、虚拟现实教程

文章目录 一、如何下载并使用VMware虚拟机1.百度搜索vmware2.进入官网点击Workstation Pro链接3.博通注册对应的账号4.博通填写用户名、密码后直接登录会跳转到博通登录页5.个人使用选择个人版 二、国内镜像网站下载(Centos版本)三、镜像系统的安装1.打开…

【等保2.0的内容有哪些?】

“在“等保2.0”的基础上,分别增加了云计算安全、移动互联安全、物联网安全、工控系统安全、大数据安全5个拓展需求。 《中华人民共和国刑法》第253条,非法将公民个人资料卖给他人,并处罚金。 违反国家相关法律法规,将其在执行公…

计算机系统基础(三)

1.程序转换概述 机器指令和汇编指令 机器指令与汇编指令意义对应,都是机器级指令 汇编指令 如:M[R[bx]R[di]-6]←R[cl] R:寄存器内容 M:存储单元内容 机器指令 高级语言转换为机器代码的过程 根据计算机系统基础&#xff…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…

MLLM QLoRA微调实战:基于最新的袖珍Mini-InternVL模型

引言 大型语言模型(LLM)的世界正在不断发展,新的进步正在迅速出现。一个令人兴奋的领域是多模态LLM(MLLMs)的发展,这种模型既能够理解文本又能够理解图像,并与之进行交互。因此,这种…

ATG-2032:功率信号源的类型及应用领域简介

功率信号源是一种产生稳定、精确且可调节的电力信号的仪器,其主要作用是为测试和校准各种电子设备提供标准信号,以确保设备的精度和稳定性。 图:ATG-2000系列功率信号源 以下是功率信号源的主要类型和作用: 直流功率信号源 直流功…

Unity游戏帧率查看软件Fraps

Download Fraps 3.5.99 free version 下载、安装、运行这个软件,左上角就会自动显示帧率

SpringBoot的自动配置核心原理及拓展点

Spring Boot 的核心原理几个关键点 约定优于配置: Spring Boot 遵循约定优于配置的理念,通过预定义的约定,大大简化了 Spring 应用程序的配置和部署。例如,它自动配置了许多常见的开发任务(如数据库连接、Web 服务器配…