《C++课程设计》指导

《C++课程设计》指导

ID:42614266

大小:167.00 KB

页数:11页

时间:2019-09-18

《C++课程设计》指导_第1页
《C++课程设计》指导_第2页
《C++课程设计》指导_第3页
《C++课程设计》指导_第4页
《C++课程设计》指导_第5页
资源描述:

《《C++课程设计》指导》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《C++程序设计课程设计》指导1.任务描述和需求分析⑴用C++设计一个业务处理系统,其业务就是进行简单的几何计算:l输入圆的半径,计算并输出圆的周长和面积;l输入圆柱的半径和高,计算并输出圆柱的表面积和体积;l输入圆球的半径,计算并输出圆球的表面积和体积;l输入长方形的长和宽,计算并输出长方形的周长和面积;l输入长方体的长、宽和高,计算并输出长方体的表面积和体积。⑵系统启动时显示版本等信息。设计要求:①必须应用类的继承和派生,尽力实现代码重用、减少重复;②必须设计一个抽象基类,在其中声明4个公共接口函数:计算周长、面积和体积的函数为虚或纯虚函数,显示输出结果的函数为纯虚函数;③必须设计圆、圆柱

2、、圆球、长方形、长方体等类,实现各类的构造、计算、输出等函数;④能反复计算,除非用户选择退出。⑤分組完成设计(或者不分組,每个人独立完成设计)。一个星期的时间很紧,希望大家赶紧行动起来。希望大家首先一定要理解和明白我们这次实训的目的和意图:学习和掌握C++面向对象的程序设计思想和方法。因此,凡是没有采用C++面向对象的程序设计思想和方法来实现的都是不合格的。为什么我们会选择如此简单的计算问题?主要是希望大家把精力集中在实现方法上,而不是将注意力放在对问题本身的理解上。第11页共11页2.系统分析与设计通过分析,可以设计出完整的系统的总体框架和流程图。譬如,某银行综合业务系统的总体框架和流程图,

3、如下图1。fnShowInfo()是业务处理用户管理开始显示版本信息系统用户?用户登录显示欢迎信息终止图1否fnLogin()fnWelcome()fnUsrAdm()fnDoWork()为了方便设计和调试,可以先单独实现各功能模块。我们的系统没有“用户管理”等功能要求,因此,系统的总体框架可简化为图2。图2业务处理终止开始显示版本信息fnShowInfo())fnDoWork()第11页共11页2.1分析与设计功能模块的总体框架和流程图单独实现“业务处理”的系统的总体框架和流程图如图3。图3函数fnDoWork()的工作流程其中,创建各对象的函数返回指向对象的指针,并存入基类指针变量pSha

4、pe中,该变量作为函数virtualViaPointer的实参,由virtualViaPointer函数实现统一的计算并输出。当然,该图只是程序的一个框架结构,具体的程序还有很多细节需要补充,如释放动态创建的对象,输出计算结果后实现停顿以让用户看清结果等。请同学们自己画出函数fnCircle(),fnCylinder(),fnSphere(),fnRectangle(),fnCuboid()的流程图。第11页共11页2.2分析与设计数据结构通过对任务⑴的分析,发现有5个对象:圆、圆柱、圆球、长方形和长方体。它们都可用相应的类来实现。圆和长方形的输出都是周长和面积,圆柱、圆球、长方体的输出都是表

5、面积和体积,即要计算输出的项是周长、面积和体积,对应于3个函数:circum(),area(),volume()。再加输出对象名称和对象属性的函数print(),可以构成一个包含公共接口的抽象类。总共6个类。由于所有计算与对象的位置无关,因此,圆和圆球的属性只有半径,圆柱的属性只有半径和高,长方形的属性只有长和宽,长方体的属性只有长、宽和高。若公共接口的抽象类为Shape,则圆类Circle继承Shape,圆柱类Cylinder继承Circle,圆锥类Cone继承Cylinder;长方形类Rectangle继承Shape,长方体类Cuboid继承Rectangle。它们的层次结构图如下。Con

6、eShapeCircleRectangleCuboidCylinderSphere类族的设计步骤:①设计基类Shape②通过继承Shape,设计圆类Circle和长方形类Rectangle③通过继承Circle,设计圆柱类Cylinder和圆球类Sphere④通过继承Rectangle,设计长方体类Cuboid⑤通过继承Cylinder,设计圆锥类Cone第11页共11页C++程序设计的思想精髓就是这样顺其自然地重用已有的代码,在现有的基础上再加扩展,从而使程序设计和维护的代价大大减小,极大地提高了软件的生产率。每个类的属性和方法(成员函数)如下:Shape+circum()const:vir

7、tualdouble+volume()const:virtualdouble+area()const:virtualdouble+print()const=0:virtualvoid抽象基类基类Shape泛指所有图形类,根本不知它是圆的还是方的,也不知它的大小,所以没有或没法确定它的数据成员。设计该类的目的是为整个类族提供一组公共的接口函数,并可利用虚函数这一多态机制实现统一的操作界面。Circl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。