📄 teacher_student.cpp
字号:
#include <iostream.h>
#include <string.h>
class Base //抽象类
{
protected:
char name[8];
public:
Base(char *n="")
{
strcpy(name,n);
}
virtual bool isgood()=0; //纯虚函数
virtual void display()=0; //提供了一个入口
};
class Student:virtual public Base //类的继承 有三种方式1 private 2 protected 3 public
{
float score;
public:
Student(char *n="",float s=0):Base(n)
{
score=s;
}
virtual bool isgood(){
if (score>=90)
return true;
else
return false;
}
void display(){ cout<<name<<" "<<score<<endl; } //派生类中virtual 可以省略
};
class Teacher:virtual public Base //virtual 消除多继承中的多义性
{
int articles;
public:
Teacher(char *n="",int a=0):Base(n)
{
articles=a;
}
virtual bool isgood(){
if (articles>3)
return true;
else
return false;
}
void display(){ cout<<name<<" "<<articles<<endl; }
};
void main()
{
Base *p[2][10]; //基类指针 p[0]教师 p[1]学生
int choice; //菜单选择
char isContinue;
char name[20]; //姓名
float score;
int articles;
int tcount=0,scount=0,i;//分别记录教师的人数,学生人数,i循环变量
do{
cout<<"1.教师 \n2.学生\n";
cout<<"请选择(1-2):";
cin>>choice;
switch(choice)
{
case 1:
cout<<"教师姓名:";
cin>>name;
cout<<"论文数:";
cin>>articles;
p[0][tcount]=new Teacher(name,articles);
tcount++;
break;
case 2:
cout<<"姓名:";
cin>>name;
cout<<"成绩:";
cin>>score;
p[1][scount]=new Student(name,score);
scount++;
break;
default:
cout<<"\n选择错误!\n";
}
cout<<"\n是否继续输入信息(Y/N)?";
cin>>isContinue;
}while((tcount<=9 && scount<=9) && (isContinue=='y'||isContinue=='Y'));
cout<<"\n优秀教师:\n";
cout<<"--------------------------------\n";
for(i=0;i<tcount;i++)
if(p[0][i]->isgood())
p[0][i]->display();
cout<<"\n优秀学生:\n";
cout<<"--------------------------------\n";
for(i=0;i<scount;i++)
if(p[1][i]->isgood())
p[1][i]->display();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -