(面向对象程序设计1301)综合性实验报告 (1)

综合性、设计性实验报告

          姓名                  学号               

          姓名                  学号               

          专业    通信工程     班级 13级通信1301

          实验课程名称          面向对象程序设计    

          指导教师及职称      邵金侠 讲师           

          开课学期   20##    2015   学年    学期

          上课时间     2014 12 18           

湖南科技学院教务处编印

一、实验设计方案

二、实验报告

 

第二篇:面向对象程序设计实验报告-实验一

北京理工大学珠海学院实验报告

ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY

班级:13级计算机3班 学号:130201031037 姓名:郑永雄 指导教师:谭忠兵  

实验题目:类和对象        实验时间:20##-04-09          成绩:

一、实验内容

程序1声明一个日期类,日期的属性有年、月和日。方法有构造函数、析构函数、日期的显示。要求使用构造函数的重载,分别定义无参构造函数(使年月日的值分别为20##、1、1)和有参构造函数,并编写程序测试日期类。

程序2创建一个Employee类,该类中有字符数组,表示姓名、街道地址、邮政编码。其功能有修改姓名、显示输出数据。要求函数放在类定义中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。

程序3建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。

程序4定义一个复数类,要求定义构造函数和析构函数,并能够为用户提供复数的加法和减法运算。编写程序测试复数类。

程序5定义一个矩形类。矩形的属性是左上角的顶点、长和宽,方法有构造函数、析构函数、显示、移动等。编写程序测试矩形类。

二、问题分析(类的数据成员、成员函数等的确定,对象的创建等)

程序1首先声明一个日期类date,日期的属性(数据成员)有年year、月month和日day。成员函数是构造函数date、析构函数、日期的显示show()。在主函数中使用构造函数的重载,分别定义无参构造函数(使年月日的值分别为20##、1、1)和有参构造函数,并调用输出成员函数显示结果。

程序:2首先创建一个Employee类,该类中有数据成员字符数组,表示姓名name、街道地址stree、邮政编码num。成员函数有修改姓名setname、显示输出数据show。在主函数中用构造函数初始化每个成员,调用显示信息函数把对象中的完整信息打印出来。

程序3首先定义类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径r和高度h。用类cylinder计算圆柱的体积,并存储在一个double变量v中。在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。

程序:4首先定义一个复数类complex,并定义构造函数和析构函数,设置成员函数set()为用户提供复数的加法和减法运算。并用输出函数print输出结果。

程序:5定义一个矩形类。矩形的数据成员是左上角的顶点(x,y)、长long和宽wide,并定义构造函数、析构函数、还有成员函数print显示、move移动等。

三、程序实现(完整程序)

第一题:

#include<iostream>
using namespace std;
class Date
{
       private:
          int year,month,day;
       public:
       Date()
       {
   year=2013;
   month=1;
   day=1;
       }
       Date(int y,int m,int d)
       {
   year=y;
   month=m;
   day=d;
       }

    ~Date()
    {
     cout<<"析构函数"<<endl;
    }
       void show()
      {
          cout<<"显示日期"<<year<<"."<<month<<"."<<day<<endl;
 
       }
};

int main()
{
       Date a;
    a.show();
       Date b(2014,4,10);
    b.show();
       getchar();
       getchar();
       return 0;
}

 第二题

#include<iostream>
#include<cmath>
using namespace std;
class Employee{
  private:
     char *name,*stree;
  int post;
  public:
   Employee(char *x,char *y,int z)
   {
 
    strcpy(name,x);
    strcpy(stree,y);
    post=z;
      }
     void setname(char *a)
  {
   strcpy(name,a);
  }
     void Print_employee()
  {
   cout<<name[10]<<" "<<stree[50]<<" "<<post<<endl;
  }
};

int main()
{
Employee m("ben","zhbit",519000);
 char *b;
 cin>>b;
 m.setname(b);
 m.Print_employee();
 
 return 0;
}

 第三题:

#include<iostream>
#include<cmath>
using namespace std;
class cylinder
{
       private:
          double radius,high;
       public:
       cylinder(double h,double r)
       {
       radius=r;
        high=h;
       }
 double jisuan()
 {
  double v,pi=3.14159262;
  v=pi*radius*radius*high;
   return v;
 }
 void vol(double m)
 {
  cout<<"体积="<<m<<endl;
 }
};
int main()
{
 cylinder m(2,2);
 double n;
 n=m.jisuan();
 m.vol(n);
 getchar();
 getchar();
 return 0;
}

 第四题:

#include<iostream>
#include<cmath>
using namespace std;
class Complex
{
       private:
          double real,imag;
       public:
       Complex(double r,double i)
       {
       real=r;
        imag=i;
       }
    ~Complex()
    {
     cout<<"析构函数"<<endl;
    }
       void jisuan(double x,double y)
       {
     real=real+x;
     imag=imag+y;
        }
  
    void show()
      {
          cout<<"复数:"<<real<<"+"<<imag<<"i"<<endl;
       }
};

int main()
{
       Complex m(5,7);
    m.jisuan(2,2);
    m.show();
       getchar();
       getchar();
       return 0;
}

第五题:

#include<iostream>
#include<cmath>
using namespace std;
class Rectangle
{
       private:
          double x,y,lond,wide;
       public:
       Rectangle(double a,double b,double c,double d)
       {
     x=a;
     y=b;
           lond=c;
     wide=d;
       }
    ~Rectangle()
    {
     cout<<"析构函数"<<endl;
    }
       void jisuan(double a,double b)
       {
     x=a+x;
     y=b+y;
        }
  
    void show()
      {
          cout<<"左上角坐标"<<"("<<x<<","<<y<<")"<<endl;
    cout<<"右上角坐标"<<"("<<x+lond<<","<<y<<")"<<endl;
    cout<<"左下角坐标"<<"("<<x<<","<<y+wide<<")"<<endl;
    cout<<"右下角坐标"<<"("<<x+lond<<","<<y+wide<<")"<<endl;
       }
};

int main()
{
       Rectangle n(0,4,5,3);
    cout<<"显示矩形:"<<endl;
    n.show();
    cout<<"移动矩形"<<endl;
    n.jisuan(2,2);
    n.show();
       getchar();
       getchar();
       return 0;
}

四、调试与运行

程序1

程序2

程序3

程序4

程序5

五、实验总结:

    1、学到了构造函数的构建,还有析构函数,成员函数等。通过对象调用成员函数实现某些功能。还有学会了运用string函数,简化了程序。

2、遇到了什么问题,如何解决的。

在运用new分配空间时,发现自己对字符串的知识忘记了很多。后来发现后面学习的string类很好用,可以简化程序。总的来说第一次试验都比较简单,做的比较顺利。

3、实验中需要特别注意什么,有哪些细节和技巧。

做实验前要熟悉试验运用的知识,写程序前最好先构思好再写。构造函数要注意没有返回类型的,可以有形参,而析构函数是没有参数的。

相关推荐