1、C+面向对象程序设计三角形的种类与面积湖南人文科技学院计算机系 课程设计说明书 课 程 名 称:C+面向对象程序设计课 程 代 号:436103题 目:三角形的种类与面积年级/专业/班:2010级软件工程专业一班学 生 姓 名:学 号:指 导 教 师:开 题 时 间:2011 年 6 月 13 日完 成 时 间:2011 年 6 月 24 日 摘 要C+是C语言的超集,它不仅保持了与C语言的兼容,而且还支持面向对象程序设计的特征,C+程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。本文论述了使用设计了判断三角形的种类和计算基面积的
2、系统。首先使用C+中的类设计了Point类、Line派生类和Triangle多级派生类;然后再编写intput()、al_line()、jud_tri()以及alg_tri()函数,它们的功能分别是输入数据、计算边长、判断种类以及计算和输出面积;最后在主程序中调用intput()、al_line()、jud_tri()以及alg_tri()函数实现整个程序的运行。经过多次调试,结果成功通过编译并得出了正确的结果,使我的系统可以正常实现菜单选择、输入数据、进行判断和计算并输入结果等功能。关键词:VC6.0;派生类;多级派生类;AbstractC + + is C language of supe
3、r set, it not only keeps up with the C language compatible, but also do it support object-oriented program design,which is the characteristics of the C + + program in the reusability, scalability, and reliability, maintainability.And in such aspects ,C+ have improved, it become more suitable for the
4、 development of large and medium-sized system software and application. This paper discusses the problem that useing the to design a system to judge the types of triangle and calculation the area of it.At first,we use the class of C+ to design a class Point,a derived class Line and a multilevel deri
5、ved class Triangle.Then we write the fuctions intput(),al_line(),jud_tri() and alg_tri().Their functions are data inputting, length calculation,types judgement and area outputting.Finally,the host program can realize the whole operation by calling the functions intput(),al_line(),jud_tri() and alg_t
6、ri().Conclusively,we have past the compiling and get a right result after debugging many times.And then we have knowm our system can realize the functions are menu selection,data inputting,judgement and result outputting.Key words:VC6.0; Derived class; Multilevel derived class;C+程序设计课程设计-三角形的种类与面积一、
7、引 言面向对象程序设计课程设计是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。二、设计目的与任务通过课程设计,让学生能够熟练运用C+进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。通过课程设计,掌握使用一种面向对象程序设计语言开发工具如DEV-C+ 5或Visual C+等;培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力;通过课程设计,要求学生
8、在指导教师的指导下,独立完成实习课题的全部内容,包括: 通过调查研究和上机实习,收集和调查有关技术资料。 掌握设计课题的基本步骤和方法。 根据课题的要求进行上机实验调试。任务要求 本课程设计了判断三角形的种类和计算并输出其面积的系统。该系统能实现输入三角形的三个顶点坐标、判断三角形的种类以及计算并输出三角形的面积等功能。三、设计方案1、总体设计经过我们分析,在本课程设计中,首先设计了如下总体设计流程图,如图1图1 总体设计流程序然后在此基础上设计了Point类、Line类、Triangle类,其框架如下:Point类Line类class line:public point /派生类line p
9、ublic: void al_line(point& ,point& ,point&); /声明一个计算三条边长度的函数 float get_l1() return l1; /返回l1的值 float get_l2() return l2; /返回l2的值 float get_l3() return l3; /返回l3的值 private: float l1,l2,l3; /定义三条线段;Triangle类2、详细设计 层次(调用)关系:经过我们集体更加细致的分析和讨论,首先得出了一个详细的层次关系设计流程图,如图2图2层次关系设计流程图2.2类设计图:通过我们大家的共同努力,我们设计出了类的
10、详细代码,如下:Point类Line类Line类Triangle类3、程序清单#include#include#includeusing namespace std;class point /定义一个point类 public: void intput(); /声明一个输入函数 float get_x() return x; /返回x的值 float get_y() return y; /返回y的值 private: float x,y; /定义对象x,y用来表示坐标;void point:intput() /定义输入坐标的函数 cinxy; class line:public point /
11、派生类line public: void al_line(point& ,point& ,point&); /声明一个计算三条边长度的函数 float get_l1() return l1; /返回l1的值 float get_l2() return l2; /返回l2的值 float get_l3() return l3; /返回l3的值 private: float l1,l2,l3; /定义三条线段;void line:al_line(point& p1,point& p2,point& p3) /计算三条边的长度 l1=sqrt(p2.get_x()-p1.get_x()*(p2.ge
12、t_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();class triangle :public line /派生类tr
13、iangle public: void jud_tri(line& ); /声明一个判断三角形的种类函数 void alg_tri(line& ); /声明一个计算并输出三角形的面积函数 private: float p,s; /定义s计算面积,p为中间变量;void triangle: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_l
14、2()&l.get_l1()=l.get_l3() coutt endl; coutt endl; coutt 所求三角形为等边三角形 endl; coutt endl; coutt endl; l3()|l.get_l1()=l.get_l2()| l.get_l2()=l.get_l3() coutt endl; coutt endl; coutt 所求三角形为等腰三角形 endl; coutt endl; coutt endl; else if(l.get_l2()*l.get_l2()+l.get_l3()*l.get_l3()= l.get_l1()*l.get_l1()|l.get
15、_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() coutt endl; coutt endl; coutt 所求三角形为直角三角形 endl; coutt endl; coutt endl; else coutt endl; coutt endl; coutt 所求三角形为一般三角形 endl; coutt endl; coutt endl; else coutendl; coutt
16、endl; coutt endl; coutt endl; coutt endl; coutt endl; coutt 所输入的数据不能构成三角形,无法计算面积 endl; couttt 请重新输入三个顶点的坐标或选择退出程序 endl; void triangle: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(); coutendl; coutt endl; coutt endl; coutt 所
17、求三角形为的面积为 endl; coutt s endl; coutt endl; coutt endl; int main() int n; point p1,p2,p3; /定义三个子对象,用来输入三个坐标准 line l; triangle t; coutt endl; coutt endl; coutt endl; coutt endl; coutt 欢迎来到软件工程C+课程设计三角形种类与面积 endl; coutt endl; coutt 软工一班 学号:18号,19号,20号,21号,22号 endl; coutt 指导老师: 袁辉勇 endl; coutt endl; cout
18、t endl; coutendl; couttt endl; couttt 本程序有以下功能 endl; couttt 请参照下列说明选择您要实现的功能 endl; couttt endl; couttt endl; coutttendl; coutttendl; couttt 1.输入三角形的三个顶点坐标 endl; couttt 2.判断三角形的种类 endl; couttt 3.计算并输出三角形的面积 endl; couttt 4.退出程序 endl; coutttendl; coutttendl; coutttn) /参照上述的功能,输入一个要实现的功能 switch(n) /用swi
19、tch实现菜单选择功能 case 1:coutendl; /控制换行,美化界面,以下“coutendl;”的功能相同 couttt 请分别输入三角形的三个顶点坐标 endl; coutendl; coutsetw(48)xsetw(4)yendl; couttt请输入顶点1的坐标并以回车结束:; p1.intput(); /调用三次intput()函数输入三角形三个顶点的坐标(第一次) couttt请输入顶点2的坐标并以回车结束:; p2.intput(); /调用三次intput()函数输入三角形三个顶点的坐标(第二次) couttt请输入顶点3的坐标并以回车结束:; p3.intput()
20、; /调用三次intput()函数输入三角形三个顶点的坐标(第三次) l.al_line( p1, p2, p3 ); /调用al_line()函数计算三条边的长度 coutendl; coutt 请参照上述功能继续选择您要实现的功能(14) endl; couttt 请在此处输入并以回车结束:; break; case 2:t.jud_tri( l ); /调用jud_tri()函数判断三角形的种类 coutendl; coutt 请参照上述功能继续选择您要实现的功能(14) endl; couttt 请在此处输入并以回车结束:; break; case 3:t.alg_tri( l );
21、/调用alg_tri()函数计算并输出三角形的面积 coutendl; coutt 请参照上述功能继续选择您要实现的功能(14) endl; couttt 请在此处输入并以回车结束:; break; case 4:coutendl; cout感谢您的使用! =endl; couttttt endl; couttttt endl; couttttt endl; couttttt endl; couttttt 6 6 endl; couttttt endl; couttttt endl; couttttt endl; couttttt endl; coutendl; exit(1); /退出程序
22、return 0;4、程序调试与体会 在程序调试的过程中,首先遇到了不知怎么调用类中的私有成员(如Point类中的x和y),后经过不断查询资料和调试后,才知道了用get_x()和get_y()两个函数来实现。接着在判断三角形的种类和计算其面积上总出现错误,后来在XX里找了好多的资料,通过数学方法,再将其转化为程序语言,终于解决了这个问题。然后便是用户界面的设计,这里我弄了很久,一直在设计一个既美观又实用的用户界面,在查询了不少资料还有和大家讨论后,终于得出了一个较好的用户界面。可是在用户界面出来的时候,又出现了一个问题,那就是一般人会不知道你这个东西的第一步是要干什么,所以后来又经过了优化,加
23、了一个 x y 方法来告诉用户,我们的程序第一步所要做的就是输入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