测量程序设计上机指导书_第1页
测量程序设计上机指导书_第2页
测量程序设计上机指导书_第3页
测量程序设计上机指导书_第4页
测量程序设计上机指导书_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

作者ZHANG测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系20110823测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系目录VISUALC60开发平台简介2MFC概述2实验1VC编程环境的熟悉4实验2测量典型函数设计6实验3误差椭圆元素计算7实验4水准网间接平差程序设计9实验5矩阵转置与求逆运算16实验6附合导线计算22测量程序设计实验教学大纲(09计划)221测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系VISUALC60开发平台简介VISUALC提供了一个支持可视化编程的集成开发环境VISUALSTUDIO又名DEVELOPERSTUDIO。DEVELOPERSTUDIO是一个通用的应用程序集成开发环境,它不仅支持VISUALC,还支持VISUALBASIC,VISUALJ,VISUALINTERDEV等MICROSOFT系列开发工具。DEVELOPERSTUDIO包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。使用DEVELOPERSTUDIO,可以完成创建、调试、修改应用程序等的各种操作。DEVELOPERSTUDIO采用标准的多窗口WINDOWS用户界面,并增加了一些新特性,使得开发环境更易于使用,用户很容易学会它的使用方法。由于DEVELOPERSTUDIO是一个可视化的开发工具,在介绍DEVELOPERSTUDIO的各个组成部分之前,首先了解一下可视化编程的概念。可视化技术是当前发展迅速并引人注目的技术之一,它的特点是把原来抽象的数字、表格、功能逻辑等用直观的图形、图象的形式表现出来。可视化编程是它的重要应用之一。所谓可视化编程,就是指在软件开发过程中,用直观的具有一定含义的图标按钮、图形化的对象取代原来手工的抽象的编辑、运行、浏览操作,软件开发过程表现为鼠标点击按钮和拖放图形化的对象以及指定对象的属性、行为的过程。这种可视化的编程方法易学易用,而且大大提高了工作效率。VISUALC的集成开发环境DEVELOPERSTUDIO提供了大量的实用工具以支持可视化编程特性,它们包括项目工作区、CLASSWIZARD、APPWIZARD、WIZARDBAR、COMPONENTGALLERY等。MFC概述MFC是一个编程框架。MFCMICROSOFTFOUNDATIONCLASSLIBRARY中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立WINDOWS下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。MICROSOFTVISUALC提供了相应的工具来完成这个工作APPWIZARD可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;CLASSWIZARD用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。1封装构成MFC框架的是MFC类库。MFC类库是C类库。这些类或者封装了WIN322测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等。2继承首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要的类是COBJECT和CCMDTARGET。COBJECT是MFC的根类,绝大多数MFC类是其派生的,包括CCMDTARGET。COBJECT实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。所有从COBJECT派生的类都将具备或者可以具备COBJECT所拥有的特性。CCMDTARGET通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCMDTARGET派生。针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。这些对象包括以下种类窗口对象,基类是CWND;应用程序对象,基类是CWINTHREAD;文档对象,基类是CDOCUMENT,等等。程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。3虚拟函数和动态约束MFC以“C”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWND封装WINDOWS窗口对象时,每一条WINDOWS消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。这样,通过虚拟函数和消息映射,MFC类提供了丰富的编程接口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程框架将在适当的时候、适当的地方来调用程序的代码。4MFC的宏观框架体系如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板,等等。这些模板都采用了以文档视为中心的思想,每一个模板都包含一组特定的类。为了支持对应用程序概念的封装,MFC内部必须作大量的工作。例如,为了实现消息映射机制,MFC编程框架必须要保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对DLL编程的支持和多线程编程的支持,MFC内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序。总之,MFC封装了WIN32API,OLEAPI,ODBCAPI等底层函数的功能,并提供更高一层的接口,简化了WINDOWS编程。同时,MFC支持对底层API的直接调用。MFC提供了一个WINDOWS应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序3测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系员的代码来处理应用程序特定的事件。MFC是C类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。实验1VC编程环境的熟悉一、二、三、四、实验名称VC编程环境的熟悉实验目的熟悉VC60编程环境与MFC程序框架。实验任务基于单文档、多文档,基于对话框等MFC应用程序框架的流程;MFC生成的数据处理类。实验要求1每人独立完成MFC框架程序的建立;五、实验内容参考建立一个MFC应用程序框架启动VISUALC60主程序如下点FILENEWPROJECT,选择MFCAPPWIZARDEXE,工程名字自己输入ADJUST,如下4测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系点击OK,出现下面界面选择“SINGLEDOCUMENT”,点击“FINISH”,出现下面界面5测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系点击“OK”按钮,出现下面界面选择面板下面的“CLASSVIEW”,可以查看MFC自动生成的类,点击“RESOURCEVIEW”,可以增加菜单、对话框等,点击“FILEVIEW”,可以看到MFC生成的每一个类对应的“H”和“CPP”文件。实验2测量典型函数设计一、二、三、实验名称测量典型函数设计实验目的掌握常用角弧度互化函数设计与实现。实验任务设计数据处理类,编写角弧互化函数,设计函数类型与返回值,设计带参数的函数。6测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系四、五、实验要求每人独立完成角弧度互化程序编写与调试;实验内容参考1、角度化弧度的例程函数(此代码会有异常)DEFINEPI31415926535897932DOUBLERADIO_TO_ANGLEDOUBLEALFADOUBLEALFA1,ALFA2DOUBLEALFA3,ALFA4ALFAALFA180/PI/化为角度值ALFA1FLOORALFA/整度ALFA2FLOORALFAALFA160/整分ALFA3ALFAALFA160ALFA260/剩余的秒ALFA4ALFA1ALFA2/100ALFA3/10000RETURNALFA42、弧度化角度的例程函数(此代码会有异常)DEFINEPI31415926535897932DOUBLEANGLE_TO_RADIODOUBLEALFADOUBLEALFA1,ALFA2,ALFA3,ALFA4ALFA1FLOORALFA/整度ALFA2FLOORALFAFLOORALFA100/整分ALFA3ALFA100FLOORALFA100100/整秒ALFA4ALFA1ALFA2/60ALFA3/3600RETURNALFA4/180PI以上两个程序存在漏洞,需要进一步完善实验3误差椭圆元素计算一、二、三、实验名称误差椭圆元素计算。实验目的和任务掌握误差椭圆和相对误差椭圆元素的计算公式,并采用C或者C语言变成实现。实验要求1234每人独立编写出误差椭圆和相对误差椭圆元素的计算程序,并调试通过;采用VC60开发平台,C或者C语言编写程序;写出计算的结果。本实验属于综合性,设计性实验,对学生的要求比较高,会综合使用矩阵加法,乘法以及转置和求逆的程序。7KQXXQYY24QXY测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系5注意事项坐标方位角计算时必须考虑X与Y所在的象限。四、实验内容参考教材测量平差P103P112。具体的例子可以参考P111页的例题,进行程序的调试。一误差椭圆元素计算公式2QEE12QXXQYYKQFF12QXXQYYKE0QEEF0QFFTGETGFQEEQXXQXYQFFQXXQXY二相对误差椭圆元素计算公式QXXQX1X1QX2X22QX1X2QYYQY1Y1QY2Y22QY1Y2QXYQX1Y1QX2Y2QX1Y2QX2Y1KQXXQYY24Q2XYQEE12QXXQYYKQFF12QXXQYYKE0QEEF0QFFTGETGFQEEQXXQXYQFFQXXQXY800002QQ2221测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系五、例子(P111)在某三角网中插入P1及P2两个新点。设用间接平差法平差。平差之后这两点之间的协因数阵如下QXX000160001000005000020002400006000080001000006000210000300005000080000300024Q11Q12Q31Q32Q41Q42Q13Q23Q33Q43Q14Q24Q34Q44根据以上的公式,分别计算出未知点P1和P2的误差椭圆元素以及这两点之间的相对误差椭圆元素。实验4水准网间接平差程序设计一、二、三、四、1实验名称水准网间接平差程序设计实验目的掌握用间接平差法对任意网形的水准网进行平差的算法设计以及程序编制;并学习采用读文件处理数据的方法,并设计水准数据处理类。实验任务用C/C编写水准网间接平差程序,并调试通过,用实测数据实算分析;同时评定精度。实验要求个人独立编写程序,原始数据存放于文本文件或者数据库文件中;2程序应该具有通用性,即任意网形都可以平差;3用实测的数据进行计算分析。4评定待定点的高程精度。五、实验内容12数据文件的编制格式总点数未知点数测段数(观测高差的个数)已知点1点名高程已知点2点名高程未知点3点名0未知点4点名0未知点5点名0。起点点号终点点号观测高差路线长度KM起点点号终点点号观测高差路线长度KM起点点号终点点号观测高差路线长度KM。平差原理由观测值的起始和终点号或者水准网网形,形成误差方程的系数矩阵B也叫设计矩阵,由观测的路线长度形成观测高差的权阵P观测值9测量程序设计上机指导书独立,P为对角阵,原理如下辽宁工程技术大学测绘与地理科学学院测绘工程系PICSIC为任意常数VBXLNBBBTPBWBTPLXNBB1W3法方程系数矩阵与闭合差的自动累加由于N和W具有可加性,即每读取一个高差观测值,即可得到一个误差方程的系数向量,然后累加到法方程系数矩阵与闭合差中;当高差观测值读取完毕的时候,法方程系数矩阵与闭合差也累加完毕;此时可用公式直接计算待定点高程的改正数,加上高程近似值,就得到了高程的平差值。4精度评定验后单位权中误差0VTPVNT待定点高程未知参数的协因数阵QXXNBB1待定点高程的方差DXX02QXX改正数V的协因数阵QVVQBNBB1BT高差平差值的协因数阵QLLBNBB1BT5例子1(P79)(1)INTXT文件4351A2374832B003C004D001223134314583537829640738422703527403025(2)源程序(部分代码有漏洞)/GCKZWPCH头文件代码CLASSCGCKZWPCPUBLICCGCKZWPCVIRTUALCGCKZWPC10测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系PUBLICBOOLREADDATACSTRINGFILENAME/读水准网平差数据文件VOIDPC/平差函数VOIDJDPD/精度评定函数INTINVGJDOUBLEA,INTN/求逆函数INTNZ,NW,NE,NN/文件头信息总点数,未知点数,已知点数,测段数INTN120,N220/存放高差起点与终点的点号DOUBLEH50,H50,W20,X20,B5020,V50,VPVDOUBLENBB,S50,L50,P50,PH50CSTRINGDM20/控制点点名DOUBLESIG0,DX2020/GCKZWPCCPP代码BOOLCGCKZWPCREADDATACSTRINGFILENAMEINTIINTMAXLINE512CHARBUFF513,CH115CSTDIOFILEFPIFFPOPENFILENAME,CFILEMODEREAD|CFILETYPETEXT,NULLAFXGETAPPM_PMAINWNDMESSAGEBOX“数据文件不存在或数据文件错“,“进程“,MB_OK|MB_ICONSTOP_EXIT1RETURNFALSEFPREADSTRINGBUFF,MAXLINESSCANFBUFF,“DDD“,NENZNWINTDHDOUBLEGCFORI0INEBIN1INE11IFN2INEBIN2INE11PI1/SILIHN1I1HIHN2I1FORI0IDDPISKIJSKJIFD1010FREEISFREEJSPRINTF“ERRORNOTINVN“RETURN0IFISKKFORJ0J0KIFJSKKFORJ0JDDPISKIJSKJIFD1010FREEISFREEJSPRINTF“ERRORNOTINVN“RETURN0IFISKKFORJ0J0K19测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系IFJSKKFORJ0JINCLUDEINCLUDEINTINVGJDOUBLEA,INTNVOIDMAININTI,JDOUBLEAA/首先对二维指针NAA分配内存,采用C语言的方法/AADOUBLEMALLOCSIZEOFDOUBLE2FORI0I2IAAIDOUBLEMALLOSIZEOFDOUBLE2/首先对二维指针NAA分配内存,采用C语言的方法AANEWDOUBLE2FORI0I2IAAINEWDOUBLE2DOUBLEBB221,2,3,420测量程序设计上机指导书辽宁工程技术大学测绘与地理科学学院测绘工程系FORI0I2IFORJ0J2JAAIJBBIJ/调用矩阵求逆函数INVGJAA,2PRINTF“矩阵AA的逆阵如下N“FORI0I2IFORJ0J2JPRINTF“104LF“,AAIJPRINTF“N“DOUBLECC22PRINTF“AA与其逆阵的乘积如下理论上是单位阵N“FORI0I2IFORJ0J2JCCIJ00FORINTK0K2KCCIJAAIKBBKJPRINTF“104LF“,CCIJPRINTF“N“/C语言释放AA二维指针的方法/FORI0I2IFREEAAIFREEAA/C语言释放AA二维

温馨提示

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

评论

0/150

提交评论