- 本项目拟结合数据库与前端界面的编写实现数据库中内容的查询,与偏好列表的添加删除等操作。
- 通过Python爬取2018年真实的高考分数及录取信息,获得2018年内蒙古高考的详细录取信息等详细数据。
- 同时,相比较于官方公布数据,官方出于防止宣传目的对于排名信息进行了隐藏(排名前100的考生不显示具体名次),本项目根据全部考生信息,进行了再次的排序比较,从而可以详细的查询到每名考生,每个分数的位次
- 考生可根据个人需求,对2018年高考的录取信息进行快速查询。
- 使用MySQL、Python、PyQt5 实现数据库与前端界面相配合的数据展示及偏好收藏系统
- PyQt5连接MySQL
- Python GUI教程:在PyQt5中使用数据库
- 参考项目:简易人事管理系统
- MySQL数据库设计
- 使用BeautifulSoup4及requests爬虫收集真实高考数据爬虫收集数据
- 连接数据库
- GUI界面实现
- 账户注册登录实现
- 加入我的喜好功能:可以将偏好的院校信息加入喜好页面,实现偏好院校速查
- 添加功能……
- 账户信息记录表:
主要分为:账号密码(Account)、邀请码(InviteList)和个人喜好(favourite)。账户信息设计为邀请注册机制,即输入邀请码,即可完成注册。详细E-R图如右图。
- InvitedList与Account为一对多关系,旨在实现通过一个邀请码可以注册所个账号。在邀请码表中,key作为主键存储邀请码,而其后的number记录邀请码的剩余使用次数,在注册时将其与剩余注册次数比对,如若未找到对应邀请码或剩余次数为0,则无法进行注册。
- favourite表与Account相关联,并以Account中的username与其自身的college_id作为共同主键,favourite与Account为多对一关系,旨在能够实现一个用户可以收藏多个院校功能。 favourite表中记录了每个用户的收藏院校名录,从这可以查询到每个用户的收藏院校。
- Account表中保存用户名和密码,其中以用户名为主键,用户登录时需要比对用户名与其密码相对应,才可以登录。
- 院校信息表:
包括考生信息表(Candidate)、专业信息表(zhuanye)和院校信息表(college),表中保留了全部院校、专业及考生的信息,其E-R图如右图
- 院校信息表(college):院校信息表主要保存了院校的编号和院校名称,并以院校编号(idcollege)为主键(用于区分有存在同一院校分多个编号招生的情况)
- 专业信息表(zhuanye):以院校的编号(idcollege)为外键,专业信息与院校信息为多对一关系,即同一院校可以有多个专业。在专业信息表中,以院校编号(college_id)、专业编号(ID)和科类(文科或理科)(type)共同作为主键,存在同一专业同时招文科理科考生情况,所以将科类加入主键,防止专业信息出现冲突情况。
- 考生信息表(Candidate):考生信息表记录了考生的全部信息,包括:考生编号(idCandidate)、考生姓名(Candidate_name)、性别(gender)、民族(minzu)、录取状态(status)、录取院校编号(CollegeID)、院校名称(CollegeName)、总分(zf1)、加分条件(addScore)、特征总分(含加分)(tot_score)、录取批次(AdmissionLevel)、录取专业编号(zhuanye_ID)、录取类型(AdmitType)、录取时间(AdmitTime)、语文(Chinese)、数学(Math)、文科综合(CLiberal)、理科综合(CScience)、外语(ForeignLanguage)、外语听力(FLListen)、外语口语(FLSpeaking)、考生类型(type) 条目组成。其中,以考生编号(idCandidate)作为唯一主键。其中,院校编号(CollegeID)、专业编号(zhuanye_ID)和考生类型(type)均为zhuanye表中外键。
- 由于考生信息包含属性较多,且对于复杂属性,如总分,考生与其为一对一关系,所以将复杂属性一并保存入考生表中,未对其进行关系模式的拆分,无需拆分为多个表来保存。
- 排名表:
包括文科排名表(rankArt)和理科排名表(rankSci)。
- 文科排名表与理科排名表均以分数为主键,设置排名表主要目的为在进行显示时减少查询需要消耗的复杂度,转而保存为固定数据,无需计算,仅需查找。
- 其中排名表的数据综合计算插入和官方数据结合,通过计算的参数和官方数据进行组合,生成最终的排名表内容
- 数据以2018年内蒙古普通高等学校招生全国统一考试录取信息为主要数据基础,通过Python爬虫(requests、BeautifulSoup4)从网页爬取录取数据,转而存入MySQL数据库进行分类储存,以供查询。
- 院校信息来源:内蒙古招生考试信息网
- 排名信息来源:2018年内蒙古高考成绩排名一分一段(文科/理科)
- 与数据库的连接
- 将其封装成函数,为每个用户新建一个连接,故可实现多个用户同时访问数据库
- 增删查改
- 利用query函数执行对应的sql语句,完成相应的操作
- 登录界面
- 必须用已有的账户密码进行登录,没有账户必须先通过有效的邀请码进行注册然后登录。 其中,登录和注册功能都是通过与数据库里的Account和InvitedList两个表相对应。
- 信息显示界面
- 标题主要利用QLabel来显示。 进入录取分数查询界面时,通过QComboBox获取用户选定的内容,然后利用信号与槽机制对用户选定的条件,在数据库里进行相应查询,并将结果显示出来。其中每位用户我们都设置有自己喜欢的收藏夹,将自己感兴趣的学校的信息收藏到自己的收藏中,查看。在收藏夹里可进行删除操作,同时会有QMessageBox来提示。 表格显示里,利用的是QWidgetable,并设置为只可看不可改的效果,在连接跳转处设置为QButton,可以点击查看录取的考生信息。
- 登录界面采用QMainWindow窗口,其余窗口都是继承父类采用QWidget窗口.
- 登录或注册后进入系统
- 根据条件快速筛选所需数据后点击确定按钮查看
- 可点击收藏夹相关按钮将数据收藏及管理
- 可点击相关按钮进入获取具体信息