课程设计之三角形的种类和面积.docx
- 文档编号:23497521
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:26
- 大小:449.08KB
课程设计之三角形的种类和面积.docx
《课程设计之三角形的种类和面积.docx》由会员分享,可在线阅读,更多相关《课程设计之三角形的种类和面积.docx(26页珍藏版)》请在冰豆网上搜索。
课程设计之三角形的种类和面积
《C++程序设计》课程设计报告
三角形的种类和面积
班级:
___
姓名学号:
_______________
指导教师:
___
完成时间:
2010年9月30日
目录
摘要3
一、引言1
二、设计目的与任务1
1、本课程设计的目的1
2、本课程设计的任务2
三、设计方案2
四、程序清单5
五、程序调试与体会13
六、总结22
摘要
本次设计用类进行有关三角形的种类和面积的操作。
通过类的继承与派生,调用类的成员函数实现判别三角形的种类,求三角形三条边的长度,求三角形的面积,数据存入文件,查看文件数据,清空数据文件等操作。
程序中使用了类的继承,提高代码的复用性。
程序主要由点类、线段类、三角形类以及主函数构成。
关键字:
类、类的继承与派生
Abstract
Thedesignofthetriangleisconcernedwiththetypeandarea.Byinheritingclassesderived,andmembersofthefunctioncallsforthetriangle,criterionthelengthofthetriangle,thetrianglearea,datafiles,checkthefiledataintoemptydatafiles,etc.Intheprocessofusingtheinheritance,enhancecodereusability.Programmainlybypoint,line,andthemainfunctionoftriangles.
Keywords:
class,theclassinheritsandderivatives
《C++程序设计语言》课程设计
——利用类的继承与派生求三角形的种类和面积
一、引言
随着人们生活水平的提高,计算机发展异常迅速。
如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。
通过计算机对各类问题求解已经成为一种高效、快捷的方式。
本课程设计就是用C++研究三角形的种类及面积的问题,实现对三角形的种类和面积的求解及实现类的应用以及函数的调用。
二、设计目的与任务
1、本课程设计的目的
1)通过课程设计更进一步理解C++的基础知识和面向对象的思想。
2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。
初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
3)熟练掌握C++中类的继承与派生在程序中的应用,并熟练了解类中函数的调用。
4)通过分工协作,激发团队合作精神,培养团队合作的能力。
2、本课程设计的任务
使用类实现对三角形的种类和面积求解,具体内容如下:
1)设计菜单实现功能选择;
2)输入三角形的三个顶点坐标;
3)判断三角形的种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形);
4)计算并输出三角形的面积
5)对输入数据和输出结果均用文件实现
三、设计方案
(一)定义三个Point,Line,Triangle三个类,它们之间的关系。
如图示:
(二)详细设计
private:
doubleX1,X2,X3,Y1,Y2,Y3;
Pointp1,p2,p3;
Linel1,l2,l3;
详细注释:
public:
Point();:
点类无参构造函数
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:
doubleX1,X2,X3,Y1,Y2,Y3;:
三角形三点的x坐标和y坐标
Pointp1,p2,p3;:
三个点类成员
Linel1,l2,l3:
三个线段类成员
(三)其他自定义函数
voidsetprecision();:
设置输出数据精度函数
viodtriin(Triangle&t);:
初始化一个三角形对象函数
voiddisplay();:
主菜单显示函数
(四)主函数:
voiddisplay();switch(intn):
调用操作
四、程序清单
#include"iostream.h"
#include"math.h"
#include"fstream.h"
#include"ctype.h"
#include"iomanip.h"
#include"stdlib.h"
staticintP=2;
//点类
//做线段类的基类
classPoint
{
public:
Point()//点类无参构造函数
{
X=0;Y=0;
}
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));//返回两点的距离值,即三角形边
}//长的值
//三角形类
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<<"这三个点组成三边的长度分别为:
"< : fixed)< < }//调用三角形类中的成员函数linelength()求边长 doubleTriangle: : triarea() //计算三角形的面积 { 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<<"这三点在一条直线是上,不能构成三角形! "< else { doublea=l1.linelength(),b=l2.linelength(),c=l3.linelength();//将三角形形三条边的长度分别赋给a,b,c if(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<<"这是一个等腰直角三角形."< "< : fixed)< < elseif(a==b&&b==c)//判断是否三条边相等 cout<<"这是一个等边三角形,"<<"边长为: "< : fixed)< < else { if(b==c)//判断底边的值 cout< : fixed)< <<"这是一个等腰三角形."<<"腰长为: "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 三角形 种类 面积