C++面向对象程序设计三角形的种类与面积.docx

上传人:b****9 文档编号:26381875 上传时间:2023-06-18 格式:DOCX 页数:23 大小:749.85KB
下载 相关 举报
C++面向对象程序设计三角形的种类与面积.docx_第1页
第1页 / 共23页
C++面向对象程序设计三角形的种类与面积.docx_第2页
第2页 / 共23页
C++面向对象程序设计三角形的种类与面积.docx_第3页
第3页 / 共23页
C++面向对象程序设计三角形的种类与面积.docx_第4页
第4页 / 共23页
C++面向对象程序设计三角形的种类与面积.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C++面向对象程序设计三角形的种类与面积.docx

《C++面向对象程序设计三角形的种类与面积.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计三角形的种类与面积.docx(23页珍藏版)》请在冰豆网上搜索。

C++面向对象程序设计三角形的种类与面积.docx

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()来退出程序。

本程序的难点是对类的派生与多级派生的使用,由于在类的派生上学得不是很好,所以

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1