




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+程序设计课程设计报告三角形的种类和面积班 级:10级2班 _姓名: 沈 茂 良_学号: 101102025 _指导教师: 唐 远 翔 _完成时间:2011年11月30日目 录摘要一、引言二、设计目的与任务1、本课程设计的目的2、本课程设计的任务三、设计方案四、程序清单五、程序调试与体会六、总结摘 要本次设计用类进行有关三角形的种类和面积的操作。通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。程序中使用了类的继承,提高代码的复用性。程序主要由点类、线段类、三角形类以及主函数构成。C+程序设计语言课
2、程设计 利用类的继承与派生求三角形的种类和面积一、引言随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类问题求解已经成为一种高效、快捷的方式。本课程设计就是用C+研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。二、设计目的与任务1、本课程设计的目的1)通过课程设计更进一步理解C+的基础知识和面向对象的思想。2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软
3、件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。3)熟练掌握C+中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。4)通过分工协作,激发团队合作精神,培养团队合作的能力。2、本课程设计的任务使用类实现对三角形的种类和面积求解,具体内容如下:1)设计菜单实现功能选择; 2)输入三角形的三个顶点坐标;3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);4)计算并输出三角形的面积 5)对输入数据和输出结果均用文件实现三、设计方案(一)定义三个Point,Line,Triangle三个类,它们之间的关系。如图示:Point类Line类Tria
4、ngle类继承继承派生派生(二)详细设计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();Privat
5、e: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();:三角
6、形边长输出函数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 displ
7、ay();:主菜单显示函数(四)主函数:void display();switch(int n):调用操作四、程序清单#include"iostream.h"#include"math.h"#include"fstream.h"#include"ctype.h"#include"iomanip.h"#include"stdlib.h"static int P=2;/点类/做线段类的基类class Pointpublic:Point()/点类无参构造函数X=0;Y=0;Poin
8、t(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();/求两
9、点距离函数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
10、=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();/
11、数据存入函数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()
12、<<"t"<<l2.linelength()<<"t"<<l3.linelength()<<endl; /调用三角形类中的成员函数linelength()求边长double Triangle:triarea()/计算三角形的面积double a=l1.linelength();/调用三角形类成员函数:求两点距离double b=l2.linelength();/调用三角形类成员函数:求两点距离double c=l3.linelength();/调用三角形类成员函数:求两点距离double p=(
13、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.lineleng
14、th(),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)<<setprecis
15、ion(P) /设定数据输出精度<<a<<"t"<<b<<"t"<<c<<endl;else if(a=b&&b=c)/判断是否三条边相等cout<<"这是一个等边三角形,"<<"边长为:"<<setiosflags(ios:fixed)<<setprecision(P) /设定数据输出精度<<a<<"."<<endl;els
16、eif(b=c)/判断底边的值cout<<setiosflags(ios:fixed)<<setprecision(P)<<"这是一个等腰三角形."<<"腰长为:"<<b<<","<<"底边长为:"<<a<<"."<<endl;else if(a=b)cout<<setiosflags(ios:fixed)<<setprecision(P)<<
17、;"这是一个等腰三角形."<<"腰长为:"<<b<<","<<"底边长为:"<<c<<"."<<endl;elsecout<<setiosflags(ios:fixed)<<setprecision(P)<<"这是一个等腰三角形."<<"腰长为:"<<a<<","<<&q
18、uot;底边长为:"<<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)<<a&
19、lt;<"t"<<b<<"t"<<c<<endl;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)<<a<<"t"<<
20、b<<"t"<<c<<endl;elsecout<<"这是一个一般锐角三角形,"<<endl<<"边长分别为:"<<setiosflags(ios:fixed)<<setprecision(P)<<a<<"t"<<b<<"t"<<c<<endl;void Triangle:trisave()/定义点数据及面积数据存入ofstrea
21、m ftriangle;char c;cout<<"n保存三个点的坐标及面积数据,是否继续?Y/N:"cin>>c;if(toupper(c)!='Y') return;ftriangle.open("triangledata.txt",ios:out);ftriangle<<"<"<<X1<<","<<Y1<<">"<<endl<<"<&quo
22、t;<<X2<<","<<Y2<<">"<<endl<<"<"<<X3<<","<<Y3<<">"<<endl<<"三点形成三角形的面积是:"<<triarea()<<endl;ftriangle.close();cout<<"n保存点数据及面积数据已经完成.n"
23、;void Triangle:triclear()/清空文件中的数据char c;cout<<"n将会清空数据,是否继续?Y/N:"cin>>c;if(toupper(c)='Y')ofstream ftriangle;ftriangle.open("triangledata.txt");ftriangle.clear();ftriangle.close();cout<<"n数据已经清空.n"else return;void Triangle:tricheck()/查看文件中的数据c
24、har ch;ifstream ftriangle("triangledata.txt",ios:binary|ios:nocreate);if(ftriangle)while(ftriangle.good()ftriangle.get(ch);if(!ch)break;cout<<ch;elsecout<<"error:Cannot open file 'triangledata.txt'."<<endl;ftriangle.close();cout<<endl<<"
25、文件数据读取完毕!.n"void triin(Triangle &t)/录入三个点的坐标对操作数据进行初始化double x1,x2,x3,y1,y2,y3;cout<<"输入第一个点的坐标值:"cin>>x1>>y1;cout<<endl<<"输入第二个点的坐标值:"cin>>x2>>y2;cout<<endl<<"输入第三个点的坐标值:"cin>>x3>>y3;cout<<
26、;endl;Triangle p(x1,y1,x2,y2,x3,y3);t=p;void setprecision()/设置数据的输出精度cout<<"设置输出精度(0-15):"int n;cin>>n;cout<<endl;P=n;void display()/显示菜单界面cout<<"nntt*n"cout<<"ttt* 三角形的种类与面积 *ntt*n"cout<<"nttt *n"cout<<"tttt1-三角形
27、的判断n"cout<<"tttt2-三条边的长度n"cout<<"tttt3-计算三角形的面积n"cout<<"tttt4-点数据及面积数据存入n"cout<<"tttt5-查看存入数据n"cout<<"tttt6-数据清空n"cout<<"tttt7-退出n "cout<<"ttt *n"cout<<"ttt 请选择(1-7):"
28、int main()Triangle t;char c;while(1)display();cin>>c;system("cls");switch(c)case '1':triin(t);setprecision();t.trijudgekind();cout<<endl;system("pause");break;case '2':triin(t);setprecision();t.trilineput();cout<<endl;system("pause");br
29、eak;case'3':triin(t);setprecision();cout<<"这个三角形的面积为:"<<t.triarea()<<endl<<endl;system("pause");break;case '4':t.trisave();cout<<endl;system("pause");break;case '5':t.tricheck();cout<<endl;system("pause&qu
30、ot;);break;case '6':t.triclear();cout<<endl;system("pause");break;case '7':goto end;break;default: cout<<"请正确输入!n"cout<<endl;system("pause");break;system("cls");end:cout<<"n.See you .nn"return 0;五、程序调试与体会在开发一个软件项目的过程中,程序调试过程占了一个绝大部分的时间,可见程序调试它的重要性。通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省德州市陵城区江山实验校2025年初三重点班下学期开学生物试题含解析
- 浙江省台州市第四协作区市级名校2024-2025学年初三统一调研测试英语试题含答案
- 河北省沧州市孟村县2025届初三下学期第一次模拟(网考)考试化学试题含解析
- 琼台师范学院《中外音乐史II》2023-2024学年第二学期期末试卷
- 山东省广饶第一中学2025届高三4月联考物理试题(详细答案版)含解析
- 上海师范大学天华学院《专业英语及科技论文写作》2023-2024学年第一学期期末试卷
- 山东医学高等专科学校《太极与健身》2023-2024学年第二学期期末试卷
- 沈阳工学院《戏剧鉴赏》2023-2024学年第一学期期末试卷
- 新疆阿勒泰第二高级中学2025届高三下第8周测试题含解析
- 郑州财经学院《食品工厂机械与设备B》2023-2024学年第二学期期末试卷
- CRRT vs 中毒血液净化模式选择
- 《等量代换》ppt(基础教育)
- 高压液氧泵原理、结构及检修、结构及检修
- 结核病防治知识培训试题及答案
- 变频器日常维护及常见故障处理85页PPT课件
- XX光伏电站项目方案(自投)
- 《长方体正方体》课前小研究
- MIL-STD-105E抽样计划表
- 中国联通消防安全管理规定
- 一课一练21:关联速度模型(答案含解析)—2021届高中物理一轮基础复习检测
- GB∕T 10781.11-2021 白酒质量要求 第11部分:馥郁香型白酒
评论
0/150
提交评论