c++计算三角形面积课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《C++程序设计》课程设计报告三角形的种类和面积班级:10级2班___姓名:沈茂良_____学号:101102025_____________指导教师:唐远翔___完成时间:2011年11月30日2目录摘要................................................一、引言.............................................二、设计目的与任务...................................1、本课程设计的目的.............................2、本课程设计的任务.............................三、设计方案.........................................四、程序清单.........................................五、程序调试与体会...................................六、总结.............................................3摘要本次设计用类进行有关三角形的种类和面积的操作。通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。程序中使用了类的继承,提高代码的复用性。程序主要由点类、线段类、三角形类以及主函数构成。1《C++程序设计语言》课程设计——利用类的继承与派生求三角形的种类和面积一、引言随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类问题求解已经成为一种高效、快捷的方式。本课程设计就是用C++研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。二、设计目的与任务1、本课程设计的目的1)通过课程设计更进一步理解C++的基础知识和面向对象的思想。2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。3)熟练掌握C++中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。4)通过分工协作,激发团队合作精神,培养团队合作的能力。22、本课程设计的任务使用类实现对三角形的种类和面积求解,具体内容如下:1)设计菜单实现功能选择;2)输入三角形的三个顶点坐标;3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);4)计算并输出三角形的面积5)对输入数据和输出结果均用文件实现三、设计方案(一)定义三个Point,Line,Triangle三个类,它们之间的关系。如图示:(二)详细设计Point类Line类Triangle类继承继承派生派生3详细注释:public:Point类:作为基类Line类:公有继承Point类Triangle类:公有继承Line类public:Point();Point(参数);public:Line();Line(参数);linelength();public:Triangle();Triangle(参数);trilineput();triarea();trijudgekind();trisave();tricheck();triclear();Private:doubleX;doubleY;private:doublePointp1,p2;private:doubleX1,X2,X3,Y1,Y2,Y3;Pointp1,p2,p3;Linel1,l2,l3;4Point();:点类无参构造函数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:5doubleX1,X2,X3,Y1,Y2,Y3;:三角形三点的x坐标和y坐标Pointp1,p2,p3;:三个点类成员Linel1,l2,l3:三个线段类成员(三)其他自定义函数voidsetprecision();:设置输出数据精度函数viodtriin(Triangle&t);:初始化一个三角形对象函数voiddisplay();:主菜单显示函数(四)主函数:voiddisplay();switch(intn):调用操作四、程序清单#includeiostream.h#includemath.h#includefstream.h#includectype.h#includeiomanip.h#includestdlib.hstaticintP=2;//点类//做线段类的基类classPoint{public:Point()//点类无参构造函数{X=0;Y=0;6}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));//返回两点的距离值,即三角形边}//长的值7//三角形类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这三个点组成三边的长度分别为:setiosflags(ios::fixed)setprecision(P)//设定数据输出精度l1.linelength()\tl2.linelength()\tl3.linelength()endl;}//调用三角形类中的成员函数linelength()求边长doubleTriangle::triarea()//计算三角形的面积8{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这三点在一条直线是上,不能构成三角形!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)//判断直角cout这是一个等腰直角三角形.endl边长分别为:setiosflags(ios::fixed)setprecision(P)//设定数据输出精度a\tb\tcendl;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)9coutsetiosflags(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::fixed)s

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功