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

上传人:hao****021 文档编号:137899803 上传时间:2022-08-19 格式:DOC 页数:25 大小:479.01KB
收藏 版权申诉 举报 下载
c++计算三角形面积课程设计_第1页
第1页 / 共25页
c++计算三角形面积课程设计_第2页
第2页 / 共25页
c++计算三角形面积课程设计_第3页
第3页 / 共25页
资源描述:

《c++计算三角形面积课程设计》由会员分享,可在线阅读,更多相关《c++计算三角形面积课程设计(25页珍藏版)》请在装配图网上搜索。

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

2、主函数构成。C+程序设计语言课程设计 利用类的继承与派生求三角形的种类和面积一、引言随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类问题求解已经成为一种高效、快捷的方式。本课程设计就是用C+研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。二、设计目的与任务1、本课程设计的目的1)通过课程设计更进一步理解C+的基础知识和面向对象的思想。2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态

3、度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。3)熟练掌握C+中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。4)通过分工协作,激发团队合作精神,培养团队合作的能力。2、本课程设计的任务使用类实现对三角形的种类和面积求解,具体内容如下:1)设计菜单实现功能选择; 2)输入三角形的三个顶点坐标;3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);4)计算并输出三角形的面积 5)对输入数据和输出结果均用文件实现三、设计方案(一)定义三个Point,Line,Triangle三个类,它们之间的关系。如图示:

4、Point类Line类Triangle类继承继承派生派生(二)详细设计private:double X1,X2,X3,Y1,Y2,Y3;Point p1,p2,p3; Line l1,l2,l3;Point 类:作为基类Line类:公有继承Point类Triangle类:公有继承Line类public:Point();Point(参数);public:Line();Line(参数);linelength();public:Triangle();Triangle(参数); trilineput();triarea(); trijudgekind();trisave();tricheck();tr

5、iclear();Private:double X;double Y;private:double Point p1,p2;详细注释:public:Point();:点类无参构造函数Point(参数);:点类带参构造函数Private:double X;:点的x坐标double Y;:点的y坐标public:Line();:线段类无参构造函数Line(参数);:线段类带参构造函数private:double X1,X2,Y1,Y2;两个点的x坐标和y坐标Point p1,p2;两个点类成员public:Triangle();:三角形类无参构造函数Triangle(参数);:三角形带参构造函数t

6、rilineput();:三角形边长输出函数triarea();:求三角形面积函数trijudgekind();:三角形类型判断函数trisave();:三角形点的数据及面积存入文件函数tricheck();:文件内容查看函数triclear();:文件内容清空函数private:double X1,X2,X3,Y1,Y2,Y3;:三角形三点的x坐标和y坐标Point p1,p2,p3;:三个点类成员Line l1,l2,l3:三个线段类成员(三)其他自定义函数void setprecision();:设置输出数据精度函数viod triin(Triangle &t);:初始化一个三角形对象函

7、数void display();:主菜单显示函数(四)主函数:void display();switch(int n):调用操作四、程序清单#includeiostream.h#includemath.h#includefstream.h#includectype.h#includeiomanip.h#includestdlib.hstatic int P=2;/点类/做线段类的基类class Pointpublic:Point()/点类无参构造函数X=0;Y=0;Point(double x,double y)/点类带参构造函数X=x;Y=y;private:double X;/点类私有数据

8、成员double Y;/线段类class Line: public Point/公有继承点类public:Line()/线段类无参构造函数X1=0;X2=0;Y1=0;Y2=0;/给私有数据成员赋初值Line(double x1,double y1,double x2,double y2):Point(0,0),p1(x1,y1),p2(x2,y2)/线段类带参构造函数,初始化数据X1=x1;X2=x2;Y1=y1;Y2=y2;double linelength();/求两点距离函数private:Point p1,p2; /私有点类成员double X1,X2,Y1,Y2;/私有数据成员;d

9、ouble Line:linelength()/定义求两点距离函数,即三角形的边长return sqrt(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2);/返回两点的距离值,即三角形边 /长的值/三角形类class Triangle: public Line/公有继承线段类函数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(double x1,double y1,double x2,double y2

10、,double x3,double y3):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;void trilineput();/三角形边长输出函数double triarea();/求三角形面积函数void trijudgekind();/三角形判断函数void trisave();/数据存入函数void tricheck();/查看文件数据void triclear();/清空数据函数private:L

11、ine l1,l2,l3;/私有线段类成员Point p1,p2,p3;/私有点类成员double X1,X2,X3,Y1,Y2,Y3;/私有数据成员;void Triangle:trilineput()/输出三角形三条边的长度cout这三个点组成三边的长度分别为:setiosflags(ios:fixed)setprecision(P) /设定数据输出精度l1.linelength()tl2.linelength()tl3.linelength()endl; /调用三角形类中的成员函数linelength()求边长double Triangle:triarea()/计算三角形的面积doubl

12、e a=l1.linelength();/调用三角形类成员函数:求两点距离double b=l2.linelength();/调用三角形类成员函数:求两点距离double c=l3.linelength();/调用三角形类成员函数:求两点距离double p=(a+b+c)/2;return sqrt(p*(p-a)*(p-b)*(p-c);/返回面积三角形的值void Triangle:trijudgekind()/三角形的判断if(X1=X2&X2=X3)|(Y1=Y2&Y2=Y3)|(X3-X2)*(Y2-Y1)-(Y3-Y2)*(X2-X1)=0)/判断三点是否在一条直线上/三点所成直

13、线与坐标轴垂直或者不垂直于直线cout这三点在一条直线是上,不能构成三角形!endl;elsedouble a=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边长分别为:setiosflag

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

15、,底边长为: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)setprecision(P)atbtcendl;elseif(a*a+b*b-c*c)0|(a*a+c

16、*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;void Triangle:trisave()/定义点数据及面积数据存入ofstream ftriangle;char c;coutc;if(toupper(c)!=Y) return;ftriangle.open(triangledata.txt,i

17、os:out);ftriangleX1,Y1endlX2,Y2endlX3,Y3endl三点形成三角形的面积是:triarea()endl;ftriangle.close();coutn保存点数据及面积数据已经完成.n;void Triangle:triclear()/清空文件中的数据char c;coutc;if(toupper(c)=Y)ofstream ftriangle;ftriangle.open(triangledata.txt);ftriangle.clear();ftriangle.close();coutn数据已经清空.n;else return;void Triangle:

18、tricheck()/查看文件中的数据char ch;ifstream ftriangle(triangledata.txt,ios:binary|ios:nocreate);if(ftriangle)while(ftriangle.good()ftriangle.get(ch);if(!ch)break;coutch;elsecouterror:Cannot open file triangledata.txt.endl;ftriangle.close();coutendl文件数据读取完毕!.n;void triin(Triangle &t)/录入三个点的坐标对操作数据进行初始化double

19、 x1,x2,x3,y1,y2,y3;coutx1y1;coutendlx2y2;coutendlx3y3;coutendl;Triangle p(x1,y1,x2,y2,x3,y3);t=p;void setprecision()/设置数据的输出精度coutn;coutendl;P=n;void display()/显示菜单界面coutnntt*n;coutttt* 三角形的种类与面积 *ntt*n;coutnttt *n;couttttt1-三角形的判断n;couttttt2-三条边的长度n;couttttt3-计算三角形的面积n;couttttt4-点数据及面积数据存入n;coutttt

20、t5-查看存入数据n;couttttt6-数据清空n;couttttt7-退出n ;coutttt *n;coutc;system(cls);switch(c)case 1:triin(t);setprecision();t.trijudgekind();coutendl;system(pause);break;case 2:triin(t);setprecision();t.trilineput();coutendl;system(pause);break;case3:triin(t);setprecision();cout这个三角形的面积为:t.triarea()endlendl;syst

21、em(pause);break;case 4:t.trisave();coutendl;system(pause);break;case 5:t.tricheck();coutendl;system(pause);break;case 6:t.triclear();coutendl;system(pause);break;case 7:goto end;break;default: cout请正确输入!n;coutendl;system(pause);break;system(cls);end:coutn.See you .nn;return 0;五、程序调试与体会在开发一个软件项目的过程中,

22、程序调试过程占了一个绝大部分的时间,可见程序调试它的重要性。通过程序调试,我们发现了程序中的达不到要求的地方,并且能够从中改进程序编写的内容,如结构的编排,更好的判断方法等等。调试实例:1、调试运行开始,显示菜单窗口:2、输入“1”,判断三角形的类别, (1)依次输入数据 2 4 3 2 4 5 选择精度 2 回车则出现以下窗口:说明:这是三点能构成三角形的时 (2)依次输入 1 2 3 4 5 6 选择精度 2 回车则出现如下窗口:(3)依次输入 1 1 2 1 3 1 选择精度 2 回车则出现如下界面:(4)当依次输入 1 2 1 5 1 7 选择精度 3 回车则出现如下界面:说明:当三个

23、点在同一条直线上时,不能构成三角形。(5)直角三角形依次输入 0 0 1 0 1 1.732 选择精度2 回车则出现如下界面:(6)等腰三角形依次输入 1 1 6 6 3 4 选择精度3 回车则出现如下界面:(7)等腰直角三角形依次输入 1 1 3 1 3 3 选择精度2 回车则出现如下界面:(8)一般锐角三角形依次输入 0 1 2 4 5 1 选择精度2 回车则出现如下界面:(9)一般钝角三角形依次输入 1 1 3 1 3 3 选择精度 2 回车则出现如下界面:3、输入“2”,输出三角形三条边的长度依次输入 0 1 2 3 6 1 选择精度4 回车 则出现如下界面4、输入“3”,计算三角形的

24、面积依次输入 2 4 3 2 4 5 选择精度 2 回车则出现如下界面:5、输入“4”,点数据和面积数据的存入选择Y或N回车则出现如下窗口:6、输入“5”,查看存入数据出现如下窗口:7、输入“6”,数据清空输入Y或N回车则出现如下窗口:8、输入“5”,查看数据是否清空回车则出现如下窗口:9、输入“7”,退出程序六、总结通过本次课程设计,让我们对C+这门学科有了进一步的认识,更熟练地掌握了类的继承与派生的应用。在本次课程设计的过程中,我们充分领略到了团队的力量,只有团结才能发挥出一个集体的力量。一个人的力量是有限的,即使个人能力再强,做一个大点的项目,也会有力不从心的时候。分工协作让事情从大变小,能更好的发挥各人的长处。而且它也增进了队友之间的了解,加深了我们之间的友谊。此外,在这次课程设计的过程中,自己的能力也得到了一定的提高,运用自己所学知识去解决问题,这是一件令人愉快的事情。我们决心在以后的学习中更加努力,掌握好更多的知识,应用到实际生活中,争取更大的进步。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!