引言
本课程设计使用数据库,熟悉了Python语言操作数据库,对数据库的增删改查,实现Qt designer界面设计以及excel表格的读写,代码通俗易懂,方便对所学知识的掌握。
需求分析
用类对学生成绩、代码封装使得操作使用简单;
利用数据库,增加了操作大量数据的效率,便于增删改查;
将信息读取数据库,更新后写入数据库,及时备份;
界面设计,可以在实际中直接应用此项目。
熟悉了对于界面的背景设计、字体、空间颜色、美化风格等的设计,使界面使用更直观。
概要设计
数据库的使用
使用PyMySQL模块操作数据库对数据进行存取
先安装PyMySQL模块:pip install PyMySQL,再使用时直接导入即可:import pymysql
PyMySQL是封装了MySQL驱动的Python驱动,一个能使Python连接到MySQL的库。数据库的名称、密码都是自己设定的。
#定义了一个操作数据库的类,包括增删改查等功能
class PyMySQL:
def __init__(self):
# 建立一个MySQL连接
self.db = pymysql.connect(
host='localhost',
user='root',
passwd='root',
db='test',
port=3306,
charset='utf8'
)
# 获得游标
self.cursor = self.db.cursor()
# 关闭连接
def close(self):
# 关闭游标
self.cursor.close()
# 关闭数据库连接
self.db.close()
# 查询多条数据
def fetchall(self, sql):
self.cursor.execute(sql)
res = self.cursor.fetchall()
return res
# 获取单条数据
def fetchone(self, sql):
self.cursor.execute(sql)
res = self.cursor.fetchone()
return res
def execute(self, sql):
try:
self.cursor.execute(sql)
self.db.commit()
except:
self.db.rollback()
将存放学生成绩的excel表格导入到数据库中。
安装数据库
本机安装了数据库(使用数据库操作方便快捷,若没有安装数据库,本课程设计可以使用excel表格存储查找,同样也可以。并且在使用数据库时,确保数据库是打开的,在电脑-服务-查看)
新建数据库
create database student_score; 在数据库中新建了存放学生成绩的表格和存放教师登陆信息的表格。
使用数据库
use database ***
在数据库中创建表格create table ***,可以使用命令行也可以在数据库软件中直接创建,代码中创建也可以。多种方式自选
CREATE TABLE IF NOT EXISTS teacher_login(
username varchar(32) NOT NULL,
password varchar(32) NOT NULL
读取excel表格内容
excel数据存入到数据库的表格中
![](https://i-blog.csdnimg.cn/blog_migrate/40ccb20c064e3cc91322483906ef6f26.png)
将存放学生成绩信息的数据存入到数据库的表格中
![](https://i-blog.csdnimg.cn/blog_migrate/160505115f3468e43f2151e96f8a958b.png)
在数据库中可以查看到数据存放成功了
![](https://i-blog.csdnimg.cn/blog_migrate/a97bd5035b72e90030630f990d0a4d2c.png)
详细设计
本部分主要分为三个界面类
教师登陆界面
登陆界面中需要查看数据库中教师的信息是否存在,密码是否正确,并给出对应的提示
登陆代码
![](https://i-blog.csdnimg.cn/blog_migrate/b1c7454081fbaacff189a46b2394d521.png)
显示界面
![](https://i-blog.csdnimg.cn/blog_migrate/a2ee576d56ee1fb07e65aaf6d6a6cb03.png)
![](https://i-blog.csdnimg.cn/blog_migrate/351722c4e350471848ac3c7a7558ab58.png)
![](https://i-blog.csdnimg.cn/blog_migrate/166dc47c22ca1f078d7cc3e1f34d55e6.png)
教师注册界面
教师注册界面将注册信息存放到数据库中,对于注册输入的信息给出响应的提示
![](https://i-blog.csdnimg.cn/blog_migrate/d09241f45b35d61d87a1f19269eb01a0.png)
在数据库中查看注册信息是否导入
![](https://i-blog.csdnimg.cn/blog_migrate/68f1944134c166e48ad2e2a28df6b871.png)
效果
![](https://i-blog.csdnimg.cn/blog_migrate/fcbc758c0cf2b706f0c9863953e5f169.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f166f2ee4f4be80ea0722ecb381e2d3a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bc1f1a840e834f6229571845f5741525.png)
教师操作界面
![](https://i-blog.csdnimg.cn/blog_migrate/867b3af3ed7ef7b3ca339fcfc6bc0645.png)
对学生的成绩信息进行操作,可以增添、修改、查询、删除、导出
特别注意的是,增添信息后,数据库和界面表格中的信息都要有同样的操作,显示界面要实时刷新!!
增添信息
![](https://i-blog.csdnimg.cn/blog_migrate/ae630dca4f958e5047b287b6280bde39.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82537ad38fc784b17458a010f0eb2f69.png)
注意数据库和界面表格中的信息都要更新
修改信息
![](https://i-blog.csdnimg.cn/blog_migrate/a68ecd689a2357bd2b598d291ff874c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c06ab4c76501f317210f11de98aa6942.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92e2768e53b737f9d8214188de0976c3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6231dc4acaa69834c783c74c8f474d16.png)
查询信息
![](https://i-blog.csdnimg.cn/blog_migrate/6316c2b7720b503c812059c779fccee9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92d652d27a9712dd833aef9e02844a81.png)
若学号不存在,则查询失败
![](https://i-blog.csdnimg.cn/blog_migrate/03d3d027b7a46d33aa427d9b45808eca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b8de29fa70a565ab94cc2367cd89ac7c.png)
删除信息
![](https://i-blog.csdnimg.cn/blog_migrate/473a0cf71f1e1bd09cd93642fce396f1.png)
删除失败
![](https://i-blog.csdnimg.cn/blog_migrate/a568fac3b25034e2e8b3c461b456889e.png)
删除成功,数据库与界面表格中的数据都不存在了。
导出信息
将文件的信息写入到对应的excel文件中,文件名可以设定为当前的时间。
提示
![](https://i-blog.csdnimg.cn/blog_migrate/787e9ad915ff79dba86533505f186379.png)
默认写入成功到当前运行的文件夹,文件名为当前的时间,可以根据需要修改
![](https://i-blog.csdnimg.cn/blog_migrate/ee02302694073f97c0cf818c55319a20.png)
总结与分析
熟悉了数据库的使用,使得大量数据操作起来方便快捷。Qt界面设计减少了代码的编写。
遇到的问题
excel表格中的数据变了,但是界面表格中的数据未改变。由于采用了insert into到数据库,若主键已存在,数据就不会更新,必须加一个判断,若数据记录存在的话,删除再新加。或者使用replace into.
及时查看数据库中的信息,确保数据可以正常增删改查
注意界面的引用,容易出现界面显示不正常
在插入、更新操作中数据库中的信息无法更新,检查后发现是由于添加的信息项有缺失,无法加入。