欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《面向对象程序设计基础R》实验指导和实验报告(2017年)(共27页).doc

    • 资源ID:16273430       资源大小:287KB        全文页数:27页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《面向对象程序设计基础R》实验指导和实验报告(2017年)(共27页).doc

    精选优质文档-倾情为你奉上实验报告þ 实践报告课程名称: 面向对象程序设计基础R 实验、实践名称: 面向对象程序设计基础R 实验、实践地点: 逸夫楼201 专业班级: 软件1601 学号: 学生姓名: 指导教师: 宋春花 2017年 4月 17 日专心-专注-专业实验名称 实验一 熟悉Visual Studio 开发环境实验目的和要求(1) 熟悉基本的输入输出方法;(2) 掌握函数的定义,调用和声明方法,函数的参数传递机制,函数嵌套调用和递归调用,内联函数,带默认形参的函数,重载函数;(3) 理解命名空间的概念,掌握命名空间的使用;(4) 熟悉const关键字的使用;(5) 掌握内存的动态分配的概念和使用;(5) 掌握类的定义和对象的定义和使用;实验内容1.编写重载函数area()和perimeter(),分别计算圆、长方形、正方形的面积和周长,并在主函数中测试之。2.完善程序,并上机运行:(此程序见原模板)3.定义一个复数类Complex,复数的实部Real与虚部Image定义为私有数据成员。用复数类定义复数对象c1、c2、c3,用默认构造函数将c1初始化为c1=20+40i,将c2初始化为c2=0+0i,用拷贝构造函数将c3初始化为c3=20+40i。用公有成员函数Display()显示复数c1、c2与c3的内容。4. 定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用delete运算符回收为矩形动态分配的存储空间。主要仪器设备台式或笔记本电脑:1台/人实验记录(写出实验内容中1、2、3、4的程序代码和运行结果)(可分栏或加页)1.#include "stdafx.h"#include"iostream"using namespace std;const double pi=3.;double area(double r);double area(double a,double b);double perimer(double r);double perimer(double a,double b);double area(double r)double s;s=pi*r*r;return s;double area(double a,double b)double s;s=a*b;return s;double perimer(double r)double p;p=2*pi*r;return p;double perimer(double a,double b)double p;p=2*(a=b);return p;int _tmain(int argc, _TCHAR* argv)double r;double m;double n;cout<<"请输入圆的半径:"<<endl;cin>>r;cout<<"圆的面积为:"<<area(r)<<" "<<"圆的周长为:"<<perimer(r)<<endl;cout<<"请输入长方形的长和宽:"<<endl;cin>>m>>n;cout<<"长方形面积为:"<<area(m,n)<<" "<<"长方形的周长为:"<<perimer(m,n)<<endl;cout<<"请输入正方形的边长:"<<endl;cin>>m;cout<<"正方形的面积为:"<<area(m,m)<<" "<<"正方形的周长为:"<<perimer(m,m)<<endl;getchar();getchar();return 0;/ 实验1-2.cpp : 定义控制台应用程序的入口点。/#include"stdafx.h"#include "iostream"using namespace std;const double pi = 3.14;class Circle public:double area() return x*x*pi; Circle(double a) :x(a) private:double x;class Rectangle public:Rectangle(double x,double y):len(x),wid(y)/写出矩形类的构造函数double area() return len*wid; /写出计算矩形面积函数private:double len, wid;class Square public:Square(double x) :len(x) /写出正方形类的构造函数double area() return len*len; /写出计算正方形面积函数private:double len;int main()cout << "Input shape" << endl;cout << "if circle, input c, if rectangle input r; if square input s" << endl;char shape;cin >> shape;switch (shape)case 'c': double r;cout << "input radius" << endl;cin >> r;Circle r1(r);cout << " circle area=" << r1.area() << endl;system("pause");break;case 'r': double len, wid;cout << "input length and width" << endl;cin >> len >> wid;Rectangle jx(len,wid); /构造矩形对象,宽为wid,高为len cout << "rectangle area=" << jx.area() << endl;/输出矩形面积system("pause");break;case 's': double len;cout << "input length" << endl;cin >> len;Square fx(len);/构造正方形对象,边长为lencout << "square area=" << fx.area() << endl;/输出正方形面积system("pause");break;default: cout << "input error!" << endl;break;return 0;3. #include "stdafx.h"#include"iostream"using namespace std;class Complexpublic:Complex(double a,double b):real(a),image(b);Complex(Complex &c);void Dispaly();private :double real;double image;Complex:Complex(Complex & c)real = c.real;image = c.image;void Complex:Dispaly()cout <<"(" <<real << "+" << image << "i"<<")"<< endl;int main()Complex c1(20,40);Complex c2(0, 0);Complex c3(c1);c1.Dispaly(); c2.Dispaly(); c3.Dispaly();system("pause");4. #include "stdafx.h"#include"iostream"#include"math.h"using namespace std;class Rectangleprotected:double Left,Top,Right,Bottom;public:Rectangle(double a,double b,double c,double d):Left(a),Top(b),Right(c),Bottom(d);void Show(Rectangle &d);double Diagonal(Rectangle &c);double Rectangle:Diagonal(Rectangle &c)double x=c.Right-c.Left;double y=c.Top-c.Bottom;double d=sqrt(x*x+y*y);return d;void Rectangle:Show(Rectangle &d) cout<<"左 上 角 "<<"("<<Left<<","<<Top<<")"<<endl; cout<<"右 下 角 "<<"("<<Right<<","<<Bottom<<")"<<endl; cout<<"斜 角 线 长 度¨¨"<<d.Diagonal(d)<<endl;int main() Rectangle *r1=new Rectangle(10,10,20,20); r1->Show(*r1); delete r1; system("pause"); return 0;遇到的问题和解决方法心得体会实验名称 实验二 类与对象的特性实验目的和要求(1) 掌握类的定义和对象的定义和使用;(2) 掌握静态数据成员和静态成员函数的定义和使用方法;(3) 理解类的作用域、对象的作用域及生存周期; (4) 掌握函数调用中参数的传递;(5) 掌握常量类型;(6) 掌握友元函数和友元类的定义及使用。实验内容 编写一个学生类。(1)输出每个学生的姓名、学号、成绩;(2)统计并输出学生的总人数、总成绩、平均成绩、最高成绩、最低成绩。主要仪器设备台式或笔记本电脑:1台/人实验记录(写出实验内容中程序代码和运行结果)(可分栏或加页)#include"stdafx.h"#include <iostream>using namespace std;/定义学生类class Studentint no; /学号char name10; /姓名double score; /成绩static int totalNumber; /学生人数static double totalScore; /总成绩static double lowestScore; /最低成绩static double highestScore; /最高成绩public:Student(int no_,char *name_,double score_); /构造函数static void Output(); /输出相关信息void StudentInformation(); /输出学生基本信息;int Student:totalNumber=0; /静态数据初始化double Student:highestScore =0.;double Student:lowestScore =100.;int main( ) Student stu1(1001,"张小三¨y",97.5);stu1.StudentInformation ();Student stu2(1625,"李 老 四",83.);stu2.StudentInformation ();Student stu3(1628,"王 老 五",93.);stu3.StudentInformation ();Student stu4(1352,"郭 小 六¨´",62.5);stu4.StudentInformation ();Student stu5(1999,"王 小 明",77.); stu5.StudentInformation ();Student:Output (); system("pause");return 0;Student:Student (int no_,char *name_,double score_) no=no_;strcpy(name,name_);score=score_;totalNumber+;totalScore+=score;if (score>highestScore)highestScore=score;if (score<lowestScore)lowestScore=score;void Student:StudentInformation () cout<<"学 号"<<no<<" "<<"姓 名 "<<name<<" "<<"成 绩:"<<score<<endl;void Student:Output ()cout<<"学 总 数 "<<totalNumber<<" "<<"总 成 绩 "<<totalScore<<" "<<endl;cout<<"平 均 成 绩"<<totalScore/totalNumber<<" "<<"最 高 成 绩 "<<highestScore<<" "<<"最 低 成 绩"<<lowestScore<<" "<<endl;遇到的问题和解决方法心得体会实验名称 实验三 继承与派生实验目的和要求(1)掌握类的继承和派生概念;(2)掌握派生类的定义与使用;(3)掌握派生类的构造函数与析构函数的应用及调用顺序;(4)理解赋值兼容原则的应用。实验内容考察一个点、圆、圆柱体的层次结构,计算圆和圆柱体的面积,阅读程序并运行。建立3个类,分别为点类、圆类、圆柱类,点类派生得到圆类,圆类派生得到圆柱类。主要仪器设备台式或笔记本电脑:1台/人实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)#include "stdafx.h"#include <iostream>#include<iomanip>using namespace std;class Point friend ostream &operator<< (ostream &, const Point &);public:Point(int = 0, int = 0);/ 带默认参数的构造函数void setPoint(int, int);/ 对点坐标数据赋值int getX() const return x; int getY() const return y; protected:int x, y; / Point类的数据成员;class Circle : public Point friend ostream &operator<< (ostream &, const Circle &);/ 友元函数public:Circle(double r = 0.0, int x = 0, int y = 0);/ 构造函数void setRadius(double); /置半径 double getRadius() const; /返回半径double area() const;/ 返回面积protected: double radius;/ 数据成员,半径;class Cylinder :public Circle friend ostream & operator<<(ostream &, const Cylinder &); / 友元函数public:Cylinder(double h = 0.0, double r = 0.0, int x = 0, int y = 0); / 构造函数void setHeight(double); / 置高度值double getHeight() const; /返回高度值double area() const; /返回面积 double volume() const; /返回体积protected:double height;/ 数据成员,高度;Point:Point(int a, int b) / 构造函数,调用成员函数对 x,y作初始化setPoint(a, b);void Point:setPoint(int a, int b) x = a; y = b; / 对数据成员置值ostream &operator<< (ostream &output, const Point &p) / 重载插入运算符,输出对象数据output << '' << p.x << "," << p.y << ""return output;/ 带初始化式构造函数,首先调用基类构造函数Circle:Circle(double r, int a, int b) : Point(a, b) setRadius(r); void Circle:setRadius(double r) radius = (r >= 0 ? r : 0); / 对半径置值double Circle:getRadius() const return radius; / 返回半径值double Circle:area() const return 3.14159 * radius * radius; / 计算并返回面积值ostream & operator<< (ostream &output, const Circle &c) / 输出圆心坐标和半径值output << "Center = " << '' << c.x << "," << c.y << "" << " Radius = "<< setiosflags(ios:fixed | ios:showpoint) << setprecision(2) << c.radius;return output;/ 带初始化式构造函数,首先调用基类构造函数 Cylinder:Cylinder(double h, double r, int x, int y) :Circle(r, x, y) setHeight(h); void Cylinder:setHeight(double h) height = (h >= 0 ? h : 0); / 对高度置值double Cylinder:getHeight() const return height; / 返回高度值double Cylinder:area() const return 2 * Circle:area() + 2 * 3.14159*radius*height; / 计算并返回圆柱体的表面积double Cylinder:volume() const return Circle:area()*height; / 计算并返回圆柱体的体积 / 输出数据成员圆心坐标、半径和高度值ostream &operator<< (ostream &output, const Cylinder &cy)output << "Center = " << '' << cy.x << "," << cy.y << "" << " Radius = "<< setiosflags(ios:fixed | ios:showpoint) << setprecision(2) << cy.radius<< " Height = " << cy.height << endl;return output;#include <iostream>#include <iomanip>using namespace std;int main()Point p(72, 115);/定义点对象并初始化cout << "The initial location of p is " << p << endl;p.setPoint(10, 10);/置点的新数据值cout << "nThe new location of p is " << p << endl;/输出数据Circle c(2.5, 37, 43);/定义圆对象并初始化cout << "nThe initial location and radius of c aren" << c << "nArea = " << c.area() << "n"c.setRadius(4.25); c.setPoint(2, 2); /置圆的新数据值/输出圆心坐标和圆面积cout << "nThe new location and radius of c aren" << c << "nArea = " << c.area() << "n"Cylinder cyl(5.7, 2.5, 12, 23);/定义圆柱体对象并初始化/输出圆柱体各数据和表面积,体积cout << "nThe initial location, radius and height of cyl aren" << cyl<< "Area = " << cyl.area() << "nVolume = " << cyl.volume() << 'n'/置圆柱体的新数据值cyl.setHeight(10); cyl.setRadius(4.25); cyl.setPoint(2, 2);cout << "nThe new location, radius and height of cyl aren" << cyl<< "Area = " << cyl.area() << "nVolume = " << cyl.volume() << "n"system("pause");遇到的问题和解决方法心得体会实验名称 实验四 多态性实验目的和要求(1)掌握C+中运算符重载的机制和运算符重载的方式;(2)理解类型转换的必要性,掌握类型转换的使用方法;(3)理解多态性,掌握虚函数的设计方法;(4)掌握纯虚函数和抽象类的使用方法。实验内容某小型公司,主要有三类人员:管理人员、计时人员和计件人员。现在,需要存储这些人的姓名、编号、时薪、工时、每件工件薪金、工件数,计算月薪并显示全部信息。 设计4个类,分别为雇员类(为抽象类)、管理人员类、计时人员类和计件人员类,其中管理人员类、计时人员类和计件人员类由雇员类派生得到。主要仪器设备台式或笔记本计算机:1台/人实验记录(写出实验内容中的程序代码和运行结果) (可分栏或加页)#include "stdafx.h"#include"iostream"#include"iomanip"#include"string.h"using namespace std;/Employee.hclass Employee /雇员类-抽象类public: Employee( int,const char*name_);virtual Employee(); /虚析构函数string getName() ; long getNumber() ;virtual double earnings(double) ;/纯虚函数,计算月薪virtual void print() ; /虚函数,输出编号、姓名protected:long number;/ 编号string name;/ 姓名;/ Manager.hclass Manager : public Employee /管理人员类public:const Manager( int,const char*name_, double );Manager() void setMonthlySalary(double); / 置月薪virtual double earnings() ; / 计算管理人员月薪virtual void print() ; / 输出管理人员信息private:double monthlySalary; /私有数据,月薪;/ HourlyWorker.hclass HourlyWorker : public Employee /计时人员类public: HourlyWorker(int, const char*name_, double, int);HourlyWorker() void setWage(double); /置时薪void setHours(int); /置工时virtual double earnings() ; / 计算计时工月薪virtual void print() ; / 输出计时工月薪private:double wage; /时薪double hours; /工时;/ PieceWorker.hclass PieceWorker : public Employee /计件人员类public: PieceWorker(int, const char*name_, double , int);PieceWorker() void setWage(double);/置每件工件薪金void setQuantity(int);/置工件数virtual double earnings() ; / 计算计件薪金virtual void print() ; / 输出计件薪金private:double wagePerPiece;/每件工件薪金int quantity;/工件数;int main()cout << setiosflags(ios:fixed | ios:showpoint) << setprecision(2);Manager m1(10135, "Cheng ShaoHua", 1200);HourlyWorker hw1(30712, "Zhao XiaoMing", 5, 8 * 20);PieceWorker pw1(20382, "Xiu LiWei", 0.5, 2850);/ 使用抽象类指针,调用派生类版本的函数Employee *basePtr;basePtr = &m1; basePtr->print();basePtr = &hw1; basePtr->print();basePtr = &pw1; basePtr->print();system("pause");Employee:Employee( int nu_, const char*name_)number = nu_;name = name_;Employee:Employee()string Employee:getName() return name; long Employee:getNumber()return number; double Employee:earnings(double pay) return pay; void Employee:print() Manager:Manager(int nu_,const char*name_, double pay):Employee(nu_,name_), monthlySalary(pay)void Manager:setMonthlySalary(double pay)monthlySalary = pay;double Manager:earnings() return monthlySalary;void Manager:print() cout<< "管理者编号:" << number <<"n管理者月薪" << monthlySalary << "n"HourlyWorker:HourlyWorker(int nu_, const char*name_, double pay, int hour):Employee(nu_,name_),wage(pay),hours(hour)void HourlyWorker:setWage(double pay)wage = pay;void HourlyWorker:setHours(int hour)hours = hour;double HourlyWorker:earnings()return wage*hours;void HourlyWorker:print()cout << "计时员编号:" << number << "计时员月薪" << wage*hours << endl;PieceWorker:PieceWorker(int nu_, const char*name_, double pay, int piece):Employee(nu_,name_), wagePerPiece(pay), quantity(piece)void PieceWorker:setWage(double pay)wagePerPiece = pay;void PieceWorker:setQuantity(int piece)quantity = piece;double PieceWorker:earnings()return wagePerPiece*quantity;void PieceWorker:print()cout << "计件员编号" << number << "计件员计件薪" << wagePerPiece*quantity << endl;遇到的问题和解决方法

    注意事项

    本文(《面向对象程序设计基础R》实验指导和实验报告(2017年)(共27页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开