PTA---C++实现,定义抽象类Person、派生类Student和类Teacher

2023-11-12

问题描述:设计抽象类Person,派生出具体类:学生类Student和教师类Teacher,创建若干不同类对象后并在主方法中测试。
数据成员定义:
Person [ID,姓名,生日]
Student [专业,成绩]
Teacher [职称,工资]
带参构造方法分别为:
Person(int id,String name, int bir)
Student(int id,String name, int bir, String major,double score)
Teacher(int id,String name, int bir, String title, double salary)
toString方法(Eclipse自动生成)

输入格式:第一行整数n表示有n个对象,每个对象占2行,第一行为数字0(表示学生)或1(表示教师),第二行为生成对象的参数。

输出格式:按行输出具体对象的信息。

#include<iostream>
#include<iomanip>
using namespace std;
class Person{
	public:
		int ID; string Name; int Birthday;
		void Set(int id, string name, int birthday){ID=id;Name=name;Birthday=birthday;}
		void Print();		
};



class Student : public Person{
	public:
		string Major; double Score;
		void Set(int id, string name, int birthday, string major, double score){Person::Set(id,name,birthday);Major=major;Score=score;}
		void Print(){cout<<"Student [";Person::Print();cout<<"major="<<Major<<", score="<<fixed<<setprecision(1)<<Score<<"]"<<endl;}
};

Student *per[10];

class Teacher : public Person{
	public:
		string Title; double Salary;
		void Set(int id, string name, int birthday, string title, double salary){Person::Set(id,name,birthday);Title=title;Salary=salary;}
		void Print(){cout<<"Teacher [";Person::Print();cout<<"title="<<Title<<", salary="<<fixed<<setprecision(1)<<Salary<<"]"<<endl;}
};

Teacher *perr[10];

void Person::Print(){cout<<"id="<<ID<<", name="<<Name<<", bir="<<Birthday<<", ";}

int main(){
	Student *stu; Teacher *tea;
	int n, i, choice;
	cin>>n;
	for(i=0;i<n;i++){
		cin>>choice;
		if(choice==0){
			stu=new Student();
			cin>>stu->ID>>stu->Name>>stu->Birthday>>stu->Major>>stu->Score;
			per[i]=stu;}
		if(choice==1){
			tea=new Teacher();
			cin>>tea->ID>>tea->Name>>tea->Birthday>>tea->Title>>tea->Salary;
			perr[i]=tea;}
		}
	
	for(i=0;i<n;i++){
		if(per[i]){per[i]->Print();}
		else{perr[i]->Print();}}
	
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PTA---C++实现,定义抽象类Person、派生类Student和类Teacher 的相关文章

随机推荐

  • 万字长文——互联网广告到底是如何运行的?

    自互联网诞生之后 广告这个历史悠久的行业就被永远地改变 卫夕一直致力于普及互联网广告的基本逻辑 始终认为这是一个对行业意义的事 为此我做了一个40分钟的视频分享给大家 卫夕希望这个科普课程视频可以达到两个目标 第一 即便是没有从事过广告的小
  • 自动化代码审计工具源伞科技Pinpoint

    自动化代码审计工具源伞科技Pinpoint介绍 源伞科技Pinpoint 源伞科技2016年由香港科大团队创立 立足于国际水平的学术研究积累 秉承工匠精神 致力用最先进的自动程序分析技术保障软件质量 为企业提供以人工智能为基础的工业级程序缺
  • 虚拟聊天记录生成器,微信对话视频生成器,让微信对话以视频形式呈现!

    微信对话视频生成器是一款功能强大的工具 可以将微信聊天记录转化成生动有趣的视频 它不仅可以让用户在朋友圈或社交平台上展示自己的聊天趣事 还可以用于制作个性化的视频礼物 接下来 我们将介绍该工具的主要功能和解决问题的案例 输入聊天记录内容 直
  • C++学习日记和心得(一)(新手帖,高手勿笑)

    前言 我之前三年也学过其他语言 VB pascal 都不是非常主流 但有一定程序学习的基础 没学过程序的孩子也不要伤心 只要认认真真的学习还是可以学会的 我也是刚开始学C 所以希望大家跟我一同从0开始学习C 如果对我有一些疑问和批评欢迎提出
  • 【华为OD机试python】阿里巴巴找黄金宝箱(V)【2023 B卷

    题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面贴有一个数字 阿里巴巴念出一个咒语数字k k
  • 【100%通过率 】租车骑绿岛【华为OD机试 真题c++/java/python 2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 部门组织绿岛骑行团建活动 租用公共双人自行车 每辆自行车最多坐两人 最大载重M 给出部门每个人的体重 请问最多需要租用多少双人自行车 输入描述
  • 什么是向上管理?意义?

    今天聊一个职场热词 向上管理 这两天刷到字节跳动的招聘官网 他们在阐述 坦诚清晰 的字节范儿时 提到了一句话 实事求是 暴露问题 反对 向上管理 这一点很有意思 因为 向上管理 几乎是职场入门必修课 所以我试着在字节跳动的文化语境中 来理解
  • 使用gcov+lcov工具可视化代码分支覆盖率数据

    通过一个简单的例子 来展示如何使用gcov lcov来生成代码分支覆盖率数据并将其图形化显示 假设有一个main cpp文件 1 首先使用gcc编译该文件 g main cpp fprofile arcs ftest coverage l
  • CUDA代码笔记(二) cudaOpenMP

    cudaOpenMP项目展示了如何在cuda项目中运用openmp技术 该项目位于cuda samples文件夹下的0 Simple cudaOpenMP文件夹下 在正式开始剖析代码之前 让我们先来了解一下openmp的背景知识 OpenM
  • Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】

    Docker进阶 mysql 主从复制 redis集群3主3从 扩缩容案例 一 Docker常规软件安装 1 1 docker 安装 tomcat 默认最新版 1 2 docker 指定安装 tomcat8 0 1 3 docker 安装
  • WinLicense&Themida 2019革命性升级,软件加密后破解难度突破天际

    随着软件普及程度 互联网技术的发展 以及正版软件购买用户数量和软件版本的增加 软件的保护变得越来越重要 而我们常见的软件保护方式有软件授权和软件加密 Oreans是西班牙非常著名的软件系统保护公司 提供代码混淆 版本控制等多种工具 其中Wi
  • CMake编译QT项目,解决undefined reference to vtable问题

    项目布局应为 src文件夹中存放cpp文件和包含了继承了QObject类的class的头文件 include文件夹中存放其他头文件 在项目文件夹中新建CMakeLists txt文件 新建build文件夹和lib文件夹 此时项目文件夹的结构
  • 通过maven配置不同的开发环境

    前言 项目有开发 测试 生产至少有这三个环境 所需要的配置信息肯定不一样 比如需要开发环境的时候 注解掉测试和生产的配置信息 打开开发的配置信息 后来工作接触到新项目 发现是通过maven来控制加载不同的配置文件 非常方便 所以这篇博客学习
  • 不一样的命令提示符、 PowerShell、windows terminal

    展示图片 怎么操作 1 打开Microsoft Store 软件商店 搜索windows terminal 2 安装即可 3 点击windows 最近添加windows terminal 4 点击设置 gt 默认值 gt 外观 5 滑到最底
  • 爬虫技术可以分析数据吗?

    目前在不少大数据团队中 数据分析和数据挖掘工程师通常都有明确的分工 数据采集往往并不是数据分析和挖掘工程师的任务 通常做爬虫的是大数据应用开发程序员或者是数据采集工程师 使用爬虫工具 的工作任务 但是对于数据分析工程师来说 掌握爬虫技术也是
  • 【RF时序预测】基于随机森林算法的时间序列预测附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 随机森林算法是一种集成学习方法 通过组合多个决策树来进行分类和回归 算法的原理如下
  • c++ 实现贪吃蛇(含技术难点解析和完整代码)

    文章目录 0 参考资料 1 技术难点 1 1 关于光标的移动 1 2 关于蛇的移动 1 2 1 从键盘上读取输入 1 2 2 蛇的移动 1 3 食物的生成 2 完整代码 0 参考资料 借鉴了这位大佬的博客及代码 在其基础上进行了修改 特此鸣
  • Antd Pro新增表格页面(二)

    前言 承接上一篇博客Ant Design Pro 新增一个表格页面 一 继续对index tsx进行修改 请求相关修改 复制过来的index tsx文件中的请求都是rule的增删查改 将其修改为前文已经写好的接口请求 import rule
  • VUE利用el-upload实现文件上传的功能,后端获取文件数据

    vue点击组件弹出窗口 span class tool btn i class table tool btn add icon i 批量新增 span 在方法中定义一个控制器 export default data return files
  • PTA---C++实现,定义抽象类Person、派生类Student和类Teacher

    问题描述 设计抽象类Person 派生出具体类 学生类Student和教师类Teacher 创建若干不同类对象后并在主方法中测试 数据成员定义 Person ID 姓名 生日 Student 专业 成绩 Teacher 职称 工资 带参构造