完整版c++毕业课程设计之三角形的种类和面积.docx

上传人:b****5 文档编号:7164795 上传时间:2023-01-21 格式:DOCX 页数:9 大小:17.93KB
下载 相关 举报
完整版c++毕业课程设计之三角形的种类和面积.docx_第1页
第1页 / 共9页
完整版c++毕业课程设计之三角形的种类和面积.docx_第2页
第2页 / 共9页
完整版c++毕业课程设计之三角形的种类和面积.docx_第3页
第3页 / 共9页
完整版c++毕业课程设计之三角形的种类和面积.docx_第4页
第4页 / 共9页
完整版c++毕业课程设计之三角形的种类和面积.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

完整版c++毕业课程设计之三角形的种类和面积.docx

《完整版c++毕业课程设计之三角形的种类和面积.docx》由会员分享,可在线阅读,更多相关《完整版c++毕业课程设计之三角形的种类和面积.docx(9页珍藏版)》请在冰豆网上搜索。

完整版c++毕业课程设计之三角形的种类和面积.docx

完整版c++毕业课程设计之三角形的种类和面积

《C++程序设计》课程设计报告

 

三角形的种类和面积

 

班级:

___

姓名学号:

_______________

指导教师:

___

完成时间:

2010年9月30日

 

摘要3

一、引言1

二、设计目的与任务1

1、本课程设计的目的1

2、本课程设计的任务2

三、设计方案2

四、程序清单5

五、程序调试与体会13

六、总结22

摘要

本次设计用类进行有关三角形的种类和面积的操作。

通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。

程序中使用了类的继承,提高代码的复用性。

程序主要由点类、线段类、三角形类以及主函数构成。

关键字:

类、类的继承与派生

Abstract

Thedesignofthetriangleisconcernedwiththetypeandarea.Byinheritingclassesderived,andmembersofthefunctioncallsforthetriangle,criterionthelengthofthetriangle,thetrianglearea,datafiles,checkthefiledataintoemptydatafiles,etc.Intheprocessofusingtheinheritance,enhancecodereusability.Programmainlybypoint,line,andthemainfunctionoftriangles.

Keywords:

class,theclassinheritsandderivatives

《C++程序设计语言》课程设计

——利用类的继承与派生求三角形的种类和面积

一、引言

随着人们生活水平的提高,计算机发展异常迅速。

如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

通过计算机对各类问题求解已经成为一种高效、快捷的方式。

本课程设计就是用C++研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。

二、设计目的与任务

1、本课程设计的目的

1)通过课程设计更进一步理解C++的基础知识和面向对象的思想。

2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。

初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

3)熟练掌握C++中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。

4)通过分工协作,激发团队合作精神,培养团队合作的能力。

2、本课程设计的任务

使用类实现对三角形的种类和面积求解,具体内容如下:

1)设计菜单实现功能选择;

2)输入三角形的三个顶点坐标;

3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);

4)计算并输出三角形的面积

5)对输入数据和输出结果均用文件实现

三、设计方案

(一)定义三个Point,Line,Triangle三个类,它们之间的关系。

如图示:

(二)详细设计

详细注释:

public:

Point();:

点类无参构造函数

Point(参数);:

点类带参构造函数

Private:

doubleX;:

点的x坐标

doubleY;:

点的y坐标

public:

Line();:

线段类无参构造函数

Line(参数);:

线段类带参构造函数

private:

doubleX1,X2,Y1,Y2;两个点的x坐标和y坐标

Pointp1,p2;两个点类成员

public:

Triangle();:

三角形类无参构造函数

Triangle(参数);:

三角形带参构造函数

trilineput();:

三角形边长输出函数

triarea();:

求三角形面积函数

trijudgekind();:

三角形类型判断函数

trisave();:

三角形点的数据及面积存入文件函数

tricheck();:

文件内容查看函数

triclear();:

文件内容清空函数

private:

doubleX1,X2,X3,Y1,Y2,Y3;:

三角形三点的x坐标和y坐标

Pointp1,p2,p3;:

三个点类成员

Linel1,l2,l3:

三个线段类成员

(三)其他自定义函数

voidsetprecision();:

设置输出数据精度函数

viodtriin(Triangle&t);:

初始化一个三角形对象函数

voiddisplay();:

主菜单显示函数

(四)主函数:

voiddisplay();switch(intn):

调用操作

四、程序清单

#include"iostream.sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));返回两点的距离值,即三角形边

}长的值

三角形类

classTriangle:

publicLine公有继承线段类函数

{

public:

Triangle():

l1(),l2(),l3()三角形类无参构造函数,对私有数据成员赋缺省值

{

X1=0;X2=0;X3=0;

Y1=0;Y2=0;Y3=0;

}

Triangle(doublex1,doubley1,doublex2,doubley2,doublex3,doubley3):

Line(),l1(x1,y1,x2,y2),l2(x1,y1,x3,y3),l3(x2,y2,x3,y3)

{三角形带参构造函数,对私有数据进行初始化

X1=x1;X2=x2;X3=x3;

Y1=y1;Y2=y2;Y3=y3;

}

voidtrilineput();三角形边长输出函数

doubletriarea();求三角形面积函数

voidtrijudgekind();三角形判断函数

voidtrisave();数据存入函数

voidtricheck();查看文件数据

voidtriclear();清空数据函数

private:

Linel1,l2,l3;私有线段类成员

Pointp1,p2,p3;私有点类成员

doubleX1,X2,X3,Y1,Y2,Y3;私有数据成员

};

voidTriangle:

:

trilineput()

输出三角形三条边的长度

{

cout<<"这三个点组成三边的长度分别为:

"<

:

fixed)<

<

}调用三角形类中的成员函数linelength()求边长

doubleTriangle:

:

triarea()

计算三角形的面积

{

doublea=l1.linelength();调用三角形类成员函数:

求两点距离

doubleb=l2.linelength();调用三角形类成员函数:

求两点距离

doublec=l3.linelength();调用三角形类成员函数:

求两点距离

doublep=(a+b+c)2;

returnsqrt(p*(p-a)*(p-b)*(p-c));返回面积三角形的值

}

voidTriangle:

:

trijudgekind()

三角形的判断

{

if((X1==X2&&X2==X3)||(Y1==Y2&&Y2==Y3)||((X3-X2)*(Y2-Y1)-(Y3-Y2)*(X2-X1))==0)判断三点是否在一条直线上

三点所成直线与坐标轴垂直或者不垂直于直线

cout<<"这三点在一条直线是上,不能构成三角形!

"<

else

{

doublea=l1.linelength(),b=l2.linelength(),c=l3.linelength();将三角形形三条边的长度分别赋给a,b,c

if(a==b||b==c||a==c)判断是否有两条边相等

{

if(((X2-X1)*(X3-X2)+(Y2-Y1)*(Y3-Y2))==0||((X2-X1)*(X3-X1)+(Y2-Y1)*(Y3-Y1))==0||((X3-X2)*(X3-X1)+(Y3-Y2)*(Y3-Y1))==0)判断直角

cout<<"这是一个等腰直角三角形."<

"<

:

fixed)<

<

elseif(a==b&&b==c)判断是否三条边相等

cout<<"这是一个等边三角形,"<<"边长为:

"<

:

fixed)<

<

else

{

if(b==c)判断底边的值

cout<

:

fixed)<

<<"这是一个等腰三角形."<<"腰长为:

"<

"<

elseif(a==b)

cout<

:

fixed)<

<<"这是一个等腰三角形."<<"腰长为:

"<

"<

else

cout<

:

fixed)<

<<"这是一个等腰三角形."<<"腰长为:

"<

"<

}

}

else三条边不相等

{

if(((X2-X1)*(X3-X2)+(Y2-Y1)*(Y3-Y2))==0||((X2-X1)*(X3-X1)+(Y2-Y1)*(Y3-Y1))==0||((X3-X2)*(X3-X1)+(Y3-Y2)*(Y3-Y1))==0)判断直角

cout<<"这是一个直角三角形."<

"<

:

fixed)

<

else

{

if((a*a+b*b-c*c)<0||(a*a+c*c-b*b)<0||(b*b+c*c-a*a)<0)

cout<<"这是一个一般钝角三角形,"<

"<

:

fixed)<

else

cout<<"这是一个一般锐角三角形,"<

"<

:

fixed)<

}

}

}

}

voidTriangle:

:

trisave()

定义点数据及面积数据存入

{

ofstreamftriangle;

charc;

cout<<"\n保存三个点的坐标及面积数据,是否继续?

[YN]:

";

cin>>c;

if(toupper(c)!

='Y')return;

ftriangle.open("triangledata.txt",ios:

:

out);

ftriangle<<"<"<"<"<"<

"<

ftriangle.close();

cout<<"\n保存点数据及面积数据已经完成...\n";

}

voidTriangle:

:

triclear()

清空文件中的数据

{

charc;

cout<<"\n将会清空数据,是否继续?

[YN]:

";

cin>>c;

if(toupper(c)=='Y')

{

ofstreamftriangle;

ftriangle.open("triangledata.txt");

ftriangle.clear();

ftriangle.close();

cout<<"\n数据已经清空...\n";

}

elsereturn;

}

voidTriangle:

:

tricheck()

查看文件中的数据

{

charch;

ifstreamftriangle("triangledata.txt",ios:

:

binary|ios:

:

nocreate);

if(ftriangle)

{

while(ftriangle.good())

{

ftriangle.get(ch);

if(!

ch)

break;

cout<

}

}

else

cout<<"error:

Cannotopenfile'triangledata.txt'."<

ftriangle.close();

cout<

...\n";

}

voidtriin(Triangle&t)

录入三个点的坐标对操作数据进行初始化

{

doublex1,x2,x3,y1,y2,y3;

cout<<"输入第一个点的坐标值:

";

cin>>x1>>y1;

cout<

";

cin>>x2>>y2;

cout<

";

cin>>x3>>y3;

cout<

Trianglep(x1,y1,x2,y2,x3,y3);

t=p;

}

voidsetprecision()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1