当前位置: 首页 > news >正文

Python:学生管理系统(继承性、多态性)。

输出样例如图: 

 

题目内容:

利用继承、多态性等面向对象程序功能编写程序,实现学生管理系统,并包含以下内容

第一,基类为学生类,并以此派生出本科生类、研究生类。

第二,本科生类包含成员变量:学号、姓名、年龄、高数成绩、英语成绩、平均成绩;包含成员函数:计算平均成绩,显示学生信息(以上所有成员变量)。

第三,研究生类包含成员变量:学号、姓名、年龄、英语成绩、矩阵论成绩、模糊数学成绩、平均成绩、发表论文篇数;包含成员函数:计算平均成绩,显示学生信息(以上所有成员变量)。

第四,写入3个本科生、3个研究生数据(其中不包含数据成员平均成绩)作为默认数据。

第五,编写两个函数,分别实现增加、删除某一个本科生或研究生。

第六,编写函数,能够显示所有学生信息。

第七,编写函数,能够计算每个学生的平均成绩并显示。

代码如下:

# 学生基类
class Student:def __init__(self, student_id, name, age):self.student_id = student_idself.name = nameself.age = age# 本科生类,继承自学生类
class Undergraduate(Student):def __init__(self, student_id, name, age, math_score, english_score):super().__init__(student_id, name, age)self.math_score = math_scoreself.english_score = english_scoreself.average_score = 0def calculate_average_score(self):self.average_score = (self.math_score + self.english_score) / 2return self.average_scoredef display_info(self):print(f"本科生 - 学号: {self.student_id}, 姓名: {self.name}, 年龄: {self.age}, 高数成绩: {self.math_score}, 英语成绩: {self.english_score}, 平均成绩: {self.average_score}")# 研究生类,继承自学生类
class Graduate(Student):def __init__(self, student_id, name, age, english_score, matrix_score, fuzzy_math_score, papers):super().__init__(student_id, name, age)self.english_score = english_scoreself.matrix_score = matrix_scoreself.fuzzy_math_score = fuzzy_math_scoreself.papers = papersself.average_score = 0def calculate_average_score(self):self.average_score = (self.english_score + self.matrix_score + self.fuzzy_math_score) / 3return self.average_scoredef display_info(self):print(f"研究生 - 学号: {self.student_id}, 姓名: {self.name}, 年龄: {self.age}, 英语成绩: {self.english_score}, 矩阵论成绩: {self.matrix_score}, 模糊数学成绩: {self.fuzzy_math_score}, 平均成绩: {self.average_score}, 发表论文篇数: {self.papers}")# 存储学生的列表
undergraduates = []
graduates = []# 初始化默认数据,3 个本科生和 3 个研究生
undergraduate1 = Undergraduate("001", "张三", 20, 80, 70)
undergraduate2 = Undergraduate("002", "李四", 21, 85, 75)
undergraduate3 = Undergraduate("003", "王五", 20, 90, 80)
undergraduates.extend([undergraduate1, undergraduate2, undergraduate3])graduate1 = Graduate("101", "赵六", 23, 70, 80, 85, 2)
graduate2 = Graduate("102", "孙七", 24, 75, 82, 88, 3)
graduate3 = Graduate("103", "周八", 25, 80, 85, 90, 1)
graduates.extend([graduate1, graduate2, graduate3])# 增加本科生函数
def add_undergraduate():student_id = input("请输入本科生学号:")name = input("请输入本科生姓名:")age = int(input("请输入本科生年龄:"))math_score = int(input("请输入高数成绩:"))english_score = int(input("请输入英语成绩:"))new_undergraduate = Undergraduate(student_id, name, age, math_score, english_score)undergraduates.append(new_undergraduate)print("本科生添加成功。")# 增加研究生函数
def add_graduate():student_id = input("请输入研究生学号:")name = input("请输入研究生姓名:")age = int(input("请输入研究生年龄:"))english_score = int(input("请输入英语成绩:"))matrix_score = int(input("请输入矩阵论成绩:"))fuzzy_math_score = int(input("请输入模糊数学成绩:"))papers = int(input("请输入发表论文篇数:"))new_graduate = Graduate(student_id, name, age, english_score, matrix_score, fuzzy_math_score, papers)graduates.append(new_graduate)print("研究生添加成功。")# 删除本科生函数
def delete_undergraduate():student_id = input("请输入要删除的本科生学号:")for undergraduate in undergraduates:if undergraduate.student_id == student_id:undergraduates.remove(undergraduate)print("本科生删除成功。")returnprint("未找到该本科生。")# 删除研究生函数
def delete_graduate():student_id = input("请输入要删除的研究生学号:")for graduate in graduates:if graduate.student_id == student_id:graduates.remove(graduate)print("研究生删除成功。")returnprint("未找到该研究生。")# 显示所有学生信息函数
def display_all_students():print("本科生信息:")for undergraduate in undergraduates:undergraduate.display_info()print("研究生信息:")for graduate in graduates:graduate.display_info()# 计算并显示每个学生平均成绩函数
def calculate_and_display_average_scores():print("本科生平均成绩:")for undergraduate in undergraduates:undergraduate.calculate_average_score()undergraduate.display_info()print("研究生平均成绩:")for graduate in graduates:graduate.calculate_average_score()graduate.display_info()
while True:print("\n学生管理系统菜单:")print("1. 添加本科生")print("2. 添加研究生")print("3. 删除本科生")print("4. 删除研究生")print("5. 显示所有学生信息")print("6. 计算并显示平均成绩")print("7. 退出")choice = input("请输入你的选择:")if choice == "1":add_undergraduate()elif choice == "2":add_graduate()elif choice == "3":delete_undergraduate()elif choice == "4":delete_graduate()elif choice == "5":display_all_students()elif choice == "6":calculate_and_display_average_scores()elif choice == "7":breakelse:print("无效选择,请重新输入。")

该 Python 代码构建了一个简单的学生管理系统,能管理本科生和研究生信息,支持添加、删除学生,展示学生信息及计算平均成绩。具体解释如下:

  1. 类的定义
    • Student 基类
      • 包含学号、姓名、年龄三个基本属性,通过 __init__ 方法初始化。
    • Undergraduate 类
      • 继承自 Student 类,新增高数、英语成绩和平均成绩属性。
      • calculate_average_score 方法计算平均成绩(高数和英语成绩的平均值)。
      • display_info 方法输出本科生详细信息。
    • Graduate 类
      • 继承自 Student 类,新增英语、矩阵论、模糊数学成绩,发表论文篇数和平均成绩属性。
      • calculate_average_score 方法计算平均成绩(三门课成绩的平均值)。
      • display_info 方法输出研究生详细信息。
  2. 数据初始化
    • 创建 undergraduates 和 graduates 两个列表分别存储本科生和研究生对象。
    • 初始化 3 个本科生和 3 个研究生对象并添加到对应列表。
  3. 功能函数
    • 添加学生add_undergraduate 和 add_graduate 函数,通过用户输入信息创建新学生对象并添加到相应列表。
    • 删除学生delete_undergraduate 和 delete_graduate 函数,根据用户输入的学号查找并删除对应学生对象。
    • 显示信息display_all_students 函数输出所有本科生和研究生的信息。
    • 计算平均成绩calculate_and_display_average_scores 函数计算并输出所有学生的平均成绩。
  4. 菜单系统
    • 使用 while True 循环显示菜单,提供 7 个操作选项。
    • 根据用户输入调用相应功能函数,输入 7 则退出系统,输入无效会提示重新输入。

觉得有帮助就给博主点个关注叭~~

有问题的可以私信或者在评论区一起交流

友友们一起加油叭QAQ

相关文章:

Python:学生管理系统(继承性、多态性)。

输出样例如图: 题目内容: 利用继承、多态性等面向对象程序功能编写程序,实现学生管理系统,并包含以下内容: 第一,基类为学生类,并以此派生出本科生类、研究生类。 第二,本科生类包含…...

网络安全RSA加密

网络安全课相关知识: RSA预备知识 1.1 快速幂算法 顾名思义,快速幂就是快速算底数的$n$次幂。其时间复杂度为${\rm{O(log n)}}$,与朴素的$O\left( n \right)$相比,效率有了极大的提高。具体可以参考百度百科:快速幂。…...

Vue学习笔记4

Vue学习笔记 一、自定义创建项目 基于VueCli自定义创建项目架子 二、vuex基本认知 1、vuex概述 是什么:是vue的状态管理工具(插件),状态就是数据 大白话:vuex是一个插件,可以帮助我们管理vue通用的数…...

mariadb数据库的安装与部署

1、通过yum源安装mariadb数据库 yum -y install mariadb-server 2、启动mariadb数据库服务 systemctl start mariadb.service 3、配置mariadb数据库全局环境变量 systemctl enable mariadb.service 4、修改mariadb数据库默认密码,数据库默认密码为空 执行…...

单调队列与栈

一.题 1. 思路&#xff1a; 构建小压大的单调递减栈&#xff0c;对于每个栈的元素都进行处理并加到结果上 class Solution { public:int sumSubarrayMins(vector<int>& arr) {int stk[10000000],top 0;long long ans 0;for(int i 0;i<arr.size();i){while(top…...

Matlab 多项式曲线拟合(三维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于高维空间曲线的拟合,参数化是一种非常好的方式,可以让我们很容易得到我们想要的目标曲线。 假设给定一组数据点 ( u i ​ , x i ​ ) 、 ( u i ​...

机器翻译同样的文本,是从英语翻译成日语更准确还是中文翻译成日语更准确

在大多数情况下&#xff0c;从英语翻译成日语会比从中文翻译成日语更准确&#xff0c;原因如下&#xff1a; 1. 语言结构的相似性 英语和日语的句子结构更接近&#xff0c;特别是在语法、从句使用、定语位置等方面。例如&#xff0c;日语和英语都使用 SVO 结构&#xff08;主…...

MAC 系统关屏幕后电量消耗极快 Wake Requests

日志为 Wake Requests [*processdasd requestSleepService…info"com.apple.alarm.user-invisible-com.apple.calaccessd… 本人有效方法为&#xff1a; sudo pmset -a hibernatemode 25 sudo pmset -a standby 0 sudo pmset -a autopoweroff 0 会导致hibernatemode 25是…...

golangAPI调用deepseek

目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…...

提供可传递的易受攻击的依赖项

问题如图所示&#xff1a; 原因&#xff1a;okhttp3.version 3.14.9 版本存在部分漏洞&#xff0c;在 maven 仓库是可以看到的 maven 地址&#xff1a; maven 下图中 Vulnerabilities 即为漏洞 处理&#xff1a;换一个无漏洞的版本即可...

2.14学习记录

Web flag直接读取不就行了&#xff1f; 代码审计&#xff1a; <?php highlight_file(index.php); # 我把flag藏在一个secret文件夹里面了&#xff0c;所以要学会遍历啊~ error_reporting(0); $J1ng $_POST[J]; $Hong $_POST[H]; $Keng $_GET[K]; $Wang $_GET[W]; $d…...

xpath定位--鼠标悬停显示的按钮

UI自动化定位界面元素的过程中&#xff0c;会遇到鼠标悬停才会显示的按钮&#xff0c;鼠标移开就不显示了&#xff0c;无法通过点击它直接定位到元素位置 搜索到这篇文档&#xff0c;办法很好用&#xff0c;特此记录下&#xff1a;chrome调试鼠标悬停后出现的元素_控制台元素调…...

鸿蒙Harmony打包脚本使用整理

最近整理鸿蒙打包相关事宜&#xff0c;遇到很多文档描述不清晰的问题&#xff0c;好在都通过鸿蒙团队的技术支持解决掉了。这里整理一下。 command-line-tools的命令官网基本都有&#xff0c;这里整理几个常用的&#xff0c;还有就是遇到的问题。 hvigorw位置&#xff1a;/comm…...

【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设…...

在Autonomous DB中创建训练数据集

在Autonomous DB中创建训练数据集 概述背景步骤解析1. 定义公司术语表2. 使用SQL将数据转换为JSON格式3. 使用SPool命令将SQL查询结果输出为JSON文件4. 查看生成的JSON文件 结果示例结论 概述 在机器学习中&#xff0c;构建高质量的训练数据集是模型成功的关键&#xff0c;尤其…...

Adapting to Length Shift: FlexiLength Network for Trajectory Prediction

概要 轨迹预测在各种应用中发挥着重要作用&#xff0c;包括自动驾驶、机器人技术和场景理解。现有方法通常采用标准化的输入时长&#xff0c;集中于开发紧凑神经网络&#xff0c;以提高在公共数据集上的预测精度。然而&#xff0c;当这些模型在不同观测长度下进行评估时&#…...

张量循环运算:内存溢出原因及解决

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 内存溢出解决方法致谢 内存溢出 使用AlexNet遍历大量图像进行指标运算&#xff08;LP…...

【Qt】:概述(下载安装、认识 QT Creator)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 介绍 &#x1f98b; 什么是 QT&#x1f98b; QT 发展史&#x1f98b; Qt版本&#x1f98b; QT 优点 一&#xff1a;&#x1f525; 搭建Qt开发环境 &#x1f9…...

11、《Web开发性能优化:静态资源处理与缓存控制深度解析》

Web开发性能优化&#xff1a;静态资源处理与缓存控制深度解析 一、性能优化的核心战场&#xff1a;静态资源处理 现代Web应用静态资源体积占比普遍超过70%&#xff0c;以典型Vue项目为例&#xff1a; dist/ ├─ css/ # 38% 体积 ├─ js/ # 45% 体积 └─ img…...

【Linux】多线程 -> 从线程概念到线程控制

线程概念 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行&#xff0c;本质是在进程地址空间内运行。在Linux系统中&#xff0c;在CPU眼…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...