c++课程设计之三角形的种类和面积_第1页
c++课程设计之三角形的种类和面积_第2页
c++课程设计之三角形的种类和面积_第3页
c++课程设计之三角形的种类和面积_第4页
c++课程设计之三角形的种类和面积_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+C+ 序设计课程设计报告三角形的种类和面积班级:姓名学号:指导教师:完成时间:2 成 0 年 9 月 30 日摘要 3 3一、引言 1 1二、设计目的与任务 1 11 1、本课程设计的目的2 2、本课程设计的任务三、设计方案四、程序清单五、程序调试与体会六、总结13132222摘要本次设计用类进行有关三角形的种类和面积的操作。 通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。程序中使用了类的继承,提高代码的复用性。程序主要由点类、线段类、三角形类以及主函数构成。关键字:类、类的继承与派生Abst

2、ractThedesignofthetriangleisconcernedwiththetypeandarea.Byinheritingclassesderived,andmembersofthefunctioncallsforthetriangle,criterionthelengthofthetriangle,thetrianglearea,datafiles,checkthefiledataintoemptydatafiles,etc.Intheprocessofusingtheinheritance,enhancecodereusability.Programmainlybypoint

3、,line,andthemainfunctionoftriangles.Keywords:class,theclassinheritsandderivativesC C+ +逐序设计语言课程设计利用类的继承与派生求三角形的种类和面积一、引言随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类问题求解已经成为一种高效、快捷的方式。本课程设计就是用 C+研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。二、设计目的与任务1

4、 1、本课程设计的目的1)通过课程设计更进一步理解 C+的基础知识和面向对象的思想。2) 训练用系统的观点和软件开发一般规范进行软件开发, 并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。3)熟练掌握 C+中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。4)通过分工协作,激发团队合作精神,培养团队合作的能力。2 2、本课程设计的任务使用类实现对三角形的种类和面积求解,具体内容如下:1)设计菜单实现功能选择;2)输入三角形的三个顶点坐标;3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构

5、成三角形);4)计算并输出三角形的面积5)对输入数据和输出结果均用文件实现三、设计方案(一)定义三个 Point,Line,TrianglePoint,Line,Triangle 三个类,它们之间的关系。如图示:继承Triangle 类继承Line 类派生Point 类派生(二)详细设计public:Point();Point(参数);Private:doubleX;doubleY;public:Line();Line(参数);private:doublePointp1,p2;public:Triangle();Triangle(参数);trilineput();triarea();triju

6、dgekind();trisave();tricheck();triclear();private:doubleX1,X2,X3,Y1,Y2,Y3;Pointp1,p2,p3;Linel1,l2,l3;Point();:点类无参构造函数Point(参数);:点类带参构造函数Private:详细注释:public:doubleX;:点的 x 坐标doubleY;:点的 y 坐标public:Line();:线段类无参构造函数Line(参数);:线段类带参构造函数private:doubleX1,X2,Y1,Y2;两个点的 x 坐标和 y 坐标Pointp1,p2;两个点类成员public:Tri

7、angle();:三角形类无参构造函数Triangle(参数);:三角形带参构造函数trilineput();:三角形边长输出函数triarea();:求三角形面积函数trijudgekind();:三角形类型判断函数trisave();:三角形点的数据及面积存入文件函数tricheck();:文件内容查看函数triclear();:文件内容清空函数private:doubleX1,X2,X3,Y1,Y2,Y3;:三角形三点的 x 坐标和 y 坐标Pointp1,p2,p3;:三个点类成员Line11,12,13:三个线段类成员(三)其他自定义函数voidsetprecision();:设置输

8、出数据精度函数viodtriin(Triangle&t);:初始化一个三角形对象函数voiddisplay。;:主菜单显示函数(四)主函数:voiddisplayvoiddisplay()();switch(intn)switch(intn): :调用操作四、程序清单#includeiostream.h#includemath.h#includefstream.h#includectype.h#includeiomanip.h#includestdlib.hstaticintP=2;/点类/做线段类的基类classPointpublic:Point()/点类无参构造函数X=0;Y=0;

9、)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()/

10、求两点距离函数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

11、=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(

12、);/查看文件数据voidtriclear();清空数据函数private:Linel1,l2,l3;私有线段类成员Pointp1,p2,p3;佩有点类成员doubleX1,X2,X3,Y1,Y2,Y3;/私有数据成员;voidTriangle:trilineput()/输出三角形三条边的长度cout这三个点组成三边的长度分别为:setiosflags(ios:fixed)setprecision(P)/设定数据输出精度l1.linelength()tl2.linelength()tl3.linelength()endl;/调用三角形类中的成员函数 linelength()求边长doubleT

13、riangle: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-

14、Y2)*(X2-X1)=0)/判断三点是否在一条直线上/三点所成直线与坐标轴垂直或者不垂直于直线cout这三点在一条直线是上,不能构成三角形!endl;else(doublea=l1.linelength(),b=l2.linelength(),c=l3.linelength();/将三角形形三条边的长度分别赋给 a,b,cif(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)/判断直角c

15、out 这 是 一 个 等 腰 直 角 三 角 形 .endl 边 长 分 别 为 :setiosflags(ios:fixed)setprecision(P)/设定数据输出精度atbtcendl;elseif(a=b&b=c)/判断是否三条边相等cout这是一个等边三角形,边长为:setiosflags(ios:fixed)setprecision(P)/设定数据输出精度a.endl;else(if(b=c)/判断底边的值coutsetiosflags(ios:fixed)setprecision(P)这是一个等腰三角形.腰长为:b,底边长为:a.endl;elseif(a=b)co

16、utsetiosflags(ios:fixed)setprecision(P)这是一个等腰三角形.腰长为:b,底边长为:c,endl;elsecoutsetiosflags(ios:fixed)setprecision(P)这是一个等腰三角形.腰长为:a,底边长为:b.;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这是一个直角三角形.endl边长分别为:setiosflags(ios:fixe

17、d)setprecision(P)atbtcendl;elseif(a*a+b*b-c*c)0|(a*a+c*c-b*b)0|(b*b+c*c-a*a)0)cout这是一个一般钝角三角形,endl边长分别为:setiosflags(ios:fixed)setprecision(P)atbtcendl;elsecout这是一个一般锐角三角形,endl边长分别为:setiosflags(ios:fixed)setprecision(P)atbtcendl;voidTriangle:trisave()/定义点数据及面积数据存入ofstreamftriangle;charc;coutc;if(toup

18、per(c)!=Y)return;ftriangle.open(triangledata.txt,ios:out);ftriangleX1JY1endlX2JY2endlX3,Y3endl三点形成三角形的面积是:triarea()endl;ftriangle.close();coutn 保存点数据及面积数据已经完成.n;)voidTriangle:triclear()/清空文件中的数据(charc;coutc;if(toupper(c)=Y)(ofstreamftriangle;ftriangle.open(triangledata.txt);ftriangle.clear();ftriang

19、le.close();coutn 数据已经清空.n;)elsereturn;)voidTriangle:tricheck()/查看文件中的数据(charch;ifstreamftriangle(triangledata.txt,ios 二 binary|ios 二 nocreate);if(ftriangle)(while(ftriangle.good()(ftriangle.get(ch);if(!ch)break;coutch;)elsecouterror:Cannotopenfiletriangledata.txt.endl;ftriangle.close();coutendl文件数据读

20、取完毕!.n;voidtriin(Triangle&t)/录入三个点的坐标对操作数据进行初始化doublex1,x2,x3,y1,y2,y3;coutx1y1;coutendlx2y2;coutendlx3y3;coutendl;Trianglep(x1,y1,x2,y2,x3,y3);t=p;voidsetprecision()/设置数据的输出精度coutn;coutendl;P=n;voiddisplay()/显示菜单界面n;n;coutnttt*n;couttttt1-三角形的判断n;couttttt2-三条边的长度n;couttttt3-计算三角形的面积n;couttttt4-

21、点数据及面积数据存入n;couttttt5-查看存入数据n;couttttt6-数据清空n;coutc;system(cls);switch(c)(casei:triin(t);setprecision();t.trijudgekind();coutendl;system(pause);break;case2:triin(t);setprecision();t.trilineput();coutendl;system(pause);break;case3:triin(t);setprecision();cout这个三角形的面积为t.triarea()endlendl;system(pause)

22、;break;case4:t.trisave();coutendl;system(pause);break;case5:t.tricheck();coutendl;system(pause);break;*三角形的种类与面积*ntt*couttttcoutttt)case6:t.triclear();coutendl;system(pause);break;case7:gotoend;break;default:cout”请正确输入!n;coutendl;system(pause);break;)system(cls);)end:coutnSeeyounn;return0;)五、程序调试与体会

23、在开发一个软件项目的过程中,程序调试过程占了一个绝大部分的时间,可见程序调试它的重要性。通过程序调试,我们发现了程序中的达不到要求的地方,并且能够从中改进程序编写的内容,如结构的编排,更好的判断方法等等。调试实例:1、调试运行开始,显示菜单窗口:“D:VC6,口完整绿色版口完整绿色版 TCOIIWEDEVg&tB-三角形的种类与面积M-HM-H入存I面数一断魂浸判长形面数一的的角父空一工二一角条曩*B二二三讨点查数退-二-J J456745672、输入“1;判断三角形的类别,(1)依次输入数据 243245 选择精度 2 回车则出现以下窗口:说明:这是三点能构成三角形的时(2)依次卒&

24、amp;入 123456 选择精度 2 回车则出现如下窗口:二回国输入第一个点的坐标值*i输入第二个点的坐标值:3输入第三个点的坐标值:设置输出精度小一工5:2这三点在一条直线是上,不能构成三角形!请按任意键继续.依次卒&入 112131 选择精度 2 回车则出现如下界面:输入第一个点的坐标值工i4输入第二个点的坐标值,21输入笫三个点的坐标值.31设置输出精度0工”:2这三点在一条直线是上,不能构成三角形!请按任意键继续.当依次输入 121517 选择精度 3 回车则出现如下界面:说明:当三个点在同一条直线上时,不能构成三角形(5)直角三角形依次卒&入 001011,732

25、选择精度 2 回车则出现如下界面:(6)等腰三角形依次卒&入 116634 选择精度 3 回车则出现如下界面:(7)等腰直角三角形依次卒&入 113133 选择精度 2 回车则出现如下界面:(8) 一般锐角三角形依次卒&入 012451 选择精度 2 回车则出现如下界面:CJBACWjnehngjfjjfjfjfjfjexe输入第一个点的坐标值I。1输入第二个点的坐标值:24输入第三个点的坐标值:51设置输出精度力-15;2这是一个一般锐角三角形.边长分别为:3.615.004.24请按任意键继续.(9) 一般钝角三角形依次卒&入 113133 选择精度 2 回车则出现如下界面:输入第一个点的坐标值:11输入第二个点的坐标值31输入第三个点的坐标值:33设置输出精度一鸣:2总是一个臂腰直角三角形*边长分别为12.e2.832.00请按任意键继续.依次卒&入 012361 选择精度 4 回车则出现如下界面腌入第一行点的坐标值:D1输入第二个点的坐标值:23输入第三个点的坐标值二61设置输出精度4一in:4这三个点组成三边的长度分别为2用曲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论