解析交会及附合导线C++程序设计实习报告.docx
- 文档编号:13517544
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:15
- 大小:32.32KB
解析交会及附合导线C++程序设计实习报告.docx
《解析交会及附合导线C++程序设计实习报告.docx》由会员分享,可在线阅读,更多相关《解析交会及附合导线C++程序设计实习报告.docx(15页珍藏版)》请在冰点文库上搜索。
解析交会及附合导线C++程序设计实习报告
测量程序设计
实习报告
目 录
一、 实习目的 …………………………………………… 3
二、 实习任务 …………………………………………… 3
三、 实习时间、地点、指导老师 ……………………… 3
四、 实习过程 …………………………………………… 3
五、 实习中主要技术问题及处理方法 ………………… 6
六、 实习收获及感想 …………………………………… 9
七、 意见及建议 ………………………………………… 9
2
一、 实习目的
在实践中综合应用第一学年中课堂所学的计算机知识,以期能够熟练掌握基本编程语
法、程序设计思想,为后续课程打下基础。
1.深入理解面向对象编程思想,理解对象的封装、继承及多态的含义;
2.掌握一门高级编程语言(可选VC++,Borland C++Builder,Visual Basic或Delphi)
和程序调试一般方法和技巧,熟练运用集成编程环境的基本功能,了解编程帮助系统;
3.掌握基本的类模块设计与实现、数据结构、数据文件读写、人机界面设计等;
4.综合运用所学数学和专业相关知识,设计并实现若干个类;
5.养成良好的编程风格。
二、 实习任务
1. 根据面向对象思想完成角度处理类模块
2. 根据面向对象思想完成解析交会点位坐标计算类模块
3. 根据面向对象思想完成附合导线近似坐标计算类模块
4. 测量程序设计
三、 实习时间、地点、指导老师
时间:
2013年7月6日~7月15日
地点:
犀浦校区X4245机房
指导老师:
黄泽纯
四、 实习过程
7月6日~7日
1. 了解面向对象程序设计思想
3
1) 类的基本概念;
2) 类的成员函数添加、定义方法;
3) 访问对象成员方法。
2. 编写角度处理类函数代码
1) 建立角度处理类 命名 DegSwitch;
2) 角度值转换成度分秒函数 命名 Deg_DMS;
3) 度分秒转换成角度值函数 命名 DMS_Deg;
4) 角度值转换成弧度值函数 命名 Deg_Rad;
5) 弧度值转换成角度值函数 命名 Rad_Deg;
6) 弧度值转换成度分秒函数 命名 Rad_DMS;
7) 度分秒转换成弧度值函数 命名 DMS_Rad;
8) 坐标方位角反算函数 命名 C_A。
3. 角度处理类函数调用、算法检查及修改
1) 函数调用方法:
指针;
2) 主函数中选择调用函数关键语句:
switch语句。
4. 调试技巧应用
7月8日
1.编写解析交会点位坐标类函数代码
1) 建立解析交会点位坐标类 命名 Coordinate;
2) 函数中涉及三角函数计算,应用预处理命令装入cmath头文件,并注意三角函数计
算中所用角度值为弧度制下数值;
3) 坐标正算函数 命名 C1SA_C2;
4) 坐标反算函数 命名 C1C2_SA
计算坐标方位角可调用角度处理类中坐标方位角反算函数;
5) 前方交会函数 命名 C1C2A1A2_P;
6) 后方交会函数 命名 C1C2C3_P。
2.解析交会点位坐标类函数调用、算法检查及修改
1) 函数调用方法:
指针;
2) 主函数中选择调用函数关键语句:
switch语句;
3) 输入角度为度分秒格式,需调用角度处理类中函数将其转换为弧度值后再进行计
算。
3.学习了解C语言中读写文件方式、语法格式
7月9日~10日
1.附合导线近似坐标计算问题分析、算法设计
2.编写附合导线近似坐标计算类函数代码
1) 建立附合导线近似坐标计算类 命名 LineCalculation;
2) 角度转换、总边长、原始坐标增量计算函数 命名Start
对输入的度分秒制的角度值可调用角度处理类中函数进行转换,计算得到总边长和
原始坐标增量将在随后的坐标增量及改正后坐标增量计算函数中使用;
3) 角度闭合差计算函数 命名 Angle_M;
4) 角度闭合差调整函数 命名 Angle_A;
5) 坐标方位角计算函数 命名 C_Angle;
4
6) 坐标增量计算函数 命名 Coordinate_M
坐标增量计算过程中需用到三角函数,应用预处理命令装入cmath头文件,并注意
三角函数计算中所用角度值为弧度制下数值;
7) 改正后坐标增量计算函数 命名 Coordinate_A;
8) 各点坐标计算函数 命名 Coordinate;
3.附合导线近似坐标计算类函数调用、算法检查及修改
1) 读原始数据文件
需要判断观测角是左角还是右角,以在随后采取正确的角度闭合差分配方式;
2) 函数调用方法:
指针;
3) 计算后得到调整后角度、坐标方位角等需调用角度处理类中函数将其转换为度分
秒制,便于检查;
4) 写结果文件。
7月11日
1.学习Windows窗体程序(CLR)的创建及设计
1) MFC与CLR的区别;
2) 创建Windows窗体程序(CLR);
3) 添加菜单、控件,对菜单、控件的编辑及使用
a. 菜单的创建、命名、分栏
b. 控件Button、Label、TextBox的添加、属性设置及使用;
4) 添加、显示新窗体
a. 添加新窗体
b. 设置在原窗体中进行一定操作后显示新窗体。
2.练习Windows窗体程序创建及设计。
7月12日~13日
创建、设计Windows窗体测量程序
1) 创建Windows窗体测量程序;
2) 添加控件;
3) 添加角度转换窗体;
4) 添加解析交会窗体;
5) 编辑、设置测量程序窗体中控件功能;
6) 在角度转换窗体中添加控件并设置其功能;
7) 添加角度处理类模块,实现处理角度转换窗体中数据的功能,并将结果传递显示
在角度转换窗体中;
8) 在解析交会窗体中添加控件并设置其功能;
9) 添加解析交会点位坐标类模块,实现处理解析交会窗体中数据的功能,并将结果
传递显示在解析交会窗体中;
10)运行检测测量程序。
7月14日~15日
实习总结,撰写实习报告。
5
五、 实习中主要技术问题及处理方法
1. 问题:
函数如何返回多个数值
处理方法:
1)指针传递
Eg:
角度转换成度分秒函数将度分秒的值传回主函数(3个返回值)
void DegSwitch:
:
Deg_DMS(double Deg,int*a,int*b,int*c)
{int DMS_D=(int)Deg;
*a=DMS_D;
double DMS_M1=(Deg-DMS_D)*60;
int DMS_M=(int)DMS_M1;
*b=DMS_M;
int DMS_S=int((DMS_M1-DMS_M)*60);
*c=DMS_S;
}
2)调用数组
Eg:
附合导线坐标方位角计算函数将计算所得方位角值传回主函数(多个返
回值)
void LineCalculation:
:
C_Angle(double ang[],double cang[],int n,int
b,double sc_ang)
{cang[0]=sc_ang+b*(PI-ang[0]);
if(cang[0]<0) cang[0]=cang[0]+2*PI;
if(cang[0]>2*PI) cang[0]=cang[0]-2*PI;
for(int i=1;i {cang[i]=cang[i-1]+b*(PI-ang[i]); if(cang[i]<0) cang[i]=cang[i]+2*PI; if(cang[i]>2*PI) cang[i]=cang[i]-2*PI;} } 2. 问题: 如何访问类的对象成员 处理方法: 在预处理命令中装入相应类的头文件,再通过指针访问对象成员 Eg: 检查角度处理类算法时,在主函数中调用类中函数 #include"DegSwitch.h" ………… DegSwitch *D1=new DegSwitch(); D1->Deg_DMS(Deg,&(*a),&(*b),&*(c)); ………… result=D1->Deg_Rad(Deg); ………… 3. 问题: 不同的类之间可否相互调用成员函数 处理方法: 可以;在预处理命令中装入相应类的头文件,再通过指针访问对象成员 4. 问题: 录入的多个以度分秒表示的角度如何批量存放、处理 处理方法: 放入二维数组中储存、处理 Eg: 在主函数中定义一个数组存放录入的附合导线观测角值 6 int A[N][3] …… 其中,A[i][0]、A[i][1]、A[i][2]中分别存放第i+1个观测角的度、 分、秒位上的数值 5. 问题: 附合导线近似计算类中,最初录入的度分秒形式的角度值无法直接进行运算, 如何准确计算和分配角度闭合差、算出坐标方位角,并根据坐标方位角正确计算坐标 增量 处理方法: 1)根据不同计算需求将角度转换成以秒为单位或以弧度为单位数据 度分秒形式 的角度值 进行角度转换 以秒为单位 角度值 进行角度转换 度分秒形式 的角度值 得到并输出度分秒形 式的调整后观测角值 和坐标方位角 进行角度闭合差的计算与 分配,根据调整后的观测 角值计算坐标方位角 进行角度转换 弧度形式的 角度值 以弧度形式的坐标方 位角值运用三角函数 计算坐标增量 2)对角度闭合差的分配: 先将闭合差平均分配到每一个观测角中,若有余 数,再将余数平均分配到最小边对应点两个观测角中 实现以上处理的对应代码: …… //度分秒形式角度值转换成以秒为单位角度值 DegSwitch *m=new DegSwitch(); for(i=0;i ang[i]=m->DMS_s(A[i][0],A[i][1],A[i][2]); …… //对角度闭合差的分配 int ff=f_a/n*b; for(int i=0;i ang[i]=ang[i]+ff; int m=0,f1=0,f2=0; for(int j=1;j if(S[j]<=S[m]) m=j; if((f_a%n)! =0) 7 if((f_a/n)%2! =0) {f1=(f_a%n)/2; f2=f1+1;} else {f1=(f_a%n)/2; f2=f1;} ang[m]=ang[m]+f1*b; ang[m+1]=ang[m+1]+f2*b; …… //以秒为单位角度值转换成弧度值计算坐标增量 DegSwitch *q=new DegSwitch; for(i=0;i cang2[i]=q->DMS_Rad(0,0,cang[i]); …… double xs=0,ys=0; for(i=0;i {Ccoo[i][0]=S[i]*cos(cang[i]); Ccoo[i][1]=S[i]*sin(cang[i]); xs=xs+Ccoo[i][0]; ys=ys+Ccoo[i][1]; } *dx=xs-x; *dy=ys-y; …… //得到并输出度分秒形式的调整后观测角值和坐标方位角
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 解析 交会 导线 C+ 程序设计 实习 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)