用c++写一个简单的按年龄查询毕业生信息系统,用到类,继承,派生
时间: 2024-03-01 13:50:05 浏览: 25
好的,下面是一个简单的按年龄查询毕业生信息系统的C++代码,其中用到了类、继承和派生的概念:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Student {
protected:
string name;
int age;
string major;
public:
Student(string n, int a, string m) : name(n), age(a), major(m) {}
virtual void printInfo() {
cout << "Name: " << name << ", Age: " << age << ", Major: " << major << endl;
}
virtual bool isGraduated() = 0;
};
class Undergraduate : public Student {
private:
int year;
public:
Undergraduate(string n, int a, string m, int y) : Student(n, a, m), year(y) {}
void printInfo() {
cout << "Undergraduate: ";
Student::printInfo();
cout << "Year: " << year << endl;
}
bool isGraduated() {
return year >= 4 && age >= 22;
}
};
class Graduate : public Student {
private:
string supervisor;
public:
Graduate(string n, int a, string m, string s) : Student(n, a, m), supervisor(s) {}
void printInfo() {
cout << "Graduate: ";
Student::printInfo();
cout << "Supervisor: " << supervisor << endl;
}
bool isGraduated() {
return age >= 24;
}
};
int main() {
vector<Student*> students;
students.push_back(new Undergraduate("Tom", 20, "Computer Science", 3));
students.push_back(new Graduate("Jerry", 25, "Mathematics", "Dr. Smith"));
students.push_back(new Undergraduate("Alice", 21, "Physics", 4));
students.push_back(new Graduate("Bob", 23, "Chemistry", "Dr. Johnson"));
int age;
cout << "Enter age: ";
cin >> age;
for (auto s : students) {
if (s->isGraduated() && s->age == age) {
s->printInfo();
}
}
return 0;
}
```
上述代码中,我们定义了一个`Student`类作为基类,其中包含了学生的姓名、年龄和专业,还定义了一个纯虚函数`isGraduated()`,由于不同类型的学生在判断是否毕业时的条件不同,因此我们将该函数定义为纯虚函数,由派生类去实现。我们又定义了两个派生类`Undergraduate`和`Graduate`,分别表示本科生和研究生,它们继承自基类`Student`,并实现了`isGraduated()`函数。`Undergraduate`和`Graduate`类还分别定义了自己的成员变量和成员函数,比如`Undergraduate`类有一个表示所在年级的成员变量`year`,而`Graduate`类有一个表示导师的成员变量`supervisor`。在`main()`函数中,我们创建了若干个`Student`类的对象,并将它们加入了一个`vector`容器中。然后,我们让用户输入一个年龄,程序会遍历容器中的每一个学生对象,如果该学生满足毕业条件并且年龄等于用户输入的年龄,就输出该学生的信息。