C++:继承性_程序

news/2024/10/18 16:41:27/

编译器:vs2022

main.cpp

#include <iostream>
#include <iomanip>
#include "person.h"const int Sum = 2;class Group
{
protected:PostGra st[Sum];int sum;
public:Group();void Input();void SortByID();void Output();
};Group::Group()
{sum = Sum;
}void Group::Input()
{int i;for (i = 0; i < sum; i++)st[i].Input();
}void Group::SortByID()
{int index, i, k;PostGra temp;for (k = 0; k < sum - 1; k++){index = k;for (i = k + 1; i < sum; i++)if (st[i].GetID() < st[index].GetID())index = i;if (index != k){temp = st[index];st[index] = st[k];st[k] = temp;}}
}void Group::Output()
{int i;std::cout << std::endl << "The group information:" << std::endl;std::cout << "ID" << std::setw(10) << "Name" << std::setw(10) << "Age" << std::setw(10) << "Gender" <<std::setw(10) << "Spec" << std::setw(10) << "research"<< std::endl;for (i = 0; i < sum; i++){std::cout << st[i].GetID() << std::setw(10) << st[i].GetName()<< std::setw(10) << st[i].GetGender() << std::setw(10) << st[i].GetSpeciality()<< std::setw(10) << st[i].GetResearchTopic() << std::setw(10) << st[i].GetAcademicTitle() << std::endl;}
}int main()
{Group group;group.Input();group.SortByID();group.Output();return 0;
}

person.h

#pragma once
#ifndef _PERSON
#define _PERSON
#include <string>class Person
{
protected:std::string ID;std::string name;std::string gender;
public:Person(std::string = "000", std::string = "unknown", std::string = "unknown");void Input();std::string GetID();std::string GetName();std::string GetGender();
};class Student : virtual public Person
{
protected:std::string speciality;
public:Student(std::string, std::string, std::string = "000", std::string = "unknown");void Input();std::string GetSpeciality();
};class Graduate :virtual public Student
{
protected:std::string researchTopic;
public:Graduate(std::string=" ", std::string=" ", std::string=" ", std::string = "000", std::string = "unknown");void Input();std::string GetResearchTopic();
};class Teacher :virtual public Person
{
protected:std::string academicTitle;
public:Teacher(std::string, std::string, std::string, std::string = "unknown");void Input();std::string GetAcademicTitle();
};class PostGra :public Graduate, public Teacher
{
public:PostGra(std::string=" ", std::string=" ", std::string=" ", std::string=" ", std::string = "000", std::string = "unknown");void Input();
};
#endif

person.cpp

#include "person.h"
#include <iostream>Person::Person(std::string id, std::string name, std::string gender)
{ID = id;name = name;gender = gender;
}void Person::Input()
{std::cout << "Enter ID: ";std::cin >> ID;std::cout << "Enter name: ";std::cin >> name;std::cout << "Enter gender: ";std::cin >> gender;
}std::string Person::GetID()
{return ID;
}std::string Person::GetName()
{return name;
}std::string Person::GetGender()
{return gender;
}Student::Student(std::string id, std::string name, std::string gender, std::string speciality) : Person(id, name, gender)
{speciality = speciality;
}void Student::Input()
{Person::Input();std::cout << "Enter speciality: ";std::cin >> speciality;
}std::string Student::GetSpeciality()
{return speciality;
}Graduate::Graduate(std::string id, std::string name, std::string gender, std::string speciality, std::string rese) :Person(id, name, gender), Student(id, name, gender, speciality)
{researchTopic = rese;
}void Graduate::Input()
{Student::Input();std::cout << "Enter research topic: ";std::cin >> researchTopic;
}std::string Graduate::GetResearchTopic()
{return researchTopic;
}Teacher::Teacher(std::string id, std::string name, std::string gender, std::string title) : Person(id, name, gender)
{academicTitle = title;
}void Teacher::Input()
{Person::Input();std::cout << "Enter academic title: ";std::cin >> academicTitle;
}std::string Teacher::GetAcademicTitle()
{return academicTitle;
}PostGra::PostGra(std::string id, std::string name, std::string gender, std::string speciality, std::string rese, std::string title) : Person(id, name, gender), Student(id, name, gender, speciality), Teacher(id, name, gender, title)
{;
}void PostGra::Input()
{Graduate::Input();std::cout << "Enter academic title: ";std::cin >> academicTitle;
}


http://www.ppmy.cn/news/1446903.html

相关文章

深度学习之视觉特征提取器——LeNet

LeNet 引入 LeNet是是由深度学习巨头Yann LeCun在1998年提出&#xff0c;可以算作多层卷积网络在图像识别领域的首次成功应用。我们现在通常说的LeNet是指LeNet-5&#xff0c;最早的LeNet-1在1988年即开始研究&#xff0c;前后持续十年之久。但是&#xff0c;受限于当时计算机…

2024五一杯数学建模C题思路分享 - 煤矿深部开采冲击地压危险预测

文章目录 1 赛题选题分析 2 解题思路2.1 问题重述2.2 第一问完整思路2.2 二、三问思路更新 3 最新思路更新 1 赛题 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动…

通过window的bash创建vue架构的项目文件,如何不用下载即可引用想要的图片

winr 通过window的bash创建vue架构的项目文件 先创建项目文件 用vscode打开并下载依赖 关于安装包版本小知识补充 例如 “^5.2.0”第一位是大版本号&#xff0c;第二位是小版本号&#xff0c;最后一位是补丁号 “^”尖括号指限定了只能下载大版本号为5的版本 “~4.17.21” …

Maven的使用

1.第一个Maven工程 1.1 创建约定目录结构 ​ Hello ​ src ​ ——main(存放主程序) ​ ————java(存放源代码文件) ​ ————resources(存放配置文件和资源文件) ​ ——test(存放测试程序) ​ ————java ​ ————resources ​ pom.xml 1.2 创建核心文件 pom.xml …

【研发管理】产品经理知识体系-产品设计与开发工具

导读&#xff1a;产品设计与开发工具的重要性体现在多个方面&#xff0c;它们对于产品的成功开发、质量提升以及市场竞争力都具有至关重要的影响。产品设计工具可以帮助设计师更高效地创建和优化产品原型。开发工具在产品开发过程中发挥着至关重要的作用。产品设计与开发工具还…

代码随想录算法训练营第四十二天| 01背包问题 二维,01背包问题 一维,416. 分割等和子集

目录 题目链接&#xff1a; 01背包问题 二维 思路 代码 题目链接&#xff1a;01背包问题 一维 思路 代码 题目链接&#xff1a; 416. 分割等和子集 思路 代码 总结 题目链接&#xff1a;01背包问题 二维 思路 ①dp数组&#xff0c;物品从下标0到i的物品中任取&#x…

Java、Go 和 Rust 的比较

当涉及到Java、Go和Rust的比较时&#xff0c;主要考虑的是它们在性能、安全性、开发效率等方面的差异。下面将为你提供一个简单的例子&#xff0c;比较它们在并发编程方面的不同。 Java Java是一种面向对象的编程语言&#xff0c;广泛用于企业级应用和大型系统开发。它具有强…

深入浅出TCP 与 UDP

&#x1f525; 引言 在互联网的广阔天地里&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;和UDP&#xff08;User Datagram Protocol&#xff09;作为传输层的两大支柱&#xff0c;各自承担着不同的使命。下面这篇文章将带你从基础到进阶&#xff0c;全…