最近空闲时间在忙着写这个成绩管理系统,有一段时间没有更新博客了,现在后端部分写完,发文记录备忘。
  为什么会写这个成绩管理系统呢,其实是因为和老婆闲聊的时候说起她的学生成绩分散,而且每次登记成绩分数后要人工判断分数的优良中差、计算总分、平均分、合格率、优良中差占比等等。我想着用程序来解决这些问题比较方便,就写了这个程序。

功能需求

目前这个程序主要有以下功能:
1. 班级管理
2. 学生管理
3. 英语成绩管理(只是单科,因为只教英语)
4. 统计分析,自动判断、计算优良中差、总分、平均分、合格率、优良中差占比等等
5. 结果导出excel

功能设计如下图:

技术选择

  • 使用Flask框架实现后端API
  • 使用关系型数据库实现存储,测试环境使用了sqlite3
  • 使用pandas来实现数据的判断、计算

项目布局

程序命名为flask-requests-management,目录结构如下:

.
├── app                         项目主目录
│   ├── api                     api蓝图
│   │   ├── auth.py             api登陆验证
│   │   ├── classes.py          班级管理
│   │   ├── errors.py
│   │   ├── __init__.py
│   │   ├── results.py          成绩管理
│   │   ├── statistics.py       统计分析
│   │   └── students.py         学生管理
│   ├── main                    主路由蓝图
│   │   ├── static
│   │   ├── templates
│   │   ├── errors.py
│   │   ├── __init__.py
│   │   └── view.py             用户登陆注册
│   ├── extensions.py           扩展内容
│   ├── __init__.py             工厂函数
│   ├── models.py               数据库模型
│   └── util.py                 全局工具
├── instance                    sqlite3数据库存储目录
│   └── data-dev.db
├── logs                        日志目录
│   └── results.log
├── migrations                  数据库迁移管理
│   ├── versions
│   │   └── 37cb3b34e78d_.py    迁移脚本
│   ├── alembic.ini
│   ├── env.py
│   ├── README
│   └── script.py.mako
├── uploads
├── config.py                   项目配置文件
├── requirements.txt            依赖包文件
├── gun.py                      gunicorn启动文件
└── wsgi.py                     项目入口文件

依赖库

requirements.txt文件内容如下:

Flask==1.1.2
Flask-Cors==3.0.8
Flask-HTTPAuth==4.1.0
Flask-Migrate==2.5.3
Flask-SQLAlchemy==2.4.3
numpy==1.18.5
openpyxl==2.6.4
pandas==0.24.2
python-dotenv==0.14.0
six==1.15.0
xlrd==1.2.0
gunicorn==20.0.4
gevent==20.4.0

安装:
pip install -r requirements.txt

本文介绍了总体的设计和技术选型,下一篇将开始构建项目。