面向对象程序设计实验报告

时间:2024.4.14

综 合 实 验 报 告

面向对象程序设计

专业名称:               

    级:___                     

    名:                    

    号:                          

信息科学与工程学院

二零一三年七月

 

第一题······················ 1

1.1题目概述·················· 1

1.2设计思路·················· 1

1.3设计说明与调试分析·············· 2

1.4编码实现·················· 2

1.5程序运行结果················ 4

第二题······················ 4

2.1题目概述·················· 4

2.2设计思路·················· 4

2.3设计说明与调试分析·············· 4

2.4编码实现·················· 5

2.5程序运行结果················ 6

设计心得:···················· 7

参考文献:···················· 7


第一题   

1.1题目概述

用抽象类设计计算二维平面图形面积的程序,在基类TDshape中设计纯虚函数area()和printName(),area()用于计算机几何图形的面积,printName()用于打印输出几何图形的类名,如Triangle类的对象就打印输出“Triangle”。每个具体形状的类则从抽象类TDshape派生,各自需要定义其独有的数据成员和成员函数,并且定义area()和printName()的具体实现代码,如图5-9所示。


要求编写以TDshape为接口的函数,借以访问具体类如Triangle和Rectangle类的成员函数area(),printName()。

1.2设计思路

用虚构函数写出基类TDshape,之后创建派生类Trangle、Rectangle,每个派生类都定义double width,height,之后定义area(),printName,每个里面都有cout函数,同时每个派生类都有set和get函数,分别用来给width,height赋值和返回width,height的数值。

1.3设计说明与调试分析

见代码。

1.4编码实现

#include<iostream>

using namespace std;

class TDshape

{

public:

    virtual void area()=0;

    virtual void printName()=0;

};

class Triangle:public TDshape{  //公有继承TDshape

    private:

        double width,height;    //定义私有成员width,height

    public:

    void  setWidth(double w)

    {

        width=w;                //赋值给width

    }

    void  setHeight(double h)

    {

        height=h;               //赋值给height

    }

    double getWidth()

    {

        return width;           //返回width的值

    }

    double getHeight()

    {

        return height;          //返回height的值

    }

    void printName()

{

    cout<<"该图形是三角形。"<<endl;  //输出图形的个名字

}

void area(){

cout<<"面积是"<<width*height*0.5<<endl;  //计算面积并且输出

}

};

class Rectangle:public TDshape{     //公有继承TDshape

     private:

        double width,height;         //定义私有成员width,height

    public:

    void  setWidth(double w)

    {

        width=w;                     //赋值给width

    }

    void  setHeight(double h)

    {

        height=h;                   //赋值给height

    }

    double getWidth()

    {

        return width;                 //返回width的值

    }

    double getHeight()

    {

        return height;                 //返回height的值

    }

    void printName()

{

    cout<<"该图形是矩形。"<<endl;      //输出图形名称

}

void area(){

cout<<"面积是"<<width*height<<endl;    //计算面积并且输出

}

};

int main()

{

    Rectangle r;

    Triangle t;

    r.setHeight(70);                   //调用Rectangle中的setheight 给height赋值

    r.setWidth(60);                    //调用Rectangle中的setwidth 给width赋值

    r.printName();                    //调用Rectangle中的printName 打印出图形名称

    r.area();                         //打印面积。

    t.setHeight(70);

    t.setWidth(60);

    t.printName();

    t.area();

}

1.5程序运行结果

第二题

2.1题目概述

假设有一个工人类,形式如下:

class Worker{

  char name[10];

int age;

double salary;

public:

Worker(…)

void SetData(char *Name,int Age,double wage)

void Display()

……

}

   其中的name表示姓名、age表示年龄、salary表示薪金,构造函数worker()实现各数据成员的初始化,SetData()成员函数用于重置各数据成员的值,Display()用于显示输出各数据成员的值。

完成该类的设计,并用STL中的链表list(或向量vector、堆栈stack、队列queue等数据结构)管理该类的对象,要求至少建立两个链表、每个链表中至少存入Worker类的3个对象,通过迭代器访问输出各节点对象的数据成员,并利用链表的merge算法将两个链表合并在一起,然后输出合并后的链表节点对象。

2.2设计思路

2.3设计说明与调试分析

见代码。

2.4编码实现

#include <iostream>

#include<string.h>

#include <list>

#include <string>

using namespace std;

class Worker     //定义Worker类

{

char name[10];   //姓名

    int age;          //年龄

    double salary;     //薪水

    public:

              Worker()

              {}

      Worker(char* n,int a,double s)  //构造函数

      {

          strcpy(name,n);     //把n中的字符复制给name

          age=a;       //a中的数值赋值给age

          salary=s;     //s中的数值赋值给salary

      }

      void SetData(char *Name,int Age,double wage )  //用于重置的函数

      {

          strcpy(name,Name);    //把Name中的字符复制给name

          age=Age;              //把Age中的数值赋值给age

          salary=wage;       //把wage中的数赋值给salary

      }

      void Display()          //用于输出的函数

      {

          cout<<"姓名:"<<name<<endl;

          cout<<"年龄:"<<age<<endl;

          cout<<"工资:"<<salary<<endl;

      }

};

   int main()

   {

      list<Worker*>p,q;

      list<Worker*>::iterator i;

      Worker a("杨",50,3000);

      Worker b("孙",44,3500);

         Worker c;

      c.SetData("倪",41,5000);

      p.push_back(&a);

      q.push_back(&b);

      for(i=p.begin();i!=p.end();i++)

      {

          (*i)->Display();

      }

      for(i=q.begin();i!=q.end();i++)

      {

          (*i)->Display();

      }

         while(!p.empty())

         {

                p.pop_front();

         }

        cout<<"重置之后的结果 :"<<endl;

        p.push_back(&c);

     for(i=p.begin();i!=p.end();i++)

      {

          (*i)->Display();

      }

     p.merge(q);

     cout<<"合并之后的结果:"<<endl;

     for(i=p.begin();i!=p.end();i++)

         (*i)->Display();

   }

2.5程序运行结果

设计心得:程序设计是一门考验耐心和细心的学科,需要很强的逻辑思维能力,尤其是指针部分,逻辑思维能力尤其重要。程序的编写是一个枯燥的过程,需要耐心和兴趣来支持。

参考文献:《C++面向对象程序设计(第二版)》 杜茂康等 电子工业出版社 2011.7


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


《面向对象程序设计》上机实验报告

  1  次上机

 

班  级:  131112                    

学  号:  13111151                  

姓  名:  王悦                  

更多相关推荐:
面向对象程序设计实验报告

面向对象程序设计之课程设计上海电力学院课题名称院系专业学号姓名时间地点指导教师课程设计报告面向对象程序设计20xx20xx学年第一学期模仿ATM机存取款管理系统设计电子与信息工程学院通信工程20xx年1月12日...

面向对象程序设计实验报告

面向对象程序设计实验报告姓名学号班级专业学院实验三函数的应用一实验目的掌握函数的定义和调用方法练习重载函数使用练习函数模板的使用练习使用系统函数二实验步骤编写函数floatConvertfloatTempFer...

面向对象程序设计实验报告

题目11问题描述建立一个二维坐标系的类TwoCoor用xy表示坐标值实现两坐标点的加减运算计算两坐标点间的距离并重载输入输出运算符使之能够直接输入输出坐标点的坐标值2实现代码includeltiostreamg...

面向对象程序设计实验报告一

课程实验报告课程名称面向对象程序设计实验名称面向过程的整型栈编程院系计算机科学与技术专业班级学号姓名指导教师年日面向对象程序设计实验报告一需求分析1题目要求整型栈是一种先进后出的存储结构对其进行的操作通常栈括判...

面向对象程序设计实验报告

教案20xx20xx学年第一学期学院系室计算机科学系课程名称面向对象程序设计专业年级班级12计算机嵌入式系统网络和信息安全班主讲教师蒋琳琼梧州学院面向对象程序设计教案课时分配理论课39学时实验课12学时共51学...

面向对象程序设计实验报告-实验一

北京理工大学珠海学院实验报告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班级13级计算机3班学号13020xx31037姓名郑永雄指导教师谭忠兵实验题目类和对象实验时间...

《Java程序设计》上机实验报告 实验二 初步的面向对象的程序设计练习

信息科学与工程学院Java程序设计上机实验报告专业班级姓名学号实验时间指导教师成绩注实验记录及个人小结部分不够可另附页或在背面续写第页注实验记录及个人小结部分不够可另附页或在背面续写第页注实验记录及个人小结部分...

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

综合性设计性实验报告姓名姓名专业班级实验课程名称指导教师及职称开课学期学年学期上课时间湖南科技学院教务处编印

《面向对象程序设计Java》实验报告封面及格式要求20xx0315

面向对象程序设计Java实验报告20xx20xx学年第2学期班级学号姓名指导教师序号班级学号姓名序号班级学号姓名序号班级学号姓名

面向对象程序设计实验报告05

课程实验报告课程名称面向对象程序设计实验名称面向对象的整型队列编程院系计算机科学与技术专业班级学号姓名指导教师月日面向对象程序设计实验报告一需求分析1题目要求整型队列是一种先进后出的存储结构对其进行的操作通常包...

面向对象程序设计实验报告五

课程实验报告课程名称面向对象程序设计实验名称面向对象的整型队列编程院系计算机科学与技术专业班级学号姓名指导教师月日面向对象程序设计实验报告一需求分析1题目要求整型队列是一种先进后出的存储结构对其进行的操作通常包...

C++面向对象程序设计---通讯录课程设计报告8

C面向对象程序设计课程设计报告设计题目学生学号学生姓名专业班级学生成绩指导教师计算机科学与信息工程学院201一设计任务分析实现以下功能1通讯录编辑添加删除2按不同的项进行查找3对已存在的通讯录按不同的项排序4将...

面向对象程序设计实验报告(23篇)