C++程序设计 实验8 实验报告 标准答案_第1页
C++程序设计 实验8 实验报告 标准答案_第2页
C++程序设计 实验8 实验报告 标准答案_第3页
C++程序设计 实验8 实验报告 标准答案_第4页
C++程序设计 实验8 实验报告 标准答案_第5页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2页共5页广东金融学院实验报告课程名称:C++程序设计实验编号及实验名称实验8静态成员练习:学生成绩统计系别计科系姓名学号班级实验地点实验日期实验时数2指导教师同组其他成员成绩实验目的及要求1.通过在Student中引入静态数据成员来记录学生人数、分数和、分数平方和及最高分得主,学习静态数据成员的意义和定义方法。2.通过将学生人数、分数和、分数平方和及最高分得主的计算从主函数移到成员函数中实现,学习类属性数据的访问和计算方法。3.通过在主函数中调用静态成员函数来实现平均分数、标准偏差和最高分得主资料的计算和输出,学习静态成员函数的调用方法。实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)硬件设备:联网的个人计算机操作系统:Windows2000编译系统:VisualC++6.0实验内容及步骤(包含简要的实验步骤流程)1.静态成员的意义略2.静态成员的定义和使用参考课件5.4.7“静态成员应用实例”,在实验7建立的Student类,以及使用该类的主函数的基础之上(须保留实验7原有的数据成员和成员函数),通过以下步骤,来实现对静态成员的使用:⑴在Student类中声明4个私有静态数据成员counter、sum、sumsqr和max;⑵在Student类的所有构造函数以及拷贝构造函数的函数体中增加语句counter++;⑶增加公有(非静态)成员函数(外联)SumMark和SaveMax;⑷增加公有静态成员函数(内联)Initialize、GetCounter、GetSum、GetSumsqr和GetMax;⑸在类定义和函数定义之外建立各个静态数据成员的实例;⑹在主函数中,删除counter、sum、sumsqr、max几个局部变量,以及对这几个变量求值的所有算法,增加如下包含有静态成员的新类的算法:①在while循环之前调用初始化函数Initialize;②把调用构造函数创建Student对象的语句从循环之外移到循环体内、读语句之后,并在调用CalcMark之后紧接着调用SumMark和SaveMax;③在循环结束、程序的最后,通过类名::调用静态成员函数GetCounter、GetSum、GetSumsqr和GetMax,得到学生人数、分数总和及分数平方和,并据此计算出平均分数和标准偏差,与学生人数、最高分得主资料一道输出到屏幕上。实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)//student.h#include<string>usingnamespacestd;classStudent{private: stringm_ID; stringm_name; floatm_exercise; floatm_report; floatm_midterm; floatm_terminal; floatm_mark; staticintcounter; staticfloatsum; staticfloatsumsqr; staticStudentmax;public: Student(stringID,stringname,floatexercise,floatreport,floatmidterm,floatterminal):m_ID(ID), m_name(name),m_exercise(exercise),m_report(report),m_midterm(midterm),m_terminal(terminal) { counter++; } Student(){counter++;} ~Student(){} Student(Student&student) { m_ID=student.m_ID; m_name=student.m_name; m_exercise=student.m_exercise; m_report=student.m_report; m_midterm=student.m_midterm; m_terminal=student.m_terminal; m_mark=student.m_mark; counter++; } voidSetStudent(stringID,stringname,floatexercise,floatreport,floatmidterm,floatterminal) { m_ID=ID; m_name=name; m_exercise=exercise; m_report=report; m_midterm=midterm; m_terminal=terminal; } stringGetID(){returnm_ID;} stringGetName(){returnm_name;} floatGetExercise(){returnm_exercise;} floatGetReport(){returnm_report;} floatGetMidterm(){returnm_midterm;} floatGetTerminal(){returnm_terminal;} floatGetMark(){returnm_mark;} voidCalcMark(); //计算总评 voidSumMark(); //分数累积 voidSaveMax(); //记录最高分得主 staticvoidInitialize(){counter=0;sum=0.;sumsqr=0.;max.m_mark=0.;} staticintGetCounter(){returncounter;} //静态成员函数:取学生总数 staticfloatGetSum(){returnsum;} //静态成员函数:取分数累积 staticfloatGetSumsqr(){returnsumsqr;} //静态成员函数:取分数平方和 staticStudentGetMax(){returnmax;} //静态成员函数:取最高分得主};//student.cpp#include"student.h"voidStudent::CalcMark(){ m_mark=m_exercise*0.1+m_report*0.2+m_midterm*0.1+m_terminal*0.6;}voidStudent::SumMark() //分数累加{ sum+=m_mark; sumsqr+=m_mark*m_mark;}voidStudent::SaveMax() //记录最高分得主资料{ if(m_mark>max.m_mark){ max.m_ID=m_ID; max.m_name=m_name; max.m_exercise=m_exercise; max.m_report=m_report; max.m_midterm=m_midterm; max.m_terminal=m_terminal; max.m_mark=m_mark; }}//main.cpp#include<string>#include<iostream>#include<fstream>#include<cmath>usingnamespacestd;#include"student.h"intStudent::counter; //建立学生总数的一个实例floatStudent::sum; //建立分数总和的一个实例floatStudent::sumsqr; //建立分数平方和的一个实例StudentStudent::max; //建立最高分得主的一个实例voidmain(){ stringID,name; floatexercise,report,midterm,terminal; Student::Initialize(); //初始化静态成员 stringClassName; cout<<"Classname:";cin>>ClassName; ifstreamfi; fi.open((ClassName+".txt").c_str()); while(!fi.eof()) { fi>>ID>>name>>exercise>>report>>midterm>>terminal; Studentx(ID,name,exercise,report,midterm,terminal); x.CalcMark(); x.SumMark(); x.SaveMax(); } fi.close(); floatcounter=Student::GetCounter(); floatsum=Student::GetSum(); floatsumsqr=Student::GetSumsqr(); Studentmax=Student::GetMax(); cout<<"班级名称:"<<ClassName<<endl; cout<<"学生人数:"<<counter<<endl; cout<<"平均分数:"<<sum/counter<<endl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论