设计学生类Student,包含数据成员编号、姓名、年龄和学位,本科生类Undergraduate,包含数据成员编号、姓名、年龄、学位和专业属性,研究生类Graduate包含数据成员编号、姓名、年龄、学位、研究方向和导师,这三个类均具有设置和输出信息函数。用类的继承完成该设计,并在主函数中测试相关功能。
时间: 2023-07-10 09:28:01 浏览: 127
学生管理系统,有两个类,本科生和研究生
好的,以下是代码实现:
```
#include <iostream>
#include <string>
using namespace std;
class Student {
protected:
int id;
string name;
int age;
string degree;
public:
void setId(int num) { id = num; }
void setName(string n) { name = n; }
void setAge(int a) { age = a; }
void setDegree(string d) { degree = d; }
void getInfo() {
cout << "ID: " << id << endl;
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Degree: " << degree << endl;
}
};
class Undergraduate :public Student {
protected:
string major;
public:
void setMajor(string m) { major = m; }
void getInfo() {
Student::getInfo();
cout << "Major: " << major << endl;
}
};
class Graduate :public Student {
protected:
string research;
string teacher;
public:
void setResearch(string r) { research = r; }
void setTeacher(string t) { teacher = t; }
void getInfo() {
Student::getInfo();
cout << "Research: " << research << endl;
cout << "Teacher: " << teacher << endl;
}
};
int main() {
Undergraduate u1;
u1.setId(123);
u1.setName("Tom");
u1.setAge(20);
u1.setDegree("Bachelor");
u1.setMajor("Computer Science");
u1.getInfo();
Graduate g1;
g1.setId(456);
g1.setName("Jack");
g1.setAge(25);
g1.setDegree("Master");
g1.setResearch("Artificial Intelligence");
g1.setTeacher("Dr. Li");
g1.getInfo();
return 0;
}
```
在这个程序中,我们定义了一个基类 `Student`,和两个派生类 `Undergraduate` 和 `Graduate`。其中,`Undergraduate` 类增加了一个专业属性 `major`,而 `Graduate` 类增加了一个研究方向属性 `research` 和一个导师属性 `teacher`。
每个类都有一个 `setInfo()` 函数来设置成员变量,和一个 `getInfo()` 函数来输出信息。在 `Undergraduate` 和 `Graduate` 类的 `getInfo()` 函数中,我们还调用了 `Student` 类的 `getInfo()` 函数来输出基本信息。
在 `main()` 函数中,我们创建了一个 `Undergraduate` 类型的对象 `u1` 和一个 `Graduate` 类型的对象 `g1`,并分别设置了它们的成员变量。最后,调用了 `getInfo()` 函数来输出信息。
阅读全文