要求:

设计一个学生信息管理系统,能够添加学生的信息(学生信息包含:姓名、年龄、学号、考试分数、所在班级、所在的学院),能够修改学生信息、能够查询学生信息、查看考试分数排名(降序排序)
无需连接数据库和使用文件储存

使用的内置函数:

getattr() 函数
setattr() 函数

class Student(object):
    def __init__(self, name, age, num, score, classroom, dept):
        self.student = None
        self.name = name
        self.age = age
        self.num = num
        self.score = score
        self.classroom = classroom
        self.dept = dept

    def __str__(self):
        return "姓名:%s 年龄:%s 学号:%s 分数:%s 班级:%s 学院:%s" % (
            self.name, self.age, self.num, self.score, self.classroom, self.dept)


class StudentManager(object):
    student = []

    def add(self):
        name = input("姓名:")
        age = input("年龄:")
        num = input("学号:")
        score = input("分数:")
        classroom = input("班级:")
        dept = input("学院:")
        stu = Student(name, age, num, score, classroom, dept)
        self.student.append(stu)
        print("加入学生%s信息成功" % name)

    def modify(self, nature, oldValue, newValue):
        if nature in ['num', 'name', 'age', 'score']:
            for student in self.student:
                if getattr(student, nature) == oldValue:  # getattr() 函数用于返回一个对象属性值。
                    setattr(student, nature, newValue)
                    print("修改成功")
                else:
                    print("未找到符合条件的学生信息")
        else:
            print("只支持根据学号和姓名修改!")

    def show(self):
        print("学生信息展示:")
        for student in self.student:
            print(str(student))

    def search(self, keys, values):
        if keys in ['num', 'name']:
            for student in self.student:
                if getattr(student, keys) == values:
                    print((str(student)))
                else:
                    print("未找到符合条件的学生")
        else:
            print("系统只支持学号和姓名的查找")

    def sort(self, score):
        # sorted()函数对所有可迭代的对象进行排序操作。
        sort_stu = sorted(self.student, key=lambda x: int(getattr(x, score)) if x else None, reverse=True)
        for student in sort_stu:
            print(student)


if __name__ == '__main__':
    manager = StudentManager()
    while True:
        menu = """学生信息管理系统 1.添加学生信息 2.修改学生信息 3.查询学生信息 4.显示学生信息 5.考试分数排名(降序)6.退出 请输入要操作的数字:"""
        choice = int(input(menu))
        if choice == 1:
            manager.add()
        elif choice == 2:
            flag = input("修改,输入对应的属性值(num学号,name姓名,age年龄,score分数):")
            value1 = input("要修改的属性值:")
            value2 = input("修改后的属性值:")
            manager.modify(flag, value1, value2)
        elif choice == 3:
            key = input("查询(输入“num”是按学号查找,输入“name”是按姓名查找:")
            value = input("查询值:")
            manager.search(key, value)
        elif choice == 4:
            manager.show()
        elif choice == 5:
            key = input("输入score进行分数排名:")
            manager.sort(key)
        elif choice == 6:
            exit(0)
        else:
            print("请输入正确的选择")

缘由:这是在进行python学习时老师布置的一个任务

由于粉丝要求加入删除学生功能,修改后代码如下:

class Student(object):
    def __init__(self, name, age, num, score, classroom, dept):
        self.student = None
        self.name = name
        self.age = age
        self.num = num
        self.score = score
        self.classroom = classroom
        self.dept = dept

    def __str__(self):
        return "姓名:%s 年龄:%s 学号:%s 分数:%s 班级:%s 学院:%s" % (
            self.name, self.age, self.num, self.score, self.classroom, self.dept)


class StudentManager(object):
    student = []

    def add(self):
        name = input("姓名:")
        age = input("年龄:")
        num = input("学号:")
        score = input("分数:")
        classroom = input("班级:")
        dept = input("学院:")
        stu = Student(name, age, num, score, classroom, dept)
        self.student.append(stu)
        print("加入学生%s信息成功" % name)

    def modify(self, nature, oldValue, newValue):
        if nature in ['num', 'name', 'age', 'score']:
            for student in self.student:
                if getattr(student, nature) == oldValue:  # getattr() 函数用于返回一个对象属性值。
                    setattr(student, nature, newValue)
                    print("修改成功")
                    break
                else:
                    print("未找到符合条件的学生信息")
        else:
            print("只支持根据学号和姓名修改!")

    def show(self):
        print("学生信息展示:")
        for student in self.student:
            print(str(student))

    def search(self, keys, values):
        if keys in ['num', 'name']:
            for student in self.student:
                if getattr(student, keys) == values:
                    print((str(student)))
                    break
            else:
                print("未找到符合条件的学生")
        else:
            print("系统只支持学号和姓名的查找")

    def sort(self, score):
        # sorted()函数对所有可迭代的对象进行排序操作。
        sort_stu = sorted(self.student, key=lambda x: int(getattr(x, score)) if x else None, reverse=True)
        for student in sort_stu:
            print(student)
            
    def delete(self, num):
        for s in self.student:
            if getattr(s, 'num') == num:
                self.student.remove(s)
                print('删除成功')
                break
            else:
                print('未找到复合条件的学生信息')


if __name__ == '__main__':
    manager = StudentManager()
    while True:
        menu = """学生信息管理系统 1.添加学生信息 2.修改学生信息 3.查询学生信息 4.显示学生信息 5.考试分数排名(降序)6.删除学生信息 7.退出 请输入要操作的数字:"""
        choice = int(input(menu))
        if choice == 1:
            manager.add()
        elif choice == 2:
            flag = input("修改,输入对应的属性值(num学号,name姓名,age年龄,score分数):")
            value1 = input("要修改的属性值:")
            value2 = input("修改后的属性值:")
            manager.modify(flag, value1, value2)
        elif choice == 3:
            key = input("查询(输入“num”是按学号查找,输入“name”是按姓名查找:")
            value = input("查询值:")
            manager.search(key, value)
        elif choice == 4:
            manager.show()
        elif choice == 5:
            key = input("输入score进行分数排名:")
            manager.sort(key)
        elif choice == 6:
            key = input('输入要删除学生的学号:')
            manager.delete(key)
        elif choice == 7:
            exit(0)
        else:
            print("请输入正确的选择")