【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. 通过测试代码验证系统的功能。

相关推荐

  1. Python学习之路-综合练习:学生管理系统

    2024-06-18 07:16:05       52 阅读
  2. Python Numpy入门学习:基础

    2024-06-18 07:16:05       46 阅读
  3. Python入门】Anaconda包管理所有指令

    2024-06-18 07:16:05       32 阅读
  4. Python学习入门(2)——功能

    2024-06-18 07:16:05       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 07:16:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 07:16:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 07:16:05       87 阅读
  4. Python语言-面向对象

    2024-06-18 07:16:05       96 阅读

热门阅读

  1. 计算机组成原理-期末考前常见简答题总结

    2024-06-18 07:16:05       33 阅读
  2. TensorFlow音频分类修复

    2024-06-18 07:16:05       25 阅读
  3. 在历史课堂教学过程中培养学生的计算思维能力

    2024-06-18 07:16:05       28 阅读
  4. 【C#基础】C#中的IEnumerable<T>接口介绍

    2024-06-18 07:16:05       32 阅读
  5. 企业级-pdf分页数据推送接收解析保存

    2024-06-18 07:16:05       29 阅读
  6. [absl_py][python]absl_py所有whl文件下载地址汇总

    2024-06-18 07:16:05       39 阅读
  7. XML 应用程序

    2024-06-18 07:16:05       29 阅读
  8. C#语言进阶(一)—委托 第二篇

    2024-06-18 07:16:05       32 阅读
  9. 数实融合创新发展 隆道分享企业级AI应用

    2024-06-18 07:16:05       30 阅读
  10. oracle SCHEDULER

    2024-06-18 07:16:05       26 阅读
  11. mysql面试题 Day2

    2024-06-18 07:16:05       28 阅读
  12. 【Homebrew】包管理器清理软件包,释放mac空间

    2024-06-18 07:16:05       45 阅读