1、完整版c+毕业课程设计之三角形的种类和面积C+程序设计课程设计报告三角形的种类和面积班 级: _姓名学号: _指导教师: _完成时间: 2010 年 9 月 30 日摘 要 3一、引言 1二、设计目的与任务 11、本课程设计的目的 12、本课程设计的任务 2三、设计方案 2四、程序清单 5五、程序调试与体会 13六、总结 22摘 要本次设计用类进行有关三角形的种类和面积的操作。通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。程序中使用了类的继承,提高代码的复用性。程序主要由点类、线段类、三角形类以及
2、主函数构成。关键字:类、类的继承与派生Abstract The design of the triangle is concerned with the type and area. By inheriting classes derived, and members of the function calls for the triangle, criterion the length of the triangle, the triangle area, data files, check the file data into empty data files, etc. In the p
3、rocess of using the inheritance, enhance code reusability. Program mainly by point, line, and the main function of triangles. Key words: class, the class inherits and derivativesC+程序设计语言课程设计 利用类的继承与派生求三角形的种类和面积一、引言随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用
4、。通过计算机对各类问题求解已经成为一种高效、快捷的方式。本课程设计就是用C+研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。二、设计目的与任务1、本课程设计的目的1)通过课程设计更进一步理解C+的基础知识和面向对象的思想。2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。3)熟练掌握C+中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。4)通过分工协作,激发团队合作精神,培养团队合作的能力。2、本课程设计的任务使用类实现对
5、三角形的种类和面积求解,具体内容如下:1)设计菜单实现功能选择; 2)输入三角形的三个顶点坐标;3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);4)计算并输出三角形的面积 5)对输入数据和输出结果均用文件实现三、设计方案(一)定义三个Point,Line,Triangle三个类,它们之间的关系。如图示:(二)详细设计详细注释:public:Point();:点类无参构造函数Point(参数);:点类带参构造函数Private:double X;:点的x坐标double Y;:点的y坐标public:Line();:线段类无参构造函数Line(参数);:线
6、段类带参构造函数private:double X1,X2,Y1,Y2;两个点的x坐标和y坐标Point p1,p2;两个点类成员public:Triangle();:三角形类无参构造函数Triangle(参数);:三角形带参构造函数trilineput();:三角形边长输出函数triarea();:求三角形面积函数trijudgekind();:三角形类型判断函数trisave();:三角形点的数据及面积存入文件函数tricheck();:文件内容查看函数triclear();:文件内容清空函数private:double X1,X2,X3,Y1,Y2,Y3;:三角形三点的x坐标和y坐标Poi
7、nt p1,p2,p3;:三个点类成员Line l1,l2,l3:三个线段类成员(三)其他自定义函数void setprecision();:设置输出数据精度函数viod triin(Triangle &t);:初始化一个三角形对象函数void display();:主菜单显示函数(四)主函数:void display();switch(int n):调用操作四、程序清单#includeiostream. sqrt(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2);返回两点的距离值,即三角形边 长的值三角形类class Triangle: public Line公有继承线段类函数p
8、ublic:Triangle():l1(),l2(),l3()三角形类无参构造函数,对私有数据成员赋缺省值X1=0;X2=0;X3=0;Y1=0;Y2=0;Y3=0;Triangle(double x1,double y1,double x2,double y2,double x3,double y3):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;void trilineput();三角形边长输出函数double tr
9、iarea();求三角形面积函数void trijudgekind();三角形判断函数void trisave();数据存入函数void tricheck();查看文件数据void triclear();清空数据函数private:Line l1,l2,l3;私有线段类成员Point p1,p2,p3;私有点类成员double X1,X2,X3,Y1,Y2,Y3;私有数据成员;void Triangle:trilineput()输出三角形三条边的长度cout这三个点组成三边的长度分别为:setiosflags(ios:fixed)setprecision(P) 设定数据输出精度l1.linel
10、ength()tl2.linelength()tl3.linelength()endl; 调用三角形类中的成员函数linelength()求边长double Triangle:triarea()计算三角形的面积double 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
11、:trijudgekind()三角形的判断if(X1=X2&X2=X3)|(Y1=Y2&Y2=Y3)|(X3-X2)*(Y2-Y1)-(Y3-Y2)*(X2-X1)=0)判断三点是否在一条直线上三点所成直线与坐标轴垂直或者不垂直于直线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)*(
12、X3-X1)+(Y2-Y1)*(Y3-Y1)=0|(X3-X2)*(X3-X1)+(Y3-Y2)*(Y3-Y1)=0)判断直角cout这是一个等腰直角三角形.endl边长分别为:setiosflags(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)这
13、是一个等腰三角形.腰长为:b,底边长为:a.endl;else if(a=b)coutsetiosflags(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
14、这是一个直角三角形.endl边长分别为:setiosflags(ios:fixed)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;void Triangle:trisave()定义点数据及面积数
15、据存入ofstream ftriangle;char c;coutc;if(toupper(c)!=Y) return;ftriangle.open(triangledata.txt,ios: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(tr
16、iangledata.txt);ftriangle.clear();ftriangle.close();coutn数据已经清空.n;else return;void Triangle: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 x1,x2,x3,y1,y2,y3;coutx1y1;coutendlx2y2;coutendlx3y3;coutendl;Triangle p(x1,y1,x2,y2,x3,y3);t=p;void setprecision()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1