题目描述
定义Person类具有姓名、年龄等属性,具有输出基本信息的display函数。
选修《面向对象程序设计》课程的学生在Person类的基础上,派生出子类:免听生和非免听生。子类继承父类成员,新增其他成员、改写display函数。
非免听生具有平时成绩、考试成绩和总评成绩三个属性,总评成绩根据(平时成绩*40%+考试成绩*60%)计算的结果,85分(包含)以上为A,75分(包含)-85分(不包含)为B,65分(包含)-75分(不包含)为C,60分(包含)-65分(不包含)为D,60分(不包含)以下为F。
免听生只有考试成绩和总评成绩两个属性,总评成绩100%根据考试成绩对应上述等级制成绩。
定义上述类并编写主函数,输入类型符号,若输入R,根据学生基本信息、平时成绩和考试成绩,建立非免听生对象,若输入S,根据学生基本信息、考试成绩,建立免听生对象。计算学生的总评成绩,并输出。
输入
测试次数t
随后每行输入学生类型 相关信息,姓名的最大字符长度为20
输出
每个学生基本信息和总评成绩
样例查看模式
正常显示查看格式
输入样例1 <-复制
2\n
R cindy 18 100 100\n
S sandy 28 59
输出样例1
cindy 18 A\n
sandy 28 F
#include<iostream>
using namespace std;
class mian;
class fei;
class person
{
protected:
string name;
int age;
public:
person() {};
person(string name, int age)
{
this->name = name;
this->age = age;
}
virtual void display()
{
cout << name << " " << age;
}
};
class mian:public person
{
protected:
int test;
int sum;
public:
mian() {};
mian(string name,int age,int test):person(name,age)
{
this->test = test;
}
virtual void display()
{
cout << name << " " << age << " ";
sum = test;
if (sum >= 85)
{
cout << "A" ;
}
else if (sum >= 75 && sum < 85)
{
cout << "B";
}
else if (sum >= 65 && sum < 75)
{
cout << "C";
}
else if (sum < 65 && sum >= 60)
{
cout << "D";
}
else
{
cout << "E";
}
cout << endl;
}
};
//非免听生具有平时成绩、考试成绩和总评成绩三个属性
class fei:public person
{
protected:
int common;
int test;
int sum;
public:
fei() {};
fei(string name, int age, int c, int t):person(name,age)
{
common = c;
test = t;
}
virtual void display()
{
cout << name << " " << age << " ";
//平时成绩*40%+考试成绩*60%
sum = common * 0.6 + test * 0.6;
if (sum >= 85)
{
cout << "A";
}
else if (sum >= 75 && sum < 85)
{
cout << "B";
}
else if (sum >= 65 && sum < 75)
{
cout << "C";
}
else if (sum < 65 && sum >= 60)
{
cout << "D";
}
else
{
cout << "F";
}
cout << endl;
}
};
int main()
{
int t;
cin >> t;
char type;
string name;
int age, test, common;
while (t--)
{
cin >> type;
if (type == 'R')
{
cin >> name >> age >> common >> test;
fei f(name, age, common, test);
f.display();
}
else
{
cin >> name >> age >> test;
mian m(name, age, test);
m.display();
}
}
return 0;
}