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

该博客介绍了一个使用C++编写的Grade类,该类用于管理学生考试成绩,包括姓名、分数、等级的存储和输出。类中包含了构造函数、复制构造函数、析构函数,以及获取成绩等级和学生信息的方法。此外,还定义了一个静态成员变量用于统计学生人数,并实现了一个友元函数用于比较两个学生的成绩。在主函数中,创建了6个学生对象并展示了其信息,最后输出了学生总数。
摘要由CSDN通过智能技术生成

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

(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),比较两个学生成绩的高低,输出成绩高的那个学生信息。

实验思路:首先定义一个类,按照题意将所需的函数成员和数据成员声明好,然后在类外实现,注意静态数据成员要在类外初始化,调用时用类名调用,定义一个私有成员函数getGrade()时,记得考虑100分的情况。

#include <iostream> 
#include<string>
using namespace std;
class Grade{
//类内的声明 
	public: 
                Grade(){}
		Grade(string name1,int score1=0);//构造函数 ,调用一次count值加1 
		Grade(Grade& m);       //复制构造函数 
		~Grade(){count--;}     //析构函数,调用一次count值减1 
		static int getcount(); //公有接口,输出count 
		string getname()const; //公有接口 ,输出name 
		int getscore()const;   //公有接口,输出score 
		char getGrade0()const; //公有接口,输出学生的等级 
		void getlnfo()const;   //输出结果:包含学生的姓名、分数、等级 
		friend void compare(Grade &m,Grade &n);//类的友元函数,比较两个学生成绩的高低,输出成绩高的那个学生信息。
	private:
		static int count; //静态数据成员,用于统计学生的人数 
		int score;        //学生成绩 
		string name;      //学生姓名 
		char getGrade()const;//判定学生的等级 
};
//类外的实现 
int Grade::count = 0;     //静态数据成员,用于统计学生的人数,初始值定义为0 
Grade::Grade(string name1,int score1):name(name1),score(score1)
            {count++;}
Grade::Grade(Grade& m):name(m.name),score(m.score){}
int Grade::getcount(){return count;}
string Grade::getname()const{return name;}
int Grade::getscore()const{return score;}
char Grade::getGrade0()const{
	return getGrade();
}
void compare(Grade &m,Grade &n){
	cout << "这两个学生中成绩较高的学生的姓名、分数、等级为 ";
	if(m.score>n.score)
	cout << m.name << " " << m.score << " " << m.getGrade() << endl;
	else
	cout << n.name << " " << n.score << " " << n.getGrade() << endl;
}
void Grade::getlnfo()const{
	cout << "学生的姓名、分数、等级分别是 ";
	cout << name  << " " << score << " " << getGrade() << endl;
}
char Grade::getGrade()const{
	int j = score/10; 
	switch(j)
	{
		case 10:return 'A';break;
		case 9:return 'A';break;
		case 8:return 'B';break;
		case 7:return 'C';break;
		case 6:return 'D';break;
		default: return 'E';break;
	}
}
int main() {
	
	Grade a("Sun",100);    //定义a对象 
	a.getGrade0();         //得到a学生的等级
	a.getlnfo();           //得到a学生的姓名、分数、等级
	Grade b("Wu",90);      //定义b对象 
	compare(a,b);          //比较a和b两个人的成绩,并输出成绩高的那个学生的信息
	 
	Grade c("Jiang",52);
	Grade d("Zhou",0);
	Grade e("He",76);
	Grade f("Liu",88);    //共定义了六个学生的信息 
	
	cout << "学生的总人数为";
	cout << Grade::getcount() << endl;
	
	return 0; 
}

  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值