写一个较为复杂的C++ 毕业生就业管理系统,用到类,继承,派生
时间: 2023-08-17 22:04:11 浏览: 109
好的,以下是一个较为复杂的C++毕业生就业管理系统的实现。这个系统使用了类、继承和派生,并且包含了更多的功能和更复杂的设计。
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
class Person{
protected:
string name;
int age;
public:
Person(string n, int a){
name = n;
age = a;
}
virtual void display(){
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
virtual void writeToFile(ofstream& fout){
fout << "Name: " << name << endl;
fout << "Age: " << age << endl;
}
};
class Graduate : public Person{
private:
string major;
string school;
double gpa;
public:
Graduate(string n, int a, string m, string s, double g) : Person(n, a){
major = m;
school = s;
gpa = g;
}
void display(){
Person::display();
cout << "Major: " << major << endl;
cout << "School: " << school << endl;
cout << "GPA: " << gpa << endl;
}
void writeToFile(ofstream& fout){
fout << "Type: Graduate" << endl;
Person::writeToFile(fout);
fout << "Major: " << major << endl;
fout << "School: " << school << endl;
fout << "GPA: " << gpa << endl;
}
};
class Company{
private:
string name;
vector<Person*> employees;
public:
Company(string n){
name = n;
}
void addEmployee(Person* p){
employees.push_back(p);
}
void display(){
cout << "Company Name: " << name << endl;
for(int i=0; i<employees.size(); i++){
employees[i]->display();
cout << endl;
}
}
void saveToFile(string filename){
ofstream fout(filename);
fout << "Company Name: " << name << endl;
for(int i=0; i<employees.size(); i++){
employees[i]->writeToFile(fout);
fout << endl;
}
fout.close();
}
};
int main(){
Company company("ABC Company");
Graduate graduate1("Tom", 22, "Computer Science", "XYZ University", 3.8);
Graduate graduate2("Jane", 23, "Business", "ABC University", 3.5);
company.addEmployee(&graduate1);
company.addEmployee(&graduate2);
company.display();
company.saveToFile("company.txt");
return 0;
}
```
在这个程序中,我们创建了三个类:Person、Graduate和Company。Person类表示一个人的基本信息,包括姓名和年龄。Graduate类继承自Person类,表示一个毕业生的详细信息,包括姓名、年龄、专业、毕业学校和GPA。Company类表示一个公司,包括公司名称和员工列表,可以添加员工、显示员工信息和将员工信息保存到文件中。
在Person类和Graduate类中,我们使用了虚函数display和writeToFile。这样,我们可以通过Person类的指针来调用Graduate类的display和writeToFile函数。在Graduate类中,我们重载了display和writeToFile函数,并在其中添加了毕业生特有的信息。
在Company类中,我们使用了vector来存储员工列表。我们定义了一个addEmployee函数来添加员工,一个display函数来显示公司和员工信息,一个saveToFile函数来将公司和员工信息保存到文件中。
在主函数中,我们创建了一个Company类的对象company,并创建了两个Graduate类的对象graduate1和graduate2,并将它们添加到company的员工列表中。然后,我们调用了company的display函数来显示公司和员工信息,并调用了company的saveToFile函数来将公司和员工信息保存到文件中。
这个程序演示了如何使用类、继承和派生来实现一个较为复杂的毕业生就业管理系统,包括公司和员工信息的管理、显示和保存。
阅读全文