- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图形面积的计算与存储 课设 V1.0
摘 要 本设计从win32控制台应用和MFC两种方式设计出面积的计算方法。运用Shape基类派生出五个派生类,分别运用五种计算方法实现对不同多边形面积进行计算。在上述结果计算完成后,对上述结果进行文件保存为.txt文件。 关键词:类模板;开放地址法;MFC工程;vs2010; codeblock; 目 录 1 需求分析 1 2 算法基本原理 1 2.1 面积算法原理 1 2.2 文件保存原理 1 3 类设计 1 3.1 类的概述 1 3.2 类的实现 2 4 基于控制台的应用程序 5 4.1 主函数设计 5 4.2 运行结果及分析 7 5 基于MFC的应用程序 9 5.1 图形界面设计 9 5.2 程序代码设计 12 5.3 运行结果及分析 15 结 论 18 参考文献 19 需求分析 写一个程序,定义抽象基类Shape,由它派生出5个派生类:Circle(圆形)、Squre(正方形)、Rectangle(矩形)、Trapezoid(三角形)。用虚函数分别计算几种图形面积,并求它们的和。要求用基类指针数组,使它的每个元素指向一个派生类对象。要求将计算的各种图形面积以及它们和的结果存到磁盘文件ShapeArea.txt中。 本设计需要一个基类,五个派生类,分别计算圆形,正方形,矩形,三角形的面积,还有一个类计算前几个和然后通过文件保存,保存到固定的文件中。 算法基本原理 2.1 面积算法原理 (1)设圆的半径为x:面积=x*x*3.14 (2)设正方形的边长为x:面积=x*x (3)设矩形的短边为x,长边为y:面积=x*y (4)设三角形的三条边为x.,y,z:面积=√x*(x-a)*(x-b)*(x-c) x=(x+y+z)/2 (5)总面积计算公式为:总面积=圆面积+正方形面积+矩形面积+三角形面积 2.2 文件保存原理 包含“fstream.h”头文件,用fstream::ofstream()函数打开Shapearea.txt文件,然后运用fout输出流对文件进行存储,运用fout flush保存文件,最后fclose关闭文件,实现文件的保存。 类设计 3.1 类的概述 类模板就是设计一种类的框架,可以适用不同的数据类型,只是一种类的抽象,因此,利用类模板可以针对不同的数据类型定义出具有共性的一组类。 定义形式如下: template 类型名参数名1,类型名参数名2,… class 类名 { 类声明体; }; 与函数模板类似,通过使用类模板可以使得所定义的类中的某些数据成员某些成员函数的参数某些成员函数的返回值都可以是任意的数据类型(包括基本类型和自定义类型)。 本设计采用的是类模板,建立一个shape基类,派生出Circle(圆)类,Squre(正方形)类,Oblong(矩形)类,Triangle(三角形)类和Add(总面积)类。 在shape基类中,定义虚函数area():用来计算面积,shapeName():用来输出面积。 在剩余各类中,对area()函数和shapeName()函数进行详细运算,并且输出。 3.2 类的实现 //Shape.h文件,实现类的声明 #includeiostream #includestdlib.h #includemath.h #includefstream using namespace std; class Shape /***********************************抽象基类 Shpae***************************/ { public: virtual double area()=0; virtual void shapeName(){}; }; class Circle:public Shape /****************************圆形 Circle***************************/ { public: //Circle(){radius=0;} Circle(double r){radius=r;} //~Circle(){} void shapeName(){cout圆的面积: ;} double area(){return 3.14*radius*radius;} private: double radius; }; class Squre:public Shape /******************************正方形 Squre*********************/ { public: //Squre(){sidea=0;} Squre(double a){sidea=a; } void shapeName(){cout正方形面积:
文档评论(0)