首页 > 编程语言 >【Python入门与进阶】综合练习题:学生成绩管理系统

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

时间:2024-06-16 17:04:46浏览次数:14  
标签:练习题 进阶 Python self 学生 grade student print id

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

题目描述:

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

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

标签:练习题,进阶,Python,self,学生,grade,student,print,id
From: https://blog.csdn.net/qq_36631076/article/details/139716728

相关文章

  • 2023海南素养赛Python复赛卷
    第1题,整数加8题目描述:输入一个整数,输出这个整数加8的结果输入描述:输入一行一个正整数。输出描述:输出求和的结果。样例1:输入:5输出:13第2题,哼哈二将题目描述:哼哈二将,形象威武凶猛,一名能鼻哼白气制敌,一名能口哈黄气擒将。这样一次"哼哈”就可以消灭一个敌人,现在......
  • jQuery引入,基本选择器和关系选择器,组合选择器,分组与嵌套,基本筛选器,属性选择器,前
    ⅠjQuery引入【一】什么是jQuery【1】概述jQuery是一个轻量级的、兼容多浏览器的JavaScript库。jQuery使用户能够更方便地处理HTMLDocument、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Writeless,domore.“【2】小结jQ......
  • Python在SQLite中的应用:从入门到进阶
    Python在SQLite中的应用:从入门到进阶Python作为一门高效、灵活的编程语言,广泛应用于各种数据处理和分析任务。而SQLite是一种轻量级的数据库管理系统,特别适合于嵌入式应用和小型项目。在本篇博文中,我们将深入探讨Python在SQLite中的应用,帮助读者从零开始,逐步掌握这项技能。......
  • Python API自动化:提升开发效率的利器
    PythonAPI自动化:提升开发效率的利器随着互联网的发展,API(应用程序接口)已经成为现代应用程序开发的核心部分。API允许不同的软件系统之间进行通信,使得开发者可以轻松地集成各种服务和功能。在日常开发中,API的自动化测试和调用成为了不可或缺的环节。本文将介绍如何使用Pytho......
  • 素养赛Python复赛题——错排问题
    2023年北京赛区素养赛Python复赛题:第6题,错排问题题目描述:圣诞节快到了,公司为每个员工都准备了礼物,每个礼物都有一个精美的盒子。如果所有的礼物都不小心装错了盒子,求所有礼物都装错盒子共有多少种不同情况。输入描述:输入一个正整数n表示公司人数,保证n≤20.输出描述:输......
  • python 小爬虫 DrissionPage+BeautifulSoup
    哈喽,大家好,我要开始写博客啦......
  • 【Python】数据处理:Matplotlib绘图
    Matplotlib是Python强大的数据可视化工具库,类似于MATLAB语言。Mat-lotlib提供了一整套与MATLAB相似的命令API,十分适合进行交互式制图,而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。Matplotlib是神经生物学家JohnD.Hunter于2007年创建的,其函数设计参考了MATLAB。......
  • python 如何生成原创文章
    生成原创文章是一个复杂的过程,因为它需要创造力、知识、语法和上下文理解。然而,Python可以用于辅助文章创作,例如通过生成文本、组合现有信息或根据特定模式进行内容创建。但要完全生成一个完全原创、有深度且逻辑连贯的文章,目前的技术还无法完全实现。不过,以下是一些Python可......
  • (必读)深入浅出Pandas:利用Python进行数据处理与分析 (李庆辉)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoPandas概述:介绍了Pandas库的基本概念、特点和优势,以及它在数据处理和分析领域的重要性。Series对象:讲解了Series对象的创建、访问、修改以及常用的统计和分析方法,如均值、中位数、标准差等。DataFrame对象:详细......
  • 算法精粹:经典计算机科学问题的 Python 实现 (David Kopec)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso书籍简介:介绍了本书的作者、出版背景以及主要目的,即帮助读者深入理解算法原理,并通过Python实现解决计算机科学中的经典问题。Python语言基础:简要介绍了Python语言的特点和优势,为后续使用Python实现算法打下基础......