4.
设计一个
Grade
类
,
判定学生某个考试的级别,全部操作在类
Grade
中实现(
30
分)。
要求:
(1)
在定义对象时指定学生姓名和分数。且姓名必须指定,分数可缺省,缺省值为
0
分。要求包含构造函
数、复制构造函数、姓名用
string
类型来定义。主函数中实例化
6
个学生对象的姓名和分数分别为:
Sun l00
Wu 90
Jiang 52
Zhou 0
He 76
Liu 88
(2)
编写一个私有成员函数
getGrade()
,判定学生成绩的等级(
60
分以下为
E
等,
[60-70)
分为
D
等,
[70-
80)
为
C
等,
[80-90)
为
B
等,
[90-100]
分为
A
等)。
(3)
编写一个常成员函数
getInfo()
输出结果,包含学生姓名、分数、等级。
(4)
定义静态数据成员
count
,用于统计总的学生人数,并在主函数中输出。
(5)
定义该类的友元函数
compare(Grade &m,Grade &n)
,比较两个学生成绩的高低,输出成绩高的那 个学生信息。
#include<iostream>
#include<iomanip>
using namespace std;
class Grade{
public:
Grade(){} //默认构造函数
Grade(string nam,int sco=0);//构造函数
Grade(Grade& p); //复制构造函数
~Grade(){count--;} //析构函数
static int getCount(); //静态数据成员函数count,用于统计总的学生人数
char getGrade1()const;
void getInfo()const; //常成员函数
friend void compare(Grade &m,Grade &n);
private:
static int count; //把count定义为静态的数据成员
float score;
string name;
char getGrade()const; //私有成员函数getGrade(),判定学生成绩的等级
};
int Grade::count=0; //对Grade类中的数据成员初始化
Grade::Grade(string nam,int sco):name(nam),score(sco){
count++;
}
Grade::Grade(Grade& p):name(p.name),score(p.score){}
int Grade::getCount(){ //统计学生人数的函数
return count;
}
char Grade::getGrade1()const{ //统计学生成绩的函数
return getGrade();
}
void compare(Grade &m,Grade &n){//定义比较两人成绩的函数
cout<<endl<<"两人中成绩更高的人的学生信息是:";
if(m.score>n.score)
cout<<m.name<<" "<<m.score<<" "<<m.getGrade()<<endl;
else
cout<<n.name<<" "<<n.score<<" "<<n.getGrade()<<endl;
}
void Grade::getInfo()const{
cout<<std::left<<setw(8)<<name<<setw(8)<<score<<getGrade()
<<std::right<<endl;
}
char Grade::getGrade()const{
if(score<=100&&score>=90) return 'A';
else if(score<90&&score>=80) return 'B';
else if(score<80&&score>=70) return 'C';
else if(score<70&&score>=60) return 'D';
else if(score<60&&score>=0) return 'E';
else cout<<"Error Data!";
}
int main()
{
cout<<"学生姓名、分数、等级分别为:"<<endl;
Grade gra1("Sun",100); //以下为6位同学的成绩和等级
gra1.getGrade1();
gra1.getInfo();
Grade gra2("Wu",90);
gra2.getGrade1();
gra2.getInfo();
Grade gra3("Jiang",52);
gra3.getInfo();
Grade gra4("Zhou",0);
gra4.getInfo();
Grade gra5("He",76);
gra5.getInfo();
Grade gra6("Liu",88);
gra6.getInfo();
compare(gra1,gra2); //比较前两个同学的成绩
cout<<endl<<"学生总人数为:"<<Grade::getCount()<<endl;
return 0;
}
PS:内容是我日常作业,写的不好多多担待。