《测绘程序设计(VC.net)》 上机实验报告 (Visual C++.Net) 班 级: 学 号: 姓 名: 序 号: 二零一一年五月 实验8 平差程序设计基础 1. 实验目的: 1.1 巩固过程的定义与调用; 1.2 巩固类的创建于使用; 1.3 巩固间接平差模型与平差计算; 1.4 掌握平差程序设计的基本技巧与步骤。 2. 实验内容: 水准网平差程序设计。设计一个水准网平差的程序,要求数据从文件中读取。 计算部分也界面无关。 3. 设计思路: 在本次的实验中,我着重想表现的是一种面向对象的编程思想。于是,在程序中我设计了4个类:CPoint、CObserve、CMatrix、Leveling,分别定义点的属性、观测数据属性、矩阵和水准网平差计算的属性与方法。 水准网平差计算一般步骤为: (1)读取观测数据和已知数据; (2)计算未知点高程近似值; (3)列高差观测值误差方程; (4)根据水准路线长度计算高差观测值的权; (5)组成法方程; (6)解法方程,求得未知点高程改正数及平差后高程值; (7)求高差观测值残差及平差后高差观测值; (8)精度评定; (9)输出平差结果。 水准网高程近似值计算算法 4. 界面设计: 仅添加了一个 button按钮,单击后读取数据,并进行水准网平差计算,计算结果保存在记事本中 5. 主要代码: 文件一: CPoint.h 代码: class ControlPoint { public: ControlPoint(void){}; ~ControlPoint(void){}; public: CString pointID; //点号 double H; //高程 }; class CObserve { public: CObserve(void){}; ~CObserve(void){}; public: ControlPoint *pStartObs; //后视点 ControlPoint *pEndObs; //前视点 double h; //路线长度 double dDist; //高差 }; 文件二:Leveling.h 代码: #pragma once #include "CPoint.h" #include "Matrix.h" class Leveling { public: Leveling(void); ~Leveling(void); private: ControlPoint *m_pKnownPoint; //已知点数组 int m_iKnownPointCount; //已知点个数 ControlPoint *m_pUnknownPoint; //待测点数组 int m_iUnknownPointCount; //待测点个数 CObserve *m_pObsData; //观测数据数组 int m_iObsDataCount; //观测数据个数 public: bool LoadData(const CString &FileName); //从文件中导入数据 void OutMatrixToFile(const CMatrix& mat,CStdioFile& SF); //把矩阵输出到文件中 void SetKo...