【Python课程设计】学生成绩管理系统

【Python课程设计】学生成绩管理系统

        • 1、需求分析
        • 2、功能设计与分析
          • 1、使用数据库对数据进行存取
            • (1)使用PyMySQL模块操作数据库对数据进行存取
            • (2)创建数据库school,创建数据表student_sore、teacher_login
            • (3)使用xlrd模块从Excel文件中读取数据到数据库
            • (4)定义一个PyMySQL增删改查的工具类PyMySQLUtils
          • 2、使用桌面窗体界面进行交互
            • (1)使用Tkinter模块实现图形化界面GUI设计
            • (2)开始界面:教师注册、教师登录、退出系统
            • (3)教师注册界面:输入账号、输入密码、确认账号、确定、返回
            • (4)教师登录界面:账号、密码、确定、返回
            • (5)教师操作界面:添加、修改、查询、删除
          • 3、实现所有相关信息的添加、修改、查询、删除等功能
            • (1)添加学生成绩信息
            • (2)修改学生成绩信息
            • (3)查询学生成绩信息
            • (4)删除学生成绩信息
            • (5)清空输入框的内容
            • (6)写入到Excel文件
        • 3、总结与体会
        • 4、运行结果
          • (1)开始界面
          • (2)教师注册界面
          • (3)教师登录界面
          • (4)教师操作界面
            • 1)添加学生成绩信息
            • 2)修改学生成绩信息
            • 3)查询学生成绩信息
            • 4)删除学生成绩信息
            • 5)学生成绩信息排序
            • 6)写入到Excel文件
        • 附:源代码+Excel文件+报告下载地址

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创建,也可以使用预处理语句创建表,若不存在则创建,若存在则跳过;
【Python课程设计】学生成绩管理系统_第1张图片

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

先安装xlrd模块:pip install xlrd,再使用时直接导入即可:import xlrd
打开一个Excel文件,通过sheet的索引获取sheet表,循环获取每个单元格的值,一行一行读取到数据库表中。
【Python课程设计】学生成绩管理系统_第2张图片
【Python课程设计】学生成绩管理系统_第3张图片

(4)定义一个PyMySQL增删改查的工具类PyMySQLUtils
  • 1)def __init__(self) 获取连接:打开数据库的连接,使用cursor()方法获取操作游标;
    【Python课程设计】学生成绩管理系统_第4张图片
  • 2)def fetchall(self, sql) 查询获取多条数据:使用execute()方法执行SQL语句,使用fetchall()方法获取多条数据;
    【Python课程设计】学生成绩管理系统_第5张图片
  • 3)def fetchone(self, sql) 查询获取单条数据:使用execute()方法执行SQL语句,使用fetchone()方法获取单条数据;
    【Python课程设计】学生成绩管理系统_第6张图片
  • 4)def execute(self, sql) 添加删除更新操作:使用execute()方法执行SQL语句,提交到数据库执行,发生错误时回滚;
    【Python课程设计】学生成绩管理系统_第7张图片
  • 5)def close(self) 关闭连接:关闭游标,关闭数据库连接;
    【Python课程设计】学生成绩管理系统_第8张图片
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绑定;在主事件循环中等待用户触发事件响应。
【Python课程设计】学生成绩管理系统_第9张图片

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

class TeacherLogin:(销毁上一个窗口)初始化一个根窗口window;添加两个Entry输入控件,用于显示用户输入文本,添加两个Button按钮控件,将其分别与关联函数login、back绑定;在主事件循环中等待用户触发事件响应。
【Python课程设计】学生成绩管理系统_第10张图片

(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按钮控件,将其分别与关联函数绑定;在主事件循环中等待用户触发事件响应。
【Python课程设计】学生成绩管理系统_第11张图片
【Python课程设计】学生成绩管理系统_第12张图片

3、实现所有相关信息的添加、修改、查询、删除等功能
(1)添加学生成绩信息

insert:判断输入框中的学号在不在储存学号的列表中,在则警告"该学生成绩信息已存在!";不在则先添加输入框中的数据到数据库中,接着添加到储存储存数据的列表中,最后添加到表格内容中。
【Python课程设计】学生成绩管理系统_第13张图片

(2)修改学生成绩信息

update:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则先根据输入框中的学号修改数据库中的数据,接着根据输入框中的学号在储存学号列表的索引删除储存数据的列表中的数据,最后删除表格内容中的数据。
【Python课程设计】学生成绩管理系统_第14张图片

(3)查询学生成绩信息

select:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则根据输入框中的学号在储存学号列表的索引直接查询储存数据的列表中的数据,把数据设置到输入框中。
【Python课程设计】学生成绩管理系统_第15张图片

(4)删除学生成绩信息

delete:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则先根据输入框中的学号删除数据库中的数据,接着根据输入框中的学号在储存学号列表的索引删除储存数据的列表中的数据,最后删除表格内容中的数据。
【Python课程设计】学生成绩管理系统_第16张图片

(5)清空输入框的内容

clear:通过StringVar.set()方法直接把输入框的内容设置为空。
【Python课程设计】学生成绩管理系统_第17张图片

(6)写入到Excel文件

先安装xlwt模块:pip install xlwt,再使用时直接导入即可:import xlwt
新建一个Excel文件,添加一个名为sheet1的表,设置允许重写覆盖,从数据库中获取数据,循环向sheet写入数据,最后保存文件中。
【Python课程设计】学生成绩管理系统_第18张图片
【Python课程设计】学生成绩管理系统_第19张图片

3、总结与体会

4、运行结果

(1)开始界面

【Python课程设计】学生成绩管理系统_第20张图片

(2)教师注册界面

【Python课程设计】学生成绩管理系统_第21张图片
【Python课程设计】学生成绩管理系统_第22张图片

(3)教师登录界面

【Python课程设计】学生成绩管理系统_第23张图片
【Python课程设计】学生成绩管理系统_第24张图片

(4)教师操作界面
1)添加学生成绩信息

【Python课程设计】学生成绩管理系统_第25张图片
【Python课程设计】学生成绩管理系统_第26张图片

2)修改学生成绩信息

【Python课程设计】学生成绩管理系统_第27张图片
【Python课程设计】学生成绩管理系统_第28张图片

3)查询学生成绩信息

【Python课程设计】学生成绩管理系统_第29张图片
【Python课程设计】学生成绩管理系统_第30张图片

4)删除学生成绩信息

【Python课程设计】学生成绩管理系统_第31张图片
【Python课程设计】学生成绩管理系统_第32张图片

5)学生成绩信息排序

【Python课程设计】学生成绩管理系统_第33张图片
【Python课程设计】学生成绩管理系统_第34张图片

6)写入到Excel文件

【Python课程设计】学生成绩管理系统_第35张图片
【Python课程设计】学生成绩管理系统_第36张图片
【Python课程设计】学生成绩管理系统_第37张图片

附:源代码+Excel文件+报告下载地址

你可能感兴趣的:(#,Python练习)