当前位置:
文档之家› Student类(友元,运算符重载,继承)综合题
Student类(友元,运算符重载,继承)综合题
{
num=n;
name=nam;
sex=s;
birthday.year=bir.year;
birthday.month=bir.month;
birthday.day=bir.day;
score=c;
}
Student::~Student() //析构函数-函数体为空
{
//cout<<"Destructor called."<<endl;
cin>>birthday.month;
cin>>birthday.day;
cin>>score;
}
void Student::sort(Student *p,int N) //按照成绩高低排序函数
{
int i,j;
string temp_num,temp_name;
char temp_sex;
Date temp_bir;
p[i].name=p[j].name;
p[j].name=temp_name;
temp_sex=p[i].sex;
p[i].sex=p[j].sex;
p[j].sex=temp_sex;
temp_bir.year=p[i].birthday.year;
p[i].birthday.year=p[j].birthday.year;
{
string min_num,min_name;
char min_sex;
Date min_bir;
int min_score;
min_num=p->num;
min_name=p->name;
min_sex=p->sex;
min_bir.year=p->birthday.year;
min_bir.month=p->birthday.month;
public:
Date(); //无参构造函数
Date(int,int,int); //有参构造函数
~Date(); //析构函数
//protected: //这里是保护成员//这里是VC6.0的原因
int year; //年
int month; //月
int day; //日
};
class Student //定义Student类-存放学生信息
temp_score=p[i].score;
p[i].score=p[j].score;
p[j].score=temp_score;
temp_thesis=p[i].thesis;
p[i].thesis=p[j].thesis;
p[j].thesis=temp_thesis;
month=1;
day=1;
}
Date::Date(int y,int m,int d) //有参构造函数
{
year=y;
month=m;
day=d;
}
Date::~Date() //析构函数-函数体为空
{
//cout<<"Date Destructor called."<<endl;
}
Student::Student() //无参构造函数,自动赋值
p[j].birthday.year=temp_bir.year;
temp_bir.month=p[i].birthday.month;
p[i].birthday.month=p[j].birthday.month;
p[j].birthday.month=temp_bir.month;
temp_bir.day=p[i].birthday.day;
Doctor::Doctor()
{
thesis="";
sci_value=0;
}
Doctor::Doctor(string t,int c)
{
thesis=t;
sci_value=c;
}
void Doctor::display1()
{
cout<<"thesis:"<<thesis <<endl;
cout<<"sci_value:"<<sci_value <<endl;
};
//以下内容是增加继承后增添的
class Doctor:public Student //定义Doctor类,是Student的派生类
{
public:
Doctor(); //无参构造函数
Doctor(string,int ); //有参构造函数
void display1(); //输出函数
void set(); //输入函数
min_bir.month=p->birthday.month;
min_bir.day=p->birthday.day;
min_score=p->score;
}
p++;
}
cout<<"学生成绩最低者信息:"<<endl;
cout<<"num="<<min_num<<endl;
cout<<"name="<<min_name<<endl;
p[i].birthday.day=p[j].birthday.day;
p[j].birthday.day=temp_bir.day;
temp_score=p[i].score;
p[i].score=p[j].score;
p[j].score=temp_score;
}
}
void Student::min(Student *p,int N) //求最低成绩函数
p[i].birthday.month=p[j].birthday.month;
p[j].birthday.month=temp_bir.month;
temp_bir.day=p[i].birthday.day;
p[i].birthday.day=p[j].birthday.day;
p[j].birthday.day=temp_bir.day;
}
void Doctor::set()
{
cout<<"学生论文等级和科研量化分数:"<<endl;
cin>>thesis;
cin>>sci_value;
}
void Doctor::sort(Doctor *p,int N) //按照科研分值高低排序函数
{
int i,j;
string temp_num,temp_name;
p[j].sex=temp_sex;
temp_bir.year=p[i].birthday.year;
p[i].birthday.year=p[j].birthday.year;
p[j].birthday.year=temp_bir.year;
temp_bir.month=p[i].birthday.month;
//定义Student类,Date类,类定义与成员函数,实现分离。
//将Student类声明为Date的友元类。Student类需要提前声明。
//Student类的成员函数可以访问Date类的私有成员。
//成员函数:构造函数,构造函数重载,析构函数,
//输出函数,求成绩最低者函数,排序函数。
//使用new,delete,动态分配内存。实现班级人数不固定,可以从键盘输入。
min_bir.day=p->birthday.day;
min_score=p->score;
p++;
for(int i=1;i<N;i++)
{
if(p->score<min_score)
{
min_num=p->num;
min_name=p->name;
min_sex=p->sex;
min_bir.year=p->birthday.year;
int temp_score;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(p[i].score<p[j].score)
{
temp_num=p[i].num;
p[i].num=p[j].num;
p[j].num=temp_num;
temp_name=p[i].name;
{
num="空字符串
sex=' '; //默认为空格
birthday.year=1900; //默认生日:1900-1-1
birthday.month=1;
birthday.day=1;
score=0; //默认成绩为0
}
Student::Student(string n,string nam,char s,Date bir,int c) //有参构造函数,将参数值赋给成员
{
temp_num=p[i].num;
p[i].num=p[j].num;
p[j].num=temp_num;
temp_name=p[i].name;
p[i].name=p[j].name;
p[j].name=temp_name;