C++面向对象程序设计三角形的种类与面积.docx
- 文档编号:26381875
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:23
- 大小:749.85KB
C++面向对象程序设计三角形的种类与面积.docx
《C++面向对象程序设计三角形的种类与面积.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计三角形的种类与面积.docx(23页珍藏版)》请在冰豆网上搜索。
C++面向对象程序设计三角形的种类与面积
湖南人文科技学院计算机系
课程设计说明书
课程名称:
C++面向对象程序设计
课程代号:
436103
题目:
三角形的种类与面积
年级/专业/班:
2010级软件工程专业一班
学生姓名:
学号:
指导教师:
开题时间:
2011年6月13日
完成时间:
2011年6月24日
摘要
C++是C语言的超集,它不仅保持了与C语言的兼容,而且还支持面向对象程序设计的特征,C++程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。
本文论述了使用设计了判断三角形的种类和计算基面积的系统。
首先使用C++中的类设计了Point类、Line派生类和Triangle多级派生类;然后再编写intput()、al_line()、jud_tri()以及alg_tri()函数,它们的功能分别是输入数据、计算边长、判断种类以及计算和输出面积;最后在主程序中调用intput()、al_line()、jud_tri()以及alg_tri()函数实现整个程序的运行。
经过多次调试,结果成功通过编译并得出了正确的结果,使我的系统可以正常实现菜单选择、输入数据、进行判断和计算并输入结果等功能。
关键词:
VC6.0;派生类;多级派生类;
Abstract
C++isClanguageofsuperset,itnotonlykeepsupwiththeClanguagecompatible,butalsodoitsupportobject-orientedprogramdesign,whichisthecharacteristicsoftheC++programinthereusability,scalability,andreliability,maintainability.Andinsuchaspects,C++haveimproved,itbecomemoresuitableforthedevelopmentoflargeandmedium-sizedsystemsoftwareandapplication.Thispaperdiscussestheproblemthatuseingthetodesignasystemtojudgethetypesoftriangleandcalculationtheareaofit.Atfirst,weusetheclassofC++todesignaclassPoint,aderivedclassLineandamultilevelderivedclassTriangle.Thenwewritethefuctionsintput(),al_line(),jud_tri()andalg_tri().Theirfunctionsaredatainputting,lengthcalculation,typesjudgementandareaoutputting.Finally,thehostprogramcanrealizethewholeoperationbycallingthefunctionsintput(),al_line(),jud_tri()andalg_tri().Conclusively,wehavepastthecompilingandgetarightresultafterdebuggingmanytimes.Andthenwehaveknowmoursystemcanrealizethefunctionsaremenuselection,datainputting,judgementandresultoutputting.
Keywords:
VC6.0;Derivedclass;Multilevelderivedclass;
《C++程序设计》课程设计
------三角形的种类与面积
一、引言
《面向对象程序设计课程设计》是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。
二、设计目的与任务
通过课程设计,让学生能够熟练运用C++进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。
通过课程设计,掌握使用一种面向对象程序设计语言开发工具如DEV-C++5或VisualC++等;培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力;通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全部内容,包括:
⑴通过调查研究和上机实习,收集和调查有关技术资料。
⑵掌握设计课题的基本步骤和方法。
⑶根据课题的要求进行上机实验调试。
任务要求
本课程设计了判断三角形的种类和计算并输出其面积的系统。
该系统能实现输入三角形的三个顶点坐标、判断三角形的种类以及计算并输出三角形的面积等功能。
三、设计方案
1、总体设计
经过我们分析,在本课程设计中,首先设计了如下总体设计流程图,如图1
图1总体设计流程序
然后在此基础上设计了Point类、Line类、Triangle类,其框架如下:
Point类
Line类
classline:
publicpoint//派生类line
{
public:
voidal_line(point&,point&,point&);//声明一个计算三条边长度的函数
floatget_l1(){returnl1;}//返回l1的值
floatget_l2(){returnl2;}//返回l2的值
floatget_l3(){returnl3;}//返回l3的值
private:
floatl1,l2,l3;//定义三条线段
};
Triangle类
2、详细设计
.层次(调用)关系:
经过我们集体更加细致的分析和讨论,首先得出了一个详细的层次关系设计流程图,如图2
图2层次关系设计流程图
2.2.类设计图:
通过我们大家的共同努力,我们设计出了类的详细代码,如下:
Point类
Line类
Line类
Triangle类
3、程序清单
#include
#include
#include
usingnamespacestd;
classpoint//定义一个point类
{
public:
voidintput();//声明一个输入函数
floatget_x(){returnx;}//返回x的值
floatget_y(){returny;}//返回y的值
private:
floatx,y;//定义对象x,y用来表示坐标
};
voidpoint:
:
intput()//定义输入坐标的函数
{
cin>>x>>y;
}
classline:
publicpoint//派生类line
{
public:
voidal_line(point&,point&,point&);//声明一个计算三条边长度的函数
floatget_l1(){returnl1;}//返回l1的值
floatget_l2(){returnl2;}//返回l2的值
floatget_l3(){returnl3;}//返回l3的值
private:
floatl1,l2,l3;//定义三条线段
};
voidline:
:
al_line(point&p1,point&p2,point&p3)//计算三条边的长度
{
l1=sqrt((p2.get_x()-p1.get_x())*(p2.get_x()-p1.get_x())+
(p2.get_y()-p1.get_y())*(p2.get_y()-p1.get_y()));
l2=sqrt((p3.get_x()-p1.get_x())*(p3.get_x()-p1.get_x())+
(p3.get_y()-p1.get_y())*(p3.get_y()-p1.get_y()));
l3=sqrt((p3.get_x()-p2.get_x())*(p3.get_x()-p2.get_x())+
(p3.get_y()-p2.get_y())*(p3.get_y()-p2.get_y()));
}
classtriangle:
publicline//派生类triangle
{
public:
voidjud_tri(line&);//声明一个判断三角形的种类函数
voidalg_tri(line&);//声明一个计算并输出三角形的面积函数
private:
floatp,s;//定义s计算面积,p为中间变量
};
voidtriangle:
:
jud_tri(line&l)//利用计算好的三边判断三角形的种类
{
if(l.get_l1()+l.get_l2()>l.get_l3()&&l.get_l1()+l.get_l3()>
l.get_l2()&&l.get_l2()+l.get_l3()>l.get_l1())
{
if(l.get_l1()==l.get_l2()&&l.get_l1()==l.get_l3())
{
cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"☆☆☆所求三角形为等边三角形☆☆☆"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< } l3()||l.get_l1()==l.get_l2()|| l.get_l2()==l.get_l3()) { cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"☆☆☆所求三角形为等腰三角形☆☆☆"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< } elseif(l.get_l2()*l.get_l2()+l.get_l3()*l.get_l3()== l.get_l1()*l.get_l1()||l.get_l1()*l.get_l1()+ l.get_l3()*l.get_l3()==l.get_l2()*l.get_l2()|| l.get_l1()*l.get_l1()+l.get_l2()*l.get_l2()== l.get_l3()*l.get_l3()) { cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"☆☆☆所求三角形为直角三角形☆☆☆"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< } else{ cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"☆☆☆所求三角形为一般三角形☆☆☆"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< } } else{ cout< cout<<"\t"<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"< cout<<"\t"<<"◆◆◆◆◆◆◆◆◆"< cout<<"\t"<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"< cout<<"\t"<<"◆◆◆◆◆◆◆◆◆"< cout<<"\t"<<"◆◆◆◆◆◆◆◆◆◆◆◆◆"< cout<<"\t"<<"所输入的数据不能构成三角形,无法计算面积"< cout<<"\t\t"<<"☆☆☆请重新输入三个顶点的坐标或选择退出程序☆☆☆"< } } voidtriangle: : alg_tri(line&l)//利用工式计算三角形的面积 { p=(l.get_l1()+l.get_l2()+l.get_l3())/2.0; s=sqrt(p*(p-l.get_l1())*(p-l.get_l2())*(p-l.get_l3())); cout< cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"☆☆☆所求三角形为的面积为☆☆☆"< cout<<"\t"<<"☆☆☆"< cout<<"\t"<<"☆☆☆☆☆☆"< cout<<"\t"<<"★★★★★★★★★★★★★★★★★★★★★★★★★"< } intmain() { intn; pointp1,p2,p3;//定义三个子对象,用来输入三个坐标准 linel; trianglet; cout<<"\t★☆★☆★☆★☆★☆★☆"< cout<<"\t★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"< cout<<"\t★☆★☆★☆★☆★★☆★☆"< cout<<"\t★☆★☆┏━━━━━━━━━━━━━━━━━━━━━━┓☆★☆★"< cout<<"\t★☆★☆┃欢迎来到软件工程C++课程设计三角形种类与面积┃☆★☆★"< cout<<"\t★☆★☆┗━━━━━━━━━━━━━━━━━━━━━━┛☆★☆★"< cout<<"\t★☆★☆☆软工一班☆学号: 18号,19号,20号,21号,22号☆★☆★"< cout<<"\t★☆★☆指导老师: 袁辉勇☆★☆★"< cout<<"\t★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"< cout<<"\t★☆★☆★☆★☆★☆★☆"< cout< cout<<"\t\t"<<"★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t\t"<<"☆☆☆☆☆☆本程序有以下功能☆☆☆☆☆☆"< cout<<"\t\t"<<"☆☆☆请参照下列说明选择您要实现的功能☆☆☆"< cout<<"\t\t"<<"☆☆☆☆☆☆"< cout<<"\t\t"<<"★★★★★★★★★★★★★★★★★★★★★"< cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※"< cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※"< cout<<"\t\t※※※※☆1.输入三角形的三个顶点坐标※※※"< cout<<"\t\t※※※※☆2.判断三角形的种类※※※"< cout<<"\t\t※※※※☆3.计算并输出三角形的面积※※※"< cout<<"\t\t※※※※☆4.退出程序※※※"< cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※"< cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※"< cout<<"\t\t"<<"☆☆☆请在此处输入并以回车结束: "; while(cin>>n)//参照上述的功能,输入一个要实现的功能 switch(n)//用switch实现菜单选择功能 { case1: cout< cout<<"\t\t"<<"☆☆☆请分别输入三角形的三个顶点坐标☆☆☆"< cout< cout< cout<<"\t\t"<<"请输入顶点1的坐标并以回车结束: "; p1.intput();//调用三次intput()函数输入三角形三个顶点的坐标(第一次) cout<<"\t\t"<<"请输入顶点2的坐标并以回车结束: "; p2.intput();//调用三次intput()函数输入三角形三个顶点的坐标(第二次) cout<<"\t\t"<<"请输入顶点3的坐标并以回车结束: "; p3.intput();//调用三次intput()函数输入三角形三个顶点的坐标(第三次) l.al_line(p1,p2,p3);//调用al_line()函数计算三条边的长度 cout< cout<<"\t"<<"☆☆☆请参照上述功能继续选择您要实现的功能(1~4)☆☆☆"< cout<<"\t\t"<<"☆☆☆请在此处输入并以回车结束: ";break; case2: t.jud_tri(l);//调用jud_tri()函数判断三角形的种类 cout< cout<<"\t"<<"☆☆☆请参照上述功能继续选择您要实现的功能(1~4)☆☆☆"< cout<<"\t\t"<<"☆☆☆请在此处输入并以回车结束: ";break; case3: t.alg_tri(l);//调用alg_tri()函数计算并输出三角形的面积 cout< cout<<"\t"<<"☆☆☆请参照上述功能继续选择您要实现的功能(1~4)☆☆☆"< cout<<"\t\t"<<"☆☆☆请在此处输入并以回车结束: ";break; case4: cout< cout<<"================================>>感谢您的使用! "<< "<<==============================="< cout<<"\t\t\t\t"<<"¤¤"< cout<<"\t\t\t\t"<<"¤¤¤¤"< cout<<"\t\t\t\t"<<"¤¤¤¤"< cout<<"\t\t\t\t"<<"¤¤¤¤"< cout<<"\t\t\t\t"<<"6¤¤6"< cout<<"\t\t\t\t"<<"¤¤¤¤"< cout<<"\t\t\t\t"<<"¤¤¤¤"< cout<<"\t\t\t\t"<<"¤¤¤¤"< cout<<"\t\t\t\t"<<"¤¤"< cout< exit (1);//退出程序 } return0; } 4、程序调试与体会 在程序调试的过程中,首先遇到了不知怎么调用类中的私有成员(如Point类中的x和y),后经过不断查询资料和调试后,才知道了用get_x()和get_y()两个函数来实现。 接着在判断三角形的种类和计算其面积上总出现错误,后来在XX里找了好多的资料,通过数学方法,再将其转化为程序语言,终于解决了这个问题。 然后便是用户界面的设计,这里我弄了很久,一直在设计一个既美观又实用的用户界面,在查询了不少资料还有和大家讨论后,终于得出了一个较好的用户界面。 可是在用户界面出来的时候,又出现了一个问题,那就是一般人会不知道你这个东西的第一步是要干什么,所以后来又经过了优化,加了一个xy方法来告诉用户,我们的程序第一步所要做的就是输入x和y。 最后在使用了while来控制输入的数据时,却发现程序不能退出,后来才发现用exit (1)函数可以实现这个功能,这才将程序完善好了。 通过此次调试,让我学到了很多,首先是团队合作精神。 一直以来,团队合作的好坏都是作为一个项目能否顺利完的一个重要因素。 然后便是网络对于我们的帮助是非常大的,我们所为学计算机的,就一定要发挥好我们的这个优势。 还有就是书本永远是一个不可或缺的老师。 对于我们来说,老师不可能时刻跟着你,随时随地的帮助你,只有书本可以在你需要帮助的时候,给予你很好的帮助。 5、程序运行结果 在中执行程序,出现以下菜单,如图3所示: 图3主菜单(用户界面) 在图中选择“1”选项,出现图2 图4输入三角形的三个项点坐材料 在图中选择“2”,出现图3 图5通过判断,所输入的数据不能构成三角形,出现了错误 在图中再选择“1”,出现图4 图6重新输入三角形的三个顶点坐标 在图中再选择“2”后再选择“3”,出现图5 图7判断出所输入的数据构成一个直角三角形,且其面积为6 在图中选择“4”,出现图6 图8程序运行完毕,退出 四、结论 通过这次的实践我成功的掌握了类的派生与多级派生的使用,并在程序中使用Get来获取和设置私用成员的值,使用exit()来退出程序。 本程序的难点是对类的派生与多级派生的使用,由于在类的派生上学得不是很好,所以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 三角形 种类 面积
![提示](https://static.bdocx.com/images/bang_tan.gif)