C项目开发分块标准规定样式.docx
《C项目开发分块标准规定样式.docx》由会员分享,可在线阅读,更多相关《C项目开发分块标准规定样式.docx(11页珍藏版)》请在冰豆网上搜索。
C项目开发分块标准规定样式
学生学号
0121508900213
实验课成绩
武汉理工大学
学生实验报告书
实验课程名称高级语言程序设计
开课学院计算机科学与技术学院
指导老师姓名段鹏飞
学生姓名吕世豪
学生专业班级软件zy1501
2016—2017学年第2学期
实验课程名称:
高级语言程序设计
实验项目名称
类的设计与对象使用
实验成绩
实验者
吕世豪
专业班级
软件zy1501
组别
同组者
实验日期
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
1.下面的程序在编译时会出错,请修改程序,使之能正确运行。
然后得到的正确程序分成3个文件。
文件MyClass.h包括类的定义,文件MyClass.cpp包括类成员函数的实现,文件App.cpp包括类的使用。
调试、运行该程序,使之获得正确结果。
2.已知两个矩形的长和宽,用面向对象的概念编程求它们的面积和周长。
假设矩形1的长和宽分别为20和50;矩形2的长和宽分别为3.6和4.5。
(先定义矩形类再实例化两个对象)
3.
(1)为IntArray加上析构函数并编译运行程序,体会类的构造函数和析构函数的作用。
(2)程序中,类IntArray的三个构造函数都是以相似的方式来实现的。
一般来说,当两个或多个函数重复相同的代码时,可将这部分代码抽取出来,形成独立的函数,以便共享。
以后如果需要改变这些实现,则只需改变一次,而且这种实现的共享本质更容易为大家所理解。
怎样把构造函数中的代码抽取出来形成独立的共享函数呢?
请给出一种可能的实现。
按你给出的实现方法修改程序并重新编译运行。
4.试定义一个三角形Triangle类,在Triangle类中以点myPoint类的3个对象p1、p2、p3作为数据成员,表示三角形的三个顶点。
Triangle类具有计算三角形的周长和面积的功能。
请编写程序上机调试并运行。
二、实验基本原理与设计(流程图与程序)
1.
//MyClass.h
classMyClass
{
public:
MyClass(){x=0;y=0;}
MyClass(inta,intb);
Print();
private:
intx,y;
};
//MyClass.cpp
#include"MyClass.h"
#include
MyClass:
:
MyClass(inta,intb)
{
x=a;
y=b;
}
MyClass:
:
Print()
{
std:
:
cout<<"x="<:
endl;
std:
:
cout<<"y="<:
endl;
}
//main.cpp
#include
#include"MyClass.cpp"
usingnamespacestd;
intmain()
{
MyClassobj1(1,3),obj2(5,8);
obj1.Print();
obj2.Print();
return0;
}
2.
//Triangle.h
classTrangle
{
private:
intx,y;
public:
Trangle();
Trangle(inta,intb);
area();
length();
};
//Triangle.cpp
#include"Trangle.h"
#include
Trangle:
:
Trangle()
{
x=0;
y=0;
}
Trangle:
:
Trangle(inta,intb)
{
x=a;
y=b;
}
Trangle:
:
area()
{
returnx*y;
}
Trangle:
:
length()
{
return2*(x+y);
}
//main.cpp
#include
#include"Trangle.cpp"
intmain(intargc,char**argv){
TrangleA(20,50);
TrangleB(3.6,4.5);
std:
:
cout<<"A的面积:
"<"<:
endl;
std:
:
cout<<"B的面积:
"<"<:
endl;
return0;
}
3.
#include
#include
usingnamespacestd;
classIntArray{
public:
IntArray(intsz);//数组初始化为sz个元素,初值全为0
IntArray(int*array,intsz);//用静态数组array的前sz个元素初始化新数组
IntArray(constIntArray&rhs);//拷贝构造函数
~IntArray()
{
cout<<"析构函数被调用"<}
InitIa(int*a,intsz);
voidprintAll();
private:
int*ia;
intsize;
};
IntArray:
:
InitIa(int*a,intsz)
{
size=sz;
ia=newint[sz];
if(NULL==a)memset(ia,0,sizeof(int)*sz);
else
{
for(inti=0;iia[i]=a[i];
}
}
IntArray:
:
IntArray(intsz){
InitIa(NULL,sz);
}
IntArray:
:
IntArray(int*array,intsz){
InitIa(array,sz);
}
IntArray:
:
IntArray(constIntArray&rhs)
{
InitIa(rhs.ia,rhs.size);
}
voidIntArray:
:
printAll()
{
for(intix=0;ixcout<cout<}
intmain()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
IntArrayarr1(10),arr2(a,5),arr3(arr2);
arr1.printAll();
arr2.printAll();
arr3.printAll();
return0;
}
4.
#include
#include
classmyPoint{
public:
myPoint(doublex0=0.0,doubley0=0.0):
x(x0),y(y0){}
myPoint(myPoint&np):
x(np.x),y(np.y){}
doubleGetX(){returnx;}
doubleGetY(){returny;}
voidSetX(doublex0){x=x0;}
voidSetY(doubley0){x=y0;}
voidSetPoint(doublex0,doubley0){x=x0;y=y0;}
voidSetPoint(myPoint&np){x=np.x;y=np.y;}
doubleGetLength(myPointp){
returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
}
voidPrintit(){std:
:
cout<<"("<private:
doublex,y;
};
classTriangle{
public:
doubleGetLength(myPointp1,myPointp2,myPointp3)
{
return(p1.GetLength(p2)+p2.GetLength(p3)+p3.GetLength(p1));
}
doubleGetArea(myPointp1,myPointp2,myPointp3)
{
doublea,b,c,s,area;
a=p1.GetLength(p2);
b=p2.GetLength(p3);
c=p3.GetLength(p1);
s=0.5*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
returnarea;
}
};
intmain(intargc,char**argv){
myPointa(0,0),b(3,0),c(0,4);
Trianglet;
std:
:
cout<<"area="<:
endl;
std:
:
cout<<"length="<:
endl;
return0;
}
三、主要仪器设备及耗材
1.PC机
2.开发环境(比如:
VC,Eclipse)
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
实验一:
只需要稍微修改一点程序。
实验二:
写出来的程序没有错误就可以了。
实验三:
了解构造函数还有析构函数。
实验四:
通过类的定义,函数的运用,试调过后,就可以运行。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
1.结果描述
实验一:
如图为实验输出。
实验二:
如图
实验三:
如图
实验四:
如图
2.实验现象分析
实验现象如上面图片所示。
实验能够正确的运行,并且可以得到自己所想要的结果。
3.影响因素讨论
我认为影响的只是数据不同可能会得出不同的结果,还有就是可能有些地方函数调用有错误,从而引起实验的错误,或者开发环境有问题。
4.算法分析(包括时间和空间)
实验一:
简单的实验,只要把已经给出的代码放到不同的头文件就可以了。
实验二:
求矩形的面积和周长,直接可以用简单的数学思维想就可以了,周长等于:
2(a+b)面积等于a·b。
实验三:
主要是要了解构造函数和析构函数的作用,只要了解了,函数很简单。
实验四:
周长和面积的算法如上图所示,主要算法,重要知道在坐标上知道三个顶点如何求三角形的面积和周长就可以。
5.结论
了解了项目工程中分文件编程和构造函数和析构函数的使用
以及初步了解了面相对象程序设计的基本
掌握了静态成员和常成员的使用。
三、实验小结、建议及体会
熟悉了C++开发环境。
掌握了多文件结构程序项目的建立过程。
初步掌握了面向对象程序的多文件结构项目的开发运行步骤。
掌握了类的定义和使用以及类对象的声明和使用方法,理解具有不同访问属性的成员的访问方式。
掌握了构造函数和析构函数的作用和编写方法。
了解并掌握了静态成员、常成员的使用。