#includeusing namespace std; class CStudent { public: string name; char *studentid; float score; CStudent(); CStudent(char*,char*,float); ~CStudent(); void modify(char*,char*,float); void print(); }; CStudent::CStudent() { name=" "; studentid=new char[12]; strcpy(studentid," "); score=0.0; } CStudent::CStudent(char* name_,char* id,float s) { name=name_; studentid=new char[strlen(id)+1]; strcpy(studentid,id); score=s; } CStudent::~CStudent() { delete []studentid; } void CStudent::modify(char *name_,char *id,float s) { name=name_; strcpy(studentid,id); score=s; } void CStudent::print() { cout<<"Name:"< 2. 班级类 Cclass 及完整程序的设计( 30 分) ( 1 )数据成员: Cstudent 类对象 student_1 的信息为“张三”、学号 20170301001 、成绩 86 , student_2 的信息为“李四”、学号 20170301001 、成绩 66.5 , student_3 的信息为“王五”、学号 20170301001 、 成绩 40 ; Num 存放班级人数; (2)成员函数: find() 计算班级中及格与不及格人数, print() 获取(读取)有关数据后显示信息, 以及构造函数。 (3)主函数:创建类 Cclass 的对象 class_c ,采用合适的设计,通过成员函数 find() 等方法计算班 级人数、及格与不及格人数;然后,对象调用 print() 显示如下信息: # 创建班级对象并显示该班信息 班级成员:张三,李四,王五 班级人数 : 3 班级及格人数 : 2 班级不及格人数 : 1 #includeusing namespace std; class CStudent { public: string name; char *studentid; float score; CStudent(); CStudent(char*,char*,float); ~CStudent(); void modify(char*,char*,float); void print(); static int obcount; }; int CStudent::obcount=0; CStudent::CStudent() { name=" "; studentid=new char[12]; strcpy(studentid," "); score=0.0; obcount++; } CStudent::CStudent(char* name_,char* id,float s) { name=name_; studentid=new char[strlen(id)+1]; strcpy(studentid,id); score=s; obcount++; } CStudent::~CStudent() { delete []studentid; obcount--; } void CStudent::modify(char *name_,char *id,float s) { name=name_; strcpy(studentid,id); score=s; } void CStudent::print() { cout<<"Name:"< =60) pass++; else fail++; if(student_2.score>=60) pass++; else fail++; if(student_3.score>=60) pass++; else fail++; } void Cclass::print() { cout<<"班级成员"< 3. 班级统计类 Canalysis (派生类) 及完整程序的设计( 30 分) (1) Canalysis 类是 Cclass 类(基类)的派生类,继承方式为 public 方式; (2) 数据成员: Saver 存放班级平均成绩;构造函数对数据成员初始化(值为 0 ); (3) 成员函数: Aver() 计算班级平均成绩并存到 Saver , find() 求出班级中的最高成绩, print() 获取 有关数据后显示信息。 (4) 主函数:创建类 Cclass 的对象 class_c ,创建类 Canalysis 的对象 analysis_d ,采用合适的设计, 由成员函数 Aver() 计算班级平均成绩;设计合适的指针与方法来实现多态性,该指针调用成员函 数 find() 计算班级中及格与不及格人数,该指针调用成员函数 find() 求出班级中的最高成绩,该指 针调用 print() 显示如下信息:(主函数中 不允许用 cout 语句,但注释行 "#…" 例外) # 统计计算班级的学生成绩情况 班级成员:张三,李四,王五 班级人数 : 3 班级及格人数 : 2 班级不及格人数 : 1 班级平均成绩 : 64.1 班级最高成绩 : 86 #includeusing namespace std; class CStudent { public: string name; char *studentid; float score; CStudent(); CStudent(char*,char*,float); ~CStudent(); void modify(char*,char*,float); void print(); static int obcount; }; int CStudent::obcount=0; CStudent::CStudent() { name=" "; studentid=new char[12]; strcpy(studentid," "); score=0.0; obcount++; } CStudent::CStudent(char* name_,char* id,float s) { name=name_; studentid=new char[strlen(id)+1]; strcpy(studentid,id); score=s; obcount++; } CStudent::~CStudent() { delete []studentid; obcount--; } void CStudent::modify(char *name_,char *id,float s) { name=name_; strcpy(studentid,id); score=s; } void CStudent::print() { cout<<"Name:"< =60) pass++; else fail++; if(student_2.score>=60) pass++; else fail++; if(student_3.score>=60) pass++; else fail++; } void Cclass::print() { cout<<"班级成员"< max) max=student_2.score; if(student_3.score>max) max=student_3.score; } void Canalysis::print() { cout << "班级平均成绩:" print(); Canalysis analysis_d; p = &analysis_d; //基类指针 p 存派生类对象地址 p->find(); //基类指针 p 调用派生类的成员函数,实现多态性 p->print(); return 0; } 主函数也可以这样调用
int main() { Cclass *p=new Cclass; p->find(); p->print(); Cclass *p1 = new Canalysis; p1->find(); p1->print(); return 0; }



