• 【Python入门与进阶】综合练习题:学生成绩管理系统


    综合练习题:学生成绩管理系统

    题目描述:

    请你设计一个简单的学生成绩管理系统,要求能够进行以下操作:

    1. 添加学生信息(包括姓名和学号)
    2. 添加学生的成绩(包括科目和成绩)
    3. 查询学生的平均成绩
    4. 打印所有学生的成绩单

    解题思路:

    1. 定义类

      • 创建一个 Student 类,包含以下属性:
        • name: 学生姓名
        • id: 学生学号
        • grades: 存储学生成绩的字典,键为科目,值为成绩
      • 创建一个 StudentManagementSystem 类,包含学生列表,并实现以下方法:
        • add_student(name, id): 添加学生
        • add_grade(student_id, subject, grade): 添加成绩
        • get_average_grade(student_id): 计算并返回学生的平均成绩
        • print_report(): 打印所有学生的成绩单
    2. 实现函数

      • 实现各个方法,确保它们能够正确操作和访问类的属性。
    3. 测试系统

      • 创建几个学生,添加他们的成绩,查询他们的平均成绩,最后打印所有学生的成绩单。

    参考代码:

    class Student:
        def __init__(self, name, student_id):
            self.name = name
            self.student_id = student_id
            self.grades = {}
    
        def add_grade(self, subject, grade):
            self.grades[subject] = grade
    
        def get_average_grade(self):
            if not self.grades:
                return 0
            return sum(self.grades.values()) / len(self.grades)
    
    class StudentManagementSystem:
        def __init__(self):
            self.students = {}
    
        def add_student(self, name, student_id):
            if student_id in self.students:
                print(f"学生ID {student_id} 已存在。")
            else:
                self.students[student_id] = Student(name, student_id)
                print(f"添加学生:{name} (ID: {student_id})")
    
        def add_grade(self, student_id, subject, grade):
            if student_id not in self.students:
                print(f"学生ID {student_id} 不存在。")
            else:
                self.students[student_id].add_grade(subject, grade)
                print(f"为学生ID {student_id} 添加成绩:{subject} - {grade}")
    
        def get_average_grade(self, student_id):
            if student_id not in self.students:
                print(f"学生ID {student_id} 不存在。")
                return None
            else:
                average_grade = self.students[student_id].get_average_grade()
                print(f"学生ID {student_id} 的平均成绩是: {average_grade:.2f}")
                return average_grade
    
        def print_report(self):
            for student_id, student in self.students.items():
                print(f"学生: {student.name} (ID: {student_id})")
                for subject, grade in student.grades.items():
                    print(f"  {subject}: {grade}")
                print(f"  平均成绩: {student.get_average_grade():.2f}")
                print("-" * 20)
    
    # 测试代码
    system = StudentManagementSystem()
    system.add_student("Alice", 1)
    system.add_student("Bob", 2)
    
    system.add_grade(1, "Math", 90)
    system.add_grade(1, "English", 85)
    system.add_grade(2, "Math", 78)
    system.add_grade(2, "English", 82)
    
    system.get_average_grade(1)
    system.get_average_grade(2)
    
    system.print_report()
    

    总结:

    1. 通过定义 StudentStudentManagementSystem 类,封装了学生信息和管理系统的功能。
    2. 使用类的方法来添加学生和成绩、计算平均成绩以及打印成绩单。
    3. 通过测试代码验证系统的功能。
  • 相关阅读:
    MongoDB——入门篇(介绍)
    unity unityWebRequest 通过http下载服务器资源
    电脑图片损坏打不开怎么办?能修复吗?
    js-函数式编程-部分应用柯里化-partial和compose-条件和结果、结果和结果
    算法leetcode|76. 最小覆盖子串(rust重拳出击)
    微信公众号每天定时给女友发送天气信息--0基础学会
    成都精灵云笔试部分
    一款比Typora更简洁优雅的Markdown编辑器神器(完全开源免费)
    CVE-2019-14287漏洞
    Java自定义注解如何实现
  • 原文地址:https://blog.csdn.net/qq_36631076/article/details/139716728