c++课程设计之三角形的种类和面积.docx

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

c++课程设计之三角形的种类和面积.docx

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

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三个类,它们之间的关系。

如图示:

(二)详细设计

private:

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

Pointp1,p2,p3;

Linel1,l2,l3;

详细注释:

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.h"

#include"math.h"

#include"fstream.h"

#include"ctype.h"

#include"iomanip.h"

#include"stdlib.h"

staticintP=2;

//点类

//做线段类的基类

classPoint

{

public:

Point()//点类无参构造函数

{

X=0;Y=0;

}

Point(doublex,doubley)//点类带参构造函数

{

X=x;

Y=y;

}

private:

doubleX;//点类私有数据成员

doubleY;

};

//线段类

classLine:

publicPoint//公有继承点类

{

public:

Line()//线段类无参构造函数

{

X1=0;X2=0;Y1=0;Y2=0;//给私有数据成员赋初值

}

Line(doublex1,doubley1,doublex2,doubley2):

Point(0,0),p1(x1,y1),p2(x2,y2)//线段类带参构造函数,初始化数据

{

X1=x1;X2=x2;

Y1=y1;Y2=y2;

}

doublelinelength();//求两点距离函数

private:

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

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

};

doubleLine:

:

linelength()

//定义求两点距离函数,即三角形的边长

{

returnsqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));//返回两点的距离值,即三角形边

}//长的值

//三角形类

classTriangle:

publicLine//公有继承线段类函数

{

public:

Triangle():

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

{

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

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

}

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

Line(0,0,0,0),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保存三个点的坐标及面积数据,是否继续?

[Y/N]:

";

cin>>c;

if(toupper(c)!

='Y')return;

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

:

out);

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

"<

ftriangle.close();

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

}

voidTriangle:

:

triclear()

//清空文件中的数据

{

charc;

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

[Y/N]:

";

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()

//设置数据的输出精度

{

cout<<"设置输出精度(0--15):

";

intn;

cin>>n;

cout<

P=n;

}

 

voiddisplay()

//显示菜单界面

{

cout<<"\n\n\t\t********************************************************\n";

cout<<"\t\t\t*********三角形的种类与面积*********\n\t\t********************************************************\n";

cout<<"\n\t\t\t*********************************\n";

cout<<"\t\t\t\t1--三角形的判断\n";

cout<<"\t\t\t\t2--三条边的长度\n";

cout<<"\t\t\t\t3--计算三角形的面积\n";

cout<<"\t\t\t\t4--点数据及面积数据存入\n";

cout<<"\t\t\t\t5--查看存入数据\n";

cout<<"\t\t\t\t6--数据清空\n";

cout<<"\t\t\t\t7--退出\n";

cout<<"\t\t\t*********************************\n";

cout<<"\t\t\t请选择(1-7):

";

}

intmain()

{

Trianglet;

charc;

while

(1)

{

display();

cin>>c;

system("cls");

switch(c)

{

case'1':

triin(t);setprecision();t.trijudgekind();cout<

case'2':

triin(t);setprecision();t.trilineput();cout<

case'3':

triin(t);setprecision();cout<<"这个三角形的面积为:

"<

case'4':

t.trisave();cout<

case'5':

t.tricheck();cout<

case'6':

t.triclear();cout<

case'7':

gotoend;break;

default:

cout<<"请正确输入!

\n";cout<

}

system("cls");

}

end:

cout<<"\n......Seeyou......\n\n";

return0;

}

五、程序调试与体会

在开发一个软件项目的过程中,程序调试过程占了一个绝大部分的时间,可见程序调试它的重要性。

通过程序调试,我们发现了程序中的达不到要求的地方,并且能够从中改进程序编写的内容,如结构的编排,更好的判断方法等等。

调试实例:

1、调试运行开始,显示菜单窗口:

2、输入“1”,判断三角形的类别,

(1)依次输入数据243245选择精度2回车则出现以下窗口:

说明:

这是三点能构成三角形的时

 

(2)依次输入123456选择精度2回车则出现如下窗口:

(3)依次输入112131选择精度2回车则出现如下界面:

 

(4)当依次输入121517选择精度3回车则出现如下界面:

说明:

当三个点在同一条直线上时,不能构成三角形。

(5)直角三角形

依次输入001011.732选择精度2回车则出现如下界面:

(6)等腰三角形

依次输入116634选择精度3回车则出现如下界面:

(7)等腰直角三角形

依次输入113133选择精度2回车则出现如下界面:

(8)一般锐角三角形

依次输入012451选择精度2回车则出现如下界面:

(9)一般钝角三角形

依次输入113133选择精度2回车则出现如下界面:

 

3、输入“2”,输出三角形三条边的长度

依次输入012361选择精度4回车则出现如下界面

4、输入“3”,计算三角形的面积

依次输入243245选择精度2回车则出现如下界面:

 

5、输入“4”,点数据和面积数据的存入

选择‘Y’或‘N’回车则出现如下窗口:

6、输入“5”,查看存入数据

出现如下窗口:

 

7、输入“6”,数据清空

输入‘Y’或‘N’回车则出现如下窗口:

 

8、输入“5”,查看数据是否清空

回车则出现如下窗口:

9、输入“7”,退出程序

六、总结

通过本次课程设计,让我们对C++这门学科有了进一步的认识,更熟练地掌握了类的继承与派生的应用。

在本次课程设计的过程中,我们充分领略到了团队的力量,只有团结才能发挥出一个集体的力量。

一个人的力量是有限的,即使个人能力再强,做一个大点的项目,也会有力不从心的时候。

分工协作让事情从大变小,能更好的发挥各人的长处。

而且它也增进了队友之间的了解,加深了我们之间的友谊。

此外,在这次课程设计的过程中,自己的能力也得到了一定的提高,运用自己所学知识去解决问题,这是一件令人愉快的事情。

我们决心在以后的学习中更加努力,掌握好更多的知识,应用到实际生活中,争取更大的进步。

 

课程设计任务书及成绩评定

课题名称:

完成者:

1、设计的目的与要求:

 

2、设计进度及完成情况

日期

内容

9.15

分析问题,找出所要解决问题的关键

9.17-9.18

总体设计,找出解决方案

9.19-9.20

详细设计,列出解决步骤

9.21-9.24

程序编码

9.25

程序调试,修改加以完善

9.25-9.26

书写文档

3、成绩评定:

设计成绩:

(教师填写)

指导老师:

(签字)

二00年月日

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

当前位置:首页 > PPT模板 > 动物植物

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

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