GIthub 开源项目地址 leave_approval_management_sys,遵循 Apache 2.0 开源协议。
系统设计
- 一、为什么选择 Flask ?
- Ⅰ、最小 Flask 应用
- 二、为什么选择 SQLite ?
- Ⅰ、SQLite 示例
- 三、请假流程
- 四、功能及模块
- Ⅰ、登录 / 注册
- Ⅱ、学生端
- Ⅲ、辅导员端
- Ⅳ、教务处端
- Ⅴ、考勤端
- Ⅵ、管理员端
- 五、数据库
前端 + 后端 同时开发的项目博主也是头一次做。之前没有任何后端开发经验(只用 Flask 搭建了一个二维码识别 API),本项目也是边学习边实践。
本项目的开发完全是摸着石头过河,编写程序之前只有请假流程是明确的,并且一直沿用没有发生变动。前端要实现的功能只有“登录注册”、“学生请假”、“教师批准”这几个大致的方向,然后写一步看一步,慢慢把其他功能细化完善的。
数据库已开始也非常简单,导致后面修改了很多次表结构,同时也更新了很多次后端请求数据库的逻辑。下面《四、功能及模块》的部分也是项目差不多完工才一次性总结的。
一、为什么选择 Flask ?
因为如下三个优点:
- 简洁
- 简洁
- 简洁
Ⅰ、最小 Flask 应用
仅仅只需要如下几行代码即可启动一个 Flask 服务器:
from flask import Flask # 导入 Flask 包
app = Flask(__name__) # 声明一个后端应用
# 设置路由
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run() # 启动后端服务器
二、为什么选择 SQLite ?
同样是三个优点:
- 简洁
- 简洁
- 简洁
并且 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() # 关闭 数据库连接
三、请假流程
分析
小北学生 App 的请假流程,得出如下请假流程:
四、功能及模块
Ⅰ、登录 / 注册
- 根据 id 登录并自动识别角色、获得对应权限、展示对应界面
- 只提供学生注册功能(未来将取消该功能,理论上不应该提供注册功能,只允许使用规定的账号登陆)
Ⅱ、学生端
- 请假
- 销假
- 查看历史请假信息
Ⅲ、辅导员端
- 可以直接通过请假时长在 3 天以内的请假条
- 请假时长大于等于 3 天的请假条将由教务处再次确认
- 驳回请假条
- 同意销假申请
- 同意及驳回均可批量操作
- 查看所负责的所有学生请假信息
Ⅳ、教务处端
- 拥有辅导员的所有权限
- 可直接通过请假时长超过 3 天的请假条
Ⅴ、考勤端
- 查看班级考勤信息
Ⅵ、管理员端
- 添加、删除、修改学生信息
- 添加、删除、修改教师信息
- 以上所有操作均可批量执行
五、数据库
数据库结构在开发过程中经过多次修改,导致后端重构了多次,浪费了大量时间。且现在的结构也隐隐约约感到有些不妥,也有大致改进的方向,但系统已初步实现。能跑就行!
以下是数据库表结构: