第 3 题
【要求】编写一个程序,有若干个教师和研究生,每个研究生有且仅
有一名指导老师,每个老师可以带若干名研究生,建立一个教师对象
数组和研究生对象数组,通过相关函数为每个研究生指定指导老师,
最后输出所有研究生的完整信息和所有教师的完整信息。
【分析】略
【源代码】
#include <iostream>
using namespace std;
class Graduate; //
const int Max=6; //一个教师最多指导的研究生人数
class Teacher //教师类
{ int tno; //编号
char tname[10]; //姓名
char prof[8]; //职称
int num; //实际指导的研究生人数
Graduate *sp[Max]; //指导的研究生
public:
Teacher() {}
Teacher(int n,char na[],char pr[])
{ tno=n;
strcpy(tname,na);
strcpy(prof,pr);
num=0;
}
void addgraduate(Graduate *gp) //给教师增加一个研究生
{ sp[num]=gp;
num++;
}
void Tdisp() //输出一个教师的基本信息
{ cout << tname << "(" << tno << "," << prof << ")" << endl;
}
void Tdispall(); //输出一个教师的完整信息
};
class Graduate //研究生类
{ int sno; //学号
char sname[10]; //姓名
Teacher t; //导师
public:
Graduate(int n,char na[])
{ sno=n;
strcpy(sname,na);
}
void setteacher(Teacher &t1) //指定当前研究生的导师
{ t1.addgraduate(this); //给教师 t1 增加一个研究生
t=t1; //让 t1 作为当前研究生的导师
}
void Gdisp() //输出一个研究生的基本信息
{
cout << " 学号:" << sno << " 姓名:" << sname << endl;
}
void Gdispall() //输出一个研究生的完整信息
{ cout << " 学号:" << sno << " 姓名:" << sname << " 导师:";
t.Tdisp();
}
};
void Teacher::Tdispall()
{ int i;
cout << " " << tname << "(" << tno << "," << prof << ")" << endl;
cout << " 指导研究生人数:" << num << endl;
for (i=0;i<num;i++)
sp[i]->Gdisp();
}
void main()
{ int i;
Teacher t[3]={Teacher(101,"王华","教授"), Teacher(102,"陈立","副教授"),Teacher(103,"李清","教授")};
Graduate g[5]={Graduate(201,"张三"),Graduate(202,"李四"), Graduate(203,"王五"),Graduate(204,"刘六"),Graduate(205,"赵七")};
g[0].setteacher(t[0]); //设置每个研究生的导师
g[1].setteacher(t[2]);
g[2].setteacher(t[1]);
g[3].setteacher(t[2]);
g[4].setteacher(t[0]);
cout << "研究生列表" << endl;
for (i=0;i<5;i++)
g[i].Gdispall();
cout << "教师列表" << endl;
for (i=0;i<3;i++)
t[i].Tdispall();
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。