课程名称:面向对象程序设计实验项目名称:大作业:简单类的定义与实现学院:计算机与软件学院专业:实验时间:2010-11-22实验报告提交时间:2010-11-26教务处制实验目的与要求:类与对象的基本概念实验内容、方法、过程:实验内容:学校招生办在录取当年新生时已为每个新生建立了一个新生基础类Base,其中包含有每位新生的基本资料:学号(longnum)、姓名(charname[20])、性别(intsex:其中0表示男,1表示女)、年龄(intage)、住址(charaddr[30])、主修专业(charmdept[30])。新生主修专业所在系又在学生基本资料的基础上为每位该系新生建立一个主修类First,其中除了包含原来新生资料外,还设有新生主修成绩(floatMscore[60])。为了促进复合型人才培养,学生在二年级可辅修另外一个专业课程。辅修接收系又为每位辅修本系第二学位同学建立一个辅修类Fbase,其中除了学生基本资料外,还设有辅修专业名称(charfdep[30])、辅修成绩表(设为floatFscore[4])。现假设:招生办工作人员只能访问到学生基本资料;主修系教务员只能访问到学生的基本资料和主修相关资料(但不能修改学生的基本资料);辅修系接收教务员只能访问(但不能修改)学生的基本资料和辅修相关资料;设某系现有6名学生,其中有4名辅修了某系课程。期末考试时,主修系共考了5门课,辅修共考了4门课,设成绩均用百分制(int)表示。考完试后,进行下列工作:1)主修系教务员输入每位同学成绩;2)辅修系接收教务员输入每位辅修同学成绩;输入结束后:3)主修系教务员统计出期末考中至少有3门(含3门)以上课程成绩在85分(含85分)以上、其余课程成绩不低于70分的同学并显示出其相关资料;4)主修系教务员还要统计出需要参加补考的同学及其相关资料;5)辅修接收系教务员要统计出需要参加补考的辅修同学并显示出其相关资料;实验要求:1)请按照以上的条件给出新生基础类的定义与说明。2)给出三个不同教师角色的定义与说明。3)在前面实验的基础上,利用类与继承设计并实现出满足上述要求的类。4)编出一个模拟程序模拟招生办工作人员、主修系教务员、辅修接收系教务员的操作且实现其工作要求。主要程序:#includeiostreamusingnamespacestd;classBase{private:longnum;charname[20];intsex;intage;charaddr[30];charmdept[30];public:voidset_Base(longnumber,char*p_name,intthe_sex,intthe_age,char*p_addr,char*p_mdept);voidprint();};voidBase::set_Base(longnumber,char*p_name,intthe_sex,intthe_age,char*p_addr,char*p_mdept){num=number;strcpy(name,p_name);sex=the_sex;age=the_age;strcpy(addr,p_addr);strcpy(mdept,p_mdept);}voidBase::print(){coutNumber:numendl;coutName:nameendl;coutSex:;if(sex==0)coutmaleendl;elsecoutfemaleendl;coutAge:ageendl;coutAddress:addrendl;coutFirstSpecialty:mdeptendl;}classFirst:publicBase{private:floatMscore[60];public:voidget_Mscore(floatthe_Mscore[],intn){inti;for(i=0;in;i++)the_Mscore[i]=Mscore[i];}voidset_First(floatthe_Mscore[],intn){inti;for(i=0;in;i++)Mscore[i]=the_Mscore[i];}voidprint1(){inti;for(i=0;i5;i++)coutMscorei+1:Mscore[i]endl;}};classFbase:publicFirst{private:charfdep[30];floatFscore[4];public:voidget_Fscore(floatthe_Fscore[],intn){inti;for(i=0;in;i++)the_Fscore[i]=Fscore[i];}voidset_Fbase(char*p_fdep,floatthe_Fscore[]){inti;strcpy(fdep,p_fdep);for(i=0;i4;i++)Fscore[i]=the_Fscore[i];}voidprint2(){inti;coutElective:fdependl;for(i=0;i4;i++)coutFscorei+1:Fscore[i]endl;}};classBTeacher{public:voidset_BTeacher(Base&a,longnumber,char*p_name,intthe_sex,intthe_age,char*p_addr,char*p_mdept){a.set_Base(number,p_name,the_sex,the_age,p_addr,p_mdept);}};classFTeacher:privateBTeacher{public:voidset_Fscore(First&a,floatthe_Mscore[],intn){a.set_First(the_Mscore,n);}voidstatistics(Firsta){inti,j=0,k=0,p=0;floatthe_Mscore[60];a.get_Mscore(the_Mscore,5);for(i=0;i5;i++){if(the_Mscore[i]=85)j++;if(the_Mscore[i]=85&&the_Mscore[i]=70)k++;if(the_Mscore[i]60)p++;}if(j=3&&k=2||j=4&&k=1||j=5){coutTheexcellentstudentofmainsubjectis:endl;a.print();a.print1();coutendl;}if(p0){coutThefailedstudentofmainsubjectis:endl;a.print();a.print1();coutendl;}}};classFbTeacher:privateFTeacher{public:voidset_Fbscore(Fbase&a,char*p_fdep,floatthe_Fscore[]){a.set_Fbase(p_fdep,the_Fscore);}voidFb_statistics(Fbasea){inti,j=0;floatthe_Fscore[4];a.get_Fscore(the_Fscore,4);for(i=0;i4;i++){if(the_Fscore[i]60)j++;}if(j0){coutThefailedstudentofelectiveis:endl;a.print();a.print1();a.print2();coutendl;}}};voidmain(){inti;floatscore[5];Firsts1,s2;Fbases3,s4,s5,s6;BTeachert1;FTeachert2;FbTeachert3;t1.set_BTeacher(s1,01,ZhangSan,0,19,Qingsongzhai,Management);t1.set_BTeacher(s2,02,LiSi,0,20,Huachen,Economy);t1.set_BTeacher(s3,03,ChenWu,0,19,Chuanhua,Computer);t1.set_BTeacher(s4,04,HuangLiu,1,21,HongDouzhai,Law);t1.set_BTeacher(s5,05,DengQi,1,20,ZiWeizhai,English);t1.set_BTeacher(s6,06,ZhenBa,0,20,YunZhuge,Mathematics);coutMainteachersinputthescores:endl;coutForstudent1:;for(i=0;i5;i++)cinscore[i];t2.set_Fscore(s1,score,5);coutForstudent2:;for(i=0;i5;i++)cinscore[i];t2.set_Fscore(s2,score,5);coutForstudent3:;for(i=0;i5;i++)cinscore[i];t2.set_Fscore(s3,score,5);coutForstudent4:;for(i=0;i5;i++)cinscore[i];t2.set_Fscore(s4,score,5);coutForstudent5:;for(i=0;i5;i++)cinscore[i];t2.set_Fscore(s5,score,5);coutForstudent6:;for(i=0;i5;i++)cinscore[i];t2.set_Fscore(s6,score,5);coutTheminorteachersinputthescores:endl;coutForstudent1:;for(i=0;i4;i++)cinscore[i];t3.set_Fbscore(s3,Physics,score);coutForstudent2:;for(i=0;i4;i++)cinscore[i];t3.set_Fbscore(s4,Computer,score);coutForstudent3:;for(i=0;i4;i++)cinscore[i];t3.set_Fbscore(s5,Economy,score);coutForstudent4:;for(i=0;i4;i++)cinscore[i];t3.set_Fbscore(s6,English,score);t2.statistics(s1);t2.statistics(s2);t2.statistics(s3);t2.statistics(s4);t2.statistics(s5);t2.statistics(s6);t3.Fb_statistics(s3);t3.Fb_statistics(s4);t3.Fb_statistics(s5);t3.Fb_statistics(s6);}程序截图如下:预设程序步骤:1)招生办工作人员输入学生的基本信息2)主修系教务员输入学生主修科目成绩3)辅修系教务员输入学生辅修科目成绩4)主修系教务员根据学生成绩打印出成绩优秀的学生和需补考学生的信息5)辅修系教务员根据学生成绩打印出需要补考学生的信息根据程序设计步骤,编写各个类,弄清楚每个类之间的继承关系,画出类的结构层次图。类层次示意图:数据处理分析:学生的姓名,学号,性别等设置为private,还设置了两个公有成员函数set_Base();和print();分别用来设置和打印学生的基本信息,这些都是