畢業(yè)設(shè)計(論文)基于VB6.0測量工具箱程序設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于VB6.0測量工具箱程序設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于VB6.0測量工具箱程序設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于VB6.0測量工具箱程序設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于VB6.0測量工具箱程序設(shè)計_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、黃河水利職業(yè)技術(shù)學(xué)院畢業(yè)論文(設(shè)計)基于vb6.0測量工具箱程序設(shè)計學(xué)生姓名: 學(xué)號: 指導(dǎo)教師:川 李孝雁 職稱: 講師 專 業(yè): 工程測量技術(shù) 系(部): 測繪工程系 2010年6月14日黃河水利職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計登記表 2010年 6 月 14 日學(xué)生姓名晁雙彬?qū)I(yè)工程測量技術(shù)班級0701班設(shè)計題目基于vb6.0測量工具箱程序設(shè)計指導(dǎo)教師評語: (簽字)答辯委員會考評小組評語: 答辯組長:成績: 答辯委員會主任:摘 要基于vb6.0的集成開發(fā)環(huán)境在測量工作中具有重要意義,是測繪人員必須掌握的一門實用、有效的專業(yè)技能。隨著測繪技術(shù)的不斷發(fā)展,計算機(jī)在現(xiàn)代測繪科學(xué)中的應(yīng)用越來越廣泛,已經(jīng)深

2、入到從理論研究到實際生產(chǎn)的方方面面,如坐標(biāo)解算、數(shù)據(jù)處理、施工放樣計算、地理信息數(shù)據(jù)加工和管理等。使用計算機(jī)程序處理測量數(shù)據(jù),不但方便、快速,而且準(zhǔn)確、具有可重復(fù)性。它綜合性很強(qiáng),涉及面不僅包括控制測量學(xué)、測量平差、工程測量學(xué)等測量專業(yè)內(nèi)容,還涉及數(shù)據(jù)結(jié)構(gòu)、數(shù)組與過程、編程技術(shù)等多方面內(nèi)容。編寫的程序在測量作業(yè)中起到了很大的作用,方便了計算,節(jié)約了時間,提高了工作效率并且能夠保證計算結(jié)果準(zhǔn)確可靠。同時,為以后熟練使用卡西歐計算器奠定了基礎(chǔ)。本設(shè)計課題將vb語言與測量程序設(shè)計進(jìn)行了有機(jī)結(jié)合。本論文的主要目的是使我們在學(xué)習(xí)vb語言編程的同時,能夠結(jié)合測繪專業(yè)的例子,一方面可以鞏固測繪專業(yè)知識,另一

3、方面可以掌握運用vb語言編寫程序解決測繪專業(yè)問題的能力。關(guān)鍵詞:vb、導(dǎo)線、程序設(shè)計目 錄摘要第1章 緒論 .1 1.1 測量程序設(shè)計的出發(fā)點 .11.2 測量程序設(shè)計的重要性 .11.3 測量程序設(shè)計的過程 .1第2章 測量程序設(shè)計基礎(chǔ) .1 2.1 vb6.0簡介.2 2.2 vb6.0的優(yōu)越性.2 2.3 測量中批量數(shù)據(jù)的處理.3 2.4 測量常用基本程序匯編.9 第3章 測量工具箱的創(chuàng)建思路.173.1 界面分析及設(shè)計步驟.173.2 主窗體界面及代碼.18 3.3 注意事項.20第4章 vb測量程序設(shè)計.21 4.1 已知三角形三點坐標(biāo)求內(nèi)角.21 4.2 線路測量實習(xí)成績評定.23

4、 4.3 前方交會.24 4.4 測邊交會.26 4.5 多測回水平角計算.28 4.6 基于vba的excel測量程序在工程測量中的運用.31第5章 結(jié)束語.35參考文獻(xiàn).36致 謝.37第1章 緒論本章主要介紹為什么要進(jìn)行測量程序設(shè)計以及測量程序設(shè)計的重要性,最后說明測量程序設(shè)計的過程。1.1 測量程序設(shè)計的出發(fā)點在實際的測量中,有時候要自己進(jìn)行數(shù)據(jù)處理,或者是進(jìn)行必要的計算。如果待處理的數(shù)據(jù)有上千個甚至更多,例如在諸如工程施工放樣、大壩安全監(jiān)測、地圖繪制等測繪工作中,都必然涉及到海量的數(shù)據(jù)傳輸、存儲、檢索、處理等工作這時候僅僅靠手算是不能滿足的,所以要利用軟件(即程序)進(jìn)行處理。1.2

5、測量程序設(shè)計的重要性如今,能夠進(jìn)行編程的語言很多,例如vb、vf、c+等,通過這些語言編寫出來的測量程序簡單易用、方便快速、功能強(qiáng)大、應(yīng)用廣泛,適合測量專業(yè)人員使用,極大地方便了測量工作者,節(jié)約了時間,提高了效率。從學(xué)習(xí)角度上講,vb的簡單和可視化、面向?qū)ο蟮忍攸c,也非常適合作為一門語言來學(xué)習(xí),所以本論文所編寫的程序均采用vb編寫。1.3 測量程序設(shè)計的過程要想進(jìn)行測量程序設(shè)計,一方面,要掌握測量專業(yè)知識,比如測量平差基礎(chǔ)等;另一方面,要有一定的vb知識,比如數(shù)組、過程等。只有這樣才能夠熟練的編寫測量程序。對于測繪專業(yè)的學(xué)生來說,編寫專業(yè)相關(guān)的程序也是一個深化測量基礎(chǔ)知識的過程,當(dāng)用設(shè)計程序來

6、解決一個測量問題時,例如導(dǎo)線計算,必須先弄清楚計算導(dǎo)線的步驟:需要哪些數(shù)據(jù),經(jīng)過哪些檢核計算,如何算出最后的導(dǎo)線點坐標(biāo)等。明確了這些處理步驟以后,再把這些步驟用計算機(jī)能夠識別的指令編寫出來并送入計算機(jī)執(zhí)行,計算機(jī)才能按照我們的要求對指定的數(shù)據(jù)求解。計算機(jī)能執(zhí)行的指令序列成為程序,而編寫程序的過程稱為程序設(shè)計。由此可知,編寫測量程序的過程,也是對測量基礎(chǔ)知識復(fù)習(xí)、鞏固和加深的過程。當(dāng)然,一個程序并不是從最開始就十分契合待解決的實際問題,也不能一成不變,只有通過反復(fù)的使用,不斷根據(jù)實際應(yīng)用的需要反復(fù)改進(jìn),才能真正編寫出適合實際的測量程序來。一般來說,利用vb6.0創(chuàng)建測量程序有以下6個主要步驟:(

7、1) 綜合分析,建立數(shù)學(xué)模型。(2) 創(chuàng)建應(yīng)用程序界面。(3) 設(shè)置窗體和控件的屬性。(4) 編寫代碼。(5) 運行和調(diào)試應(yīng)用程序。(6) 保存程序。第二章 測量程序設(shè)計基礎(chǔ)本論文中的測量程序是利用vb語言編寫出來的,所以要對掌握vb的相關(guān)知識并且能夠熟練運用,在測量綜合程序的編寫過程中用到了很多的基本程序,從而構(gòu)成它們的子程序,為此要編寫出基本的測量程序,測量中的數(shù)據(jù)往往是批量的,所以能夠進(jìn)行批量處理。本章主要介紹了vb6.0的相關(guān)知識、簡單的基本程序,例如角度弧度的轉(zhuǎn)化、坐標(biāo)正反算等,還寫出了對測量批量數(shù)據(jù)處理的相關(guān)知識,例如數(shù)組、過程等以及批量數(shù)據(jù)處理flexgrid控件等知識。2.1

8、vb6.0簡介 vb是visual basic的簡稱,vb是從basic語言發(fā)展而來的,是windows環(huán)境下快速開發(fā)應(yīng)用程序的可視化工具。其中,visual是指開發(fā)圖形用戶界面的方法,是指直觀的編程方法。basic是指basic語言。之所以叫做visual basic,就是因為它使用了basic語言作為代碼。作為程序設(shè)計語言,vb的主要特點為:(1)面向?qū)ο蟮目梢暬O(shè)計平臺;(2)事件驅(qū)動的編程機(jī)制;(3)結(jié)構(gòu)化的設(shè)計語言;(4)充分利用windows資源;(5)具有開放的數(shù)據(jù)庫功能與網(wǎng)絡(luò)支持。 1991年,微軟公司為了簡化windows應(yīng)用程序的開發(fā)過程,推出了visual basic 1

9、.0版,它極大的改變了人們對windows的看法,以及使用windows的方式。1992年、1993年兩年間,在visual basic1.0的基礎(chǔ)上又相繼推出了visual basic 2.0版和visual basic 3.0版。1995年,隨著windows 95轟轟烈烈的發(fā)布,visual basic 4.0版也隨之問世。1997年,微軟公司推出了visual basic 5.0版。1998年推出了visual basic 6.0版。微軟公司在推出英文版的同時,也推出了中文版,從而大大的方便了中國用戶。visual basic的最新版本是2006年發(fā)布的visual studio 20

10、05套件中的visual basic 2005。但是由于visual basic 2005對運行環(huán)境要求較嚴(yán)格,所以目前使用者較少。 現(xiàn)在擁有最多用戶的visual basic版本依然是visual basic 6.0,它包括三種版本:學(xué)習(xí)班、專業(yè)版和企業(yè)版。三種版本適合于不同的用戶層次。 visual basic 6.0是專門為windows 9x/nt/2000等32位操作系統(tǒng)設(shè)計的。用visual basic 6.0的編譯器可以自動生成32位應(yīng)用程序,可脫離visual basic 6.0的運行環(huán)境,且運行速度更快、更安全,適合在多任務(wù)環(huán)境下運行。2.2 vb6.0的優(yōu)越性目前使用較多的

11、編程語言有visual basic、visual foxpro等,它們各有特點,分別適合不同的領(lǐng)域。從學(xué)習(xí)角度上講,vb的簡單和可視化、面向?qū)ο蟮忍攸c,也非常適合作為一門語言來學(xué)習(xí)。作為高質(zhì)量的開發(fā)軟件,vb6.0具有以下顯著的優(yōu)點:2.2.1 簡單易學(xué)visual basic在繼承了basic語言簡單易用的基礎(chǔ)上,改造了basic語言中復(fù)雜冗長且極易出錯的“面條式”結(jié)構(gòu),而是以接近于人類自然語言和邏輯思維方式的結(jié)構(gòu)化程序設(shè)計語言取代之,使其更加流暢、自然。用vb編寫程序代碼,如同用英文跟計算機(jī)交代工作任務(wù)一樣。vb的編程器支持彩色代碼,還可以自動進(jìn)行語言檢查,同時具有強(qiáng)大且使用靈活的調(diào)試器和

12、編譯器,這些都使得vb程序設(shè)計從學(xué)習(xí)到使用都非常簡單方便。2.2.2 面向?qū)ο蟮目梢暬绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計是當(dāng)代程序設(shè)計的主流,既符合人們的思維和解決問題的邏輯,又是開發(fā)大型程序的必須。這里,“對象”是一個比較抽象的概念,可以理解成封裝了一些代碼和數(shù)據(jù)的集合,能夠完成一定的動作和功能。vb中的對象主要分為窗體和控件兩類。窗體是用戶工作區(qū),所有控件都在窗體中集成,從而構(gòu)成應(yīng)用程序的界面;控件是指“空的對象”或基本對象,是應(yīng)用程序的圖形用戶界面的一個組件,對其屬性可以進(jìn)行不同的設(shè)置,從而構(gòu)成不同的對象。vb這種可視化的用戶界面設(shè)計功能,把程序設(shè)計人員從繁瑣復(fù)雜的界面設(shè)計中解脫出來。可視化編程

13、環(huán)境的“所見即所得”功能,使界面設(shè)計如同積木游戲一樣,從而使我們感覺到編程也是一種享受。2.2.3 事件驅(qū)動的編程機(jī)制事件驅(qū)動機(jī)制是vb區(qū)別于其他高級語言的顯著特點。vb沒有明顯的主程序概念,程序員要做的就是面向不同的對象分別編寫它們的事件過程。事件驅(qū)動應(yīng)用程序的典型事件序列如下:啟動應(yīng)用程序,加載和顯示窗體。窗體和控件接受事件。如果在相應(yīng)的事件過程中存在代碼,則執(zhí)行代碼。然后,應(yīng)用程序等待下一次事件。2.2.4 高度的可擴(kuò)充性vb為用戶提供的擴(kuò)充途徑包括:支持第三方軟件商為其開發(fā)的可視化控件對象;支持訪問動態(tài)鏈接庫dll;支持訪問應(yīng)用程序接口api。2.2.5 廣泛支持的二次開發(fā)能力vb與m

14、icrosoft系列軟件天然的結(jié)合,使得編程變得非常容易。在word文檔上增加一些實現(xiàn)簡單功能的按鈕和滾動條;在excel表格的基礎(chǔ)上進(jìn)一步開發(fā)適合自己應(yīng)用的表格程序等,都非常方便快捷。而且眾多測繪專業(yè)軟件都支持vba,使得vb也成為專業(yè)人士進(jìn)行二次開發(fā)的很好選擇。例如autocad可以用vba實現(xiàn)有關(guān)的界面和功能。2.2.6 強(qiáng)大的數(shù)據(jù)庫訪問能力vb中提供了強(qiáng)大的數(shù)據(jù)庫管理和存取操作能力。利用數(shù)據(jù)控件和數(shù)據(jù)庫管理窗口,能直接編輯和訪問access,foxpro等,通過訪問或建立連接的方式使用并操作后臺大型網(wǎng)絡(luò)數(shù)據(jù)庫,如sql server,oracle等 。vb6.0還具有功能強(qiáng)大、使用方便

15、的ado技術(shù),支持所有的ole db數(shù)據(jù)庫廠商。2.3 測量中批量數(shù)據(jù)的處理在測量中,測量數(shù)據(jù)往往都是大量的數(shù)據(jù)同時處理,例如一個水準(zhǔn)網(wǎng)就有幾十個點,需要列很多方程進(jìn)行平差,很難想象使用一個一個的簡單變量和一條一條的簡單語句來處理這些數(shù)據(jù)。本節(jié)將介紹批量數(shù)據(jù)處理的幾個工具:循環(huán)、數(shù)組和過程。數(shù)組可以存儲批量的數(shù)據(jù),而循環(huán)則可以重復(fù)多次執(zhí)行某些語句,過程則進(jìn)一步將某些程序封裝起來以便于重用。另外本章還將介紹批量數(shù)據(jù)處理控件等。2.3.1 循環(huán)結(jié)構(gòu)編寫程序時經(jīng)常需要對某條或某些語句重復(fù)執(zhí)行多次,這可以利用各種循環(huán)結(jié)構(gòu)來實現(xiàn)。vb中提供了兩種類型的循環(huán)語句,即計數(shù)型循環(huán)語句和條件型循環(huán)語句。for循

16、環(huán)是計數(shù)型循環(huán)語句,而while循環(huán)和do循環(huán)語句屬于條件型循環(huán)語句。2.3.1.1 for循環(huán)for循環(huán)用于實現(xiàn)循環(huán)次數(shù)已知的循環(huán)結(jié)構(gòu),程序按照此種結(jié)構(gòu)中指明的循環(huán)次數(shù)來執(zhí)行循環(huán)體部分。for循環(huán)格式如下:for循環(huán)變量=初始值to終值step步長 循環(huán)體 exit for 循環(huán)體next循環(huán)變量2.3.1.2 do循環(huán)和while循環(huán)do循環(huán)和while循環(huán)都屬于條件循環(huán)結(jié)構(gòu),它們都是通過判斷一個條件的成立與否來決定是執(zhí)行循環(huán)體語句還是結(jié)束循環(huán)。它們與for循環(huán)最大的差別在于:for循環(huán)用于循環(huán)次數(shù)已知的情況,執(zhí)行一定次數(shù)后即可結(jié)束循環(huán);而do循環(huán)和while循環(huán)用于不知道循環(huán)次數(shù)的情況。

17、(1) while循環(huán)while循環(huán)比較簡單,其格式如下: while條件 循環(huán)體 wend與前面的for循環(huán)比較可以看出,for語句的格式比較緊湊,表達(dá)豐富;但是while語句比較簡單靈活、易于理解,對于有一個判斷條件、循環(huán)次數(shù)未知的循環(huán)尤其適用。(2) do循環(huán)do循環(huán)也是根據(jù)某個條件是否成立來決定能否執(zhí)行相應(yīng)的循環(huán)體部分,與while循環(huán)不同的是,do循環(huán)有兩種格式,既可以在初始位置檢驗條件是否成立,也可以在執(zhí)行一遍循環(huán)體后的結(jié)束位置判斷條件是否成立,能否進(jìn)入下一次循環(huán)。do循環(huán)的兩種格式如下:(1) 格式一: do 語句體 滿足某條件時exit do語句體 loopwhile和unti

18、l條件(2) 格式二dowhile和until條件 語句體 滿足某條件時exit do語句體 loop2.3.1.3 循環(huán)的嵌套在一個循環(huán)體內(nèi)又包含了一個完整循環(huán)的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套。循環(huán)的嵌套對for循環(huán)、do循環(huán)和while循環(huán)都適用。對于循環(huán)嵌套,要注意以下兩點:(1) 內(nèi)循環(huán)變量與外循環(huán)變量不能同名;(2) 外循環(huán)必須包含內(nèi)循環(huán),不能交叉。如: for ii=1 to 100for jj=1 to 50 next jjnext ii2.3.2 數(shù)組在實際應(yīng)用中經(jīng)常要處理同一性質(zhì)的成批數(shù)據(jù),有效的辦法是通過數(shù)組來存取。而數(shù)組與循環(huán)相結(jié)合編寫出的程序就有了無窮的威力。 例1:求15個觀

19、測值(等權(quán))的均值和方差。若使用簡單變量來存儲15個觀測值,則需要15個變量v1,v2,v15,如果各觀測值不等權(quán),還需另外定義相應(yīng)的15個變量存儲15個觀測對應(yīng)的權(quán)p1,p2,p15。這樣寫出的程序會十分復(fù)雜,而且只能處理15個觀測值的情況,當(dāng)觀測值數(shù)增加或減少時,則需修改程序,十分不方便。若觀測值數(shù)增加到幾百個甚至上萬個時,這樣編寫代碼是難以忍受的。當(dāng)使用數(shù)組時,不但可擴(kuò)展性好,而且結(jié)合循環(huán),只要很少的代碼就可以實現(xiàn)這一工作。其實現(xiàn)代碼如下: dim v(1 to 15) as double dim aver#,squa#,i% aver=0: squa=0 for i = 1 to 15

20、 v(i)=inputbox(輸入& i & 個觀測值) aver=aver+v(i) next i aver=aver/15 print 平均值為;aver數(shù)組并不是一種數(shù)據(jù)類型,而是一組相同類型的變量的集合。在程序中使用數(shù)組的最大好處是用一個數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標(biāo)來區(qū)分?jǐn)?shù)組中的不同元素,并與循環(huán)語句結(jié)合使用,以簡化程序,實現(xiàn)批量數(shù)據(jù)的處理。數(shù)組內(nèi)的元素是連續(xù)存放的,而且有上、下兩個邊界限制數(shù)組內(nèi)元素的個數(shù)和數(shù)組的起始位置及結(jié)束位置。一般情況下,一個數(shù)組中的元素類型必須相同,可以是前面講過的各種基本類型。特殊的是當(dāng)數(shù)組類型指定為variant時,其中元素的類型可以為各種基本類

21、型的混合。一個數(shù)組可以是一維的,也可以是多維的,vb中最多允許數(shù)組有60維。一般可以將數(shù)組分成兩類,一類是固定數(shù)組,該數(shù)組的大小始終保持不變;另一類是動態(tài)數(shù)組,該數(shù)組的大小在程序運行時可以改變。2.3.2.1 固定數(shù)組固定數(shù)組分為一維數(shù)組和多維數(shù)組。聲明一個固定數(shù)組時,必須給定數(shù)組使用的有效范圍。以一維數(shù)組為例,聲明時在數(shù)組名后跟一個用括號括起來的上界(默認(rèn)下界為0)。聲明格式如下:dim 數(shù)組名(下標(biāo))as類型2.3.2.2 動態(tài)數(shù)組事先不知道數(shù)組的大小時,可以先聲明該數(shù)組為動態(tài)數(shù)組,等需要時再用redim語句指定數(shù)組的大小。聲明動態(tài)數(shù)組時不需要給出數(shù)組的長度,只需保留一個空維數(shù)表。創(chuàng)建動態(tài)

22、數(shù)組的步驟為:(1)聲明數(shù)組為動態(tài)數(shù)組,只需給數(shù)組附以一個空維數(shù)表。例如,聲明一個整型動態(tài)數(shù)組matrix,可以使用如下語句:dim matrix() as integer(2)在需要指定數(shù)組大小時,再使用redim語句分配數(shù)組中實際元素的個數(shù)。redim 數(shù)組名(數(shù)組長度-1),例如,給上例的matrix數(shù)組指定元素個數(shù)為9時,可以使用如下語句:redim matrix(8) as integer。2.3.3 過程將程序分割成較小的邏輯部件可以簡化程序設(shè)計任務(wù),這些部件稱為過程。vb的過程根據(jù)是否有返回值分為子過程和函數(shù)過程兩類。2.3.3.1 子過程子過程(sub過程)是在響應(yīng)事件時執(zhí)行的

23、代碼塊。將模塊中的代碼分成子過程后,在應(yīng)用程序中查找和修改代碼更容易。子過程的定義方法如下:private|publicstaticsub過程(參數(shù)表) 語句end sub每次調(diào)用過程都會執(zhí)行sub 和end sub之間的語句,可以將子過程放入標(biāo)準(zhǔn)模塊、類模塊和窗體模塊中。按照默認(rèn)規(guī)定,所有模塊中的子過程為public,這意味著在應(yīng)用程序中可隨處調(diào)用它們。2.3.3.2 函數(shù)過程vb除了內(nèi)部函數(shù),如sqr()、sin()和chr()等,還可用function語句編寫自己的函數(shù)(function)過程。函數(shù)過程的語法是:private|publicstaticfunction函數(shù)過程名(參數(shù)表)

24、 as類型 語句end sub與sub過程一樣,function過程也是一個獨立的過程,可讀取參數(shù)、執(zhí)行一系列語句并改變其參數(shù)的值。與sub過程不同的是,function過程可返回一個值給調(diào)用的過程。2.3.4 批量數(shù)據(jù)控件vb中可以輸入和顯示批量數(shù)據(jù)的控件很多,如伸縮格網(wǎng)(flexgrid)、數(shù)據(jù)格網(wǎng)(datagrid)、數(shù)據(jù)列表框(datalistbox)、數(shù)據(jù)組合框(datacombobox)等。下面詳細(xì)介紹flexgrid控件。flexgrid控件是vb提供的一個輸入和顯示批量數(shù)據(jù)的控件。與列表框和組合框不同的是,它不但可以輸入和顯示單列數(shù)據(jù),還可以輸入和顯示多列(二維表格)數(shù)據(jù),并且

25、可以顯示行號和列標(biāo)頭,非常適合測量程序中批量數(shù)據(jù)的輸入和顯示。當(dāng)然,flexgrid控件本身并不能進(jìn)行數(shù)據(jù)的輸入和顯示處理,它只是提供一個界面和相應(yīng)的屬性、事件和方法,具體要實現(xiàn)什么樣的功能,需要使用者自行編程實現(xiàn)。 flexgrid控件是activex控件,需要通過“工程-部件”命令選擇microsoft flexgrid control6.0選項,將flexgrid控件添加到工具箱。添加到窗體的flexgrid控件如圖2-1所示。新添加的flexgrid控件默認(rèn)名為msflexgrid1,默認(rèn)有兩行兩列,共4個網(wǎng)格。其中第一行為列表頭,第一列為行號欄,它們與其他網(wǎng)格的區(qū)別只是外觀不同。fl

26、exgrid的常見屬性有cols(列)、rows(行)、col(當(dāng)前操作網(wǎng)格列號)row(當(dāng)前操作網(wǎng)格行號)、text(存取當(dāng)前操作網(wǎng)格的內(nèi)容)、mosepointer、(設(shè)置鼠標(biāo)在控件上移動時的形狀)。在設(shè)計狀態(tài),右鍵單擊窗體上的flexgrid控件,選擇“屬性”菜單項,彈出屬性頁對話框,如圖2-2所示。圖2-1 flexgrid控件圖2-2 flexgrid控件的屬性頁下面舉例說明flexgrid控件的使用:使用flexgrid控件輸入一個33矩陣,實現(xiàn)矩陣中所有元素的值增倍或減半。新建一個工程,在窗體上添加一個flexgrid控件和2個命令按鈕,在屬性頁中將flexgrid控件設(shè)置成4行

27、4列,修改命令按鈕的caption屬性和name屬性并將flexgrid控件的mosepointer屬性設(shè)置為3-flexbeam。程序設(shè)計界面如圖2-3所示。圖2-3 flexgrid控件演示程序設(shè)計界面首先是在窗體的load事件中初始化flexgrid控件,顯示列標(biāo)號和行號,代碼如下:private sub form_load()dim i%, j%with msflexgrid1 for i = 1 to 3 .row = 0: .col = i: .text = i next i for i = 1 to 3 .col = 0: .row = i: .text = i next ien

28、d withend sub上述代碼中,使用了with語句來簡化代碼。接著來實現(xiàn)flexgrid控件的數(shù)據(jù)輸入操作。flexgrid控件自身并不能接受鍵盤輸入數(shù)據(jù),需要編程實現(xiàn),并且要先判斷輸入的是不是數(shù)字字符。keypress事件具體代碼如下:private sub msflexgrid1_keypress(keyascii as integer)with msflexgrid1 if isnumeric(chr(keyascii) then .text = .text & chr(keyascii) elseif keyascii = 8 then退格符的ascii碼值是8 if len(.

29、text) 0 then .text = left(.text, len(.text) - 1) end if end withend sub由于按下delete鍵并不觸發(fā)keypress事件,delete鍵的keycode值為46,為了實現(xiàn)delete鍵功能,將文本清空。具體代碼如下:private sub msflexgrid1_keyup(keycode as integer, shift as integer)if keycode = 46 then msflexgrid1.text = end ifend sub增倍和減半功能具體實現(xiàn)代碼如下:private sub command1

30、_click() 將元素數(shù)值變?yōu)樵瓉淼膬杀禿im i%, j%with msflexgrid1 for i = 1 to 3 for j = 1 to 3 .row = i: .col = j: .text = val(.text) * 2 next j next iend withend subprivate sub command2_click() 將元素數(shù)值變?yōu)樵瓉淼囊话雂im i%, j%with msflexgrid1 for i = 1 to 3 for j = 1 to 3 .row = i: .col = j: .text = val(.text) / 2 next j nex

31、t iend withend sub程序執(zhí)行時的界面如圖2-4所示:圖2-4 flexgrid控件程序執(zhí)行界面2.4 測量常用基本程序匯編本節(jié)主要介紹使用vb6.0編寫基本測量程序的過程,包括vb語言基礎(chǔ)和測量基本知識。綜合運用vb和測量的基本知識編寫出真正適合自己的應(yīng)用程序。本節(jié)的主要內(nèi)容為:四舍六入,奇進(jìn)偶不進(jìn)、計算兩點間的距離和坐標(biāo)方位角、角度與弧度的換算、坐標(biāo)正反算等。2.4.1 四舍六入,奇進(jìn)偶不進(jìn) 在測量中數(shù)值的取位遵循“四舍六入、奇進(jìn)偶不進(jìn)”。如果小數(shù)點后保留3位,即要求對千分位即取位至毫米上的數(shù)值進(jìn)行“四舍六入、奇進(jìn)偶不進(jìn)”的判斷。分以下三種情況:(1)千分位后面的數(shù)值小于等于

32、四,如2.3421,此時直接舍棄小數(shù)點后第四位以后的數(shù)值;(2)千分位后面的數(shù)值大于等于六,如2.3427,此時小數(shù)點后第三位直接進(jìn)1;(3)小數(shù)點后面第四位是數(shù)值5,如2.2425,此時判斷千分位,如果是奇數(shù),則千分位進(jìn)1,如果是偶數(shù),則千分位后面數(shù)值舍棄。其程序執(zhí)行界面如圖2-5所示:圖2-5 四舍六入,奇進(jìn)偶不進(jìn)主要代碼為:private sub command1_click()dim a#, b#, c#, d#a = val(text1.text)b = a - fix(a) 獲得小數(shù)部分c = mid(b, 5, 1) 得到小數(shù)點后第四位d = mid(b, 4, 1) 得到小數(shù)點

33、后第三位select case ccase is 5if c = 6 thentext2.text = format(a, 0.000)elseif c = 4 thentext2.text = format(a, 0.000)end ifcase is = 5if d mod 2 = 0 thentext2.text = format(a, 0.000) - 0.001elseif d mod 2 0 thentext2.text = format(a, 0.000)end ifend selectend sub2.4.2 計算兩點間的距離和坐標(biāo)方位角(1)數(shù)學(xué)模型由兩個已知點求這兩點間的距

34、離和坐標(biāo)方位角是測量學(xué)中經(jīng)常用到的計算,在其它的測量綜合編程中,計算兩點間距離和坐標(biāo)方位角是其重要的基礎(chǔ)。本程序可用于根據(jù)兩已知點a、b坐標(biāo)計算a、b兩點間的距離和坐標(biāo)方位角,在計算坐標(biāo)方位角時先計算出象限角,然后通過象限角與方位角的關(guān)系轉(zhuǎn)化為方位角。主要計算公式為: 求兩點距離:s = sqr(x 2 + y 2) 求坐標(biāo)方位角: = atn(y / x)本程序主要應(yīng)用到vb中乘方運算符()和平方根函數(shù)sqr()。(2)其程序執(zhí)行界面如圖2-6所示:圖2-6 計算兩點間距離和坐標(biāo)方位角(3)主要代碼為:private sub command1_click()dim xa#, ya#, xb#

35、, yb#, x#, y#, tana#, ab#, du%, fen%, miao%, s#const pi = 3.14159265358979xa = val(text1.text): ya = val(text2.text)xb = val(text3.text): yb = val(text4.text)x = xb - xa: y = yb - yaif abs(x) 0.00000001 then msgbox 除數(shù)為零,請檢查坐標(biāo)輸入是否正確! text1.setfocus exit subend ifs = sqr(x 2 + y 2)text5.text = sif abs

36、(x) 0 then ab = 90 else ab = 270 end ifelse tana = y / x ab = atn(tana) ab = ab * 180 / pi if x 0 and y 度度弧度。其程序執(zhí)行界面如圖2-7所示:圖2-7 角度化弧度其主要代碼為:const pi = 3.14159265private sub command1_click()dim du%, fen%, miao%, jiaodu#dufenmiao = val(text1.text)du = fix(dufenmiao)dufenmiao = (dufenmiao - du) * 100f

37、en = fix(dufenmiao)miao = (dufenmiao - fen) * 100jiaodu = du + fen / 60 + miao / 3600dutohu = jiaodu * pi / 180text2.text = format(dutohu, 0.000000)end sub2.4.4 弧度化角度本程序是將弧度轉(zhuǎn)化為“度”的形式,以利于顯示輸出。用到的主要公式為:弧度(rad)度(deg):度(deg)度、分、秒:fix()函數(shù)的使用。其程序執(zhí)行界面如圖2-8所示:圖2-8 弧度化角度其主要代碼為:const pi = 3.14159265private su

38、b command1_click()dim du#, fen#, miao#hu = val(text1.text)hu = hu * 180 / pi: du = fix(hu)hu = (hu - du) * 60: fen = fix(hu)hu = (hu - fen) * 60: miao = fix(hu + 0.5)if miao = 60 then fen = fen + 1: miao = 0end ifif fen = 60 then du = du + 1: fen = 0end ifhutodu = du + fen / 100 + miao / 10000if hut

39、odu ab (根據(jù)x,y的符號判斷rab與ab的關(guān)系,從而得到方位角)rab稱為象限角,求方位角ab時,有如下規(guī)律:x y 方位角 rab pirab pirab 2*pirab同時還要注意落到坐標(biāo)軸上的情況,如x、y其中一個或兩個等于零。在本程序的編寫中要注意反正切函數(shù)atn()和取絕對值函數(shù)abs()的運用。其程序執(zhí)行界面如圖2-10所示:圖2-10 坐標(biāo)反算其主要代碼為:const pi = 3.14159265358979private sub command1_click()dim xa!, ya!, xb!, yb!, jl!, r1#, r2#, dfm!, ds%, fs%,

40、 ms%const pi = 3.1415926xa = val(text1.text)ya = val(text2.text)xb = val(text4.text)yb = val(text3.text)jl = sqr(xa - xb) 2 + (ya - yb) 2)if xb = xa and (yb - ya) 0.000001 thenr2 = 0elseif (xb - xa) 0.000001 and yb = ya thenr2 = pi / 2elseif xb = xa and (yb - ya) 0.000001 thenr2 = pielseif (xb - xa)

41、 0.000001 and yb = ya thenr2 = (3 / 2) * piend ifend ifend ifend ifif xb xa and yb ya thenr1 = atn(abs(xb - xa) / abs(yb - ya)if (yb - ya) 0.000001 and (xb - xa) 0.000001 thenr2 = r1elseif (yb - ya) 0.000001 thenr2 = pi - r1elseif (yb - ya) 0.000001 and (xb - xa) 0.000001 and (xb - xa) 0.000001 then

42、r2 = 2 * pi - r1end ifend ifend ifend ifend ifdfm = r2 * 180 / pids = fix(dfm)fs = fix(dfm - ds) * 60)ms = fix(dfm - ds) * 60 - fs) * 60)text5.text = format(jl, 0.000)text6.text = ds & 度 & fs & 分 & ms & 秒end sub第3章 測量工具箱的創(chuàng)建思路設(shè)計測量工具箱是本次畢業(yè)設(shè)計的課題,在測量中,對數(shù)據(jù)處理時有時候要用到很多的程序。測量工具箱就是把編寫的測量程序進(jìn)行一下匯總,是對畢業(yè)設(shè)計成果的一種匯

43、總,并且方便對所編的程序進(jìn)行集中管理,同時運用起來也方便,所以要構(gòu)成測量程序集。本論文設(shè)計中的測量工具箱采用“菜單”的形式進(jìn)行編輯,菜單是應(yīng)用程序的組成部分之一,它一般由菜單欄和下拉菜單組成,如vb系統(tǒng)集成環(huán)境中的菜單欄。從結(jié)構(gòu)上看,菜單可分成若干級,第一級是菜單欄,它包括若干菜單項。菜單項為橫向排列,每一菜單項都可對應(yīng)一個下拉式菜單,子菜單中的選項豎向排列,同時子菜單中的每一項又可以有自己的下拉菜單。本論文設(shè)計中把菜單分成兩級,把所編寫的測量程序納入其中。3.1 界面分析及設(shè)計步驟將主窗體的caption屬性設(shè)置為“測量程序集”,并適當(dāng)調(diào)整窗體的大小。其設(shè)計步驟為:(1) 建立菜單,啟動vb

44、6.0,進(jìn)入編程界面,建立菜單的過程是先列出菜單的組成,然后在“菜單編輯器”窗口按照菜單組成進(jìn)行設(shè)計,設(shè)計完后,再把各菜單項與代碼連接起來;(2)打開“菜單編輯器”,點擊“工具”菜單的“菜單編輯器”命令,窗體上顯示出“菜單編輯器”,如圖3-1所示;(3)輸入并把代碼連接到菜單上,在“標(biāo)題欄”中輸入“基本程序”,在“名稱”欄中輸入“jiben”字樣,然后點擊“下一個”,再點擊“”符號,即編輯二級標(biāo)題,在“標(biāo)題欄”和 “名稱”欄中分別輸入相應(yīng)的程序名稱,此時可以設(shè)置快捷鍵,最后點“確定”,顯示出如圖3-2所示的界面;(4)重復(fù)上一步,直到所有要添加的程序都輸入完為止。圖3-1 菜單編輯器圖3-2菜

45、單編輯器的輸入3.2添加窗體及代碼完成菜單的編輯工作之后,單擊“確定”按鈕,系統(tǒng)將檢查菜單的有效性,若檢查通過,即保存該菜單并返回到窗體上顯示其主菜單項;否則,系統(tǒng)將顯示對話框提示相應(yīng)錯誤信息。當(dāng)需要放棄或取消本次編輯菜單的操作時,可以單擊“取消”命令按鈕。 調(diào)整好各控件的位置和屬性,如表1所示,窗體執(zhí)行界面如圖3-3所示,測量工具箱中的導(dǎo)線平差界面如圖3-4所示:表3-1 各窗體屬性設(shè)置窗體名屬性值fspjcaption水平角計算fcbcaption測邊交會fqfcaption前方交會fdxcaption單導(dǎo)線平差計算圖3-3 窗體執(zhí)行界面圖3-2 導(dǎo)線平差由于菜單中包含很多程序,所以要添加

46、很多窗體,其步驟為: (1)首先并把菜單所在窗體的name屬性修改為“frm1”;(2)點擊“工程”菜單的“添加窗體”命令,選擇“存在”選項卡,找到本工程所在目錄,會顯示該目錄下的所有窗體文件,選擇任意一個想要添加的窗體,并修改其name屬性。(3)重復(fù)上一步,直到所有要添加的窗體都添加到工程中為止。在命令按鈕的click事件過程中編寫代碼(由于此代碼較多且多雷同,故只選取前方交會、單導(dǎo)線平差、側(cè)邊交會、水平角計算和退出程序的代碼),調(diào)用相應(yīng)窗體,并隱藏主窗體:private sub cebian_click()frm1.hide: fqf.showend subprivate sub daoxian_click()frm1.hide: fdx.showend subprivate sub qianfang_click()frm1.

溫馨提示

  • 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

提交評論