VC++课程设计之三角形的种类和面积.doc_第1页
VC++课程设计之三角形的种类和面积.doc_第2页
VC++课程设计之三角形的种类和面积.doc_第3页
VC++课程设计之三角形的种类和面积.doc_第4页
VC++课程设计之三角形的种类和面积.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

湖南人文科技学院课程设计C+程序设计课程设计报告三角形的种类和面积班 级: _姓名学号: _指导教师: _完成时间: 2010 年 9 月 30 日目 录2摘 要3一、引言1二、设计目的与任务11、本课程设计的目的12、本课程设计的任务2三、设计方案2四、程序清单5五、程序调试与体会13六、总结22 湖南人文科技学院课程设计摘 要本次设计用类进行有关三角形的种类和面积的操作。通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。程序中使用了类的继承,提高代码的复用性。程序主要由点类、线段类、三角形类以及主函数构成。关键字:类、类的继承与派生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 process 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 derivatives23C+程序设计语言课程设计 利用类的继承与派生求三角形的种类和面积一、引言随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类问题求解已经成为一种高效、快捷的方式。本课程设计就是用C+研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。二、设计目的与任务1、本课程设计的目的1)通过课程设计更进一步理解C+的基础知识和面向对象的思想。2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。3)熟练掌握C+中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。4)通过分工协作,激发团队合作精神,培养团队合作的能力。2、本课程设计的任务使用类实现对三角形的种类和面积求解,具体内容如下:1)设计菜单实现功能选择; 2)输入三角形的三个顶点坐标;3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);4)计算并输出三角形的面积 5)对输入数据和输出结果均用文件实现三、设计方案(一)定义三个Point,Line,Triangle三个类,它们之间的关系。如图示: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();triclear();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(参数);:三角形带参构造函数trilineput();:三角形边长输出函数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);:初始化一个三角形对象函数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;/点类私有数据成员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;/私有数据成员;double 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,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: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.linelength()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: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)*(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)这是一个等腰三角形.腰长为: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这是一个直角三角形.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()/定义点数据及面积数据存入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(triangledata.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()/设置数据的输出精度coutn;coutendl;P=n;void display()/显示菜单界面coutnntt*n;coutttt* 三角形的种类与面积 *ntt*n;coutnttt *n;couttttt1-三角形的判断n;couttttt2-三条边的长度n;couttttt3-计算三角形的面积n;couttttt4-点数据及面积数据存入n;couttttt5-查看存入数据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;system(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;五、程序调试与体会在开发一个软件项目的过程中,程序调试过程占了一个绝大部分的时间,可见程序调试它的重要性。通过程序调试,我们发现了程序中的达不到要求的地方,并且能够从中改进程序编写的内容,如结构的编排,更好的判断方法等等。调试实例: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 回车则出现如下界面:说明:当三个点在同一条直线上时,不能构成三角形。(5)直角三角形依次输入 0 0 1 0 1 1.732 选择精度2 回车则出现如下界面:(6)等腰三角形依次输入 1 1 6 6 3 4 选择精度3 回车则出现如下界面:(7)等腰直角三角形依次输入 1 1 3 1 3 3

温馨提示

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

评论

0/150

提交评论