项目开发:Xiang Jinhu,Chen Wei,Fu Tongyong
项目指导:Li Xipeng
这个项目实现了湖北师范大学正方教务系统的一套API: 包括模拟登陆,个人信息查询,课表获取,成绩查询,成绩邮箱/微信推送等等。随着API的不断完善与扩充,可以很方便为本校学生作为后台服务。 用户只需输入个人学号密码即可获取个人成绩与课程信息,并且在系统首页能够以折线图的形式来展示学生个人的平均绩点走向,同时能够将个人成绩以微信推送和邮件发送的方式提供给用户,大大增加了本校学生查询个人成绩相关信息的便利性。
语言:python2.7
运行环境:ubuntu16.04
Web 应用框架:Flask1.0.2
数据库:MySQL 8.0.12 for Linux on x86_64
ORM框架:flask-sqlalchemy2.3.2
数据库迁移:flask-migrate2.2.1
, flask-script2.0.6
爬虫相关:requests2.19.1
, BeautifulSoup4.6.3
前端UI:amazeui
, pyecharts
, bootstrap3.3.7
矢量图标:Iconfont
, Glyphicon Halflings
字体:youziku
邮件发送:smtplib
- 学生用户各学期的平均成绩点折线图直观展示
通过shutil将爬虫爬取存入数据库的平均绩点绘制成折线图展示
- 支持学生用户进行各学期的成绩信息查询,并且将合格,不合格以不同颜色区分开来
通过教务系统个人信息页面,抓取,个人信息,并持久化保存到数据库中,在前端界面做以展示。
- 支持学生用户进行各学期的课程信息查询
通过教务系统课表信息页面,抓取,课程信息,并持久化保存到数据库中,在前端界面做以展示。
- 支持将学生的成绩信息通过填写的邮箱进行推送
根据smtp协议实现成绩邮箱推送。
- 支持将学生的成绩信息通过移动端微信扫描二维码实现微信推送
通过爬虫实现微信登陆以及向文件传输助手发送成绩
getEnPassword()
:对输入的密码进行加密
spiderLogin()
:爬虫登陆湖北师范大学教务系统
getScore()
:爬取成绩
addScoreDB()
:解析成绩数据并存入数据库
timeTable()
:爬取课程表
addTimetableDB()
:解析课程数据存入数据库
chart()
:绘制平均绩点折线图
exts()
:计算平均绩点、学分数据
sub_query()
:获取对应学年学期的成绩对象
draw()
:统计成绩的学年学期,每学期的平均绩点
getTimeTable()
:保存对应学期的课程数据,用于数据渲染
sendemail()
:将解析好的内容发送到指定邮箱
parsermail()
:拼接成绩表,用于邮箱推送
wechatInfo()
:拼接成绩文本,用于微信推送
通过本命令安装有关依赖库:
pip install -r requirements.txt
使用前需要修改的内容:
config.py
中的数据库信息sendmail.py
中发件人信息
使用前数据库需支持中文:sql>set character_set_server=utf8;
sql>set character_set_database=utf8;
使用flask-script
配合flask-migrate
进行版本库迁移,第一次使用时在命令行中使用python manage.py db init
进行初始化,建立数据库迁移相关的文件和文件夹,之后每次需要迁移依次使用python manage.py db migrate
和python manage.py db upgrade
即可
可能会出现bootstrap框架失效的情况,使用时看情况自行调整
项目启动:python view.py
数据库ER图
|-- README.md
|-- __init__.py
|-- config.py
|-- crypto_rsa
| |-- RSAJS.py
| |-- __init__.py
| |-- base64.py
| `-- safeInput.py
|-- exts.py
|-- manage.py
|-- matplot.py
|-- migrations
|-- models.py
|-- requirements.txt
|-- sendemail.py
|-- spider.py
|-- static
| |-- css
| | |-- admin.css
| | |-- amazeui.min.css
| | `-- app.css
| |-- fonts
| | |-- FontAwesome.otf
| | |-- fontawesome-webfont.eot
| | |-- fontawesome-webfont.ttf
| | |-- fontawesome-webfont.woff
| | `-- fontawesome-webfont.woff2
| |-- images
| | |-- [email protected]
| | |-- favicon.png
| | `-- logo.png
| `-- js
| |-- amazeui.min.js
| |-- app.js
| |-- echarts.min.js
| |-- iscroll.js
| `-- jquery.min.js
|-- templates
| |-- QRlogin.html
| |-- base.html
| |-- index.html
| |-- login.html
| |-- score.html
| |-- sendchat.html
| |-- sendemail.html
| |-- student.html
| `-- timetable.html
`-- view.py