2.编写一个学生和教师数据输入和显示的程序。学生数据有编号(no)、姓名(name)和成绩(grade),教师数据有编号(no)、姓名(name)和职称(prof)。要求将编号、姓名的输入和显示设计成一个类person,并作为学生数据类student和教师数据类teacher的基类。且父类要求定义为抽象类,由子类对其纯虚函数进行重新定义,并编写主程序进行执行,体现多态性。
这个题网上都有,但是我觉得答案都不太好,所以自己写了一个,反正自己还算满意吧,大家可以将就着看看。
#include<iostream>
#include<string>
using namespace std;
class person{
protected:
char name[20];
int number;
public :
person(){}
person(char* na,int num):number(num){strcpy(name,na);}
virtual void input(){
cout<<"please input name and number:";
cin>>name>>number;
}
virtual void print()=0;
};
class student:public person{
float grade;
public :
student(char* na,int num,float ge):person(na,num),grade(ge){}
void input(){
person::input();
cout<<"input grade:";
cin>>grade;
}
void print(){
cout<<"the student's name is "<<name<<" number is "<<number<<" grade is "<<grade<<endl;
}
} ;
class teacher :public person{
char professor[20];
public :
teacher(){}
teacher(char* na,int num,char* pro):person(na,num){strcpy(professor,pro);}
void input(){
person::input();
cout<<"input professinor:";
cin>>professor;
}
void print(){
cout<<"the teacher's name is "<<name<<" number is "<<number<<" pro is "<<professor<<endl;
}
} ;
int main(){
student stu("ruchu",2008,100);
// stu.input();
teacher th("lijianli",123,"associate professor");
// th.input();
stu.print();
th.print();
system("pause");
return 0;
}
这是是在DEV c++中运行成功的,如果在其他版本的编译器中,估计得改改吧。