版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、黃河水利職業(yè)技術(shù)學(xué)院畢業(yè)論文(設(shè)計(jì))基于vb6.0測(cè)量工具箱程序設(shè)計(jì)學(xué)生姓名: 學(xué)號(hào): 指導(dǎo)教師:川 李孝雁 職稱: 講師 專 業(yè): 工程測(cè)量技術(shù) 系(部): 測(cè)繪工程系 2010年6月14日黃河水利職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)登記表 2010年 6 月 14 日學(xué)生姓名晁雙彬?qū)I(yè)工程測(cè)量技術(shù)班級(jí)0701班設(shè)計(jì)題目基于vb6.0測(cè)量工具箱程序設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ): (簽字)答辯委員會(huì)考評(píng)小組評(píng)語(yǔ): 答辯組長(zhǎng):成績(jī): 答辯委員會(huì)主任:摘 要基于vb6.0的集成開(kāi)發(fā)環(huán)境在測(cè)量工作中具有重要意義,是測(cè)繪人員必須掌握的一門(mén)實(shí)用、有效的專業(yè)技能。隨著測(cè)繪技術(shù)的不斷發(fā)展,計(jì)算機(jī)在現(xiàn)代測(cè)繪科學(xué)中的應(yīng)用越來(lái)越廣泛,已經(jīng)深
2、入到從理論研究到實(shí)際生產(chǎn)的方方面面,如坐標(biāo)解算、數(shù)據(jù)處理、施工放樣計(jì)算、地理信息數(shù)據(jù)加工和管理等。使用計(jì)算機(jī)程序處理測(cè)量數(shù)據(jù),不但方便、快速,而且準(zhǔn)確、具有可重復(fù)性。它綜合性很強(qiáng),涉及面不僅包括控制測(cè)量學(xué)、測(cè)量平差、工程測(cè)量學(xué)等測(cè)量專業(yè)內(nèi)容,還涉及數(shù)據(jù)結(jié)構(gòu)、數(shù)組與過(guò)程、編程技術(shù)等多方面內(nèi)容。編寫(xiě)的程序在測(cè)量作業(yè)中起到了很大的作用,方便了計(jì)算,節(jié)約了時(shí)間,提高了工作效率并且能夠保證計(jì)算結(jié)果準(zhǔn)確可靠。同時(shí),為以后熟練使用卡西歐計(jì)算器奠定了基礎(chǔ)。本設(shè)計(jì)課題將vb語(yǔ)言與測(cè)量程序設(shè)計(jì)進(jìn)行了有機(jī)結(jié)合。本論文的主要目的是使我們?cè)趯W(xué)習(xí)vb語(yǔ)言編程的同時(shí),能夠結(jié)合測(cè)繪專業(yè)的例子,一方面可以鞏固測(cè)繪專業(yè)知識(shí),另一
3、方面可以掌握運(yùn)用vb語(yǔ)言編寫(xiě)程序解決測(cè)繪專業(yè)問(wèn)題的能力。關(guān)鍵詞:vb、導(dǎo)線、程序設(shè)計(jì)目 錄摘要第1章 緒論 .1 1.1 測(cè)量程序設(shè)計(jì)的出發(fā)點(diǎn) .11.2 測(cè)量程序設(shè)計(jì)的重要性 .11.3 測(cè)量程序設(shè)計(jì)的過(guò)程 .1第2章 測(cè)量程序設(shè)計(jì)基礎(chǔ) .1 2.1 vb6.0簡(jiǎn)介.2 2.2 vb6.0的優(yōu)越性.2 2.3 測(cè)量中批量數(shù)據(jù)的處理.3 2.4 測(cè)量常用基本程序匯編.9 第3章 測(cè)量工具箱的創(chuàng)建思路.173.1 界面分析及設(shè)計(jì)步驟.173.2 主窗體界面及代碼.18 3.3 注意事項(xiàng).20第4章 vb測(cè)量程序設(shè)計(jì).21 4.1 已知三角形三點(diǎn)坐標(biāo)求內(nèi)角.21 4.2 線路測(cè)量實(shí)習(xí)成績(jī)?cè)u(píng)定.23
4、 4.3 前方交會(huì).24 4.4 測(cè)邊交會(huì).26 4.5 多測(cè)回水平角計(jì)算.28 4.6 基于vba的excel測(cè)量程序在工程測(cè)量中的運(yùn)用.31第5章 結(jié)束語(yǔ).35參考文獻(xiàn).36致 謝.37第1章 緒論本章主要介紹為什么要進(jìn)行測(cè)量程序設(shè)計(jì)以及測(cè)量程序設(shè)計(jì)的重要性,最后說(shuō)明測(cè)量程序設(shè)計(jì)的過(guò)程。1.1 測(cè)量程序設(shè)計(jì)的出發(fā)點(diǎn)在實(shí)際的測(cè)量中,有時(shí)候要自己進(jìn)行數(shù)據(jù)處理,或者是進(jìn)行必要的計(jì)算。如果待處理的數(shù)據(jù)有上千個(gè)甚至更多,例如在諸如工程施工放樣、大壩安全監(jiān)測(cè)、地圖繪制等測(cè)繪工作中,都必然涉及到海量的數(shù)據(jù)傳輸、存儲(chǔ)、檢索、處理等工作這時(shí)候僅僅靠手算是不能滿足的,所以要利用軟件(即程序)進(jìn)行處理。1.2
5、測(cè)量程序設(shè)計(jì)的重要性如今,能夠進(jìn)行編程的語(yǔ)言很多,例如vb、vf、c+等,通過(guò)這些語(yǔ)言編寫(xiě)出來(lái)的測(cè)量程序簡(jiǎn)單易用、方便快速、功能強(qiáng)大、應(yīng)用廣泛,適合測(cè)量專業(yè)人員使用,極大地方便了測(cè)量工作者,節(jié)約了時(shí)間,提高了效率。從學(xué)習(xí)角度上講,vb的簡(jiǎn)單和可視化、面向?qū)ο蟮忍攸c(diǎn),也非常適合作為一門(mén)語(yǔ)言來(lái)學(xué)習(xí),所以本論文所編寫(xiě)的程序均采用vb編寫(xiě)。1.3 測(cè)量程序設(shè)計(jì)的過(guò)程要想進(jìn)行測(cè)量程序設(shè)計(jì),一方面,要掌握測(cè)量專業(yè)知識(shí),比如測(cè)量平差基礎(chǔ)等;另一方面,要有一定的vb知識(shí),比如數(shù)組、過(guò)程等。只有這樣才能夠熟練的編寫(xiě)測(cè)量程序。對(duì)于測(cè)繪專業(yè)的學(xué)生來(lái)說(shuō),編寫(xiě)專業(yè)相關(guān)的程序也是一個(gè)深化測(cè)量基礎(chǔ)知識(shí)的過(guò)程,當(dāng)用設(shè)計(jì)程序來(lái)
6、解決一個(gè)測(cè)量問(wèn)題時(shí),例如導(dǎo)線計(jì)算,必須先弄清楚計(jì)算導(dǎo)線的步驟:需要哪些數(shù)據(jù),經(jīng)過(guò)哪些檢核計(jì)算,如何算出最后的導(dǎo)線點(diǎn)坐標(biāo)等。明確了這些處理步驟以后,再把這些步驟用計(jì)算機(jī)能夠識(shí)別的指令編寫(xiě)出來(lái)并送入計(jì)算機(jī)執(zhí)行,計(jì)算機(jī)才能按照我們的要求對(duì)指定的數(shù)據(jù)求解。計(jì)算機(jī)能執(zhí)行的指令序列成為程序,而編寫(xiě)程序的過(guò)程稱為程序設(shè)計(jì)。由此可知,編寫(xiě)測(cè)量程序的過(guò)程,也是對(duì)測(cè)量基礎(chǔ)知識(shí)復(fù)習(xí)、鞏固和加深的過(guò)程。當(dāng)然,一個(gè)程序并不是從最開(kāi)始就十分契合待解決的實(shí)際問(wèn)題,也不能一成不變,只有通過(guò)反復(fù)的使用,不斷根據(jù)實(shí)際應(yīng)用的需要反復(fù)改進(jìn),才能真正編寫(xiě)出適合實(shí)際的測(cè)量程序來(lái)。一般來(lái)說(shuō),利用vb6.0創(chuàng)建測(cè)量程序有以下6個(gè)主要步驟:(
7、1) 綜合分析,建立數(shù)學(xué)模型。(2) 創(chuàng)建應(yīng)用程序界面。(3) 設(shè)置窗體和控件的屬性。(4) 編寫(xiě)代碼。(5) 運(yùn)行和調(diào)試應(yīng)用程序。(6) 保存程序。第二章 測(cè)量程序設(shè)計(jì)基礎(chǔ)本論文中的測(cè)量程序是利用vb語(yǔ)言編寫(xiě)出來(lái)的,所以要對(duì)掌握vb的相關(guān)知識(shí)并且能夠熟練運(yùn)用,在測(cè)量綜合程序的編寫(xiě)過(guò)程中用到了很多的基本程序,從而構(gòu)成它們的子程序,為此要編寫(xiě)出基本的測(cè)量程序,測(cè)量中的數(shù)據(jù)往往是批量的,所以能夠進(jìn)行批量處理。本章主要介紹了vb6.0的相關(guān)知識(shí)、簡(jiǎn)單的基本程序,例如角度弧度的轉(zhuǎn)化、坐標(biāo)正反算等,還寫(xiě)出了對(duì)測(cè)量批量數(shù)據(jù)處理的相關(guān)知識(shí),例如數(shù)組、過(guò)程等以及批量數(shù)據(jù)處理flexgrid控件等知識(shí)。2.1
8、vb6.0簡(jiǎn)介 vb是visual basic的簡(jiǎn)稱,vb是從basic語(yǔ)言發(fā)展而來(lái)的,是windows環(huán)境下快速開(kāi)發(fā)應(yīng)用程序的可視化工具。其中,visual是指開(kāi)發(fā)圖形用戶界面的方法,是指直觀的編程方法。basic是指basic語(yǔ)言。之所以叫做visual basic,就是因?yàn)樗褂昧薭asic語(yǔ)言作為代碼。作為程序設(shè)計(jì)語(yǔ)言,vb的主要特點(diǎn)為:(1)面向?qū)ο蟮目梢暬O(shè)計(jì)平臺(tái);(2)事件驅(qū)動(dòng)的編程機(jī)制;(3)結(jié)構(gòu)化的設(shè)計(jì)語(yǔ)言;(4)充分利用windows資源;(5)具有開(kāi)放的數(shù)據(jù)庫(kù)功能與網(wǎng)絡(luò)支持。 1991年,微軟公司為了簡(jiǎn)化windows應(yīng)用程序的開(kāi)發(fā)過(guò)程,推出了visual basic 1
9、.0版,它極大的改變了人們對(duì)windows的看法,以及使用windows的方式。1992年、1993年兩年間,在visual basic1.0的基礎(chǔ)上又相繼推出了visual basic 2.0版和visual basic 3.0版。1995年,隨著windows 95轟轟烈烈的發(fā)布,visual basic 4.0版也隨之問(wèn)世。1997年,微軟公司推出了visual basic 5.0版。1998年推出了visual basic 6.0版。微軟公司在推出英文版的同時(shí),也推出了中文版,從而大大的方便了中國(guó)用戶。visual basic的最新版本是2006年發(fā)布的visual studio 20
10、05套件中的visual basic 2005。但是由于visual basic 2005對(duì)運(yùn)行環(huán)境要求較嚴(yán)格,所以目前使用者較少。 現(xiàn)在擁有最多用戶的visual basic版本依然是visual basic 6.0,它包括三種版本:學(xué)習(xí)班、專業(yè)版和企業(yè)版。三種版本適合于不同的用戶層次。 visual basic 6.0是專門(mén)為windows 9x/nt/2000等32位操作系統(tǒng)設(shè)計(jì)的。用visual basic 6.0的編譯器可以自動(dòng)生成32位應(yīng)用程序,可脫離visual basic 6.0的運(yùn)行環(huán)境,且運(yùn)行速度更快、更安全,適合在多任務(wù)環(huán)境下運(yùn)行。2.2 vb6.0的優(yōu)越性目前使用較多的
11、編程語(yǔ)言有visual basic、visual foxpro等,它們各有特點(diǎn),分別適合不同的領(lǐng)域。從學(xué)習(xí)角度上講,vb的簡(jiǎn)單和可視化、面向?qū)ο蟮忍攸c(diǎn),也非常適合作為一門(mén)語(yǔ)言來(lái)學(xué)習(xí)。作為高質(zhì)量的開(kāi)發(fā)軟件,vb6.0具有以下顯著的優(yōu)點(diǎn):2.2.1 簡(jiǎn)單易學(xué)visual basic在繼承了basic語(yǔ)言簡(jiǎn)單易用的基礎(chǔ)上,改造了basic語(yǔ)言中復(fù)雜冗長(zhǎng)且極易出錯(cuò)的“面條式”結(jié)構(gòu),而是以接近于人類自然語(yǔ)言和邏輯思維方式的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言取代之,使其更加流暢、自然。用vb編寫(xiě)程序代碼,如同用英文跟計(jì)算機(jī)交代工作任務(wù)一樣。vb的編程器支持彩色代碼,還可以自動(dòng)進(jìn)行語(yǔ)言檢查,同時(shí)具有強(qiáng)大且使用靈活的調(diào)試器和
12、編譯器,這些都使得vb程序設(shè)計(jì)從學(xué)習(xí)到使用都非常簡(jiǎn)單方便。2.2.2 面向?qū)ο蟮目梢暬绦蛟O(shè)計(jì)面向?qū)ο蟮某绦蛟O(shè)計(jì)是當(dāng)代程序設(shè)計(jì)的主流,既符合人們的思維和解決問(wèn)題的邏輯,又是開(kāi)發(fā)大型程序的必須。這里,“對(duì)象”是一個(gè)比較抽象的概念,可以理解成封裝了一些代碼和數(shù)據(jù)的集合,能夠完成一定的動(dòng)作和功能。vb中的對(duì)象主要分為窗體和控件兩類。窗體是用戶工作區(qū),所有控件都在窗體中集成,從而構(gòu)成應(yīng)用程序的界面;控件是指“空的對(duì)象”或基本對(duì)象,是應(yīng)用程序的圖形用戶界面的一個(gè)組件,對(duì)其屬性可以進(jìn)行不同的設(shè)置,從而構(gòu)成不同的對(duì)象。vb這種可視化的用戶界面設(shè)計(jì)功能,把程序設(shè)計(jì)人員從繁瑣復(fù)雜的界面設(shè)計(jì)中解脫出來(lái)??梢暬幊?/p>
13、環(huán)境的“所見(jiàn)即所得”功能,使界面設(shè)計(jì)如同積木游戲一樣,從而使我們感覺(jué)到編程也是一種享受。2.2.3 事件驅(qū)動(dòng)的編程機(jī)制事件驅(qū)動(dòng)機(jī)制是vb區(qū)別于其他高級(jí)語(yǔ)言的顯著特點(diǎn)。vb沒(méi)有明顯的主程序概念,程序員要做的就是面向不同的對(duì)象分別編寫(xiě)它們的事件過(guò)程。事件驅(qū)動(dòng)應(yīng)用程序的典型事件序列如下:?jiǎn)?dòng)應(yīng)用程序,加載和顯示窗體。窗體和控件接受事件。如果在相應(yīng)的事件過(guò)程中存在代碼,則執(zhí)行代碼。然后,應(yīng)用程序等待下一次事件。2.2.4 高度的可擴(kuò)充性vb為用戶提供的擴(kuò)充途徑包括:支持第三方軟件商為其開(kāi)發(fā)的可視化控件對(duì)象;支持訪問(wèn)動(dòng)態(tài)鏈接庫(kù)dll;支持訪問(wèn)應(yīng)用程序接口api。2.2.5 廣泛支持的二次開(kāi)發(fā)能力vb與m
14、icrosoft系列軟件天然的結(jié)合,使得編程變得非常容易。在word文檔上增加一些實(shí)現(xiàn)簡(jiǎn)單功能的按鈕和滾動(dòng)條;在excel表格的基礎(chǔ)上進(jìn)一步開(kāi)發(fā)適合自己應(yīng)用的表格程序等,都非常方便快捷。而且眾多測(cè)繪專業(yè)軟件都支持vba,使得vb也成為專業(yè)人士進(jìn)行二次開(kāi)發(fā)的很好選擇。例如autocad可以用vba實(shí)現(xiàn)有關(guān)的界面和功能。2.2.6 強(qiáng)大的數(shù)據(jù)庫(kù)訪問(wèn)能力vb中提供了強(qiáng)大的數(shù)據(jù)庫(kù)管理和存取操作能力。利用數(shù)據(jù)控件和數(shù)據(jù)庫(kù)管理窗口,能直接編輯和訪問(wèn)access,foxpro等,通過(guò)訪問(wèn)或建立連接的方式使用并操作后臺(tái)大型網(wǎng)絡(luò)數(shù)據(jù)庫(kù),如sql server,oracle等 。vb6.0還具有功能強(qiáng)大、使用方便
15、的ado技術(shù),支持所有的ole db數(shù)據(jù)庫(kù)廠商。2.3 測(cè)量中批量數(shù)據(jù)的處理在測(cè)量中,測(cè)量數(shù)據(jù)往往都是大量的數(shù)據(jù)同時(shí)處理,例如一個(gè)水準(zhǔn)網(wǎng)就有幾十個(gè)點(diǎn),需要列很多方程進(jìn)行平差,很難想象使用一個(gè)一個(gè)的簡(jiǎn)單變量和一條一條的簡(jiǎn)單語(yǔ)句來(lái)處理這些數(shù)據(jù)。本節(jié)將介紹批量數(shù)據(jù)處理的幾個(gè)工具:循環(huán)、數(shù)組和過(guò)程。數(shù)組可以存儲(chǔ)批量的數(shù)據(jù),而循環(huán)則可以重復(fù)多次執(zhí)行某些語(yǔ)句,過(guò)程則進(jìn)一步將某些程序封裝起來(lái)以便于重用。另外本章還將介紹批量數(shù)據(jù)處理控件等。2.3.1 循環(huán)結(jié)構(gòu)編寫(xiě)程序時(shí)經(jīng)常需要對(duì)某條或某些語(yǔ)句重復(fù)執(zhí)行多次,這可以利用各種循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。vb中提供了兩種類型的循環(huán)語(yǔ)句,即計(jì)數(shù)型循環(huán)語(yǔ)句和條件型循環(huán)語(yǔ)句。for循
16、環(huán)是計(jì)數(shù)型循環(huán)語(yǔ)句,而while循環(huán)和do循環(huán)語(yǔ)句屬于條件型循環(huán)語(yǔ)句。2.3.1.1 for循環(huán)for循環(huán)用于實(shí)現(xiàn)循環(huán)次數(shù)已知的循環(huán)結(jié)構(gòu),程序按照此種結(jié)構(gòu)中指明的循環(huán)次數(shù)來(lái)執(zhí)行循環(huán)體部分。for循環(huán)格式如下:for循環(huán)變量=初始值to終值step步長(zhǎng) 循環(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),它們都是通過(guò)判斷一個(gè)條件的成立與否來(lái)決定是執(zhí)行循環(huán)體語(yǔ)句還是結(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)比較簡(jiǎn)單,其格式如下: while條件 循環(huán)體 wend與前面的for循環(huán)比較可以看出,for語(yǔ)句的格式比較緊湊,表達(dá)豐富;但是while語(yǔ)句比較簡(jiǎn)單靈活、易于理解,對(duì)于有一個(gè)判斷條件、循環(huán)次數(shù)未知的循環(huán)尤其適用。(2) do循環(huán)do循環(huán)也是根據(jù)某個(gè)條件是否成立來(lái)決定能否執(zhí)行相應(yīng)的循環(huán)體部分,與while循環(huán)不同的是,do循環(huán)有兩種格式,既可以在初始位置檢驗(yàn)條件是否成立,也可以在執(zhí)行一遍循環(huán)體后的結(jié)束位置判斷條件是否成立,能否進(jìn)入下一次循環(huán)。do循環(huán)的兩種格式如下:(1) 格式一: do 語(yǔ)句體 滿足某條件時(shí)exit do語(yǔ)句體 loopwhile和unti
18、l條件(2) 格式二dowhile和until條件 語(yǔ)句體 滿足某條件時(shí)exit do語(yǔ)句體 loop2.3.1.3 循環(huán)的嵌套在一個(gè)循環(huán)體內(nèi)又包含了一個(gè)完整循環(huán)的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套。循環(huán)的嵌套對(duì)for循環(huán)、do循環(huán)和while循環(huán)都適用。對(duì)于循環(huán)嵌套,要注意以下兩點(diǎ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ù)組在實(shí)際應(yīng)用中經(jīng)常要處理同一性質(zhì)的成批數(shù)據(jù),有效的辦法是通過(guò)數(shù)組來(lái)存取。而數(shù)組與循環(huán)相結(jié)合編寫(xiě)出的程序就有了無(wú)窮的威力。 例1:求15個(gè)觀
19、測(cè)值(等權(quán))的均值和方差。若使用簡(jiǎn)單變量來(lái)存儲(chǔ)15個(gè)觀測(cè)值,則需要15個(gè)變量v1,v2,v15,如果各觀測(cè)值不等權(quán),還需另外定義相應(yīng)的15個(gè)變量存儲(chǔ)15個(gè)觀測(cè)對(duì)應(yīng)的權(quán)p1,p2,p15。這樣寫(xiě)出的程序會(huì)十分復(fù)雜,而且只能處理15個(gè)觀測(cè)值的情況,當(dāng)觀測(cè)值數(shù)增加或減少時(shí),則需修改程序,十分不方便。若觀測(cè)值數(shù)增加到幾百個(gè)甚至上萬(wàn)個(gè)時(shí),這樣編寫(xiě)代碼是難以忍受的。當(dāng)使用數(shù)組時(shí),不但可擴(kuò)展性好,而且結(jié)合循環(huán),只要很少的代碼就可以實(shí)現(xiàn)這一工作。其實(shí)現(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 & 個(gè)觀測(cè)值) aver=aver+v(i) next i aver=aver/15 print 平均值為;aver數(shù)組并不是一種數(shù)據(jù)類型,而是一組相同類型的變量的集合。在程序中使用數(shù)組的最大好處是用一個(gè)數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標(biāo)來(lái)區(qū)分?jǐn)?shù)組中的不同元素,并與循環(huán)語(yǔ)句結(jié)合使用,以簡(jiǎn)化程序,實(shí)現(xiàn)批量數(shù)據(jù)的處理。數(shù)組內(nèi)的元素是連續(xù)存放的,而且有上、下兩個(gè)邊界限制數(shù)組內(nèi)元素的個(gè)數(shù)和數(shù)組的起始位置及結(jié)束位置。一般情況下,一個(gè)數(shù)組中的元素類型必須相同,可以是前面講過(guò)的各種基本類型。特殊的是當(dāng)數(shù)組類型指定為variant時(shí),其中元素的類型可以為各種基本類
21、型的混合。一個(gè)數(shù)組可以是一維的,也可以是多維的,vb中最多允許數(shù)組有60維。一般可以將數(shù)組分成兩類,一類是固定數(shù)組,該數(shù)組的大小始終保持不變;另一類是動(dòng)態(tài)數(shù)組,該數(shù)組的大小在程序運(yùn)行時(shí)可以改變。2.3.2.1 固定數(shù)組固定數(shù)組分為一維數(shù)組和多維數(shù)組。聲明一個(gè)固定數(shù)組時(shí),必須給定數(shù)組使用的有效范圍。以一維數(shù)組為例,聲明時(shí)在數(shù)組名后跟一個(gè)用括號(hào)括起來(lái)的上界(默認(rèn)下界為0)。聲明格式如下:dim 數(shù)組名(下標(biāo))as類型2.3.2.2 動(dòng)態(tài)數(shù)組事先不知道數(shù)組的大小時(shí),可以先聲明該數(shù)組為動(dòng)態(tài)數(shù)組,等需要時(shí)再用redim語(yǔ)句指定數(shù)組的大小。聲明動(dòng)態(tài)數(shù)組時(shí)不需要給出數(shù)組的長(zhǎng)度,只需保留一個(gè)空維數(shù)表。創(chuàng)建動(dòng)態(tài)
22、數(shù)組的步驟為:(1)聲明數(shù)組為動(dòng)態(tài)數(shù)組,只需給數(shù)組附以一個(gè)空維數(shù)表。例如,聲明一個(gè)整型動(dòng)態(tài)數(shù)組matrix,可以使用如下語(yǔ)句:dim matrix() as integer(2)在需要指定數(shù)組大小時(shí),再使用redim語(yǔ)句分配數(shù)組中實(shí)際元素的個(gè)數(shù)。redim 數(shù)組名(數(shù)組長(zhǎng)度-1),例如,給上例的matrix數(shù)組指定元素個(gè)數(shù)為9時(shí),可以使用如下語(yǔ)句:redim matrix(8) as integer。2.3.3 過(guò)程將程序分割成較小的邏輯部件可以簡(jiǎn)化程序設(shè)計(jì)任務(wù),這些部件稱為過(guò)程。vb的過(guò)程根據(jù)是否有返回值分為子過(guò)程和函數(shù)過(guò)程兩類。2.3.3.1 子過(guò)程子過(guò)程(sub過(guò)程)是在響應(yīng)事件時(shí)執(zhí)行的
23、代碼塊。將模塊中的代碼分成子過(guò)程后,在應(yīng)用程序中查找和修改代碼更容易。子過(guò)程的定義方法如下:private|publicstaticsub過(guò)程(參數(shù)表) 語(yǔ)句end sub每次調(diào)用過(guò)程都會(huì)執(zhí)行sub 和end sub之間的語(yǔ)句,可以將子過(guò)程放入標(biāo)準(zhǔn)模塊、類模塊和窗體模塊中。按照默認(rèn)規(guī)定,所有模塊中的子過(guò)程為public,這意味著在應(yīng)用程序中可隨處調(diào)用它們。2.3.3.2 函數(shù)過(guò)程vb除了內(nèi)部函數(shù),如sqr()、sin()和chr()等,還可用function語(yǔ)句編寫(xiě)自己的函數(shù)(function)過(guò)程。函數(shù)過(guò)程的語(yǔ)法是:private|publicstaticfunction函數(shù)過(guò)程名(參數(shù)表)
24、 as類型 語(yǔ)句end sub與sub過(guò)程一樣,function過(guò)程也是一個(gè)獨(dú)立的過(guò)程,可讀取參數(shù)、執(zhí)行一系列語(yǔ)句并改變其參數(shù)的值。與sub過(guò)程不同的是,function過(guò)程可返回一個(gè)值給調(diào)用的過(guò)程。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提供的一個(gè)輸入和顯示批量數(shù)據(jù)的控件。與列表框和組合框不同的是,它不但可以輸入和顯示單列數(shù)據(jù),還可以輸入和顯示多列(二維表格)數(shù)據(jù),并且
25、可以顯示行號(hào)和列標(biāo)頭,非常適合測(cè)量程序中批量數(shù)據(jù)的輸入和顯示。當(dāng)然,flexgrid控件本身并不能進(jìn)行數(shù)據(jù)的輸入和顯示處理,它只是提供一個(gè)界面和相應(yīng)的屬性、事件和方法,具體要實(shí)現(xiàn)什么樣的功能,需要使用者自行編程實(shí)現(xiàn)。 flexgrid控件是activex控件,需要通過(guò)“工程-部件”命令選擇microsoft flexgrid control6.0選項(xiàng),將flexgrid控件添加到工具箱。添加到窗體的flexgrid控件如圖2-1所示。新添加的flexgrid控件默認(rèn)名為msflexgrid1,默認(rèn)有兩行兩列,共4個(gè)網(wǎng)格。其中第一行為列表頭,第一列為行號(hào)欄,它們與其他網(wǎng)格的區(qū)別只是外觀不同。fl
26、exgrid的常見(jiàn)屬性有cols(列)、rows(行)、col(當(dāng)前操作網(wǎng)格列號(hào))row(當(dāng)前操作網(wǎng)格行號(hào))、text(存取當(dāng)前操作網(wǎng)格的內(nèi)容)、mosepointer、(設(shè)置鼠標(biāo)在控件上移動(dòng)時(shí)的形狀)。在設(shè)計(jì)狀態(tài),右鍵單擊窗體上的flexgrid控件,選擇“屬性”菜單項(xiàng),彈出屬性頁(yè)對(duì)話框,如圖2-2所示。圖2-1 flexgrid控件圖2-2 flexgrid控件的屬性頁(yè)下面舉例說(shuō)明flexgrid控件的使用:使用flexgrid控件輸入一個(gè)33矩陣,實(shí)現(xiàn)矩陣中所有元素的值增倍或減半。新建一個(gè)工程,在窗體上添加一個(gè)flexgrid控件和2個(gè)命令按鈕,在屬性頁(yè)中將flexgrid控件設(shè)置成4行
27、4列,修改命令按鈕的caption屬性和name屬性并將flexgrid控件的mosepointer屬性設(shè)置為3-flexbeam。程序設(shè)計(jì)界面如圖2-3所示。圖2-3 flexgrid控件演示程序設(shè)計(jì)界面首先是在窗體的load事件中初始化flexgrid控件,顯示列標(biāo)號(hào)和行號(hà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語(yǔ)句來(lái)簡(jiǎn)化代碼。接著來(lái)實(shí)現(xiàn)flexgrid控件的數(shù)據(jù)輸入操作。flexgrid控件自身并不能接受鍵盤(pán)輸入數(shù)據(jù),需要編程實(shí)現(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,為了實(shí)現(xiàn)delete鍵功能,將文本清空。具體代碼如下:private sub msflexgrid1_keyup(keycode as integer, shift as integer)if keycode = 46 then msflexgrid1.text = end ifend sub增倍和減半功能具體實(shí)現(xiàn)代碼如下:private sub command1
30、_click() 將元素?cái)?shù)值變?yōu)樵瓉?lái)的兩倍dim 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() 將元素?cái)?shù)值變?yōu)樵瓉?lái)的一半dim 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í)行時(shí)的界面如圖2-4所示:圖2-4 flexgrid控件程序執(zhí)行界面2.4 測(cè)量常用基本程序匯編本節(jié)主要介紹使用vb6.0編寫(xiě)基本測(cè)量程序的過(guò)程,包括vb語(yǔ)言基礎(chǔ)和測(cè)量基本知識(shí)。綜合運(yùn)用vb和測(cè)量的基本知識(shí)編寫(xiě)出真正適合自己的應(yīng)用程序。本節(jié)的主要內(nèi)容為:四舍六入,奇進(jìn)偶不進(jìn)、計(jì)算兩點(diǎn)間的距離和坐標(biāo)方位角、角度與弧度的換算、坐標(biāo)正反算等。2.4.1 四舍六入,奇進(jìn)偶不進(jìn) 在測(cè)量中數(shù)值的取位遵循“四舍六入、奇進(jìn)偶不進(jìn)”。如果小數(shù)點(diǎn)后保留3位,即要求對(duì)千分位即取位至毫米上的數(shù)值進(jìn)行“四舍六入、奇進(jìn)偶不進(jìn)”的判斷。分以下三種情況:(1)千分位后面的數(shù)值小于等于
32、四,如2.3421,此時(shí)直接舍棄小數(shù)點(diǎn)后第四位以后的數(shù)值;(2)千分位后面的數(shù)值大于等于六,如2.3427,此時(shí)小數(shù)點(diǎn)后第三位直接進(jìn)1;(3)小數(shù)點(diǎn)后面第四位是數(shù)值5,如2.2425,此時(shí)判斷千分位,如果是奇數(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ù)點(diǎn)后第四位d = mid(b, 4, 1) 得到小數(shù)點(diǎn)
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 計(jì)算兩點(diǎn)間的距離和坐標(biāo)方位角(1)數(shù)學(xué)模型由兩個(gè)已知點(diǎn)求這兩點(diǎn)間的距
34、離和坐標(biāo)方位角是測(cè)量學(xué)中經(jīng)常用到的計(jì)算,在其它的測(cè)量綜合編程中,計(jì)算兩點(diǎn)間距離和坐標(biāo)方位角是其重要的基礎(chǔ)。本程序可用于根據(jù)兩已知點(diǎn)a、b坐標(biāo)計(jì)算a、b兩點(diǎn)間的距離和坐標(biāo)方位角,在計(jì)算坐標(biāo)方位角時(shí)先計(jì)算出象限角,然后通過(guò)象限角與方位角的關(guān)系轉(zhuǎn)化為方位角。主要計(jì)算公式為: 求兩點(diǎn)距離:s = sqr(x 2 + y 2) 求坐標(biāo)方位角: = atn(y / x)本程序主要應(yīng)用到vb中乘方運(yùn)算符()和平方根函數(shù)sqr()。(2)其程序執(zhí)行界面如圖2-6所示:圖2-6 計(jì)算兩點(diǎn)間距離和坐標(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ù)為零,請(qǐng)檢查坐標(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的符號(hào)判斷rab與ab的關(guān)系,從而得到方位角)rab稱為象限角,求方位角ab時(shí),有如下規(guī)律:x y 方位角 rab pirab pirab 2*pirab同時(shí)還要注意落到坐標(biāo)軸上的情況,如x、y其中一個(gè)或兩個(gè)等于零。在本程序的編寫(xiě)中要注意反正切函數(shù)atn()和取絕對(duì)值函數(shù)abs()的運(yùn)用。其程序執(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章 測(cè)量工具箱的創(chuàng)建思路設(shè)計(jì)測(cè)量工具箱是本次畢業(yè)設(shè)計(jì)的課題,在測(cè)量中,對(duì)數(shù)據(jù)處理時(shí)有時(shí)候要用到很多的程序。測(cè)量工具箱就是把編寫(xiě)的測(cè)量程序進(jìn)行一下匯總,是對(duì)畢業(yè)設(shè)計(jì)成果的一種匯
43、總,并且方便對(duì)所編的程序進(jìn)行集中管理,同時(shí)運(yùn)用起來(lái)也方便,所以要構(gòu)成測(cè)量程序集。本論文設(shè)計(jì)中的測(cè)量工具箱采用“菜單”的形式進(jìn)行編輯,菜單是應(yīng)用程序的組成部分之一,它一般由菜單欄和下拉菜單組成,如vb系統(tǒng)集成環(huán)境中的菜單欄。從結(jié)構(gòu)上看,菜單可分成若干級(jí),第一級(jí)是菜單欄,它包括若干菜單項(xiàng)。菜單項(xiàng)為橫向排列,每一菜單項(xiàng)都可對(duì)應(yīng)一個(gè)下拉式菜單,子菜單中的選項(xiàng)豎向排列,同時(shí)子菜單中的每一項(xiàng)又可以有自己的下拉菜單。本論文設(shè)計(jì)中把菜單分成兩級(jí),把所編寫(xiě)的測(cè)量程序納入其中。3.1 界面分析及設(shè)計(jì)步驟將主窗體的caption屬性設(shè)置為“測(cè)量程序集”,并適當(dāng)調(diào)整窗體的大小。其設(shè)計(jì)步驟為:(1) 建立菜單,啟動(dòng)vb
44、6.0,進(jìn)入編程界面,建立菜單的過(guò)程是先列出菜單的組成,然后在“菜單編輯器”窗口按照菜單組成進(jìn)行設(shè)計(jì),設(shè)計(jì)完后,再把各菜單項(xiàng)與代碼連接起來(lái);(2)打開(kāi)“菜單編輯器”,點(diǎn)擊“工具”菜單的“菜單編輯器”命令,窗體上顯示出“菜單編輯器”,如圖3-1所示;(3)輸入并把代碼連接到菜單上,在“標(biāo)題欄”中輸入“基本程序”,在“名稱”欄中輸入“jiben”字樣,然后點(diǎn)擊“下一個(gè)”,再點(diǎn)擊“”符號(hào),即編輯二級(jí)標(biāo)題,在“標(biāo)題欄”和 “名稱”欄中分別輸入相應(yīng)的程序名稱,此時(shí)可以設(shè)置快捷鍵,最后點(diǎn)“確定”,顯示出如圖3-2所示的界面;(4)重復(fù)上一步,直到所有要添加的程序都輸入完為止。圖3-1 菜單編輯器圖3-2菜
45、單編輯器的輸入3.2添加窗體及代碼完成菜單的編輯工作之后,單擊“確定”按鈕,系統(tǒng)將檢查菜單的有效性,若檢查通過(guò),即保存該菜單并返回到窗體上顯示其主菜單項(xiàng);否則,系統(tǒng)將顯示對(duì)話框提示相應(yīng)錯(cuò)誤信息。當(dāng)需要放棄或取消本次編輯菜單的操作時(shí),可以單擊“取消”命令按鈕。 調(diào)整好各控件的位置和屬性,如表1所示,窗體執(zhí)行界面如圖3-3所示,測(cè)量工具箱中的導(dǎo)線平差界面如圖3-4所示:表3-1 各窗體屬性設(shè)置窗體名屬性值fspjcaption水平角計(jì)算fcbcaption測(cè)邊交會(huì)fqfcaption前方交會(huì)fdxcaption單導(dǎo)線平差計(jì)算圖3-3 窗體執(zhí)行界面圖3-2 導(dǎo)線平差由于菜單中包含很多程序,所以要添加
46、很多窗體,其步驟為: (1)首先并把菜單所在窗體的name屬性修改為“frm1”;(2)點(diǎn)擊“工程”菜單的“添加窗體”命令,選擇“存在”選項(xiàng)卡,找到本工程所在目錄,會(huì)顯示該目錄下的所有窗體文件,選擇任意一個(gè)想要添加的窗體,并修改其name屬性。(3)重復(fù)上一步,直到所有要添加的窗體都添加到工程中為止。在命令按鈕的click事件過(guò)程中編寫(xiě)代碼(由于此代碼較多且多雷同,故只選取前方交會(huì)、單導(dǎo)線平差、側(cè)邊交會(huì)、水平角計(jì)算和退出程序的代碼),調(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版窗簾布藝定制與售后維修服務(wù)合同3篇
- 2024版信息調(diào)研保密協(xié)議3篇
- 個(gè)人二手房產(chǎn)買賣協(xié)議樣本(2024版)
- 2025年度工業(yè)用地租賃居間合同范本4篇
- 2025餐飲業(yè)食品安全溯源技術(shù)合作合同范本3篇
- 2024版深水井施工合同
- 2025年叉車租賃合同范本一(含綠色節(jié)能要求)4篇
- 二零二五年度補(bǔ)充協(xié)議范本:簽約次數(shù)規(guī)定及實(shí)施標(biāo)準(zhǔn)3篇
- 2024礦業(yè)資產(chǎn)買賣貸款居間服務(wù)協(xié)議版B版
- 二零二五年度風(fēng)力發(fā)電機(jī)組安裝與維護(hù)協(xié)議6篇
- 上海市12校2025屆高三第一次模擬考試英語(yǔ)試卷含解析
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案集錦
- 鋪大棚膜合同模板
- 長(zhǎng)亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書(shū)簡(jiǎn)版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲(chǔ)系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 你比我猜題庫(kù)課件
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論