用c++写一个简单的毕业生去向系统,用到类,继承,派生
时间: 2024-03-01 12:51:01 浏览: 24
好的,我可以帮您介绍一下基本思路。
首先,我们需要定义一个基类 `Student`,包含学生的姓名、学号、性别、出生日期等基本信息,以及一个纯虚函数 `virtual void showInfo()=0;`,用于显示学生信息。
然后,我们可以派生出两个子类 `Undergraduate` 和 `Graduate`,分别表示本科生和研究生。这两个子类需要继承基类 `Student`,并添加一些额外的信息,如研究方向、导师、毕业论文等等。
接下来,我们可以定义一个管理类 `Manager`,用于管理所有的学生信息。该类需要包含一个学生指针数组,以及一些操作函数,如添加学生、删除学生、查找学生等等。
最后,我们可以在 `main()` 函数中创建 `Manager` 对象,并调用该对象的各种操作函数实现毕业生去向系统的功能。
具体的实现方式还需要根据具体的需求来进行设计,这里只是提供一个基本的思路。
以下是一份简单的代码示例,仅供参考:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Student {
protected:
string name;
int id;
char gender;
string birthday;
public:
Student(string name, int id, char gender, string birthday) : name(name), id(id), gender(gender), birthday(birthday) {}
virtual void showInfo() = 0;
};
class Undergraduate : public Student {
private:
string major;
public:
Undergraduate(string name, int id, char gender, string birthday, string major) : Student(name, id, gender, birthday), major(major) {}
void showInfo() {
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
cout << "性别:" << gender << endl;
cout << "出生日期:" << birthday << endl;
cout << "专业:" << major << endl;
}
};
class Graduate : public Student {
private:
string researchDirection;
string tutor;
string thesis;
public:
Graduate(string name, int id, char gender, string birthday, string researchDirection, string tutor, string thesis) : Student(name, id, gender, birthday), researchDirection(researchDirection), tutor(tutor), thesis(thesis) {}
void showInfo() {
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
cout << "性别:" << gender << endl;
cout << "出生日期:" << birthday << endl;
cout << "研究方向:" << researchDirection << endl;
cout << "导师:" << tutor << endl;
cout << "毕业论文:" << thesis << endl;
}
};
class Manager {
private:
Student* students[100];
int count;
public:
Manager() : count(0) {}
void addStudent(Student* student) {
students[count++] = student;
}
void deleteStudent(int id) {
for (int i = 0; i < count; i++) {
if (students[i]->id == id) {
for (int j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
count--;
break;
}
}
}
void searchStudent(int id) {
for (int i = 0; i < count; i++) {
if (students[i]->id == id) {
students[i]->showInfo();
break;
}
}
}
};
int main() {
Manager manager;
Student* s1 = new Undergraduate("小明", 1001, 'M', "2000-01-01", "计算机科学与技术");
Student* s2 = new Graduate("小红", 2001, 'F', "1998-02-02", "人工智能", "张三", "基于深度学习的图像分类算法");
manager.addStudent(s1);
manager.addStudent(s2);
manager.searchStudent(1001);
manager.searchStudent(2001);
manager.deleteStudent(1001);
manager.searchStudent(1001);
manager.searchStudent(2001);
return 0;
}
```