python面向对象实现中学生信息管理系统2

"""

编写学员实体类,对应属性包含:学号、姓名、性别。

编写学员名单管理类,实现删除学员方法、查询学员方法。

学员实体类添加一个私有属性成绩,要求实现对应的 getter 和 setter。

实现更新学员、添加学员操作。

"""

知识点

  • 实体类

  • 成员变量属性

  • 方法

  • Python 类型注解

  • Python 数据类dataclas, @dataclass装饰器

from dataclasses import dataclass, field


@dataclass
class Student:
    """
    自己根据题目要求实现
    """
    number : int
    name : str
    gender : str
    __grades : float = field(default=None, init = False)
    def grades_get(self):
        print(f"学号为{self.number}的学生成绩为{self.__grades}分")


    def grades_set(self, new_grade:float):
        self.__grades = new_grade



class StudentList:
    def __init__(self, student_list: list[Student]):
        self.s_list = student_list

    def get(self, student_id: int):
        """
        根据 student_id 查询信息
        """
        for i in self.s_list:
            if i.number == student_id:
                return i


    def delete(self, student_id: int):
        """
        根据 student_id 删除信息
        """
        for i in self.s_list:
            if i.number == student_id:
                self.s_list.remove(i)

    def update(self, student: Student):
        """
        更新学生的信息
        """
        for i in self.s_list:
            if i.number == student.number:
                index = self.s_list.index(i)
                self.s_list[index] = student


    def save(self, student: Student):
        """
        添加新学生
        """
        self.s_list.append(student)


if __name__ == '__main__':
    # 入参自己定义
    s1 = Student(name="张三", number=1, gender="男")
    s2 = Student(name="李四", number=2, gender="男")
    s3 = Student(name="小五", number=3, gender="女")
    # print(s3)
    # 初始化一个成员名单
    s_list = StudentList([s1, s2, s3])
    s1.grades_set(65)
    s2.grades_set(82)
    s3.grades_set(90)
    print(s1, s_list.s_list)
    print(s_list.get(1))
    s_list.get(2).grades_get()
    s_list.get(3).grades_set(60)
    s_list.get(3).grades_get()
    s4 = Student(name="小哥哥", number=4, gender="男")
    s_list.save(s4)
    print(s_list.s_list)
    s5 = Student(name="小姐姐", number=4, gender="女")
    s_list.update(s5)
    print(s_list.get(4))
    s_list.delete(4)
    print(s_list.s_list)

    # print(s_list.get(2))
    # #实现save
    # s_list.save()
    # # 实现update
    # s_list.update()
    # # 实现get()方法
    # s_list.get()
    # # 实现delete
    # s_list.delete()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值