999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

航標位置自動校核系統中航標數據解析算法的運用

2016-10-21 06:04:11龔燕峰
電子技術與軟件工程 2016年5期
關鍵詞:數據庫

龔燕峰

摘 要 利用C++編程技術采用堆棧數據結構將從遠程數據庫獲取到的原始航標數據進行解析處理,使得符合整個航標位置準確性自動校核系統的數據格式要求,并進一步將解析出來的航標數據存入指定的數據庫,以備后期對航標位置復核時使用。航標數據的解析工作是整個航標位置自動校核系統運行的開端,也是系統得以運行的基礎。

【關鍵詞】C++ 堆棧 數據解析 數據庫

本文在長江重慶航道局航標位置自動校核系統項目的基礎上進行論述的,其中原始航標數據的解析是整個航標位置自動校核系統項目的開端和進行項目其它階段的基礎,同時也是整個系統項目的核心環節,如何高效率的將從航標遙測遙控系統獲得的原始航標數據解析成系統項目中能直接使用的數據非常重要。

本項目軟件系統通過SoapClient遠程訪問航標遙測遙控系統,并通過航標遙測遙控管理軟件系統間接地從后臺數據庫獲取航標的數據。

1 原始航標數據的解析

上述獲取到的有關航標的數據暫時保存在一個文檔中,初步獲取的保存在這個文檔中的數據還不能直接在項目的軟件中使用,因此必須對這些數據做進一步解析處理,在航標數據的解析工作中我們采用了順序棧。

順序棧的類定義中各成員變量和成員函數的含義:

m_pBuffer:為指向棧元素的數組的頭指針;

m_pTop和m_pBottom:分別指向棧頂和棧底;

IsFull()成員函數:用來判斷棧中元素是否已經滿了;

GetSize()成員函數:用來獲取棧中元素的個數,隨著新元素的進棧和棧頂元素的出棧,在需要的時候需重新調用GetSize()成員函數;

push(T element)成員函數:用來將新元素寫入棧;

pop(T& element)成員函數:用來從棧中取出元素。

圖1是整個航標數據解析算法的流程圖,pChar為指向存有初始航標數據的拷貝字符數組的指針。

1.1 讀出原數據并獲得其副本

利用文件操作函數fopen打開之前保存了航標數據的文本文檔,將航標數據讀出到自定義的字符數組中,其中,全局函數GetModuleFileName(),用于獲取工程當前目錄;在使用那個保存有航標數據的字符數組前,先利用memcpy()函數獲得原數據的一個拷貝,以保證原數據的最終不被修改的原則,進行數據拷貝前還需先將自定義的拷貝數組的內存進行清零操作,在此,用到了memset()函數,為了保證拷貝數據的完整性,使用了多線程中的線程同步機制,具體采用了事件對象的線程同步方法,使得原數據在拷貝的過程中不被打斷。

1.2 解析數據

準備工作做好后,開始進入數據的核心解析工作了,本文主要利用一個大的while循環和堆棧來進行,循環條件是判斷一個指向待解析數據的字符指針是否為空,只要不為空,則循環繼續。在整個while循環里再利用一個if...else...選擇結構具體判斷指針所指向的字符為哪種類型,在else語句塊中,若所指向的字符不為“,”或“}”,則將字符數據存入棧中,直至遇到“,”或“}”字符,這意味著某個數據項或數據元素的結束,此時, if語句的執行主體要完成數據項和數據元素的讀取和儲存工作,每執行完這樣一個if語句主體便意味著一個航標的特性數據項或一整個航標的數據元素解析工作完成了。由于每個航標數據元素包括很多子元素,如:航標的經度、緯度等,因此,在if語句主體中,通過其他的結構具體完成子元素的解析工作,主要采用了幾個while和for循環結構,同時,由于子元素又包含兩個數據項,將它們分別命名為數據項名和數據項值,只有分別完成了數據項名和數據項值的解析才算完成了一個子元素的解析工作。

數據項值的解析:

經過最初的while大循環,代表數據項值的原始數據已被保存在棧中,為了解析它,需通過另一個while循環逐個將其從棧中取出進行判斷,只要棧非空,取出的字符非“"”并且非“:”,則將此字符存入一個字符數組中,循環結束后便完成了一個數據項值的解析。

數據項名的解析:

與數據項值相同,經過最初的while大循環,代表數據項名的原始數據已被保存在棧中,此時,通過另外一個while循環繼續從棧中取出數據進行判斷,只要棧非空并且取出的字符非“"”,則將此字符存入一個字符數組中,循環結束后便完成了一個數據項名的解析。

對數據項的解析工作完成后,即可將一個子元素保存在一個BEACON類型的結構中,此過程中采用了另一個if...else...結構,以strcmp()函數的返回值作為判斷條件,將與指定的數據項名匹配的數據項值依次保存在BEACON結構對應的成員中。完成某個數據項值的保存后繼續利用其它if語句判斷指向原數據的字符指針的內容是否為“}”(因為“}”意味著原數據中一個航標數據元素的結束),若為“}”,則將此時的BEACON結構保存的數據寫入到數據庫中,至此,航標數據的一個解析循環工作結束。

2 總結

本文詳述了在航標位置自動校核系統中對航標數據的解析算法的運用。首先利用Soap Client 客戶端通過航標遙測遙控軟件管理系統遠程獲取航道局航標數據庫的航標數據,并使用堆棧數據結構和C++編程技術將獲取到的原始航標數據進行解析,使其成為符合本系統規范的數據格式要求,并最后實現了將其存儲到本地數據庫以備用。為整個航標位置自動校核系統的成功運行提供了必要的數據基礎。

參考文獻

[1]David J.Kruglinski著,潘愛民,王國印譯.Visual C++ 技術內幕[M].北京:清華大學出版社,2002.

[2]長江航道局,長江干線航標配布研究[Z]. 武漢:長江航道局,2004.

作者單位

重慶交通大學交通運輸學院 重慶市 400074

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 一级一毛片a级毛片| 91成人试看福利体验区| 亚洲综合精品香蕉久久网| 中文字幕久久波多野结衣| 国产女人水多毛片18| 国产丝袜第一页| 亚洲欧美不卡| 2019国产在线| 国产在线视频导航| 亚洲国产精品一区二区高清无码久久 | 狠狠色婷婷丁香综合久久韩国 | 成人av专区精品无码国产| 97久久精品人人| 香蕉eeww99国产在线观看| 自偷自拍三级全三级视频| 国产精品毛片一区| 国产97公开成人免费视频| 国产第八页| 国产精品网址你懂的| 伊在人亞洲香蕉精品區| 黄色网页在线播放| 99爱在线| 亚洲成人一区二区| 91麻豆精品国产91久久久久| 第九色区aⅴ天堂久久香| 999国内精品久久免费视频| 色哟哟国产精品一区二区| 国产精品2| 欧美在线导航| 五月综合色婷婷| 亚洲欧美日韩中文字幕在线一区| 精品国产亚洲人成在线| 国产毛片不卡| 亚洲激情区| 在线播放真实国产乱子伦| 亚洲精品视频在线观看视频| 亚洲福利片无码最新在线播放| 青草免费在线观看| lhav亚洲精品| 欧美精品在线免费| 四虎亚洲精品| 中文字幕精品一区二区三区视频| 99这里只有精品免费视频| 一本色道久久88综合日韩精品| 色成人亚洲| 成人毛片免费观看| 在线a视频免费观看| 国产亚洲一区二区三区在线| h网站在线播放| 无码电影在线观看| 欧美在线伊人| 九九视频免费看| 激情六月丁香婷婷四房播| 国产成人综合网| 天天综合色网| 免费a级毛片18以上观看精品| 精品乱码久久久久久久| 伊人久综合| 国产在线观看一区二区三区| 手机看片1024久久精品你懂的| 欧美精品高清| 欧美成在线视频| 人妻精品久久无码区| 在线精品欧美日韩| 国产精品午夜电影| 无码福利视频| 国产成人高清亚洲一区久久| 久久成人国产精品免费软件| 国产微拍一区二区三区四区| 国产微拍精品| 国产精品一区二区国产主播| 欧美成人综合在线| 久久成人免费| 国产成人夜色91| 中文字幕久久波多野结衣| 三上悠亚在线精品二区| 日本中文字幕久久网站| 欧美全免费aaaaaa特黄在线| 97影院午夜在线观看视频| 热久久综合这里只有精品电影| 亚洲欧洲自拍拍偷午夜色| 成人久久18免费网站|