# 基于Flask与Mongodb的信息(教务)管理系统

本程序致力于打造体验更佳、数据处理更完善、服务器并发接受更稳定的教务管理系统,旨在于使用相关框架服务将程序性能不断优化,功能不断完善。
## 代码组成
```
├── README.md
├── main.py
├── static //模版静态文件
│ └── assets
│ ├── css
│ │ ├── admin.css
│ │ ├── amazeui.min.css
│ │ └── app.css
│ ├── fonts
│ │ ├── FontAwesome.otf
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ └── fontawesome-webfont.woff2
│ ├── img
│ │ └── logo.png
│ └── js
│ ├── amazeui.min.js
│ ├── app.js
│ ├── echarts.min.js
│ ├── iscroll.js
│ └── jquery.min.js
└── templates //模版文件
├── .DS_Store
├── admin_add.html
├── admin_course.html
├── admin_index.html
├── admin_user.html
├── chengji_add.html
├── chengji_check.html
├── course_add.html
├── course_arrange.html
├── course_manager.html
├── login.html
├── lx_add.html
├── lx_read.html
├── qj_add.html
├── qj_read.html
├── student.html
├── student_add_lx.html
├── student_cj.html
├── student_index.html
├── student_kb.html
├── student_lx.html
├── student_qj.html
└── teacher_index.html
```
## 程序组成
1. Nosql数据库设计
> 为何会选择Nosql数据库?
对于Nosql来说,存储的数据类型可以多样
包括文本、图片等非结构化数据,更有利于开发
```sql
user = mydb["user"]
```
新建`user`集合,用于储存用户信息
```sql
user.insert_one({'username': 'admin','password': 'admin','class': '无','name': '管理员','admin': 0})
user.insert_one({'username': 'liliu','password': 'liliu','class': '01','name': '李六','admin': 1})
user.insert_one({'username': 'chenhong','password': 'chenhong','class': '01','name': '陈红','admin': 2})
user.insert_one({'username': 'lidahong','password': 'lidahong','class': '01','name': '李大红','admin': 2})
```
新建`course`集合,用于储存课程信息
```mysql
course.insert_one({'name': '高等数学','description': '一门教数学的科目','class': '01'})
course.insert_one({'name': '通用英语','description': '一门教英语的科目','class': '01'})
```
新建`cj`集合,用于储存成绩信息
```sql
cj.insert_one({'username': 'chenhong','class': '01','name': '陈红', 'course': '高等数学','score': 99})
cj.insert_one({'username': 'chenhong','class': '01','name': '陈红', 'course': '通用英语','score': 98})
cj.insert_one({'username': 'lidahong','class': '01','name': '李大红', 'course': '高等数学','score': 100})
cj.insert_one({'username': 'lidahong','class': '01','name': '李大红', 'course': '通用英语','score': 98})
```
2. 服务器设计
采用python的`flask`框架,使用WGSI(Python Web Server Gateway Interface),监听路由,请求。
```python
app.run('0.0.0.0', debug=False)
```
3. 模版渲染
采用`jinja2`模版渲染,静态文件储存于`static `,
*Jinja2*是基于python的模板引擎,使用模版渲染出前端的查询界面。
## 功能组成
- 管理员
- 添加、删除、修改用户
- 新增课程
- 教师
- 新增留校填报
- 留校填报审批
- 成绩录入
- 课表录入
- 请假审批
- 学生
- 成绩查询
- 课表查询
- 留校填报
- 请假申报
## 使用指南
1. 安装mongodb数据库
- Windows
参考https://www.cnblogs.com/chy18883701161/p/11100560.html
- MacOS
```
brew tap mongodb/brew
brew install
[email protected]
```
2. 启动mongodb
3. python依赖安装
```python
pip install pymongo
pip install flask
```
4. 运行程序
```
python main.py
```
- 1
- 2
- 3
- 4
- 5
- 6
前往页