Python课程设计:学生成绩管理系统(附源代码)
版权声明:本文为CSDN博主「大格子嘞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:
https://blog.csdn.net/qq_43971504/article/details/107048678
大家好,欢迎来到 Crossin的编程教室 !
今天给大家分享一个Python开发教学实例,涉及GUI、数据库、Excel导入导出等功能。
1、需求分析
通过类的知识实现学生成绩信息(学号、姓名、院系、三门课成绩、考试平均成绩、同学互评分、任课教师评分、综合测评总分,其中综合测评总分由:考试平均成绩70%,同学互评分10%,任课教师评分20% );
能够实现学生成绩信息的保存和读取(使用数据库对数据进行存取);
实现所有相关信息的输入、输出、查找、删除、修改等功能;
系统界面应至少实现控制台界面(使用桌面窗体界面进行交互);
通过xlrd和xlwt模块读取和写入Excel文件;
2、功能设计与分析
1、使用数据库对数据进行存取
(1)使用PyMySQL模块操作数据库对数据进行存取
先安装PyMySQL模块:pip install PyMySQL
,再使用时直接导入即可:import pymysql
;
(2)创建数据库school,创建数据表student_sore、teacher_login
可以使用Navicat for MySQL创建,也可以使用预处理语句创建表,若不存在则创建,若存在则跳过;
(3)使用xlrd模块从Excel文件中读取数据到数据库
先安装xlrd模块:pip install xlrd
,再使用时直接导入即可:import xlrd
;
打开一个Excel文件,通过sheet的索引获取sheet表,循环获取每个单元格的值,一行一行读取到数据库表中。
(4)定义一个PyMySQL增删改查的工具类PyMySQLUtils
1)
def __init__(self)
获取连接:打开数据库的连接,使用cursor()方法获取操作游标;2)
def fetchall(self, sql)
查询获取多条数据:使用execute()方法执行SQL语句,使用fetchall()方法获取多条数据;3)
def fetchone(self, sql)
查询获取单条数据:使用execute()方法执行SQL语句,使用fetchone()方法获取单条数据;4)
def execute(self, sql)
添加删除更新操作:使用execute()方法执行SQL语句,提交到数据库执行,发生错误时回滚;5)
def close(self)
关闭连接:关闭游标,关闭数据库连接;
2、使用桌面窗体界面进行交互
(1)使用Tkinter模块实现图形化界面GUI设计
使用时直接导入即可:
from tkinter import *
from tkinter import ttk
import tkinter.font as tkFont
import tkinter.messagebox as messagebox
(2)开始界面:教师注册、教师登录、退出系统
class StartMenu:(销毁上一个窗口)初始化一个根窗口window;添加Label标签控件,用于单行文本显示"学生成绩管理系统";添加三个Button按钮控件,将其分别与关联函数lambda: TeacherRegister、lambda: TeacherLogin、window.destroy绑定;在主事件循环中等待用户触发事件响应。
(3)教师注册界面:输入账号、输入密码、确认账号、确定、返回
class TeacherRegister:(销毁上一个窗口)初始化一个根窗口window;添加Label标签控件,用于单行文本显示"教师注册页面",“输入账号”、“输入密码”、“确认账号”;添加三个Entry输入控件,用于显示用户输入文本,添加两个Button按钮控件,将其分别与关联函数register、back绑定;在主事件循环中等待用户触发事件响应。
(4)教师登录界面:账号、密码、确定、返回
class TeacherLogin:(销毁上一个窗口)初始化一个根窗口window;添加两个Entry输入控件,用于显示用户输入文本,添加两个Button按钮控件,将其分别与关联函数login、back绑定;在主事件循环中等待用户触发事件响应。
(5)教师操作界面:添加、修改、查询、删除
class TeacherMenu:(销毁上一个窗口)初始化一个根窗口window;添加三个Frame框架控件,用于框架分组self.frame_center、self.frame_left、frame_right;在中心区域添加ttk.Treeview树视图窗口控件,ttk.Scrollbar 滚动条控件,设置列、表头,定义储存数据的列表,从数据库获取表格内容,设置表格内容,给表头绑定函数tree_sort_column,点击可排序,给表格绑定点击事件tree_click,获取被点击的条目;在左方区域添加八个Label标签控件,用于单行文本显示;添加八个Entry输入控件,用于显示用户输入文本,添加六个Button按钮控件,将其分别与关联函数绑定;在主事件循环中等待用户触发事件响应。
3、实现所有相关信息的添加、修改、查询、删除等功能
(1)添加学生成绩信息
insert:判断输入框中的学号在不在储存学号的列表中,在则警告"该学生成绩信息已存在!";不在则先添加输入框中的数据到数据库中,接着添加到储存储存数据的列表中,最后添加到表格内容中。
(2)修改学生成绩信息
update:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则先根据输入框中的学号修改数据库中的数据,接着根据输入框中的学号在储存学号列表的索引删除储存数据的列表中的数据,最后删除表格内容中的数据。
(3)查询学生成绩信息
select:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则根据输入框中的学号在储存学号列表的索引直接查询储存数据的列表中的数据,把数据设置到输入框中。
(4)删除学生成绩信息
delete:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则先根据输入框中的学号删除数据库中的数据,接着根据输入框中的学号在储存学号列表的索引删除储存数据的列表中的数据,最后删除表格内容中的数据。
(5)清空输入框的内容
clear:通过StringVar.set()方法直接把输入框的内容设置为空。
(6)写入到Excel文件
先安装xlwt模块:pip install xlwt
,再使用时直接导入即可:import xlwt
;
新建一个Excel文件,添加一个名为sheet1的表,设置允许重写覆盖,从数据库中获取数据,循环向sheet写入数据,最后保存文件中。
3、运行结果
(1)开始界面
(2)教师注册界面
(3)教师登录界面
(4)教师操作界面
1)添加学生成绩信息
2)修改学生成绩信息
3)查询学生成绩信息
4)删除学生成绩信息
5)学生成绩信息排序
6)写入到Excel文件
获取源代码+Excel文件+报告,请在公众号 Crossin的编程教室 后台回复:成绩
_往期文章推荐_