解析交會及附合導(dǎo)線C++程序設(shè)計(jì)實(shí)習(xí)報(bào)告_第1頁
解析交會及附合導(dǎo)線C++程序設(shè)計(jì)實(shí)習(xí)報(bào)告_第2頁
解析交會及附合導(dǎo)線C++程序設(shè)計(jì)實(shí)習(xí)報(bào)告_第3頁
解析交會及附合導(dǎo)線C++程序設(shè)計(jì)實(shí)習(xí)報(bào)告_第4頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、測量程序設(shè)計(jì)實(shí)習(xí)報(bào)告目 錄33336992一、 實(shí)習(xí)目的在實(shí)踐中綜合應(yīng)用第一學(xué)年中課堂所學(xué)的計(jì)算機(jī)知識,以期能夠熟練掌握基本編程語法、程序設(shè)計(jì)思想,為后續(xù)課程打下基礎(chǔ)。1深入理解面向?qū)ο缶幊趟枷?,理解對象的封裝、繼承及多態(tài)的含義;2掌握一門高級編程語言(可選VC+ ,Borland C+Builder , Visual Basic 或 Delphi )和程序調(diào)試一般方法和技巧,熟練運(yùn)用集成編程環(huán)境的基本功能,了解編程幫助系統(tǒng);3掌握基本的類模塊設(shè)計(jì)與實(shí)現(xiàn)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)文件讀寫、人機(jī)界面設(shè)計(jì)等;4綜合運(yùn)用所學(xué)數(shù)學(xué)和專業(yè)相關(guān)知識,設(shè)計(jì)并實(shí)現(xiàn)若干個類;5養(yǎng)成良好的編程風(fēng)格。二、 實(shí)習(xí)任務(wù)1 根據(jù)面

2、向?qū)ο笏枷胪瓿山嵌忍幚眍惸K2 根據(jù)面向?qū)ο笏枷胪瓿山馕鼋粫c(diǎn)位坐標(biāo)計(jì)算類模塊3 根據(jù)面向?qū)ο笏枷胪瓿筛胶蠈?dǎo)線近似坐標(biāo)計(jì)算類模塊4 測量程序設(shè)計(jì)三、 實(shí)習(xí)時間、地點(diǎn)、指導(dǎo)老師時間:2013年7月 6日7月 15日地點(diǎn):犀浦校區(qū) X4245 機(jī)房指導(dǎo)老師:黃澤純四、 實(shí)習(xí)過程7月6日7日1 了解面向?qū)ο蟪绦蛟O(shè)計(jì)思想31) 類的基本概念;2) 類的成員函數(shù)添加、定義方法;3) 訪問對象成員方法。2 編寫角度處理類函數(shù)代碼1) 建立角度處理類命名 DegSwitch ;2) 角度值轉(zhuǎn)換成度分秒函數(shù)命名 Deg_DMS ;3) 度分秒轉(zhuǎn)換成角度值函數(shù)命名 DMS_Deg ;4) 角度值轉(zhuǎn)換成弧度值函數(shù)

3、命名 Deg_Rad;5) 弧度值轉(zhuǎn)換成角度值函數(shù)命名 Rad_Deg;6) 弧度值轉(zhuǎn)換成度分秒函數(shù)命名 Rad_DMS ;7) 度分秒轉(zhuǎn)換成弧度值函數(shù)命名 DMS_Rad ;8) 坐標(biāo)方位角反算函數(shù)命名C_A 。3 角度處理類函數(shù)調(diào)用、算法檢查及修改1) 函數(shù)調(diào)用方法:指針;2) 主函數(shù)中選擇調(diào)用函數(shù)關(guān)鍵語句:switch 語句。4 調(diào)試技巧應(yīng)用7月8日1. 編寫解析交會點(diǎn)位坐標(biāo)類函數(shù)代碼1) 建立解析交會點(diǎn)位坐標(biāo)類命名Coordinate;2) 函數(shù)中涉及三角函數(shù)計(jì)算,應(yīng)用預(yù)處理命令裝入cmath 頭文件,并注意三角函數(shù)計(jì)算中所用角度值為弧度制下數(shù)值;3) 坐標(biāo)正算函數(shù)命名C1SA_C2;

4、4) 坐標(biāo)反算函數(shù)命名C1C2_SA計(jì)算坐標(biāo)方位角可調(diào)用角度處理類中坐標(biāo)方位角反算函數(shù);5) 前方交會函數(shù)命名C1C2A1A2_;P6) 后方交會函數(shù)命名C1C2C3_P。2. 解析交會點(diǎn)位坐標(biāo)類函數(shù)調(diào)用、算法檢查及修改1) 函數(shù)調(diào)用方法:指針;2) 主函數(shù)中選擇調(diào)用函數(shù)關(guān)鍵語句:switch 語句;3) 輸入角度為度分秒格式,需調(diào)用角度處理類中函數(shù)將其轉(zhuǎn)換為弧度值后再進(jìn)行計(jì)算。3. 學(xué)習(xí)了解 C 語言中讀寫文件方式、語法格式7月9日10日1. 附合導(dǎo)線近似坐標(biāo)計(jì)算問題分析、算法設(shè)計(jì)2. 編寫附合導(dǎo)線近似坐標(biāo)計(jì)算類函數(shù)代碼1) 建立附合導(dǎo)線近似坐標(biāo)計(jì)算類命名LineCalculation ;2

5、) 角度轉(zhuǎn)換、總邊長、原始坐標(biāo)增量計(jì)算函數(shù)命名 Start對輸入的度分秒制的角度值可調(diào)用角度處理類中函數(shù)進(jìn)行轉(zhuǎn)換,計(jì)算得到總邊長和原始坐標(biāo)增量將在隨后的坐標(biāo)增量及改正后坐標(biāo)增量計(jì)算函數(shù)中使用;3) 角度閉合差計(jì)算函數(shù)命名Angle_M;4) 角度閉合差調(diào)整函數(shù)命名Angle_A;5) 坐標(biāo)方位角計(jì)算函數(shù)命名C_Angle;46) 坐標(biāo)增量計(jì)算函數(shù)命名Coordinate_M坐標(biāo)增量計(jì)算過程中需用到三角函數(shù),應(yīng)用預(yù)處理命令裝入cmath 頭文件,并注意三角函數(shù)計(jì)算中所用角度值為弧度制下數(shù)值;7) 改正后坐標(biāo)增量計(jì)算函數(shù)命名Coordinate_A ;8) 各點(diǎn)坐標(biāo)計(jì)算函數(shù)命名Coordinate

6、 ;3. 附合導(dǎo)線近似坐標(biāo)計(jì)算類函數(shù)調(diào)用、算法檢查及修改1) 讀原始數(shù)據(jù)文件需要判斷觀測角是左角還是右角,以在隨后采取正確的角度閉合差分配方式;2) 函數(shù)調(diào)用方法:指針;3) 計(jì)算后得到調(diào)整后角度、坐標(biāo)方位角等需調(diào)用角度處理類中函數(shù)將其轉(zhuǎn)換為度分秒制,便于檢查;4) 寫結(jié)果文件。7月11日1. 學(xué)習(xí) Windows 窗體程序( CLR )的創(chuàng)建及設(shè)計(jì)1) MFC 與 CLR 的區(qū)別;2) 創(chuàng)建 Windows窗體程序( CLR);3) 添加菜單、控件,對菜單、控件的編輯及使用a. 菜單的創(chuàng)建、命名、分欄b. 控件 Button 、 Label 、TextBox 的添加、屬性設(shè)置及使用;4) 添

7、加、顯示新窗體a. 添加新窗體b. 設(shè)置在原窗體中進(jìn)行一定操作后顯示新窗體。2. 練習(xí) Windows 窗體程序創(chuàng)建及設(shè)計(jì)。7 月 12 日13日創(chuàng)建、設(shè)計(jì)Windows 窗體測量程序1) 創(chuàng)建 Windows 窗體測量程序;2) 添加控件;3) 添加角度轉(zhuǎn)換窗體;4) 添加解析交會窗體;5) 編輯、設(shè)置測量程序窗體中控件功能;6) 在角度轉(zhuǎn)換窗體中添加控件并設(shè)置其功能;7) 添加角度處理類模塊,實(shí)現(xiàn)處理角度轉(zhuǎn)換窗體中數(shù)據(jù)的功能,并將結(jié)果傳遞顯示在角度轉(zhuǎn)換窗體中;8) 在解析交會窗體中添加控件并設(shè)置其功能;9) 添加解析交會點(diǎn)位坐標(biāo)類模塊,實(shí)現(xiàn)處理解析交會窗體中數(shù)據(jù)的功能,并將結(jié)果傳遞顯示在解

8、析交會窗體中;10)運(yùn)行檢測測量程序。7 月 14 日15日實(shí)習(xí)總結(jié),撰寫實(shí)習(xí)報(bào)告。5五、 實(shí)習(xí)中主要技術(shù)問題及處理方法1. 問題:函數(shù)如何返回多個數(shù)值處理方法: 1)指針傳遞Eg:角度轉(zhuǎn)換成度分秒函數(shù)將度分秒的值傳回主函數(shù)(3 個返回值)voidDegSwitch:Deg_DMS(doubleDeg,int *a, int *b, int *c ) int DMS_D=(int )Deg; *a=DMS_D;doubleDMS_M1=(Deg-DMS_D)*60;intDMS_M=(int )DMS_M1;*b=DMS_M;intDMS_S=int (DMS_M1-DMS_M)*60);*c

9、 =DMS_S;2)調(diào)用數(shù)組Eg:附合導(dǎo)線坐標(biāo)方位角計(jì)算函數(shù)將計(jì)算所得方位角值傳回主函數(shù)(多個返回值)voidLineCalculation:C_Angle(doubleang, double cang , intn, intb, doublesc_ang) cang0 =sc_ang+b*(PI-ang0);if (cang02*PI)cang0 =cang0-2*PI;for ( inti=1;in;i+) cangi =cangi-1+b*(PI-angi);if ( cangi 2*PI)cangi=cangi-2*PI;2. 問題:如何訪問類的對象成員處理方法:在預(yù)處理命令中裝入相應(yīng)

10、類的頭文件,再通過指針訪問對象成員Eg:檢查角度處理類算法時,在主函數(shù)中調(diào)用類中函數(shù)#include DegSwitch.h DegSwitch *D1=new DegSwitch();D1-Deg_DMS(Deg,&(*a),&(*b),&*(c); result=D1-Deg_Rad(Deg); 3. 問題:不同的類之間可否相互調(diào)用成員函數(shù)處理方法:可以;在預(yù)處理命令中裝入相應(yīng)類的頭文件,再通過指針訪問對象成員4. 問題:錄入的多個以度分秒表示的角度如何批量存放、處理處理方法:放入二維數(shù)組中儲存、處理Eg:在主函數(shù)中定義一個數(shù)組存放錄入的附合導(dǎo)線觀測角值6intAN3其中, Ai0 、 A

11、i1 、Ai2 中分別存放第 i+1 個觀測角的度、分、秒位上的數(shù)值5. 問題:附合導(dǎo)線近似計(jì)算類中,最初錄入的度分秒形式的角度值無法直接進(jìn)行運(yùn)算,如何準(zhǔn)確計(jì)算和分配角度閉合差、算出坐標(biāo)方位角,并根據(jù)坐標(biāo)方位角正確計(jì)算坐標(biāo)增量處理方法: 1)根據(jù)不同計(jì)算需求將角度轉(zhuǎn)換成以秒為單位或以弧度為單位數(shù)據(jù)度分秒形式進(jìn)行角度轉(zhuǎn)換以秒為單位的角度值角度值進(jìn)行角度轉(zhuǎn)換進(jìn)行角度閉合差的計(jì)算與進(jìn)行角度轉(zhuǎn)換分配,根據(jù)調(diào)整后的觀測角值計(jì)算坐標(biāo)方位角度分秒形式弧度形式的的角度值角度值得到并輸出度分秒形以弧度形式的坐標(biāo)方式的調(diào)整后觀測角值位角值運(yùn)用三角函數(shù)和坐標(biāo)方位角計(jì)算坐標(biāo)增量2)對角度閉合差的分配:先將閉合差平均分

12、配到每一個觀測角中,若有余數(shù),再將余數(shù)平均分配到最小邊對應(yīng)點(diǎn)兩個觀測角中實(shí)現(xiàn)以上處理的對應(yīng)代碼:/ 度分秒形式角度值轉(zhuǎn)換成以秒為單位角度值DegSwitch *m=new DegSwitch();for (i=0;iDMS_s(Ai0,Ai1,Ai2);/ 對角度閉合差的分配intff=f_a/n*b;for ( inti=0;in;i+)angi=angi+ff;intm=0,f1=0,f2=0;for ( intj=1;jn-1;j+)if (Sj=Sm)m=j;if (f_a%n)!=0)7if (f_a/n)%2!=0)f1=(f_a%n)/2;f2=f1+1;elsef1=(f_a%

13、n)/2;f2=f1;angm=angm+f1*b;angm+1=angm+1+f2*b;/ 以秒為單位角度值轉(zhuǎn)換成弧度值計(jì)算坐標(biāo)增量DegSwitch *q=new DegSwitch;for (i=0;iDMS_Rad(0,0,cangi);doublexs=0,ys=0;for (i=0;in-1;i+)Ccooi0=Si*cos(cangi);Ccooi1=Si*sin(cangi);xs=xs+Ccooi0;ys=ys+Ccooi1;*dx=xs-x;*dy=ys-y;/ 得到并輸出度分秒形式的調(diào)整后觀測角值和坐標(biāo)方位角coutendl 調(diào)整后角度值: endl;DegSwitch

14、*u=new DegSwitch;for (i=0;is_DMS(angi,&Ai0,&Ai1,&Ai2);coutAi0 Ai1 Ai2endl;coutendl 坐標(biāo)方位角: endl;for (i=0;is_DMS(cangi,&CAngi0,&CAngi1,&CAngi2); coutCAngi0 CAngi1 CAngi2endl;6. 問題:讀原始數(shù)據(jù)文件過程中,如何將多個數(shù)據(jù)一次存放在數(shù)組中處理方法:通過循環(huán)語句實(shí)現(xiàn)Eg:將原始數(shù)據(jù)文件中儲存的觀測角角度值(度分秒形式)存入一個二維數(shù)組中for (i=0;iN;i+)for (j=0;jShow();9. 問題:如何在 Windo

15、ws 窗體中提取、改變控件文本處理方法:提取控件文本: double d=Convert:ToDouble(t1-Text); 改變控件文本: t4-Text=Convert:ToString(deg);10. 問題:如何在 Windows 窗體中調(diào)用類的成員函數(shù)處理方法: DegSwitch x=gcnew DegSwitch();deg=x-DMS_Deg(d,m,s);六、 實(shí)習(xí)收獲及感想根據(jù)面向?qū)ο笏枷朐O(shè)計(jì)算法、編寫代碼使程序設(shè)計(jì)模塊化,各模塊有明確的功能,既便于對函數(shù)的調(diào)用,也有利于對程序算法的精簡、檢查。基于面向?qū)ο笏枷氲某绦蛟O(shè)計(jì),首先要明確需要處理的對象(已知數(shù)據(jù))和最終要得到的

16、對象(所求數(shù)據(jù)) ,然后分析二者之間的關(guān)系,深入理解問題,由此設(shè)計(jì)算法,再將分塊進(jìn)行算法代碼編寫,最終編碼實(shí)現(xiàn)整個過程。編寫源代碼過程中要注意對數(shù)據(jù)的靈活處理和轉(zhuǎn)換,如度分秒形式的角度值可存放在二維數(shù)組中,使用三角函數(shù)是角度值應(yīng)化為弧度值,通過指針或數(shù)組進(jìn)行值的傳遞等。編碼完成生成程序后,要及時進(jìn)行多次檢查,發(fā)現(xiàn)錯誤后采用適當(dāng)?shù)姆椒ㄟM(jìn)行調(diào)試、找出有問題的語句或算法進(jìn)行修改,盡量提高算法的效率和準(zhǔn)確度,使結(jié)果最精確。在 Windows窗體程序設(shè)計(jì)過程中,每個控件都要有相應(yīng)的功能或作用,為用戶提供獲取及輸入信息的途徑;同時,界面的設(shè)計(jì)要簡潔合理,使用戶能一目了然,迅速進(jìn)行操作,因此可在所需控件較多的情況下按功能添加新的窗

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論