♻️ 资源大小6.75MB➡️资源下载https://download.csdn.net/download/s1t16/87453215图形周长面积开发项目概述项目简介图形周长面积计算软件给用户提供了方便简洁的计算界面可以为用户提供图形计算的选着计算相对的图形计算同时还可以选着绘制图形计算用户绘制的图形面积软件拥有良好的界面交互为用户的使用带来便捷如概念模型的绘制当前选择的提示等。功能要求编号功能模块功能描述功能描述中要有数据比如多少种飞机、动物存储到什么文件。FUN_01计算图形选择模块根据用户图形选择对应计算图形并在主界面上转换输入界面FUN_02计算模式转换点击转换模式面积计算模式—周长计算模式转换计算出不同的模式值。Fun_03概念模型展示输入需要的数据点击确定后会根据数据展示出对应的模型及变化的模型Fun_04数据输入对应不同图形有不同的数据输入界面Fun_05坐标轴转换根据设置转变坐标轴的值以改变每个像素点代表的大小Fun_06图形绘制选择可以选择需要绘制图像类型Fun_07图形绘制在界面上绘制图形Fun_08绘制图形面积计算根据坐标轴值和用户绘制的图形点击确定后计算图形面积总体设计类关系图,可由 VS 直接导出总体的类关系图给出结构关系图并简要说明结构的优缺点从面向对象封装、继承及多态应用角度讨论。Csimply 作为基类派生出椭圆圆……等QManu 类及菜单由 Qdate(输入数据保存模块)plotshap概念模型模块Qchoose(图形选择模块)paint(绘制图形模块)组和而成。PltWidget 是自己写的一个插件如文本框可以插入页面是一个坐标系可以在上面绘制图形被插入到了 paint 中。图形有一个基类便于调用保存等页面采用组和方式比较直观但 manu 类过于庞大功能权限过大。设计类图每个类的类图应完整包含对应的类名、属性名称与数据类型、函数名及其对应返回值、参数。请使用 ArgoUML、StarUML 或自己百度找 UML 工具完成。比如下面这个类图普通图形的基类派生出其他图形类包含面积周长计算函数。由 Csimply 派生出的正方形类。由 Csimply 派生出的长方形类。由 Csimply 派生出的任意直线构成的图形类。由 Csimply 派生出的圆形类。由 Csimply 派生出的类。由 Csimply 派生出的椭圆类。由 Csimply 派生出的三角形类界面 QManu 类,既生成程序的界面。程序界面中的概念模型绘制类输入数据管理类既保存界面的输入数据。数据类。同时控制输入界面的变换。界面中用户选择计算图形类既当前用户选择了那个类。画图类界面点击画图后生成的界面进行图形的绘制。自己做的一个插件坐标系 插入 paint 类在 paint 的 UI 中添加成基本控件。核心算法不规则图形之任意直线图形周长面积计算。选取 p0 作为 y 坐标最小的点如果 y 坐标相等选取 x 坐标最小的点对剩余的点相对与 p0 点的极角进行排序。排序后分为三角形对各个三角形去求面积。CConvexHul 类下的三个函数。void CConvexHul::SortPoint() { int i,j; POINT temp(m_point[0].x,m_point[0].y); //选取作为基点 int index 0; for (i 0; i m_nsize; i) { if (m_point[i].y temp.y || (m_point[i].y temp.ym_point[i].x temp.x)) { index i; temp.x m_point[i].x; temp.y m_point[i].y; } } m_point[index] m_point[0]; m_point[0] temp; for (i 1; i m_nsize; i) { for (j 1; j m_nsize - 1 - i; j) { if ((m_point[j].y - temp.y) (m_point[j 1].y - temp.y)) { if ((m_point[j].x - temp.x) / (m_point[j].y - temp.y) (m_point[j 1].x - temp.x) / (m_point[j 1].y - temp.y)) { POINT replace; replace m_point[j]; m_point[j] m_point[j 1]; m_point[j 1] temp; } } } } } /* *计算图形面积 */ double CConvexHul::CalArea() { SortPoint(); int i; double area 0; for (i 1; i m_nsize-1; i) { POINT temp1(m_point[i].x - m_point[0].x, m_point[i].y - m_point[0].y), temp2(m_point[i 1].x - m_point[0].x, m_point[i 1].y - m_point[0].y); area Cross(temp1, temp2); } return area / 2; } /* * 计算图形周长 */ double CConvexHul::CalC() { double sum0; for(int i0;im_nsize;i) { sumsqrt((m_point[i].x-m_point[i].x)*(m_point[i].x-m_point[i].x) (m_point[i].y-m_point[i].y)*(m_point[i].y-m_point[i].y)); } return sum; }对绘制图形的面积计算。在图形在坐标系下绘制完成后点击确认按钮就开始本函数。实现是通过统计闭合图形内的像素点个数根据坐标系得到每个像素点的值最后得到面积。计算绘制图形包含多少像素点/* 计算绘制图形包含多少像素点 */ double PlotWidget::CalArea() { QRgb valueqRgb(255,255,255); int i,j; double sum0; //统计像素点。 for(i0; iwidth(); i) { int maxup0; int maxdown0; for(j0; jheight(); j) { if( m_img-pixel(i,j)!value) { maxupj; break; } } for(jheight()-10; j0; j--) { if( m_img-pixel(i,j)!value) { maxdownj; break; } } summaxdown-maxup; } return sum; } /*根据坐标系值大小计算面积*/ void paint::on_pushButton_cal_clicked() { double right_pos width() - right_margine; double bottom_pos height()- bottom_margine; double areaui-plotview-CalArea(); area(double)((m_valuex*m_valuey)/((right_pos-left_margine)*(bottom_pos-top_margine)))*area; //计算公式得到单个像素点表示的值乘以所包含的像素点个数。 QString qQString(%1).arg(area,0,g,9); ui-label_Area-setText(q); }程序实现开发平台与编译运行要求硬件配置操作系统及版本开发平台及版本第三方支持库及版本Windows10 系统Qt如果有特殊编译运行要求因给出具体说明。类似上面核心算法讨论一样分节对核心功能1、2、3.......的实现截图与简要功能分析。不规则图形之任意直线图形周长面积计算。功能分析实现不规则图形面积的计算。实现截图对绘制图形的面积计算。功能分析对绘制图形面积的计算。实现截图功能完成度对照 2.2 节 功能要求表完成下表。有新增功能在完成度上写新增。编号功能模块完成情况描述完成度FUN_01计算图形选择模块根据用户图形选择对应计算图形并在主界面上转换输入界面100%FUN_02计算模式转换点击转换模式面积计算模式—周长计算模式转换计算出不同的模式值。100%Fun_03概念模型展示输入需要的数据点击确定后会根据数据展示出对应的模型及变化的模型90%(由直线构成的图形只是简单一条直线)Fun_04数据输入对应不同图形有不同的数据输入界面100%Fun_05坐标轴转换根据设置转变坐标轴的值100%Fun_06图形绘制选择可以选择需要绘制图像类型100%Fun_07图形绘制能在界面上绘制图形100%Fun_08绘制图形面积计算能根据坐标轴值和用户绘制的图形点击确定后计算图形面积100%总结自己程序的优缺点与现有同类软件的比较。本软件界面优美操作简介有图形绘制计算也有输入值计算包含面广。相对缺点是输入值的判定是否为合法数据如绘制的图形是闭合图形没有做判定。参考资料CAD 中的不规则图形面积计算参考软件。《计算不规则多边形面积》参考设置及其模式。