测绘程序设计实验4类的创建_第1页
测绘程序设计实验4类的创建_第2页
测绘程序设计实验4类的创建_第3页
测绘程序设计实验4类的创建_第4页
测绘程序设计实验4类的创建_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、测绘程序设计(VC.net)上机实验报告(Visual C+.Net)班 级: 学 号: 姓 名: 序 号: 2012-3-271 / 14实验4 类的创建一、实验目的1. 掌握面向对象编程基本思想2. 掌握 VC+.net 中创建类3. 掌握建立和使用对象4. 掌握运算符号重载5. 理解类的继承和多态性二、实验内容1.设计一个角度类。要求该类具有度分秒至度的换算、度至度分秒的换算、度与弧度的换算等功能。提示:设置一个角度大小属性,并设定该属性为缺省属性;另设一个状态属性,表示当前设置的角度大小的形式;度分秒、度、弧度间的相互转换的方法;定义运算符号(加、减)方法,使得角度类能够像一种普通的数

2、据类型样的方便使用。2.用设计好的角度类重新编写后方交会定点程序。实验步骤 新建一个基于对话框的MFC文件,并在对话框中添加相应需要的如下图所示:分为四个分组编辑框,并且在角度类型中使用combox其中进行变量设置是其他的变量都是按照之前的设置为 value double型而对于comble 则设置为将添加一个DIALG类型 与角度计算建立调用关系并添加如下代码添加C+类一个是进行角度转换计算的Angle 另一个是进行空间后方交会的Resection对于Angle 须在头文件中添加如下代码对于Resection的头文件中添加如下代码实验过程中一定要记得添加头文件对于角度计算的函数并且添加相应代

3、码 如下所示void AngleCompute:OnBnClickedButton1()UpdateData(TRUE);if(State1=0|State2=0|State3=0) AfxMessageBox(_T(请选择角度类型);elsedouble a1=a;double b1=b;double s1=s;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

4、(State3,s1); s=s1;UpdateData(FALSE);/ TODO: 在此添加控件通知处理程序代码void AngleCompute:OnBnClickedButton2()UpdateData(TRUE);if(State1=0|State2=0|State3=0) AfxMessageBox(_T(请选择角度类型);elsedouble a1=a;double b1=b;double s1=s;Angle A;A.Angleconverttoarc(State1,a1);A.Angleconverttoarc(State2,b1);Angle ca(a1),cb(b1),

5、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;

6、/度分秒格式角度,控件变量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 iDeg

7、ree, 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:conve

8、rtdegtoarc(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.V

9、al-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 &an

10、gle)/弧度转换成度或度分秒Angle A;if(State=1)angle=A.convertarctodeg(angle);angle=A.convertdegtodms(angle);else if(State=2)angle=A.convertarctodeg(angle);return 0;运行成果如下总体的运行结果是这样的实验结果 本次试验比之前所做的实验的实验量都大好多,而且难度也又增加,试验时间缩短了,但是这个更加考验我们的能力,虽然这个让我们在实验的过程中觉得非常的紧张,但是真的试验结束后还是觉得收获颇丰,这个实验中要添加很多头文件很容易弄混,一点有一个错误就会很难修好,而且在实验的时候要添加主函数和子函数的调用关系。所以难度大大增加。在本次试验中出现了一个错误让我一直都不知道怎么修改,所以再找错的时候就增加了难度与工作量。我觉得在这个时候可以问问别人,我问了同学,他一下就指出是这个函数相关的错误,我才发现是我在设置的时候设置错了y2的错误,所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论