测绘程序的设计实验4 类创建(2)

合集下载

测绘程序设计课程设计

测绘程序设计课程设计

课程设计(四)(测绘程序设计课程设计)课程类别:课程设计面向专业:测绘工程本科时间:2周总学分:2.0一、课程设计的目的和要求本次课程设计是测绘程序设计专业课程结束之后进行的,通过本次课程设计,巩固学生课堂所学的理论知识,对所学知识进行一次综合性实践和应用,初步掌握设计的方法和过程,掌握运用所学知识处理和解决测量生产实际问题的方法和技巧。

具体讲,此次课程设计应达到的目的是:1.总结和检验现代测绘程理论知识的学习情况。

通过设计,深化已有知识,拓宽新的知识,初步掌握“3S”技术的应用。

2.学生可通过程序设计,使学生初步掌握各种数值分析方法,初步了解与GPS、全站仪等电子设备通讯程序设计方法。

3、初步掌握用Matlab解决测绘数据处理的实际问题的方法和过程。

4、掌握CASS、GPS后处理软件、GIS等软件的拓展和二次开发的技巧和方法,提过分析和处理实际问题的能力。

为了达到上述目的,在进行课程设计时应满足如下要求:1.设计的项目和内容应该齐全并符合本大纲之规定。

设计分六个阶段:熟悉设计任务书和收集资料、设计构思、软件总体设计、软件的详细设计、上机调试、编写设计说明书,各道工序都要认真完成。

2.程序设计应该本着简洁、实用,占用内存少,运行速度快,能够正确处理实际问题。

同时还要求界面美观,便于用户操作。

3.认真编写技术设计说明书,在遣词、布局、谋篇及至行款格式等方面,都要加强自我训练。

在文字语言表达方面力求做到:精确(确切无误)、简约(语意精粹,容量较大)、清晰(体现鲜明的逻辑性、条理性、确定性)、平实(质朴无华、庄重严谨)。

图形语言(表、图等)要能说明问题,易于理解,简洁清晰,安排得当,并且不与文字相重复。

最后应该附上程序代码。

二、课程设计的内容和与时间安排(一)课程设计的主要内容包括:1.阅读领会课程设计任务书。

2.熟悉并收集相关资料,确定编写语言或软件开发平台。

3.对软件认真做好需求分析,进行可行性论证。

测绘程序设计实习报告

测绘程序设计实习报告

测量程序设计实习报告姓名: XX班级: XXXX学号: XXXX教师评语:实验名称:使用C#开发环境建立测量程序框架一、实验的目的与任务:(1)学会用C#窗体程序开发环境建立应用程序框架方法(2)学会使用常见的Windows控件(3)根据自身需要设计一个测量程序界面二、实验的过程与步骤:1、首先打开visual studio 2010,选择文件→新建→项目。

在弹出的对话框中右栏一侧选择windows窗体应用。

选择文件存放地址,输入项目名称,点击确定,完成。

2、拖动menuSctrip控件到主窗体,并且键入“文件”、“工具”两个选项,在“文件”下添加一个“打开”选项;在“工具”下添加“近似平差计算”、“高斯消元”两个选项。

3、选择项目→添加windows窗体,输入窗体名称“CLSJ”,点击确定。

4、在CLSJ窗体中拖入SplitContainer控件,将窗体分为左右两部分,调整大小。

在拖入一个“TabControl”,新建选项卡。

最后,加入“Button”、“TextBox”、“Label”控件。

5、用相同的方法,新建一个名为高斯消元的窗体,然后按照需要进行设计。

三、程序运行效果四、本实验心得体会这是第一次接触这种可视化开发编程,刚开始不是很熟悉,对于编程语言来说,在掌握一定语法之后,要多用,多结合实际进行一些简单编程,这样才能提高对一种编程语言的理解。

实验名称:导线计算程序设计及粗差探测一、实验的目的与任务:(1) 掌握方位角计算的程序设计方法(2) 掌握符合导线、闭合导线、支导线计算的程序设计方法(3) 理解粗差探测的程序设计方法二、实验的设计与开发步骤:1、考虑到在测量时所用的角度均为度分秒,而在c#计算时只是别度分秒,因此先设计两个函数,可以将度分秒和弧度制进行转化。

2、其次先写一个point 类,包含x ,y 两个成员变量,然后在设计一个方位角函数,用两个point 类当作形参传递进去,根据方位角计算公式παk xy +∆∆=arctan ,(根据象限角和方位角关系对k 进行调节)应该分为四种情况,但是考虑到分母不为0,因此应该在加一种情况,即导线与y 轴重合。

测绘程序设计课程实习报告2013

测绘程序设计课程实习报告2013

测绘程序设计课程实习报告一、实习目的巩固之前所学的c++类定义、文件操作等各方面知识,掌握矩阵计算的基本算法,熟悉并熟练运用平差模型,掌握测量平差的基本原理和公式,并处理测量观测数据。

二、实习内容该课程的实习主要为c语言及c++编程基础,矩阵操作算法,条件平差,间接平差,以及在水准网平差中的应用。

三、实习过程(一)实习1(文件的基本操作以及角度、弧度的转化)1.准备C++文件操作函数包含于头文件<fstream><ofstream><ifstream>,一般情况下使用<fstream>即可。

在计算过程中需要文件输出格式控制,函数包含于<iomainip>。

c++的流操作函数包含于<iostream>,相应的流函数在命名空间“std”。

角度转弧度的过程中,首先判断正负,对符号进行不同情况的处理。

将度数的分,秒位分别除以60、3600,然后把得到的结果与度位绝对值相加,判断符号。

弧度转角度的过程中,同样判断正负,取小数位乘以60取整数得到相应角度的分,再取剩余的小数乘以60即得到相应角度的秒。

2.代码#include <iostream>#include <math.h>#include <fstream>#include <string>using namespace std;const double pi = 3.14159;int main(){fstream file("a.txt");//定义文件操作对象string aa;file>>aa;cout<<aa<<endl;//输出文件中的内容int a =1;//定义重复输入使用的变量while(a)//限制循环,重复输入{float a1,a2,a3;cout<<endl;double deg;cout<<"输入度"<<endl;cin>>a1;cout<<"输入分"<<endl;cin>>a2;cout<<"输入秒"<<endl;cin>>a3;cout<<"角度为 "<<a1<<"° "<<a2<<"′ "<<a3<<"″"<<endl;if(a1 >=0)//判断输入度数的正负deg = a1 + a2/60+ a3/3600;elsedeg = a1 - a2/60- a3/3600;double radian;radian = deg/180*pi;cout<<"转换得弧度为 "<<radian<<endl;cout<<endl;cout<<"输入弧度: "<<endl;cin>>radian;bool tm =0;deg = radian*180/pi;if(deg<0){tm =1;deg =-deg;}a1 =int(deg);a2 =int((deg-a1)*60);a3 =((deg-a1-a2/60)*3600);if(tm ==1){a1 =-a1;tm = 0;}cout<<"转换后角度为 "<<a1<<"° "<<a2<<"′ "<<a3<<"″"<<endl;}return0;}3.运行结果输入度20输入分55输入秒32角度为 20° 55′ 32″转换得弧度为 0.36522输入弧度:3.14转化后角度为 179° 54′ 32.0387″Press any key to continue4.出现的问题角度转换过程中需要考虑角度的正负号问题,角度转化可以添加是否超过59的判断。

测绘程序设计实习报告

测绘程序设计实习报告

一、实习背景随着我国经济的快速发展,测绘技术在国民经济和社会生活中扮演着越来越重要的角色。

测绘程序设计作为测绘专业的一门重要课程,旨在培养学生的计算机编程能力和测绘数据处理能力。

本次实习是在测绘程序设计课程结束后,为了巩固所学知识,提高实际操作能力而进行的。

二、实习目的1. 熟悉MATLAB软件,掌握其基本操作和编程方法。

2. 学习测绘数据处理方法,提高数据处理能力。

3. 通过实习项目,锻炼编程能力和团队协作能力。

4. 培养严谨的科学态度和良好的职业道德。

三、实习内容本次实习主要分为以下几个部分:1. MATLAB软件学习(1)MATLAB基础操作:了解MATLAB的界面、菜单、命令窗口、工作空间、函数库等。

(2)MATLAB编程基础:掌握MATLAB的数据类型、运算符、控制语句、函数、图形绘制等。

2. 测绘数据处理方法学习(1)坐标转换:学习地理坐标、平面坐标之间的转换方法。

(2)距离测量:掌握距离测量的原理和方法。

(3)角度测量:学习角度测量的原理和方法。

(4)地形分析:了解地形分析的基本原理和方法。

3. 实习项目本次实习项目为“基于MATLAB的测量数据处理与分析”。

具体内容包括:(1)数据导入:将野外实测数据导入MATLAB软件。

(2)坐标转换:将实测数据中的地理坐标转换为平面坐标。

(3)距离测量:计算各测点之间的距离。

(4)角度测量:计算各测点之间的角度。

(5)地形分析:分析地形起伏情况,绘制等高线图。

(6)结果输出:将处理后的数据和分析结果以图表形式输出。

四、实习过程1. 第一阶段:学习MATLAB软件,掌握基本操作和编程方法。

2. 第二阶段:学习测绘数据处理方法,了解坐标转换、距离测量、角度测量、地形分析等原理和方法。

3. 第三阶段:开始实习项目,完成数据导入、坐标转换、距离测量、角度测量、地形分析等工作。

4. 第四阶段:对实习项目进行总结,撰写实习报告。

五、实习成果1. 成功完成实习项目,掌握了测绘数据处理方法。

测绘程序设计实验报告word文档

测绘程序设计实验报告word文档

《测绘程序设计()》上机实验报告(Visual C++.Net)班级:学号:姓名:序号:二零一三年三月目录实验1 Visual Basic环境和程序设计初步 (1)总结 (5)实验2、控制结构程序设计(方位角计算、坐标转换、后方交会) (6)总结 (16)实验1 Visual C++.Net 环境和程序设计初步一、实验内容1. 启动与退出VC++.net ,熟悉VC++.net 的开发环境,通过向导生成基于对话框的应用程序。

使用MSDN 查看命令按钮、标签和文本框的主要属性和方法。

2. 打开Microsoft visual studio 2008 文档,浏览“Visual studio 文档”目录下的内容,并从“Visual studio 文档->Visual C++->示例”目录下下载一个程序,编译并运行之。

3. 设计一个已知三边边长计算三角形面积的程序。

计算模型如下:海伦公式:))()((c p b p a p p S ---=,其中2cb a p ++=二、设计思路1、首先,设计一个窗体,上面有三个静态框和三个文本框用于提示和输入三边a,b,c,还要有一个静态框加一个文本框用于输出面积,还要加三个命令按钮,用于计算,清除和退出;2、然后要对输入的三边进行判断是否合法(即是否可以组成三角形),用if 语句实现,不合法则清零;3、最后将海伦公式写成代码的形式即可。

三、界面设计如下:四、主要代码如下:#include<math.h>void CMy006Dlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码//判断输入是否有误并计算UpdateData(TRUE);if(a+b>c&&a+c>b&&b+c>a){double t;t=(a+b+c)/2;s=sqrt(t*(t-a)*(t-b)*(t-c));}else CMy006Dlg::OnBnClickedButton2();//输入的三边不能构成三角形时则清零UpdateData(FALSE);}void CMy006Dlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码//清除功能a=0;b=0;c=0;s=0;UpdateData(FALSE);}void CMy006Dlg::OnBnClickedButton3(){exit(0);//退出功能// TODO: 在此添加控件通知处理程序代码}五、运行结果如下:六、实验总结本次实验比较简单,主要是熟悉一下Virsual Studio 2008的MFC编程环境,了解编译MFC项目的整个流程。

测绘程序设计实习报告

测绘程序设计实习报告

测绘程序设计实习报告一、实习背景及目的随着科技的不断发展,测绘领域逐渐融入了越来越多的计算机技术,测绘程序设计成为了一项重要的工作。

本次实习旨在让我们了解测绘程序设计的基本流程,掌握测绘程序设计的方法和技巧,提高我们的实际操作能力。

二、实习内容及过程1. 实习内容本次实习主要分为以下几个部分:(1) 熟悉测绘程序设计的基本原理和流程;(2) 学习测绘程序设计的相关软件;(3) 参与实际测绘项目,进行程序设计和调试;(4) 撰写测绘程序设计实习报告。

2. 实习过程(1) 基本原理学习在实习开始阶段,我们首先学习了测绘程序设计的基本原理,包括测绘数据采集、数据处理、图形绘制等。

通过学习,我们了解了测绘程序设计的核心内容和方法。

(2) 软件学习为了更好地进行测绘程序设计,我们学习了AutoCAD、MapGIS、ArcGIS等软件。

这些软件为我们进行测绘程序设计提供了强大的支持,使我们能够更加高效地完成实习任务。

(3) 实际项目参与在掌握了基本原理和软件操作后,我们参与了实际的测绘项目。

项目中,我们负责进行数据处理、图形绘制等工作,通过实际操作,我们深入了解了测绘程序设计的具体应用。

(4) 实习报告撰写在实习结束后,我们根据实习过程中的经验和收获,撰写了测绘程序设计实习报告。

报告中,我们总结了实习过程中遇到的问题及解决方法,并对自己的实习成果进行了分析。

三、实习收获及体会通过本次实习,我们收获了以下几点:1. 掌握了测绘程序设计的基本原理和方法;2. 熟悉了测绘程序设计的相关软件,提高了实际操作能力;3. 了解了测绘程序设计在实际项目中的应用;4. 培养了团队协作能力和解决问题的能力。

同时,我们认识到测绘程序设计不仅需要理论知识,更需要实践操作。

在实习过程中,我们要善于发现问题、解决问题,不断提高自己的实际操作能力。

此外,我们还应注重学习最新的测绘技术和软件,紧跟科技发展的步伐,为我国的测绘事业做出贡献。

测绘工程程序设计方案

测绘工程程序设计方案一、前言随着科技的不断发展,测绘工程在土地规划、城市建设、环境保护等领域中起着越来越重要的作用。

测绘工程程序设计是一项系统性的工作,它的设计质量直接影响着测绘工程的完成质量和效率。

因此,本文将从测绘工程程序设计的背景和必要性出发,探讨测绘工程程序设计方案的内容和步骤,希望能够为相关工程人员提供一些指导和借鉴。

二、背景和必要性随着数字化技术的普及和应用,测绘工程的程序设计已成为测绘工程的基础和核心。

测绘工程程序设计的任务主要包括:数据采集、数据处理、数据分析、数据显示和数据管理等。

这些任务需要综合运用地理信息系统、遥感技术、全球卫星定位系统等多种技术手段。

通过程序设计,可以实现对地理信息的快速、准确、高效的处理和管理,从而为土地规划、城市建设、环境保护等工作提供支持。

测绘工程程序设计的必要性主要表现在以下几个方面:1. 提高测绘工程的工作效率。

通过程序设计,可以实现自动化、智能化数据处理和管理,大大提高了工作效率和准确度。

2. 降低测绘工程成本。

程序设计可以实现对数据的快速处理和管理,从而节约了人力、物力和财力。

3. 改善地理信息数据的使用效果。

通过程序设计,可以实现对地理信息数据的多种表达方式,从而提高了数据的使用效果和适用性。

4. 促进地理信息行业的发展。

测绘工程程序设计是地理信息行业的核心内容,通过程序设计的不断创新,可以促进地理信息行业的不断发展。

三、测绘工程程序设计方案的内容和步骤1. 内容测绘工程程序设计主要包括以下几个内容:(1)需求分析。

首先要明确测绘工程程序设计的具体需求,包括数据采集、数据处理、数据分析、数据显示和数据管理等方面的具体需求。

(2)程序设计。

根据需求分析的结果,确定测绘工程程序设计的具体方案和步骤,包括程序设计的基本框架、算法选择、接口设计、界面设计等内容。

(3)程序测试。

对设计好的程序进行测试,验证程序设计的正确性和稳定性。

(4)程序部署。

将测试通过的程序部署到实际工程中,进行实际应用和调试。

测绘程序实验报告

实验1 Visual C++.Net环境和程序设计初步1.掌握VC++.net 语言的基本语法;2.理解顺序结构、选择结构和循环结构程序设计的特点及应用;3.掌握对基于对话框的MFC 应用程序设计方法;4.掌握一些简单算法。

5.编写一个方位角计算程序。

提示:先使用反正切函数计算,然后利用坐标增量的符号来判断所在的象限。

设计思路:在按钮下面添加程序。

X Y同时大于0在第一象限,方位角等于arctan(y/x);X>0,Y<0在第二象限,方位角等于arctan(y/x)+90;X<0,Y<0在第三象限,方位角等于arctan(y/x)+180;X<0,Y>0在第四象限,方位角等于arctan(y/x)+270;界面设计:主要代码:// 0145110615 ymh 2.1Dlg.h : 头文件protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double x;double y;double Q;afx_msg void OnBnClickedOk();afx_msg void OnBnClickedCancel();afx_msg void OnBnClickedButton1();double A;};// 0145110615 ymh 2.1Dlg.cpp : 实现文件#include"stdafx.h"#include"0145110615 ymh 2.1.h"#include"0145110615 ymh 2.1Dlg.h"#include<math.h>#ifdef _DEBUG#define new DEBUG_NEW#endifvoid CMy0145110615ymh21Dlg::OnBnClickedOk()//计算{// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);if(x>0){if(y>0){Q=1;A=atan(y/x);}//x大于y大于在第一象限else{Q=4;A=atan(y/x)+270;}//x大于y小于在第四象限}else if(y>0){Q=2;A=atan(y/x)+90;}//x大于y小于在第二象限else{Q=3;A=atan(y/x)+180;}//x小于y小于在第三象限UpdateData(FALSE);//OnOK();}void CMy0145110615ymh21Dlg::OnBnClickedCancel()//清除{// TODO: 在此添加控件通知处理程序代码UpdateData(true);x=0;y=0;Q=0;A=0;UpdateData(false);}void CMy0145110615ymh21Dlg::OnBnClickedButton1()//退出{// TODO: 在此添加控件通知处理程序代码OnCancel();}运行结果:总结第一次做这个实验的时候真的觉得挺难得可是当我经过更难的实验的洗礼之后在返回来看它真是顿时亲切了许多,其实当时是对这个软件不了解简单的东西把它想得很复杂绕来绕去都不知道该怎么实现一些很简单的东西了。

测绘程序课程设计报告

测绘程序课程设计()班级: xxxxxxx 学号: xxxxxxx 姓名:xxxx 题目:XXXXXX二零一六年七月测绘程序课程设计报告第一部分导线网平差系统设计一、需求分析导线网平差程序功能要求:1•优化设计:根据控制网的观测精度与网形,全面评定网的精度2•数据输入:表格化输入、图形化输入、外部数据倒入3•概算:自动完成各方向的曲率改正及边长的高程归化与投影改化,近似坐标的推算等。

4•平差计算:对观测数据进行精密平差计算,得到平差后的点位坐标, 方向观测值,边长观测值等,精度评定。

5•成果输出:控制网图形输出,平差结果报表及其输出,绘制误差椭圆,打印输出等。

6•其它功能:粗差探测与剔除、方差分量估计、闭合差计算、坐标转换、换带计算等。

二、总体设计①设计七个类:Ccontrolpoint (控制点类):定义控制点坐标信息(测站编号,XY坐标)CDistObs(距离观测值类):距离观测值,测站编号,照准编号CAn gleObs(角度观测类):角度观测值,测站编号,照准编号CAngle (角度类):实现角度转换和加减功能CControlNetAdjust.h (导线网平差类)1,loadobsdata函数读取数据获取数值2,方向观测值误差方程的建立3,边长观测值误差方程的建立4,确定权5,建立法方程并计算坐标改正数dx,dy6,精度评定7,输出计算结果到.txt文件CMatrix (矩阵类)CDraw对话框绘图类)1,计算结果绘制导线网图形及坐标系2,绘制未知点误差椭圆3, 实现图形平移,缩放的功能②观测数据及其格式设计//自己测试的数据格式已知点个数点号,已知点坐标待测点个数点号观测边总数测站点号,照准点号,观测距离方向观测总数测站点号,照准点号,方向观测值//老师测试的数据格式(最终读取格式)Surveys:. NameRecord亡匚NameDate,加*F##Xletecro^7, TemperaTuie. Pressure, Humidity AngleAccuracy, No b幷3囲Tii eAccurac y.No. A. BStation Count,斗匕#END Header主数据俸:己知数堀:己知蚊据粪型悔识,己知救摇体Cam.PointMo, XA;HD ISL StartPo mtNo:E ndPointNo±昨Ans le T Siad onPciintNo, U 切o 严艺兰*现劃峻据起始标志拠站点号,观测值个数跟准点号,观测值类塑CD/AL 观测值,[取側迤精夏编号]三、详细设计控制网平差模型1、间接平差原理:设未知数个数为t,观测值个数为nV=Bxf-f二BXO+BO+L其中V为n行1列,B为n行t列,X为t行1列的矩阵根据最小二乘准则应在满足VTPV=min时确定未知参数x列出法方程:N bb?- f e = 0其中N bb = B T PBf e = B T Pf从而求出改正数?;2、精度评定2.1单位权中误差的计算中误差计篡;%匚二(¥^九为观测值亍数J t为未狂数个数2.2未知数协因数的计算采用了坐标平差法,实际上法方程系数矩阵的逆就是未知数的协因数阵。

测绘程序设计实习报告

测绘程序设计(VB)课间实习报告姓名:________________________________学号:________________________________班级:_1141502 __________________________2012年10月目录1实习目的 (3)2实习仪器与软件 (3)2.1 Visual Basic 6.0 (3)3实习要求 (4)4实习内容 (5)5实习步骤 (7)5.1坐标正反算 (7)5.2水准测量 (8)5.3导线计算 (12)5.4集成化设计 (15)6实习总结 (16)6.1实习问题总结 (16)6.2程序调试总结 (16)7附录............................................................ 错误!未定义书签。

7.1正算代码 (20)测绘程序设计实习报告1实习目的掌握Visual Basic(VB)程序设计的基本理论、方法和应用,掌握VB程序应用于测绘专业的程序开发,理解程序设计在测绘数据处理中的作用和地位,学会利用模块化程序设计的基本技术,掌握面向对象程序设计方法,应用测绘专业的基本技能,测绘专业模块程序包开发的基本方法,以及掌握一些最基本的知识,编程里面的英语以及函数有很多不知道,以至学习编程有点困难。

、对水准网观测高程间接平差理论内容的验证与应用。

通过学习掌握测绘软件开发过程与方法,初步具备测绘软件开发基本技能。

、实验原理和过程通过本学期对《测绘程序设计》课程的学习,编写一份综合性实验报告我选取的题目是利用vb语言进行编程。

熟悉程序设计任务书的基本内容,调查了解软件需求状况,进行需求分析,。

计算机的基础比较差,要想将编程学好得掌握更多的函数以及专用的编程语言,工程测量运用编程来计算是比较普遍的,运用编程的方面也比较多,因此努力去掌握一些基础非常重要,为学习后续课程和专业技术工作打下基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《测绘程序设计()》上机实验报告
(Visual C++.Net)
班级:
学号:
姓名:
序号:
2012-3-27
实验4 类的创建
一、实验目的
1. 掌握面向对象编程基本思想
2. 掌握 VC++.net 中创建类
3. 掌握建立和使用对象
4. 掌握运算符号重载
5. 理解类的继承和多态性
二、实验内容
1.设计一个角度类。

要求该类具有度分秒至度的换算、度至度分秒的换算、度与
弧度的换算等功能。

提示:设置一个角度大小属性,并设定该属性为缺省属性;
另设一个状态属性,表示当前设置的角度大小的形式;度分秒、度、弧度间的相
互转换的方法;定义运算符号(加、减)方法,使得角度类能够像一种普通的数
据类型样的方便使用。

2.用设计好的角度类重新编写后方交会定点程序。

实验步骤新建一个基于对话框的MFC文件,并在对话框中添加相应需要的
如下图所示:分为四个分组编辑框,并且在角度类型中使用combox
其中进行变量设置是其他的变量都是按照之前的设置为value double 型
而对于comble 则设置为
将添加一个DIALG类型与角度计算建立调用关系
并添加如下代码
添加C++类一个是进行角度转换计算的Angle 另一个是进行空间后方交会的Resection
对于Angle 须在头文件中添加如下代码
对于Resection的头文件中添加如下代码
实验过程中一定要记得添加头文件
对于角度计算的函数
并且添加相应代码如下所示
void AngleCompute::OnBnClickedButton1() {
UpdateData(TRUE);
if(State1==0||State2==0||State3==0)
AfxMessageBox(_T("请选择角度类型"));
else
{
Angle A;
A.Angleconverttoarc(State1,a1);
A.Angleconverttoarc(State2,b1);
Angle ca(a1),cb(b1),cs(s);
cs=ca+cb;
s1=cs.getval();
A.Angleconverttodegdms(State3,s1);
s=s1;
}
UpdateData(FALSE);
// TODO: 在此添加控件通知处理程序代码
}
void AngleCompute::OnBnClickedButton2() {
UpdateData(TRUE);
if(State1==0||State2==0||State3==0)
AfxMessageBox(_T("请选择角度类型"));
else
{
Angle A;
A.Angleconverttoarc(State1,a1);
A.Angleconverttoarc(State2,b1);
Angle ca(a1),cb(b1),cs(s1);
cs=ca-cb;
s1=cs.getval();
A.Angleconverttodegdms(State3,s1);
s=s1;
}
UpdateData(FALSE);
// TODO: 在此添加控件通知处理程序代码}
void AngleCompute::OnBnClickedOk()
{
a=0;b=0;s=0;
UpdateData(FALSE);
double Angle::convertdegtodms(double dDeg)//度转换成度分秒{
//用于存放度、分、秒三个值的变量
int iDegree, iMin;
double dSec,dDms;
//dDeg; //十进制角度(度),控件变量
//dDms;//度分秒格式角度,控件变量
double dTmp;//临时变量
iDegree = int(dDeg);//截取度
dTmp = (dDeg - iDegree) * 60;//把度的小数部分转换为分
iMin = int(dTmp);//截取分
dSec = (dTmp - iMin) * 60;//把分的小数部分转换为秒
dDms = iDegree + double(iMin) / 100 + dSec / 10000;//合并为度分秒形式
return dDms;
}
double Angle::convertdmstodeg(double dDms)//度分秒转换成度
{
//用于存放度、分、秒三个值的变量
int iDegree, iMin;
double dSec,dDeg;
//dDeg; //十进制角度(度),控件变量
//dDms;//度分秒格式角度,控件变量
//注意ceil和floor两个取整函数的使用
iDegree = int(dDms); //截取整数部分,即度
iMin = int((dDms - iDegree) * 100); //截取分
dSec = ((dDms - iDegree) * 100 - iMin) * 100;//获得秒
dDeg = iDegree + double(iMin) / 60 + dSec / 3600; //把分和秒转换成度,再相加
return dDeg;
}
double Angle::convertdegtoarc(double dDeg)//度转换成弧度{
double dArc;
dArc=dDeg*PI/180;
return dArc;
}
double Angle::convertarctodeg(double dArc)//弧度转换成度{
double dDeg;
dDeg=dArc*180/PI;
return dDeg;
}
Angle operator+(Angle &a,Angle &b)//友元函数加法重载
{
Angle t;
t.Val=a.Val+b.Val;
return t;
}
Angle operator-(Angle &a,Angle &b)//友元函数减法重载
{
Angle t;
t.Val=a.Val-b.Val;
return t;
}
double Angle::Angleconverttoarc(int State,double &angle)//度分秒和度转换成弧度
{
Angle A;
if(State==1)
{
angle=A.convertdmstodeg(angle);//度分秒转换成度
angle=A.convertdegtoarc(angle);//度转换成弧度}
else if(State==2)
{
angle=A.convertdegtoarc(angle);//度转换成弧度}
return 0;
}
double Angle::Angleconverttodegdms(int State,double &angle)//弧度转换成度或度分秒
{
Angle A;
if(State==1)
{
angle=A.convertarctodeg(angle);
angle=A.convertdegtodms(angle);
}
else if(State==2)
angle=A.convertarctodeg(angle);
return 0;
}
运行成果如下
总体的运行结果是这样的
实验结果本次试验比之前所做的实验的实验量都大好多,而且难度也又增加,试验时间缩短了,但是这个更加考验我们的能力,虽然这个让我们在实验的过程中觉得非常的紧张,但是真的试验结束后还是觉得收获颇丰,这个实验中要添加很多头文件很容易弄混,一点有一个错误就会很难修好,而且在实验的时候要添加主函数和子函数
的调用关系。

所以难度大大增加。

在本次试验中出现了一个错误让我一直都不知道怎么修改,
所以再找错的时候就增加了难度与工作量。

我觉得在这个时候可以问问别人,我问了同学,他一下就指出是这个函数相关的错误,我才发现是我在设置的时候设置错了y2的错误,所以就改变了。

但是幸好还是做完了,这其中有些是自己的独立完成的,还有的是通过同学的帮助,在实验过程还发现了一个很严重的问题,对于很多编程的只是不是很了解,所以还是要询问同学了,给我们敲响了警钟,以后一定要认真学习并谨记在心。

相关文档
最新文档