前言

上一节,我们已经完成了GUI界面的绘制,本节我们将实现数据的加载并显示到GUI中来。

part3 数据的存储与数据的展示

一、读取文件数据到系统

1. 需求分析

图片.png

我们现在希望能把存储在txt文件中的学生和教师信息读取到系统中来,分别存储在list_student_all和list_teacher_all中。

2. 实现过程

我们新建一个service包,并在该目录下创建一个fileoperator.py文件,定义一个File类,分别定义两个列表用于存储学号和老师信息,定义两个变量存储记录学生和老师信息的文件路径

# 记录学生信息的文件路径

self.student_path = "../file/student.txt"

# 记录教师信息文件的路径

self.teacher_path = "../file/teacher.txt"

# 定义存储所有学生的list

self.list_student_all = []

# 定义存储所有老师的list

self.list_teacher_all = []

接着定义一个方法read_from_file用来读取学生和老师的信息。记得用try...except做异常处理。然后使用with open逐行读取文本文件,并通过while循环将每次读到的结果存储到list_all_student列表中即可。

def read_from_file(self):

# 读取学生信息

try:

with open(self.student_path, mode="r", encoding="UTF-8") as fd_student:

# 逐行读取

current_line = fd_student.readline() # 读取了第一行

# 判断是否有数据

while current_line:

# 通过逗号分割成数组

student_list = current_line.split(",")

# 分隔后的数组直接添加到存储所有学生信息的list中

self.list_student_all.append(student_list)

# 读取下一行

current_line = fd_student.readline()

except Exception as e:

raise e

二、展示学生和教师信息

1. 需求分析

我们已经读取到文本文件中的信息了,接下来我们就把这些数据展示到主界面GUI中。为了一打开主界面GUI就能看到数据,我们修改maingui.py中的代码。

2. 实现过程

我们在MainGUI类的初始化方法中,实例化一个我们上面定义的File类,为了调用这个类,所以我们要导入一下fileoperator

from fileoperator import *

然后实例化一个file对象file_info

self.file_info = File()`

但是此时我们访问file_info对象中的list_student_all会很长很累赘,我们直接新定义一个变量来指向list_student_all这个数组

self.student_all = self.file_info.list_student_all

接下来,我们再定义一个方法load_student_treeview将student_all列表中的数据通过TreeView这个表格显示出来。

3. TreeView加载数据的方法

TreeView这个常用的表格控件,加载数据是有一定顺序的;

(1)把当前的学生TreeView内容清空

通过调用TreeView对象的get_children方法,获取索引列表,用一个for循环依次调用TreeView对象的delete方法,传入索引值作为参数将表格清空。

for index in self.Tree_student.get_children():

self.Tree_student.delete(index)

(2)加载列表中的数据

先判断列表是否为空,如果为空则弹窗警告。否则调用TreeView对象的insert方法,通过一个for循环依次将列表中的数据插入到表格中。

if len(self.student_all) == 0:

showinfo("系统消息","没有任何学生信息加载到表格!")

else:

for index in range(len(self.student_all)):

self.Tree_student.insert("", index, values=

(self.student_all[index][0],

self.student_all[index][1],

self.student_all[index][2],

self.student_all[index][6],

self.student_all[index][4],

self.student_all[index][5],))

以此类推,填充教师信息的表格也是这样操作。

4. 效果演示

图片.png

最后

这一讲,我们完成了数据的存储方式的设计,已经从文件中读取数据加载到GUI界面中,下一节我们将完善明细窗体的不同状态。

python教师管理系统,Python面向对象实战:学生教师信息管理(3)相关推荐

  1. Python 实现学生管理系统(面向对象版)

    目标 1.了解面向对象开发过程中类内部功能的分析方法 2.了解常用系统的功能:添加.删除.修改.查询 一.项目需求 使用面向对象编程思想完成学员管理系统的开发,具体如下: 1.系统要求:学员数据存储在 ...

  2. python制作学生管理系统_Python——面向对象,简易学生信息管理系统

    一.概述 1.1涉及到的知识点 项目开发:创建项目,创建包,导入包: 面向对象:静态方法,继承,内置函数,自定义函数: 数据类型:列表,字典,字符串.列表.字典的转换和自动生成导向: 异常处理:捕获异 ...

  3. Vue+SpringBoot+ElementUI实战学生管理系统-9.教师管理模块

    1.章节介绍 前一篇介绍了班级管理模块,这一篇编写教师管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 教师列表 修改教师 4.模块 ...

  4. python综合管理系统_学生综合信息管理系统

    1 绪论 1.1 项目概述 学生基本信息管理系统分为六个板块 分别是修改密码.班级管理 学生管理.教师管理.课程管理和选课管理 ①密码修改是对登录身份(系统管理员.教师.学生)密码的修改 ②班级管理系 ...

  5. (附源码)python+mysql+基于python的学生成绩管理系统 毕业设计071143

    Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷而又 ...

  6. python+mysql+基于python的学生成绩管理系统 毕业设计-附源码071143

    Django学生成绩管理 摘   要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷 ...

  7. 基于python的师生一体化学生信息管理系统——python期末设计!!!

    系统介绍 该系统使用python语言进行程序设计,设计的主要内容可概括为以下几点:师生一体化学生信息管理系统,首先由管理员(教师)增加.删除.修改.查找.导出学生信息(excel表格的形式),再有学生 ...

  8. 学生管理系统-Python tkinter图形化界面+sqlserver+柱状图

    参考了大佬的,把mysql数据库改成了sqlserver 附上大佬的代码链接 https://blog.csdn.net/qq_45811949/article/details/106065845?o ...

  9. Python教学管理系统、学生选课考试系统源代码,基于Django

    项目介绍 系统主要功能包括, 院系管理员发布课程信息,教师选课,指定课程教材并编写教材大纲和学时数,然后根据教材编写每周教学内容:随后学生进行选课,其中学生选课是根据教师选课后的课程号进行选课,然后院 ...

  10. Python基础项目实践之:学生信息管理系统

    Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...

最新文章

  1. 201403-4 无线网络
  2. ReadResolve方法与序列化
  3. 保留字(reserved field)是什么意思?
  4. QT5.14 VS2019
  5. ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
  6. HDU 2574 HDOJ 2574 Hdu Girls' Day ACM 2574 IN HDU
  7. 骗术 —— 魔高一尺道高一丈
  8. vue-router的简单理解
  9. KerberosSDR代码笔记(3) 主界面程序
  10. matlab常用滤波处理(图片)小波、高斯、均值、中值
  11. 证明 总偏差平方和 = 回归平方和 + 残差平方和
  12. 覆了天下也罢,始终不过一场繁华
  13. 点量云流化技术在云游戏和虚拟仿真教学中有啥优势?
  14. [独立游戏][纳税]个人独立游戏缴税纳税相关问题
  15. 【Linux】安装系统的时候遇到grub-install Error 问题的解决,超详细傻瓜式教程
  16. Directive 详解
  17. 服务器网站权限,在服务器上设置网站权限
  18. python中math的ln_Python math库 ln(x)运算的实现及原理
  19. Trips and Users
  20. 通过实战测试无线网络的速度

热门文章

  1. mcafee杀死oracle,【搬运】跟客服要来的迈克菲卸载工具,拯救你的笔记本
  2. Odin插件与基于元数据的编辑器实现
  3. 笔记本系统恢复连载之九:神舟笔记本系统恢复
  4. 围棋知名AI-KataGo 下载分享
  5. Springboot+netty实现Web聊天室
  6. ACDsee的安装过程
  7. tracert 原理
  8. opencv 摄像机标定
  9. 整站下载工具webHttracker webside copier
  10. 信创操作系统--麒麟Kylin桌面版(项目五 软件管理:应用商店、deb包安装、包管理器)