美文网首页应用python轻松excel自动化
Python面向对象实战:学生教师信息管理(1)

Python面向对象实战:学生教师信息管理(1)

作者: 小雨Coding | 来源:发表于2021-03-09 15:44 被阅读0次

    前言

    这一节我们把python面向对象的知识综合在一起,包含了继承、封装、多态和抽象方法做一个小案例。


    1.gif

    part1 总体框架设计


    一、案例介绍

    通过一个界面,完成对老师和学生信息的增删改。在主体界面双击对应的学生或老师选项,可以打开明细窗口。
    其实这个案例不使用面向对象的思想也可以做出来,但是使用面向对象的思想设计的代码风格会清晰易懂,功能更具模块化。项目需求不是很难,但是很考验大家对面向对象思想的深入理解。

    二、类的总体设计

    类的设计是否科学合理,决定了整个面向对象项目代码的质量。我们从四大块对该项目进行类的设计。


    图片.png
    工程项目文件:
    屏幕快照 2021-03-17 21.39.27.png
    1. GUI界面设计思路

    GUI主体界面依然采用Tkinter进行绘制,主体内容通过Treeview表格显示,常见的Label标签、Button按钮也都有涉及。


    图片.png

    明细界面:点击按钮或者点击表格内容都会弹出明细界面,


    图片.png
    因为学生明细界面和教师明细界面,界面几乎相同,我们让学生界面和老师界面都继承一个抽象的明细模板界面。
    GUI结构框架.png

    我们可以这样来设计:
    明细窗体-->抽象成一个基类-->派生出学生明细、教师明细。


    明细窗体设计思路
    2. 数据存储设计思路

    我们暂时还没介绍数据库知识,这里我们依然通过文本文件存储数据,初始化的时候通过文件来读取数据。
    我们定义一个模块fileoperator.py来处理文件的读写,其中定义File类包含以下内容:

    • list_student_all存储所有的学生信息
    • list_teacher_all存储所有的教师信息
      定义了两个方法:
    • read_from_file读取文件,用来填充list_student_alllist_teacher_all
    • write_to_file写入文件,对list_student_alllist_teacher_all修改后,写入到文件
      图片.png
    3. 对象属性封装

    这里利用了继承和封装的知识,通过类传递多个属性,抽象出student和teacher的共有属性封装在基类Person中,其所具备的共有属性有:
    姓名、手机号码、邮箱地址、性别、出生日期。
    由Person派生出两个类:student和teacher

    class student(Person):
        def __init__():
            学号,专业,入学时间
    class Teacher(Person):
        def __init__():
            教师编号,职称,毕业院校,入职时间
    
    4. 实现增删改的功能

    我们写一个抽象的Service类,具备添加、修改、删除、校验的功能。然后分别派生出StudentService类和TeacherService类来实现这些方法。再单独定义一个Check类来分别对输入的数值进行校验。


    图片.png

    以上为我们整个类的规划,这只是我们自己的想法,未必是最优的,大家可以根据自己对面向对象的理解,自行设计类的规划。

    最后

    后续内容,会逐步完成窗体GUI的搭建、数据的存储、增删改功能的实现,敬请期待、届时我会给大家分享全部的源码和素材供大家练习使用。

    相关文章

      网友评论

        本文标题:Python面向对象实战:学生教师信息管理(1)

        本文链接:https://www.haomeiwen.com/subject/jwgvqltx.html