2023年面向对象程序设计基础R实验指导和实验报告_第1页
2023年面向对象程序设计基础R实验指导和实验报告_第2页
2023年面向对象程序设计基础R实验指导和实验报告_第3页
2023年面向对象程序设计基础R实验指导和实验报告_第4页
2023年面向对象程序设计基础R实验指导和实验报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

实验报告因实践报告口课程名称:面向对象程序设计基础R实验、实践名称:面向对象程序设计基础R实验、实践地点:逸夫楼201专业班级:软件1601学号:2023005学生姓名:指导教师:宋春花2023年4月17碰到的问题和解决方法心得体会实验名称实验二类与对象的特性实验目的和规定(1)掌握类的定义和对象的定义和使用;(2)掌握静态数据成员和静态成员函数的定义和使用方法;(3)理解类的作用域、对象的作用域及生存周期;(4)掌握函数调用中参数的传递;(5)掌握常量类型;(6)掌握友元函数和友元类的定义及使用。实验内容~编写一个学生类。(1)输出每个学生的姓名、学号、成绩;(2)记录并输出学生的总人数、总成绩、平均成绩、最高成绩、最低成绩。重要仪器设备台式或笔记本电脑:1台/人实验记录(写出实验内容中程序代码和运营结果)(可分栏或加页)#includcstdafx.h*#include<iostream>usingnamespacestd;//定义学生类c1assStudent{。intno:〃学号»charname[10];//姓名。doublescore;〃成绩staticinttotaINumber;〃学生人数staticdoub1etotalScore;〃总成绩<>staticdoub1e1owestScore;//最低成绩staticdoublehighestScore;〃最高成绩public:oStudent(intno_,char*name_,doublescore);〃构造函数staticvoidOutpu10;//输出相关信息voidStudentinformationO;〃输出学生基本信息):intStudent::tota1Number=0;//静态数据初始化doub1eStudent::highestScore=0.;doubleStudent::lowcstScorc=100.;intmain(){Studentstu1(1001,"张小三"y",97.5);stul.StudentInformation();。Studentstu2(1625,"李老四”,83.);stu2.StudentInformation();。Studentstu3(1628,“王老五”,93.);。stu3,StudenlInformalion();

Studentstu4(1352,“郭小六,62.5):stu4.Studentinformation();Studentstu5(1999,"王小明”,77.);。stu5,Studentlnformation();。Student::Output();。。systcm(°pause");return0;)Student::Student(intno,char*namedoub1escoreno=no_;strepy(name,name_);。score=score_;tola1Number++:。tota1Score+=score;。if(score>highestScore)»highestScore=score;if(score<lowestScore)。。lowestScore=score;voidStudent::StudcntInformation()“<<"“<<"姓名"V〈nameV<”“<<"姓名"V〈nameV<”"成绩:"<VscoreV<endl;{coutV<"学号"<<“<<"姓名"V〈nameV<”"成绩:"<VscoreV<endl;{cout<<“学*«end1;cout«*'平tScore«"总数z,<<totalNumber<<*"<<"总成均成绩“。tota1Score/totalNumber<<M最低成绩"<<loweslScorcV<”绩"«totalScore«*“<<"最高成绩"Ghighes"«end1:■1D:\c++面向供验2-1\Debug\实验2-1.exe缜绩绩绩绩

成成成成成526绩成低最5397三四五六明41唬小老老小小:』张李王郭王绩高成最158202250663IX1AIX1A6-2•8・・绿19数绩继

一盘X

锢总成意号号号号号生均如学学学平请碰到的问题和解决方法心得体会实验名称实验三继承与派生实验目的和规定(1)掌握类的继承和派生概念;(2)掌握派生类的定义与使用;(3)掌握派生类的构造函数与析构函数的应用及调用顺序;(4)理解赋值兼容原则的应用。实验内容考察一个点、圆、圆柱体的层次结构,计算圆和圆柱体的面积,阅读程序并运营。建立3个类,分别为点类、圆类、圆柱类,点类派生得到圆类,圆类派生得到圆柱类。重要仪器设备台式或笔记本电脑:1台/人实验记录(写出实脸内容中的程序代码和运营结果)(可分栏或加页)^include*stdafx.h*#include<iostream>#include<iomanip>usingnamespacestd;classPoint{friendostrcam&operator<<(ostream&,constPoint&);public:。Point(int=0,int=0)”//带默认参数的构造函数。voidsetPoint(int,int);//对点坐标数据赋值intgetX()const{returnx;}intgetY()const{returny;}protected:»intx»y;。//Point类的数据成员);classCircle:publicPoint{friendostrearn&operator«(ostream&,constCircle&);//友元函数public:Circle(doubler=0.0,intx=0,inty=0):<>//构造函数voidsetRadius(doub1e);//置半径。doubIegetRadius()const;〃返回半径doublearea()const;。//返回面积protected:doubleradius;。//数据成员,半径);classCy1indcr:publicCircle{friendostream&operator<<(ostream&,constCylinder&);//友元函数publie:Cy1indcr(doub1ch=0.0,doub1cr=0.0,intx=0,inty=0);

//构造函数。voidsetIIeight(doubIe);//置高度值doublegetHeight()const;〃返I可高度值doubleareaOconst;»〃返回面枳»doublevo1ume()const;〃返回体积protectcd:8doubleheight://数据成员,高度};Point::Point(inta(intb)//构造函数,调用成员函数对x,y作初始化(。setPoint(a,b);)voidPoint::setPoint(inta,intb){x=a;y=b:}//对数据成员置值ostream&operator«(ostream&output,constPoint&p)//重我插入运算符,输出对象数据{output«'['«p.x<<"«p.y<<"]";returnoutput;//带初始化式构造函数,一方面调用基类构造函数Circle::Circle(doub1er,inta,intb):Point(a,b){setRadius(r):}voidCircle::setRadius(doubler){radius=(r>=0?r:0);}//对半径置值doub1eCirc1e::getRadius()const{returnradius;}//返回半径值doub1eCircle::area()const{return3.14159*radius*radius;}//计算并返回面枳值constCircle&c)//输出圆心坐标和半径.X<<«c.y«<<Radiusostrearn&constCircle&c)//输出圆心坐标和半径.X<<«c.y«<<Radiusoutput«”Center=*<<*['«(。,<<setiosf1ags(ios::fixed|ios::showpoint)<<setprecision(2)«c.radius;returnoutput;)//带初始化式构造函数,一方面调用基类构造函数Cy1inder::Cy1inder(doubleh,doubler,intx,inty):Circ1e(r,x,y){setHeight(h);}voidCy1inder::setHeight(doub1eh){height=(h>=0?h:0);}//对高度置值doubleCy1inder::getHeight()const{returnheight;}//返回高度值doub1cCy1indor::area0const{return2*Circle::arca()+2*3.14159*radius*height;}//计算并返,1圆柱体的表面积doubleCy1inder::volumc0const{returnCirc1e::area()*height;}//计算并返回圆柱体的体积。。。//输出数据成员圆心坐标、半径和高度值ostream&operator<<(ostream&output,constCy1inder&cy)output«”Center="<<<<cy.x<<«cy.y<<*]"<<*;Radius="setiosflags(ios::fixed|ios::showpoint)«setprecision(2)«cy.radiusHeight="«cy.hcight«cndl;*returnoutput;}itinclude<iostream>#include<iomanip>usingnamespacestd;intmain()(Pointp(72,115);。〃定义点对象并初始化。cout«”Theinitial1ocationofpis*<<p«endl;op.setPoint(10,10);〃置点的新数据值»cout<<"\nThenew1ocationofpis«p<<end1;〃输出数据Circlec(2.5,37,43)〃定义圆对象并初始化ocout«"\nTheinitial1ocationandradiusofcare\n"V<c«"\nArea="<<c.arca()<<"\n*:c.setRadius(4.25);c.setPoint(2,2);//置圆的新数据值。。3。。。//输出圆心坐标和圆面积。cout«*\nThenew1ocationandradiusofcare\n"<<c<<"\nArea=c.area()«"\n”;oCyIindercyl(5.7,2.5,12,23);〃定义圆柱体对象并初始化6°80//输出圆柱体各数据和表面积,体积cout<<"\nTheinitial1ocation,radiusandheightofcylare\n"<<cyl。。<<"Area="«cyl.area()«*\nVolume=*«cyl.volume()«'\n';。//置圆柱体的新数据值cy1.setHeight(10);cyi.setRadius(4.25);cy1.setPoint(2,2);cout<<"\nThencw1ocation,radiusandheightofcylare\n*«cy1«*Area="<<cy1.area()<<"\nVolume="<<cyl.vo1ume()<<"\n";system("pause*)•E3D:\c++面向出削供验3-1\Debug供验3-1.exe.Theinitiallocationofpis[72,115JThenewlocationofpis[10,10]TheinitiallocationandradiusofcareCenter=[37,43];Radius=2.50Area=19.63ThenewlocationandradiusofcareCenter=[2,2];Radius=4.25Area=56.74Theinitiallocation,radiusandheightofcylareCenter=[12,23];Radius=2.50;Height=5.70Area=128.81Volume=111.92Thenewlocation,radiusandheightofcylareCenter=[2,2];Radius=4.25;Height=10.00Area=380.53Volume=567.45请按任意键继续...碰到的问题和解决方法心得体会实验名称实验四多态性实验目的和规定(1)掌握C++中运算符重载的机制和运算符重载的方式;(2)理解类型转换的必要性,掌握类型转换的使用方法;(3)理解多态性,掌握虚函数的设计方法;(4)掌握纯虚函数和抽象类的使用方法。实验内容某小型公司,重要有三类人员:管理人员、计时人员和计件人员。现在,需要存储这些人的姓名、编号、时薪、工时、每件工件薪金、工件数,计算月薪并显示所有信息。设计4个类,分别为雇员类(为抽象类)、管理人员类、计时人员类和计件人员类,其中管理人员类、计时人员类和计件人员类由雇员类派生得到。重要仪器设备台式或笔记本计算机:1台/人实验记录(写出实验内容中的程序代码和运营结果)(可分栏或加页)#include"stdafx.h"#include"iostream”Uinclude"iomanip”tfinclude"siring,h”usingnamespacestd;//Emp1oyee.hclassEmployee{//雇员类--抽象类public:»Emp1oyee(int,constchar*name);virtua1〜Employee。;,。//虚析构函数ostringgetName();onggetNumber();virtualdoubleearnings(double)://纯虚函数,计算月薪virtualvoidprint();〃虚函数,输出编号、姓名protected:longnumber;。//编号stringname;*。//姓名)://Manager.hclassManager:pub1icEmp1oyee{〃管理人员类public:»constManager(int,constchar*name,double);。'Manager。{}。voidselMonthlySalary(doub1e);//置月薪

virtua1doubleearnings()://计算管理人员月薪////输出管理人员信息//输出管理人员信息»virtualvoidprint();priv//输出管理人员信息。doub1emonthlySalary;O〃私有数据,月薪)://IIour1yWorker.h〃计时人员类〃计时人员类〃计时人员类classHour1yWorker:pub1icEmployee{p〃计时人员类public:HouriyWorker(int,const*"HourlyWorker(){}。voidselWage(double);»。voidsetHours(int);&。virtua1doubleearnings()virtualvoidprint();。privatc:doublewage://时薪doublehours;〃工时};//PieceWorker.hclassPieceWorker:publicpublicpublic:HouriyWorker(int,const*"HourlyWorker(){}。voidselWage(double);»。voidsetHours(int);&。virtua1doubleearnings()virtualvoidprint();。privatc:doublewage://时薪doublehours;〃工时};//PieceWorker.hclassPieceWorker:publicchar*name,doubie,int);//置时薪//置工时//计算计时工月薪//输出计时工月薪Employee{〃计件人员类public:。PieceWorker(int,constchar*name.,double,int);»^PieceWorker(){}voidsetWage(double)。了置每件工件薪金。voidsctQuantity(int);//置工件数。virtua1doub1eearnings();//计算计件薪金。virtualvoidPrint()://输出计件薪金private:cloublewagePerPiece;//年件工件薪金。intquantity。〃工件数);intmainO(cout«setiosflags(ios::fixed|ios::showpoint)«setprecision(2);»Managerml(10135,“ChengShaoHua”,1200):HouriyWorkcrhw1(30712,"ZhaoXiaoMing*,5,8*20);Pieceworkerpwl(20382,"XiuLiWci”,0.5,2850);//使用抽象类指针,调用派生类版本的函数。Emp1oyee*basePtr;basePtrbasePtrbasePtrbasePtr->print();basePtrbasePtr=&hw1;basePtr->printO;®basePtr=&pw1;basePtr->print();。systcm("pause");)Employce::Employce(intnu_,constchar*namc_){*number=nu:namc=namc_;)Employee::"Employee0()stringEmployee::getName()(returnname;)longEmployee::getNumbcr()(。returnnumber;}doubleI-mploycc::carnings(doublepay){returnpay;)voidEmp1oyee::print(){}Manager::Manager(intnu,constchar*name_,doublepay):Employee(nu,name),monthIySa1ary(pay)()voidManager::setMonth1ySa1ary(doublepay){monthlySalary=pay:)doublcManager::earnings(){returnmonthlySalary:)voidManager::print(){cout<<"管理者编号:"<<number<<"\n管理者月薪“«month1ySa1ary<<"\n)HourlyWorker::HouriyWorker(intnu_,constchar*name,doub1epay,inthour):Employce(nu.,name_),wage(pay),hours(hour)

voidHour1yWorker::setWage(doublepay){wage=pay;)voidHour1yWorker::setHours(inthour){hours=hour:)doubleHour1yWorkcr::earnings(){returnwage*hours;)voidHourlyWorker::print()(。cout<<“计时员编号:"<<number<<"计时员月薪”«wage*hours<<endl;)PieceWorker::PieceWorker(intnu.,constchar*name,,doub1epay,intpicce):Employee(nu,name),wagePerPiece(pay),quantity(piece)(}voidPieceWorker::setWage(doublepay){wagePerPiece=pay;)voidPieceWorker::setQuantity(intpiece){quantity=piece;)doub1ePieceWorker::earnings(){returnwagoPerPiccc*quantity;)voidPieceWorker::print(){cout<<”计件员编号"<<number<<”计件员计件薪”<<wagePerPiece*quantity<<endl;}■1D:\c++面向供验4-1\Debug供验4-1.exe号薪号号像编月编编螂者者员员意d:J;L理理由?安:101351200.00:307121-20382it件员月薪800.00计件薪1425.00碰到的问题和解决方法心得体会实验名称实验一熟悉VisualStudio开发环境实验名称实验目的和规定(1)熟悉基本的输入输出方法;(2)掌握函数的定义,调用和声明方法,函数的参数传递机制,函数嵌套调用和递归调用,内联函数,带默认形参的函数,重载函数;(3)理解命名空间的概念,掌握命名空间的使用:(4)熟悉const关键字的使用;(5)掌握内存的动态分派的概念和使用;(5)掌握类的定义和对象的定义和使用;实验内容.编写重载函数area。和perimeter(),分别计算圆、长方形、正方形的面枳和周长,并在主函数中测试之。.完善程序,并上机运营:(此程序见原模板).定义一个复数类Comp1ex,复数的实部Rea1与虚部Image定义为私有数据成员。用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为cl=20+40i,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。用公有成员函数Display()显示复数cl、c2与c3的内容。.定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagona1()计算出矩形对角线的长度,公有成员函数Show。品示矩形左上角与右下角坐标及对角线长度。在主函数中用new运算符动态建立矩形对象rl,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用de1ete运算符回收为矩形动态分派的存储空间。重要仪器设备台式或笔记本电脑:1台/人实验记录(写出实验内容中1、2、3、4的程序代码和运营结果)(可分栏或加页)1.#include"stdafx.h"#incIude"iostream"usingnamespacestd;constdoubIepi=3.141592;doublearea(doubIer);doublearea(doubIea,doubIeb);doubIeperimer(doubIer);doubleperimer(doublea,doubleb);doublearea(doubIer)(doubIes;§s=pi*r*r;returns;)doubIearea(doublea,doubleb)(doubles;s=a*b;returns;)doubIeperimer(doubIer)(adoubIep;dp=2*pi*r;»returnp;}doubIeperimer(doublea,doubIeb)(ddoubIep;ap=2*(a=b);,returnp;)int_tmain(intargc,_TCHAR*argv[])(doubler;doubIem;»doubIen;cout<<”请输入圆的半径:"v<endI;»cin»r;cout<<”圆的面积为:"v<area(r)«n"<<"圆的周长为:"«perimer(r)«endI;,cout<<”请输入长方形的长和宽:"«endl;cin>>m»n;,cout<<"长方形面积为:"<<area(叫n)<<""<<"长方形的周长为:n«perimer(m,n)«endI;,811七〈<"请输入正方形的边长:”<《m1;cin»m;,cout<<”正方形的面积为:"<<area(m,m)<<"”<<“正方形的周长为:"V<perimer(m,m)«endI;getchar0;getchar();areturn0;)■1D:\c++®[pJ^JriSvf\1-1供验1-1\Debug供验1-1.exe请输入圆的半径:Q国的面积为:28.2743网的周长为:18.8496I请输入长方形的长和宽:O长方形面积为:10长方形的周长为:10I请输入正方形的边长:正方形的面积为:16正方形的周长为:8//实验l-2.cpp:定义控制台应用程序的入口点。//#include*stdafx.hM#include"iostream”usingnamespacestd;constdoublepi=3.14;classCircle{public:。doublearea(){returnx*x*pi;}Circ1e(doub1ea):x(a){}private:doub1ex;);classRectangle{public:Rectangle(doublex,doubley):1en(x),wid(y){)〃写出矩形类的构造函数doublearea(){returnlen*wid;}//写出计算矩形面积函数private:adoub1e1en,wid;);c1assSquare{public:aSquare(doublex):len(x){"/写出正方形类的构造函数adoub1earea(){return1en*1en;}//写出计算正方形面积函数private:double1en;);intmain()(cout<<"Inputshape"«endl;pout«*ifcire1e,inputc,ifrectangleinputr;ifsquareinputs"«endl;pharshape;cin>>shape;®switch(shape)(«case'c':{doubler;cout«"inputradius"<<endl;acin>>r;®Circler1(r);ocout«circlearea=M«rl.area()«end1;8system("pausereak;0acase'r':{doub1elen,wid;<cout<<"input1engthandwidth"«endl;cin»len>>wid;ectanglejx(len,wid);//构造矩形对象,宽为wid,高为lenocout<<"rectanglearea=*<<jx.area()«end1;〃输出矩形面积彩ystem("pause");reak;)«case's':{doublelen;«cout<<"input1ength'*«endl;»cin»len;«Squarefx(len);//构造正方形对象,边长为1enacout<<*squarearea=*«fx.area()«endl;〃输出正方形面积»system("pause*);break;qdefault:cout«*inputerror!"«endl;»break;0return0;)BD:\c++面向程序设计'实验1-2\Debug供验1-2.exeInputshapeifcircle,inputc,ifrectangleinputr;ifsquareinputsinputlengthandwidthQjrectanglearea=72IBlD:\c++面向■供验1-2\Debug

温馨提示

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

评论

0/150

提交评论