目 录

1、需求分析……………………………………………………………………………………………… – 1 –

2、功能设计与分析……………………………………………………………………………………. – 1 –

1、使用数据库对数据进行存取………………………………………………………………….. – 1 –

(1)使用PyMySQL模块操作数据库对数据进行存取……………………………… – 1 –

(2)创建数据库school,创建数据表student_sore、teacher_login………………. – 1 –

(3)使用xlrd模块从Excel文件中读取数据到数据库……………………………. – 1 –

(4)定义一个PyMySQL增删改查的工具类PyMySQLUtils……………………… – 2 –

2、使用桌面窗体界面进行交互………………………………………………………………….. – 3 –

(1)使用Tkinter模块实现图形化界面GUI设计……………………………………. – 3 –

(2)开始界面:教师注册、教师登录、退出系统…………………………………… – 3 –

(3)教师注册界面:输入账号、输入密码、确认账号、确定、返回………….. – 4 –

(4)教师登录界面:账号、密码、确定、返回………………………………………. – 4 –

(5)教师操作界面:添加、修改、查询、删除………………………………………. – 4 –

3、 实现所有相关信息的添加、修改、查询、删除等功能………………………………. – 5 –

(1)添加学生成绩信息……………………………………………………………………… – 5 –

(2)修改学生成绩信息……………………………………………………………………… – 6 –

(3)查询学生成绩信息……………………………………………………………………… – 7 –

(4)删除学生成绩信息……………………………………………………………………… – 7 –

(5)清空输入框的内容……………………………………………………………………… – 8 –

(6)写入到Excel文件……………………………………………………………………… – 8 –

3、总结与体会…………………………………………………………………………………………… – 9 –

(1)课程设计总结……………………………………………………………………………. – 9 –

(2)课程设计体会……………………………………………………………………………. – 9 –

4、运行结果…………………………………………………………………………………………….. – 10 –

(1)开始界面………………………………………………………………………………… – 10 –

(2)教师注册界面………………………………………………………………………….. – 10 –

(3)教师登录界面………………………………………………………………………….. – 12 –

(4)教师操作界面………………………………………………………………………….. – 13 –

1、需求分析

(1)通过类的知识实现学生成绩信息(学号、姓名、院系、三门课成绩、考试平均成绩、同学互评分、任课教师评分、综合测评总分,其中综合测评总分由:考试平均成绩70%,同学互评分10%,任课教师评分20% );

(2)能够实现学生成绩信息的保存和读取(使用数据库对数据进行存取);

(3)实现所有相关信息的输入、输出、查找、删除、修改等功能;

(4)系统界面应至少实现控制台界面(使用桌面窗体界面进行交互);

(5)通过xlrd和xlwt模块读取和写入Excel文件;

2、功能设计与分析

1、使用数据库对数据进行存取

(1)使用PyMySQL模块操作数据库对数据进行存取

先安装PyMySQL模块:pip install PyMySQL

再使用时直接导入即可:import pymysql

(2)创建数据库school,创建数据表student_sore、teacher_login

可以使用Navicat for MySQL创建,也可以使用预处理语句创建表,若不存在则创建,若存在则跳过;

(4)定义一个PyMySQL增删改查的工具类PyMySQLUtils

1)def __init__(self)获取连接:

打开数据库的连接,使用cursor()方法获取操作游标;

2)def fetchall(self, sql)查询获取多条数据:

使用execute()方法执行SQL语句,使用fetchall()方法获取多条数据;

3)教师操作界面:添加、修改、查询、删除

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)课程设计总结

学生成绩管理系统主要还是实现增删改查存取的功能,用PyMySQL操作数据库操作很方便实现,可以定义一个工具类PyMySQLUtils,简化代码避免冗余。图形化界面设计上用Tkinter实现的,导入tkinter模块、创建根窗体、添加人机交互控件并编写相应的函数、在主事件循环中等待用户触发事件响应;控件的使用放置这里需要多次试改,找到一个合适相对美观的布局,grid 就是用表格的形式定位的,place()就是给精确的坐标来定位,pack()就是会按照上下左右的方式排列;相对比较难的是获取输入框的数据后,需要转变类型才能计算考试平均成绩和保留的位数之类的;增删改查的功能都是先根据输入框中的学号操作数据库中的数据,接着根据输入框中的学号在储存学号列表的索引操作储存数据的列表中的数据,最后操作表格内容中的数据,其实就是对数据库、列表、ttk.Treeview树视图窗口控件的增删改查操作。排序功能是通过给表头绑定tree_sort_column函数,使用list.sort()方法,根据排序后索引移动,重写表头使之成为再点倒序的表头。

(2)课程设计体会

总体来说,这次课程设计时间上有点紧迫,很多想实现的功能都没写,本来是准备分为:教师注册登录操作、学生登录操作的,有些功能对学生不开放,但代码大量重复就省略了。这次课程设计复习并深入理解了Python语言基本特性、数据文件读取方法及面向对象思想,研究并掌握Python面向对象的语法特点和使用方法;简单使用了xlrd和xlwt模块实现Excel文件的读取和写入,实现了使用桌面窗体界面进行交互,和使用数据库对数据进行存取,基本掌握了PyMySQL和Tkinter模块的使用。

4、运行结果

下载链接:

https://download.csdn.net/download/weixin_68551689/87363832?spm=1001.2014.3001.5501