GIthub 开源项目地址 leave_approval_management_sys,遵循 Apache 2.0 开源协议。


系统设计

  • 一、为什么选择 Flask ?
  • Ⅰ、最小 Flask 应用
  • 二、为什么选择 SQLite ?
  • Ⅰ、SQLite 示例
  • 三、请假流程
  • 四、功能及模块
  • Ⅰ、登录 / 注册
  • Ⅱ、学生端
  • Ⅲ、辅导员端
  • Ⅳ、教务处端
  • Ⅴ、考勤端
  • Ⅵ、管理员端
  • 五、数据库


前端 + 后端 同时开发的项目博主也是头一次做。之前没有任何后端开发经验(只用 Flask 搭建了一个二维码识别 API),本项目也是边学习边实践。

本项目的开发完全是摸着石头过河,编写程序之前只有请假流程是明确的,并且一直沿用没有发生变动。前端要实现的功能只有“登录注册”、“学生请假”、“教师批准”这几个大致的方向,然后写一步看一步,慢慢把其他功能细化完善的。

数据库已开始也非常简单,导致后面修改了很多次表结构,同时也更新了很多次后端请求数据库的逻辑。下面《四、功能及模块》的部分也是项目差不多完工才一次性总结的。

一、为什么选择 Flask ?

因为如下三个优点:

  1. 简洁
  2. 简洁
  3. 简洁

Ⅰ、最小 Flask 应用

仅仅只需要如下几行代码即可启动一个 Flask 服务器:

from flask import Flask  # 导入 Flask 包
app = Flask(__name__)    # 声明一个后端应用

# 设置路由
@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()           # 启动后端服务器

二、为什么选择 SQLite ?

同样是三个优点:

  1. 简洁
  2. 简洁
  3. 简洁

并且 Python 自带 sqlite3 库,无需手动安装!!! 妈妈再也不用担心我不会配置 MySQL 啦。

或 查看作者另一篇文章 安装 MySQL(Windows)

Ⅰ、SQLite 示例

使用如下代码操作数据库:

import sqlite3 # 导入 sqlite3 包
connection = sqlite3.connect('example.db') # 建立 数据库连接

result = connection.excute('SELECT id,name FROM student').fetchall() # 执行查询并获取所有查询结果
for row in result: # 打印结果
    print(row)

connection.close() # 关闭 数据库连接

三、请假流程

分析

Python请假条怎么插入图片 python 请假审批系统_flask

小北学生 App 的请假流程,得出如下请假流程:

Python请假条怎么插入图片 python 请假审批系统_python_02

四、功能及模块

Ⅰ、登录 / 注册

  1. 根据 id 登录并自动识别角色、获得对应权限、展示对应界面
  2. 只提供学生注册功能(未来将取消该功能,理论上不应该提供注册功能,只允许使用规定的账号登陆)

Ⅱ、学生端

  1. 请假
  2. 销假
  3. 查看历史请假信息

Ⅲ、辅导员端

  1. 可以直接通过请假时长在 3 天以内的请假条
  2. 请假时长大于等于 3 天的请假条将由教务处再次确认
  3. 驳回请假条
  4. 同意销假申请
  5. 同意及驳回均可批量操作
  6. 查看所负责的所有学生请假信息

Ⅳ、教务处端

  1. 拥有辅导员的所有权限
  2. 可直接通过请假时长超过 3 天的请假条

Ⅴ、考勤端

  1. 查看班级考勤信息

Ⅵ、管理员端

  1. 添加、删除、修改学生信息
  2. 添加、删除、修改教师信息
  3. 以上所有操作均可批量执行

五、数据库

数据库结构在开发过程中经过多次修改,导致后端重构了多次,浪费了大量时间。且现在的结构也隐隐约约感到有些不妥,也有大致改进的方向,但系统已初步实现。能跑就行!

以下是数据库表结构:

Python请假条怎么插入图片 python 请假审批系统_python_03