设计一个Grade类,判定学生某个考试的级别,全部操作在类Grade中实现

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:内容是我日常作业,写的不好多多担待。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值