最近空闲时间在忙着写这个成绩管理系统,有一段时间没有更新博客了,现在后端部分写完,发文记录备忘。
为什么会写这个成绩管理系统呢,其实是因为和老婆闲聊的时候说起她的学生成绩分散,而且每次登记成绩分数后要人工判断分数的优良中差、计算总分、平均分、合格率、优良中差占比等等。我想着用程序来解决这些问题比较方便,就写了这个程序。
功能需求
目前这个程序主要有以下功能:
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
本文介绍了总体的设计和技术选型,下一篇将开始构建项目。