C++:继承性_程序

简介: C++:继承性_程序

编译器: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;
}
目录
相关文章
|
1天前
|
程序员 编译器 C++
【c++】继承
【c++】继承
5 0
|
1天前
|
C++
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
2 0
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
|
1天前
|
C++
Clion CMake C/C++程序输出乱码
Clion CMake C/C++程序输出乱码
4 0
|
1天前
|
安全 Java 程序员
【C++航海王:追寻罗杰的编程之路】继承你学会了么?
【C++航海王:追寻罗杰的编程之路】继承你学会了么?
5 0
|
2天前
|
C++
【C++】学习笔记——继承_2
【C++】学习笔记——继承_2
9 1
|
2天前
|
程序员 编译器 C++
【C++】学习笔记——继承_1
【C++】学习笔记——继承_1
5 0
|
3天前
|
程序员 C语言 C++
【C语言】:柔性数组和C/C++中程序内存区域划分
【C语言】:柔性数组和C/C++中程序内存区域划分
5 0
|
3天前
|
编译器 C++
C++中的继承
C++中的继承
9 1
|
3天前
|
C++ UED 开发者
逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
4 0
|
3天前
|
C语言 图形学 C++