📄 ex8_8.cpp
字号:
#include<iostream.h>
#include<string.h>
class Person{
int MarkAchieve;
char Name[20];
public:
Person(char *name){
strcpy(Name,name);
MarkAchieve=0;}
void SetMark(int mark){MarkAchieve=mark;};
virtual void CalMark()=0;//CalMark()为虚函数,Person为抽象类
void Print(){cout<<Name<<"的业绩分为:"<<MarkAchieve<<endl;}
};
class Student:public Person{
int credit,grade;//学历和成绩
public:
Student(char *name,int cred,int grad):Person(name){
credit=cred;
grade=grad;
}
void CalMark(){SetMark(credit*grade);}
};
class Teacher:public Person{
int classhour,studnum;//授课学时和学生人数
public:
Teacher(char *name,int ch,int sn):Person(name){
classhour=ch;
studnum=sn;
}
void CalMark(){
int K=(studnum+15)/30;//工作量系数,30人为一班,15人以下不开课
switch(K){
case 1: SetMark(classhour*studnum);break;
case 2: SetMark(classhour*(30+(studnum-30)*8/10));break;
case 3: SetMark(classhour*(30+24+(studnum-60)*6/10));break;
case 4: SetMark(classhour*(30+24+18+(studnum-90)*4/10));break;
case 5: SetMark(classhour*(30+24+12+(studnum-120)*2/10));break;
default:SetMark(classhour*(30+24+12+6+(studnum-150)*1/10));break;
}
}
};
void main(){
Person *pp;
Student s1("张成",20,80);
Teacher t1("范英明",64,125),t2("李凯",80,85);
pp=&s1;
pp->CalMark();
pp->Print();
pp=&t1;
pp->CalMark();
pp->Print();
pp=&t2;
pp->CalMark();
pp->Print();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -