开发班级管理类

【问题描述】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

请定义一个班级管理类,类属性包含班级名称、班主任信息。首先向班级管理对象中添加班级名称、班主任姓名及学生信息,添加后输出班级信息;然后删除学号为“0002”的学生信息,并查找学号为“0001”的学生信息,完成操作后分别显示班级管理对象的信息。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类输出结果:kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

(1)添加班级名称、班主任姓名及学生信息后的显示结果:kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

(2)删除0002号学生信息后的显示结果:kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【题前思考】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

根据问题描述,填写表6-1-4。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

表6-1-4 问题分析kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【解题思路】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

通过分析得知,班级管理类中有学生pupils、班级clsname、班主任teacher 3个属性,需要对类做4个操作,添加学生进班级、显示学生信息、删除学生信息、查找学生信息。班级管理类的结构如图6-1-3所示。其中班级、班主任以参数的形式传入类,添加学生信息则是通过添加学生进班级的方法来完成操作。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

图6-1-3 班级管理类ClassManager结构kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【程序代码】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【代码分析】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

①:从模块a6_1_1学生信息类中导入Student类,后续会使用到Student类创建学生对象。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

②:定义类ClassManager。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

③:定义方法__init__(self,clsname,teacher)。参数clsname表示班级,teacher表示班主任,这两个参数用于初始化对象属性self.clsname和self.teacher。创建对象时的参数对应关系如图6-1-4所示。属性self.__pupils初始化为空列表。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

图6-1-4 创建对象时调用类的__init__( )方法kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

④:定义属性pupils用于访问私有属性self.__pupils,因为没有定义@setter.pupils修饰器修饰的方法,所以属性pupils是只读的。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

⑤:定义方法add(self,sno,name,sex)添加学生信息。该方法通过调用Student(sno,name,sex,self.clsname)实例化学生对象,然后再调用self.pupils.append( )方法将学生对象追加到学生列表self.pupils。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

⑥:定义方法remove(self,sno)删除学生信息。remove( )方法通过self.find(sno)方法根据学号sno从pupils找到sno对应的学生信息,再从列表self.pupils中删除该学生信息。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

⑦:定义方法find(self,sno)根据学号sno查找学生信息。通过遍历self.pupils中的每一个项,将它们的sno属性与参数sno比较,如果找到则返回该学生对象,反之则返回空(None)。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

⑧:定义方法show(self)显示该班级所有学生信息。print(f"{self.clsname+':'+self.teacher:^38s}")表示显示班级名称和教师姓名。print(f"{'学号':^8s}{'姓名':^6s}{'性别':^3s}{'班级':^20s}")表示显示表格的行标题信息,^8s表示占8个字符的位置,居中对齐。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

⑨:创建班级管理对象,并完成要求的操作。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类cls=ClassManager('2021级计算机1班','王老师')表示用ClassManager类创建班级管理对象cls,用于管理由王老师任班主任的2021级计算机班。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类cls.add('0001','张磊','男')等3条语句调用cls的方法cls.add( )将学生添加到2021级计算机班。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类调用cls的方法cls.show( )显示2021级计算机班学生信息。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类调用cls的方法cls.remove('0002')从班级中删除学号为0002的学生。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类调用cls的方法cls.find('0001')从班级中查找学号为0001的学生。如果查到,返回一个Student类的对象,然后再调用该学生对象的show( )方法,显示找到的学生信息。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【优化提升】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

仔细查看代码,我们可以发现,在ClassManager类中,只定义了增加学生、删除学生、查找学生的方法,没有定义修改学生信息的方法。增、删、查、改这4个基本功能还差一个“改”。下面在类中使用魔法方法__getitem__( )和__setitem__( )完成修改功能。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

定义了以上两个方法之后,就可以使用语句cls['0001'].show( )来显示学号为0001的学生信息,也可以使用语句cls['0001']={'name':'张五','sex':'女'}将学号为0001的学生姓名改为“张五”,将其性别改为“女”。从上例可以看出定义了__getitem__( )方法之后就可以使用“对象[下标]”的方法来读取对象信息,定义了__setitem__( )方法之后就可以用“对象[下标]=值”的方法来设置对象信息。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【技术全貌】kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

一个类可以通过定义具有特殊名称的方法来实现由特殊语法所引发的特定操作(如下标与切片),通常这些方法以双下划线(__)开头和结尾,称为魔法方法。基本的魔法方法见表6-1-5。容器类型的魔法方法见表6-1-6。例如,如果一个类定义了名为__getitem__( )的方法,并且x为该类的一个实例,则x[i]基本就等同于x.__getitem__(x,i)。如果想要查询更多的关于魔法方法的资料,请扫描二维码。kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

表6-1-5 基本的魔法方法kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

续表kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

续表kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

表6-1-6 容器类型的魔法方法kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

开发班级管理类kAM100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

关 键 词

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢