版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 基于SVG的自動站雨量分析系統(tǒng)的設(shè)計</p><p><b> 摘 要</b></p><p> SVG是由W3C組織開發(fā)的基于可擴展標(biāo)記語言的一種矢量圖形描述語言,已經(jīng)在互聯(lián)網(wǎng)上得到了較廣泛的應(yīng)用。為了以圖形方式直觀地顯示雨量數(shù)據(jù)變化,方便工作人員進行雨量數(shù)據(jù)的查詢及分析,設(shè)計了本套基于SVG的雨量分析系統(tǒng)。</p><
2、;p> 該自動站雨量分析系統(tǒng)是基于B/S架構(gòu),使用ASP.NET來開發(fā)的。主要使用了.NET三層架構(gòu)、XML程序集、矢量圖形的動態(tài)生成、Web服務(wù)等技術(shù),并實現(xiàn)了系統(tǒng)模塊管理、雨量數(shù)據(jù)管理、城市數(shù)據(jù)管理、雨量數(shù)據(jù)查詢、生成矢量圖形格式的圖表等功能模塊。在系統(tǒng)中主要對矢量圖形文檔的生成進行了分析和設(shè)計,采用DOM模型來操作該圖形文檔,并封裝了基本的圖形元素。</p><p> 該自動站雨量分析系統(tǒng)作了新的
3、嘗試,采用基于可擴展標(biāo)記語言的矢量圖形作為圖形格式,系統(tǒng)與Web服務(wù)技術(shù)相結(jié)合,使系統(tǒng)的可重用性和開放性得到了很大的提高。</p><p> 關(guān)鍵詞:可伸縮矢量圖形;可擴展標(biāo)記語言;.NET三層架構(gòu);Web服務(wù)</p><p> Design of the Auto-Station Rainfall Data Analysis System Based on SVG</p>
4、<p><b> Abstract</b></p><p> SVG developed by the W3C, is a vector graphics language based on the XML. And it has been widely used on the Internet. This rainfall analysis system is desig
5、ned to achieve the goal that the rainfall data's changes are displayed by graphic mode intuitively for assisting to analyze the rainfall data.</p><p> The auto-station rainfall analysis system, develope
6、d in ASP.NET, is based on Browser/Server framework. In this system, many technologies are used, such as .NET Trip-Layer Framework, the XML program assembly, automatic creation of SVG document, Web Service and etc. The sy
7、stem contained function management module, rainfall data management module, city data management module, rain data query module, automatic creation module of SVG document and etc. The Document Object Model is used for ma
8、nipulatin</p><p> Some new attempts have been made into the auto-station rainfall analysis system. By using SVG as graphics format and the Web Service technology, reusability and openness of the system is i
9、mproved greatly.</p><p> Key words: SVG; XML; .NET Trip-Layer Framework; Web Service</p><p><b> 1 引言</b></p><p><b> 1.1 項目背景</b></p><p> 雨量監(jiān)
10、測對于工農(nóng)業(yè)生產(chǎn)以及人民生活中的災(zāi)害預(yù)防、有效利用水資源具有重要意義,建立完整高效的雨量監(jiān)測系統(tǒng)顯得非常有必要。雨量分析系統(tǒng)是應(yīng)用于防汛、水文等部門的,用于輔助分析自動氣象站雨量監(jiān)測的數(shù)據(jù)。雨量分析系統(tǒng)通常都會生成一些圖表,但由于這些圖表是二進制格式的,其可重用性不高,而且這些系統(tǒng)通常都缺乏開放性,大量的數(shù)據(jù)無法提供給外部研究人員使用,造成資源浪費。</p><p> 該自動站雨量分析系統(tǒng)在雨量分析領(lǐng)域中作了新
11、的嘗試,它采用了基于XML(eXtensible Markup Language,可擴展標(biāo)記語言)的開放的SVG(Scalable Vector Graphics,可伸縮矢量圖形)作為圖形格式,在引入先進技術(shù)的同時,提高了系統(tǒng)的可重用性,而且該系統(tǒng)與Web服務(wù)的結(jié)合也使系統(tǒng)的開放性大大地提高。作為示例,該系統(tǒng)要實現(xiàn)對四川省部分市縣的城市及雨量數(shù)據(jù)進行管理與分析,能查詢各市縣的歷史雨量數(shù)據(jù)并以SVG格式的曲線圖顯示出來,實現(xiàn)簡單地統(tǒng)計分析
12、功能。作為一個完整的系統(tǒng),還要實現(xiàn)對系統(tǒng)內(nèi)各個模塊以及用戶權(quán)限的管理。</p><p> 1.2 本項目的應(yīng)用價值</p><p> 本套系統(tǒng)是基于SVG的雨量分析系統(tǒng),實現(xiàn)的主要功能是對各地收集的雨量數(shù)據(jù)加以分析,并以SVG矢量圖形方式進行顯示,使用戶能夠更加直觀地了解某一區(qū)域的歷史雨量。雨量分析系統(tǒng)主要應(yīng)用于防汛、水文等部門,通過對各地雨量數(shù)據(jù)的統(tǒng)計與分析,來預(yù)防可能會造成的洪水災(zāi)
13、害并有效的調(diào)配和利用水資源。</p><p> 1.3 本項目的相關(guān)開發(fā)技術(shù)</p><p> 該項目采用.NET開發(fā),開發(fā)環(huán)境采用Visual Studio 2003,數(shù)據(jù)庫采用MSSQLServer,并使用.NET的三層架構(gòu)技術(shù),使業(yè)務(wù)邏輯與數(shù)據(jù)表示隔離開來,提高系統(tǒng)的模塊化程序;在圖像顯示上使用了基于XML的矢量圖形語言SVG,并使用.NET XML DOM(Document O
14、bject Model,文檔對象模型)來生成和操作SVG圖形;并使用Web服務(wù)來提供外部接口,以提高系統(tǒng)的開放性。</p><p><b> 2 SVG技術(shù)</b></p><p><b> 2.1 XML介紹</b></p><p> XML是可擴展標(biāo)記語言的簡稱,它定義了結(jié)構(gòu)化表示數(shù)據(jù)的標(biāo)準(zhǔn)格式。XML是W3C(
15、World Wide Web Consortium,萬維網(wǎng)聯(lián)盟)為適應(yīng)互聯(lián)網(wǎng)的發(fā)展而推出的新型Web語言,是國際標(biāo)準(zhǔn)化組織所制訂的SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)的子集。它是用于定義其他標(biāo)識語言的一種元語言。它具有可擴展性、平臺獨立性、數(shù)據(jù)與表現(xiàn)分離以及結(jié)構(gòu)化數(shù)據(jù)等特點,非常適合網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)傳輸和表達。XML通過其可擴展性提供了一種通用的數(shù)據(jù)格式,不同的軟件系統(tǒng)之
16、間可以通過這種新的數(shù)據(jù)描述方式進行通信,從而實現(xiàn)完全的交互操作,這源于XML將結(jié)構(gòu)化的數(shù)據(jù)表示為一個純文本的特性??梢酝ㄟ^XML對信息加以規(guī)范化定義和描述,并且在互聯(lián)網(wǎng)上進行數(shù)據(jù)的傳輸。SVG就是XML在圖形圖像領(lǐng)域的一個應(yīng)用。</p><p><b> 2.2 SVG介紹</b></p><p> SVG是一種基于XML的開放的標(biāo)準(zhǔn)文本式矢量圖形描述語言,即它是
17、用XML元語言定義的語言。SVG圖像是與XML1.0兼容的文檔,SVG元素是指示如何繪制圖像的一些指令,閱讀器解釋這些指令,把SVG圖像在指定設(shè)備上顯示出來。使用SVG可以在網(wǎng)頁上顯示出各種各樣的高質(zhì)量的矢量圖形,包括許多圖像處理中常見的功能,如圖形、文字、動畫、顏色、濾鏡效果等。最關(guān)鍵的是SVG完全用普通文本來描述,也就是說,這是一種專門為網(wǎng)絡(luò)而設(shè)計的基于文本的圖像格式。由于SVG是基于XML的,所以可擴展性很強,能夠描述任何復(fù)雜的圖
18、像,甚至動態(tài)交互式圖像。</p><p> 2.3 SVG的特點</p><p> 雖然SVG的“矢量描述”并不是一個全新的概念,但它綜合了矢量圖形、點陣圖像和純文字的優(yōu)點,以一種標(biāo)準(zhǔn)將其統(tǒng)一起來描述。它由計算機根據(jù)矢量數(shù)據(jù)計算后繪制而成,相較于位圖圖像矢量圖像有以下特點:(1)文件的大小與圖形的復(fù)雜程度有關(guān),而與圖形的具體尺寸無關(guān);(2)圖形的顯示尺寸可以無限縮放,變化后不影響圖形的
19、質(zhì)量。正是由于矢量圖像的這些特征,使得它尤其適合于網(wǎng)上傳播。圖片和交互在以前是兩個獨立的概念,而在SVG中,文字與圖形并非封裝于SVG內(nèi),而是可以借助DOM和腳本語言等手段與外界交互,使得在圖片內(nèi)進行交互成為可能,這是以往的圖像所不能做到的。統(tǒng)一的標(biāo)準(zhǔn)和開放性是SVG的強大生命力所在。標(biāo)準(zhǔn)統(tǒng)一可增強網(wǎng)絡(luò)的交流,結(jié)束目前業(yè)界各種格式并存的混亂局面;開放性則有利于日后的各種新的元素加入其中擴充其功能。SVG使用時,客戶端的軟件負責(zé)解釋SVG
20、文本并將其轉(zhuǎn)化成實際的矢量圖像,文字仍是文字,線條仍是線條,可在客戶端即時修改,這也是SVG的一大特色。</p><p><b> 2.4 SVG規(guī)范</b></p><p> SVG規(guī)范定義了6種類型的對象,包括矢量圖形、圖像、漸變填充、濾鏡、可重用單元和文本。圖形對象可以進行組合、添加樣式、幾何變換等操作。根據(jù)功能不同,這些主要對象可歸結(jié)為基本要素對象和頁面描
21、述功能對象兩大類,具體請見圖1和圖2所示。</p><p> 圖1 SVG基本要素</p><p> 圖2 SVG頁面描述功能</p><p> 框架元素,就是組成一個完整SVG文檔的基本元素,主要包括<svg>、<g>、<desc>元素和<title>元素等等。<svg>元素是文檔元素,必不可少的,
22、它相當(dāng)于指定一塊畫布,內(nèi)部的所有圖形元素都將顯示在這塊畫布指定的區(qū)域中。因此它有一些標(biāo)記位置的屬性像x,y,width,height。<desc>和<title>元素是用來描述圖像的注釋性元素。還有一些表示基本圖形的標(biāo)記,如rect,circle等等,SVG圖形就是通過組合這些基本的元素和組件,來生成復(fù)雜的圖形的。</p><p> 3 雨量分析系統(tǒng)的需求分析</p>&l
23、t;p><b> 3.1 系統(tǒng)需求</b></p><p> 需求分析是一種軟件工程活動,它在系統(tǒng)需求工程和軟件設(shè)計間起到橋梁的作用,主要任務(wù)是將用戶的需求變?yōu)檐浖墓δ芎托阅苊枋?。基于SVG的自動站雨量分析系統(tǒng)要實現(xiàn)對四川省部分市縣及其雨量數(shù)據(jù)進行管理與分析,能夠以各種時間方式查詢各市縣的歷史雨量數(shù)據(jù)并以SVG格式的曲線圖顯示出來,要求實現(xiàn)簡單地統(tǒng)計分析功能,例如統(tǒng)計同一時間段內(nèi)
24、兩個不同地區(qū)的雨量數(shù)據(jù),對其進行分析,并生成SVG圖形以輔助工作人員判斷某一時間數(shù)據(jù)點過高的城市是否有發(fā)生災(zāi)害的可能性。作為一個完整的系統(tǒng),還要能夠管理系統(tǒng)內(nèi)各個模塊及設(shè)置不同用戶的權(quán)限。由于會涉及到大量數(shù)據(jù),因此要有對數(shù)據(jù)庫的管理,實現(xiàn)數(shù)據(jù)備份功能,以保障數(shù)據(jù)的安全性。</p><p> 系統(tǒng)功能模塊主要包括以下幾個方面:</p><p><b> 1、系統(tǒng)管理;</
25、b></p><p><b> 2、雨量數(shù)據(jù)管理;</b></p><p><b> 3、城市信息管理;</b></p><p><b> 4、前臺管理;</b></p><p><b> 5、數(shù)據(jù)備份。</b></p><
26、;p><b> 3.2 功能分析</b></p><p> 以下按照不同的模塊進行功能描述:</p><p> 1、系統(tǒng)管理實現(xiàn)以下四個功能:</p><p> (1)模塊管理:管理系統(tǒng)中所有模塊,對模塊進行添加、更新及刪除;</p><p> (2)用戶管理:添加系統(tǒng)用戶,選擇對應(yīng)的角色,對系統(tǒng)中已有用
27、戶進行更新(包括登陸密碼及角色)、刪除;</p><p> ?。?)角色管理:新增、更新、刪除系統(tǒng)角色,分配角色權(quán)限;</p><p> ?。?)日志管理:能根據(jù)選擇條件對已有日志進行查詢、刪除和下載。</p><p> 2、雨量數(shù)據(jù)管理頁面管理后臺的所有雨量數(shù)據(jù),有如下功能:</p><p> ?。?)數(shù)據(jù)查看:可根據(jù)選擇條件(包括日期和
28、城市選擇)顯示雨量數(shù)據(jù),也可根據(jù)選擇的顯示方式,以SVG圖形方式查看雨量數(shù)據(jù);</p><p> ?。?)數(shù)據(jù)錄入:選擇某一城市后,可以選擇任意一天進行雨量數(shù)據(jù)輸入;</p><p> ?。?)數(shù)據(jù)更新:在選定城市某一天的雨量數(shù)據(jù)后,點擊更新可以修改雨量數(shù)據(jù)。</p><p> 3、城市信息管理頁面管理地圖頁面中出現(xiàn)的所有城市的雨量數(shù)據(jù),通過輸入城市名及選擇上級城
29、市新增城市數(shù)據(jù),也可以對已有城市數(shù)據(jù)進行更新(修改名稱或上級城市)、刪除操作。</p><p> 4、前臺管理頁面放置了將前臺查詢頁面,這一模塊是整個系統(tǒng)的重點部分,包括地圖管理、選擇顯示方式、選擇查詢方式并生成圖形顯示頁面。區(qū)別于其它系統(tǒng),本套系統(tǒng)對于數(shù)據(jù)圖形使用了SVG這種文本式矢量圖形描述語言。</p><p> 用戶查詢數(shù)據(jù),并生成SVG曲線圖的操作流程如圖3所示。</p
30、><p> 圖3 SVG頁面描述功能</p><p> 5、系統(tǒng)的數(shù)據(jù)備份操作能夠?qū)崿F(xiàn)將數(shù)據(jù)庫文件備份到本機上的指定目錄下,需要時再進行數(shù)據(jù)恢復(fù),以保證數(shù)據(jù)的安全性。備份管理有如下功能:</p><p> (1)數(shù)據(jù)備份:利用SQLServer的備份操作backup database進行數(shù)據(jù)備份;</p><p> ?。?)數(shù)據(jù)恢復(fù):利用S
31、QLServer的恢復(fù)操作restore database進行數(shù)據(jù)恢復(fù)。</p><p><b> 3.3 用例分析</b></p><p> 系統(tǒng)全局管理員用例圖如圖4所示。</p><p> 圖4 系統(tǒng)全局管理員用例圖</p><p> 4 雨量分析系統(tǒng)的設(shè)計</p><p> 4.
32、1 系統(tǒng)模塊結(jié)構(gòu)</p><p> 系統(tǒng)主要分為系統(tǒng)管理、雨量數(shù)據(jù)管理、城市信息管理、前臺管理等幾大模塊,其結(jié)構(gòu)關(guān)系如圖5所示。</p><p><b> 圖5 系統(tǒng)模塊結(jié)構(gòu)</b></p><p> 4.2 數(shù)據(jù)庫的設(shè)計</p><p> 4.2.1 總體設(shè)計</p><p> 數(shù)據(jù)庫
33、的E-R模型圖如圖6所示。圖6中,用戶在具有某些角色之后,才有權(quán)限使用系統(tǒng)功能,而不能直接使用,因此設(shè)計中將角色與系統(tǒng)功能關(guān)聯(lián)起來,并將用戶與系統(tǒng)功能隔離開來;日志的生成是在用戶使用系統(tǒng)功能的過程中自動生成的,其中需要保存當(dāng)前用戶的ID和對應(yīng)的系統(tǒng)功能的ID。</p><p> 圖6 數(shù)據(jù)庫E-R圖</p><p> 4.2.2 數(shù)據(jù)庫表字段說明</p><p>
34、; 1、城市數(shù)據(jù)表(City)存儲的是地圖上所有城市的相關(guān)信息,具體見表1所示。</p><p><b> 表1 城市數(shù)據(jù)表</b></p><p> 2、每小時降雨量表(RainPerHour)存儲的是城市中具體一天24小時的雨量數(shù)據(jù),Hour01表示0~1時的雨量數(shù)據(jù),依此類推,中間省略部分行,具體見表2所示。</p><p><
35、;b> 表2 雨量數(shù)據(jù)表</b></p><p> 3、模塊表(Func)存儲的是系統(tǒng)中所有模塊的信息,具體見表3所示。</p><p><b> 表3 模塊信息表</b></p><p> 4、日志表(Log)中存儲管理員對某一模塊進行添加、修改等操作的記錄,無論成功與否,系統(tǒng)都會自動記錄相應(yīng)的信息,具體見表4所示。
36、</p><p><b> 表4 日志信息表</b></p><p> 5、用戶表(User)中存儲用戶登陸系統(tǒng)的ID號、名稱和密碼等信息,具體見表5所示。</p><p><b> 表5 用戶表</b></p><p> 6、用戶角色關(guān)系表(UserRoleRel)存儲用戶在系統(tǒng)中屬于哪一
37、角色的信息,具體見表6所示。</p><p> 表6 用戶角色關(guān)系表</p><p> 7、角色表(Role)存儲每一個角色的角色名及對它權(quán)限的描述,具體見表7所示。</p><p><b> 表7 角色表</b></p><p> 8、角色權(quán)限關(guān)系表(RoleFuncRel)存儲角色對于某一模塊是否具有讀取、增
38、加、更新、刪除等操作的權(quán)限,具體見表8所示。</p><p> 表8 角色權(quán)限關(guān)系表</p><p> 4.3 開發(fā)技術(shù)及過程</p><p> 4.3.1 三層架構(gòu)</p><p> 三層架構(gòu)也稱三層體系結(jié)構(gòu),即表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。表現(xiàn)層主要指用戶界面,它要求盡可能的簡單,使最終用戶不需要進行任何培訓(xùn)就能方便地訪問信息;
39、第二層就是業(yè)務(wù)邏輯層,也就是常說的中間件,所有的應(yīng)用系統(tǒng)、應(yīng)用邏輯、控制都在這一層,系統(tǒng)的復(fù)雜性也主要體現(xiàn)在業(yè)務(wù)邏輯層;最后的數(shù)據(jù)訪問層存儲大量的數(shù)據(jù)信息和數(shù)據(jù)邏輯,所有與數(shù)據(jù)有關(guān)的安全、完整性控制、數(shù)據(jù)的一致性、并發(fā)操作等都是在第三層完成。三層架構(gòu)的層次關(guān)系見圖7所示。</p><p> 圖7 三層架構(gòu)示意圖</p><p> 這些層相互之間獨立性好,可以單獨開發(fā),單獨測試。三層架構(gòu)
40、另一個優(yōu)點是它的安全性,客戶端只能通過上一層來訪問下一層的服務(wù),減少了入口點,把很多危險的系統(tǒng)功能都屏蔽了。</p><p> 表現(xiàn)層位于最上層,離用戶最近,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。通過表現(xiàn)層,用戶輸入數(shù)據(jù)、獲取數(shù)據(jù)。表現(xiàn)層同時也提供一定的安全性,確保用戶沒有機會看到機密的信息。中間的業(yè)務(wù)邏輯層是表現(xiàn)層和數(shù)據(jù)訪問層的橋梁,它響應(yīng)表現(xiàn)層的用戶請求,負責(zé)處理用戶輸入的信息,
41、或者是將這些信息發(fā)送給數(shù)據(jù)訪問層進行保存,或者是調(diào)用數(shù)據(jù)訪問層中的函數(shù)再次讀出這些數(shù)據(jù)。業(yè)務(wù)邏輯層也可以包括一些對“商業(yè)邏輯”描述的代碼在里面。數(shù)據(jù)訪問層定義和維護數(shù)據(jù)的完整性、安全性,它響應(yīng)業(yè)務(wù)邏輯層的請求來訪問數(shù)據(jù),僅實現(xiàn)對數(shù)據(jù)的保存和讀取操作。訪問的數(shù)據(jù)可以是數(shù)據(jù)庫系統(tǒng)、二進制文件、文本文檔或是XML文檔等等。</p><p> 本項目中.NET三層架構(gòu)中各個包之間的關(guān)系結(jié)構(gòu)如圖8所示。</p>
42、;<p> 圖8 三層架構(gòu)名稱空間關(guān)系圖</p><p> 其中,Model命名空間中的類對應(yīng)于數(shù)據(jù)庫中的表,為整個架構(gòu)提供方便的數(shù)據(jù)表示形式;IDAL和SQLServerDAL對應(yīng)于數(shù)據(jù)訪問層,IDAL命名空間中定義了一整套用于操作數(shù)據(jù)庫的接口,具體的數(shù)據(jù)訪問操作在SQLServerDAL命名空間中實現(xiàn);DALFactory命名空間中定義了獲取數(shù)據(jù)訪問操作的方法,在BLL命名空間中,就使用這些
43、方法來獲取符合IDAL中定義的接口的對象,再用它來對數(shù)據(jù)庫進行操作,顯然它們屬于業(yè)務(wù)邏輯層;而表現(xiàn)層對應(yīng)于前臺頁面代碼,包括獲取用戶響應(yīng)和請求,再通過BLL來獲取數(shù)據(jù)并返回給用戶。</p><p> 下面給出具體例子說明數(shù)據(jù)和指令是如何在各層之間流動和傳遞的。</p><p> 首先,表現(xiàn)層中的某一對象調(diào)用業(yè)務(wù)邏輯層BLL中的Add函數(shù),來向數(shù)據(jù)庫中添加數(shù)據(jù):</p>&
44、lt;p> BLL.SVGRAS_City.Add(city);</p><p> 其中city是Model.City類型的參數(shù),BLL.SVGRAS_City.Add為被調(diào)用方法的完整路徑。</p><p> 此時,數(shù)據(jù)流向業(yè)務(wù)邏輯層,指令執(zhí)行到業(yè)務(wù)層,如下:</p><p> public static string Add(SVGRAS.Mode
45、l.SVGRAS_City model)</p><p><b> {</b></p><p> ISVGRAS_City dal=SVGRAS.DALFactory.SVGRAS_City.Create();</p><p> return dal.Add(model);</p><p><b> }
46、</b></p><p> 業(yè)務(wù)層接收到表現(xiàn)層傳入的參數(shù)model,首先進行業(yè)務(wù)邏輯處理(比如數(shù)據(jù)完整性,合法性以及其他一些業(yè)務(wù)處理),然后調(diào)用工廠中相應(yīng)的方法來創(chuàng)建相應(yīng)的SQLServerDAL對象,以獲得訪問數(shù)據(jù)訪問層的對象。</p><p> 工廠類中對應(yīng)方法如下:</p><p> public static SVGRAS.IDAL.ISV
47、GRAS_City Create()</p><p><b> {</b></p><p> SQLServerDAL.SVGRAS_City obj=new SQLServerDAL.SVGRAS_City();</p><p> return obj;</p><p><b> }</b>
48、;</p><p> 此時,數(shù)據(jù)流向數(shù)據(jù)訪問層,指令執(zhí)行到數(shù)據(jù)訪問層:</p><p> public string Add(SVGRAS.Model.SVGRAS_City model)</p><p><b> {</b></p><p> model.CityID=Common.GetNextIdByTab
49、le("SVGRAS_City","CityID","SingleLayer",null,10);</p><p> model.OrderID=model.CityID;</p><p> StringBuilder strSql=new StringBuilder();</p><p> strS
50、ql.Append("insert into SVGRAS_City(CityID,FatherCityID,OrderID, CityName,CityDes) values (");</p><p> strSql.Append("'"+model.CityID+"',");</p><p> strSql
51、.Append("'"+model.FatherCityID+"',");</p><p> strSql.Append(""+model.OrderID+",");</p><p> strSql.Append("'"+model.CityName+"
52、',");</p><p> strSql.Append("'"+model.CityDes+"')");</p><p> DbHelperSQL.ExecuteSql(strSql.ToString());</p><p> return model.CityID;</p>
53、;<p><b> }</b></p><p> 在數(shù)據(jù)訪問層,通過調(diào)用存儲過程的方式,將數(shù)據(jù)傳遞到數(shù)據(jù)庫,并執(zhí)行相應(yīng)的操作。DbHelperSQL.ExecuteSql()表示封裝好的方法,strSql.ToString()放置添加語句。此時,調(diào)用DbHelperSQL.ExecuteSql(),執(zhí)行SQL語句。 </p><p> public
54、 static int ExecuteSql(string SQLString)</p><p><b> {</b></p><p> using (SqlConnection connection = new SqlConnection(connectionString))</p><p><b> {</b>&
55、lt;/p><p> using (SqlCommand cmd = new SqlCommand(SQLString,connection))</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p
56、><p> connection.Open();</p><p> int rows=cmd.ExecuteNonQuery();</p><p> return rows;</p><p><b> }</b></p><p> catch(System.Data.SqlClient.Sq
57、lException E)</p><p><b> {</b></p><p> connection.Close();</p><p> throw new Exception(E.Message);</p><p><b> }</b></p><p><
58、b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 到此,完成了一條城市數(shù)據(jù)的添加操作。</p><p> 4.3.2 SVG文檔的表示</p><p> SVG文檔的生成使用了.NET
59、 XML程序集,它提供了一整套封裝了XML操作的類,可以很方便的創(chuàng)建和處理XML文檔,它的整體結(jié)構(gòu)符合文檔對象模型的定義。將SVG文檔用DOM表示,其結(jié)構(gòu)見圖9所示。</p><p> 圖9 SVG文檔的DOM對象結(jié)構(gòu)</p><p> 圖9對應(yīng)的XML文檔部分代碼如下:</p><p> <?xml version="1.0" st
60、andalone="yes"?></p><p> <svg viewBox="0 0 500 600"></p><p> <text x="10" y="20" stroke="red"></p><p><b> 成
61、都信息工程學(xué)院</b></p><p><b> </text></b></p><p><b> </svg></b></p><p><b> 5 系統(tǒng)實現(xiàn)</b></p><p> 5.1 雨量數(shù)據(jù)管理的實現(xiàn)</p>
62、<p> 在雨量數(shù)據(jù)管理頁面中進行雨量數(shù)據(jù)錄入時,必須先選中要添加雨量數(shù)據(jù)的城市及日期,點擊“確定”后系統(tǒng)首先查看是否有該城市這一天的數(shù)據(jù),有的話就直接顯示,沒有的話會創(chuàng)建一條新的雨量數(shù)據(jù)記錄,自動生成隨機數(shù)作為這一天24小時的雨量數(shù)據(jù),并將數(shù)據(jù)寫入數(shù)據(jù)庫中。這里創(chuàng)建新雨量數(shù)據(jù)記錄是基于三層架構(gòu)來做的,首先創(chuàng)建Model.SVGRAS_RainPerHour對象,然后將數(shù)據(jù)保存到其成員變量中,再調(diào)用BLL.SVGRAS_
63、RainPerHour.Add方法來將此對象包含的數(shù)據(jù)寫入到數(shù)據(jù)庫中。其相關(guān)代碼如下:</p><p> DataTable table1=null;</p><p> if(this.RecordID!=null)//如果是修改的話,則返回的有RecordID則顯示被修改的雨量數(shù)據(jù)</p><p> table1=BLL.SVGRAS_RainPerHour
64、.GetList("RecordID="+this.RecordID).Tables[0]; //獲取已有條件的雨量數(shù)據(jù)</p><p> else if(this.RecordID==null || this.RecordID=="")</p><p> table1=BLL.SVGRAS_RainPerHour.GetList("C
65、ityID="+this.SelectedCity+" and Year="+this.Year+" and Month= "+this.Month+" and Day="+this.Day).Tables[0];</p><p> if (table1.Rows.Count>0)</p><p><b&g
66、t; {</b></p><p> this.dgData.DataSource=table1;</p><p> this.dgData.DataBind();</p><p> this.RecordID=table1.Rows[0]["RecordID"].ToString();</p><p>
67、<b> }</b></p><p> else if (table1.Rows.Count<1)</p><p><b> {</b></p><p> //string temp="0";</p><p> Random rand = new Random()
68、;</p><p> SVGRAS.Model.SVGRAS_RainPerHour model=new SVGRAS.Model.SVGRAS_RainPerHour();</p><p> model.CityID=this.SelectedCity;</p><p> model.Year=this.Year;</p><p>
69、 model.Month=this.Month;</p><p> model.Day=this.Day;</p><p> model.hour01=rand.Next(0,200).ToString ();</p><p> model.hour12=rand.Next(0,200).ToString ();</p><p> /
70、/model.hournn=…;</p><p> SVGRAS.BLL.SVGRAS_RainPerHour.Add(model);</p><p> DataTable table2=BLL.SVGRAS_RainPerHour.GetList( "CityID="+this.SelectedCity+" and Year="+this.
71、Year+" and Month= "+this.Month+" and Day="+this.Day).Tables[0];</p><p> this.dgData.DataSource=table2;</p><p> this.dgData.DataBind();</p><p> this.RecordID=t
72、able2.Rows[0]["RecordID"].ToString();</p><p><b> }</b></p><p> 頁面效果如圖10所示。</p><p> 圖10 雨量數(shù)據(jù)錄入界面</p><p> 在實際應(yīng)用中,這里生成的數(shù)據(jù)全部為0,而具體的數(shù)據(jù)需要通過數(shù)據(jù)更新功能來輸入
73、。這里采用自動生成數(shù)據(jù)方式,是為了方便系統(tǒng)的測試與演示。用戶要填入新的雨量數(shù)據(jù),需要點擊更新按鈕進入數(shù)據(jù)更新頁面,在其中填入新數(shù)據(jù)后點擊提交按鈕完成更新。</p><p> 5.2 雨量數(shù)據(jù)分析與SVG圖像的生成</p><p> 1、獲取用戶設(shè)置的查詢參數(shù)</p><p> 用戶在查詢頁面中設(shè)置相應(yīng)的查詢參數(shù),如查詢方式、查詢?nèi)掌诘鹊?,并點擊確定按鈕(即選擇
74、某一城市)后,程序首先會驗證用戶的參數(shù)設(shè)置是否正確,若不正確,則彈出錯誤提示;若通過驗證,再按照用戶設(shè)置的查詢參數(shù)傳到后續(xù)程序中。</p><p> 這里的驗證分為兩部分,一部分是在瀏覽器端進行的,使用javascript代碼,在向服務(wù)器發(fā)送數(shù)據(jù)前完成驗證,這里的驗證是測試用戶輸入的數(shù)據(jù)是否合法,如日期格式是否正確,參數(shù)是否設(shè)置完整等等,如果用戶設(shè)置的是按多日查詢,卻只設(shè)置了起始日期,那么就不會通過驗證。只有通
75、過驗證才會將參數(shù)數(shù)據(jù)發(fā)送到服務(wù)器端,這樣可以在一定程度上減輕服務(wù)器端的壓力。</p><p><b> 圖11 前臺界面</b></p><p> 另一部分驗證是在服務(wù)器端進行的,它主要驗證用戶是否擁有操作權(quán)限,以及數(shù)據(jù)庫中是否存在數(shù)據(jù)。只有通過驗證后,才能在數(shù)據(jù)庫中查詢相應(yīng)的雨量數(shù)據(jù)。</p><p> 2、從數(shù)據(jù)庫中查詢數(shù)據(jù)</
76、p><p> 按照用戶設(shè)置的查詢模式,轉(zhuǎn)到相應(yīng)模式的查詢代碼中。然后再根據(jù)查詢參數(shù),從數(shù)據(jù)庫中獲取相應(yīng)的數(shù)據(jù)。如:用戶設(shè)置的查詢模式為按天查詢,查詢城市為成都,日期為2007-5-27,然后調(diào)用strWhere()方法來生成查詢參數(shù),再傳入三層架構(gòu)中的業(yè)務(wù)邏輯層中的getList()方法,就得到了查詢的結(jié)果,代碼如下:</p><p> DataTable table1=BLL.SVGRA
77、S_RainPerHour.GetList(strWhere("days")).Tables[0];</p><p> 3、對數(shù)據(jù)進行分析處理,并組織為適合顯示的形式</p><p> 前面查詢得到的是一個DataTable表,里面的數(shù)據(jù)是與數(shù)據(jù)庫中對應(yīng)起來的,但這樣的數(shù)據(jù)卻不便于生成圖像,因此要對它進行重組,轉(zhuǎn)換為雨量數(shù)據(jù)和相關(guān)文字信息。在這里定義了一個類Rain
78、fallData來輔助,這個類包含了城市信息、時間信息、相應(yīng)的雨量信息等等,具體代碼如下:</p><p> public class RainfallData</p><p><b> {</b></p><p> public string cityId;</p><p> public string cit
79、yName;</p><p> public int max = 0;</p><p> public int min = 1000000;</p><p> public double average;</p><p> public string startY;</p><p> public strin
80、g startM;</p><p> public string startD;</p><p> public string endY;</p><p> public string endM;</p><p> public string endD;</p><p> //計算出最大最小值</p&g
81、t;<p> public void calMaxMin ()</p><p><b> {</b></p><p> double tmp = 0;</p><p> for (int i=0; i < data.Length; ++i)</p><p><b> {</b
82、></p><p> if ( data[i] > max )</p><p> max = data[i];</p><p> else if ( data[i] < min )</p><p> min = data[i];</p><p> tmp += data[i];</p&
83、gt;<p><b> }</b></p><p> average = (tmp / data.Length);</p><p><b> }</b></p><p> public int[] data;</p><p><b> }</b><
84、;/p><p> 然后將每一組雨量數(shù)據(jù)都存到該類的對象中,并將這些對象傳給SVG顯示模塊。</p><p> 此外,若查詢模式是多日查詢或多月查詢,還需要將數(shù)據(jù)按日或月累加起來。</p><p> 4、使用XML對象來生成SVG文檔</p><p> 項目中定義了一個SVG文檔類SVGDocument,它繼承自XMLDocument,在它
85、內(nèi)部封裝了加載SVG文檔元素的操作,以后創(chuàng)建好文檔中的元素后就直接插入到該文檔中即可。另外定義了一個輔助類SVGHelper,里面定義了一些向某個結(jié)點添加基本SVG元素的操作,以方便向文檔中添加SVG圖形?,F(xiàn)在,創(chuàng)建一個SVG文檔,并且添加一條線、一個圓、一個矩形和一行文本的代碼如下:</p><p> SVGDocument document = new SVGDocument(800,700);</p
86、><p> SVGHelper.InsertLine (document.DocumentElement, 1,1,300,350, Color.BlueViolet, 5);</p><p> SVGHelper.InsertCircle (document.DocumentElement,100,100,50,Color.Red,Color.Gold,2.5);</p>
87、<p> SVGHelper.InsertRect (document.DocumentElement,300,400,80,70,Color.Gray,Color.Honeydew,3);</p><p> SVGHelper.InsertText (document.DocumentElement,"網(wǎng)絡(luò)工程",10,100,15,"楷體",Color.B
88、lue);</p><p> 5、向SVG文檔中添加坐標(biāo)系</p><p> 為了方便坐標(biāo)系的創(chuàng)建,定義了坐標(biāo)系類CoordinateFrame,在它里面封裝了坐標(biāo)系的細節(jié),并提供創(chuàng)建坐標(biāo)系、向坐標(biāo)系中添加點、添加線等接口操作,相應(yīng)的也定義了坐標(biāo)類Coordinate,來對坐標(biāo)信息進行封裝?,F(xiàn)在,向SVG文檔中添加坐標(biāo)系,并向坐標(biāo)系中添加一系列點和線的代碼如下:</p>
89、<p> CoordinateFrame frame = new CoordinateFrame (10,10,600,500,5,9,document.DocumentElement);</p><p> Coordinate point = new Coordinate(50,40);</p><p> frame.InsertPoint(point);</p&g
90、t;<p> Coordinate []points = new Coordinate [5];</p><p> //... 在此獲取坐標(biāo)數(shù)據(jù) ...</p><p> frame.InsertLine (points,"成都",Color.Chocolate);</p><p> 6、將數(shù)據(jù)轉(zhuǎn)換為坐標(biāo)點的數(shù)組</p
91、><p> 處理按照用戶參數(shù)查詢獲得的數(shù)據(jù),并將其轉(zhuǎn)換為對應(yīng)于坐標(biāo)系中的坐標(biāo)點的數(shù)組。這里需要求出所有雨量數(shù)據(jù)的最大值和最小值,并計算出合理的縱坐標(biāo)的坐標(biāo)點數(shù),然后將每一個雨量數(shù)據(jù)除以一個縱坐標(biāo)點代表的雨量數(shù)據(jù),以轉(zhuǎn)換為坐標(biāo)位置。然后將坐標(biāo)點添加到坐標(biāo)系上,并連成曲線。</p><p> 7、添加相應(yīng)的文字標(biāo)簽及均值線</p><p> 在點上以及線上面,加上說明
92、文字。不同的線會用不同的顏色顯示,并標(biāo)注相應(yīng)的說明文字。同時,將求出的每組數(shù)據(jù)的均值以均值線的方式畫到坐標(biāo)系上。</p><p> 8、修改響應(yīng)類型為SVG文檔類型(image/svg+xml)</p><p> 將要返回的響應(yīng)類型改為image/svg+xml,這樣瀏覽器才會將頁面作為SVG圖形來解析。然后將SVG文檔(以XML對象表示)的內(nèi)容發(fā)送到客戶端。具體代碼如下:</p
93、><p> Response.ContentType="image/svg+xml";</p><p> document.Save( Response.OutputStream );</p><p> Response.Flush();</p><p> Response.End();</p><
94、p> 現(xiàn)在客戶端就可以看到如圖12所示的SVG格式的圖形了。</p><p> 圖12 SVG圖形生成界面</p><p> 5.3 使用Web Service方式提供開放的外部接口</p><p> 5.3.1 Web Service介紹</p><p> Web Service是建立在HTTP協(xié)議、SOAP協(xié)議和UDDI等
95、標(biāo)準(zhǔn)以及XML等技術(shù)之上的,其主要目標(biāo)就是在現(xiàn)有的各種異構(gòu)平臺的基礎(chǔ)上構(gòu)建一個通用的,與平臺和語言無關(guān)的接口層,各種不同平臺之上的應(yīng)用通過這個接口層來集成已有的服務(wù)。</p><p> Web Service具有以下一些特征:</p><p> 1、完好的封裝性:Web Service既然是一種部署在Web上的對象,自然具備對象的良好封裝性。對使用者而言,只能看到該對象提供的功能列表。
96、</p><p> 2、松散耦合:當(dāng)一個Web Service的實現(xiàn)發(fā)生變化時,調(diào)用者完全不會感覺到。對調(diào)用者來說,只要調(diào)用的接口不變,其內(nèi)部實現(xiàn)的任何變化對用戶來說都是透明的。</p><p> 3、高度可集成能力:由于Web Service采用簡單的、易于理解的XML作為接口描述,完全屏蔽了不同平臺和系統(tǒng)的差異性,因此,任何符合協(xié)議的應(yīng)用都可以集成已有的Web Service。&l
97、t;/p><p> 5.3.2 使用Web Service的意義</p><p> 使用Web Service可以引入很高的開放性,使得系統(tǒng)可以方便的集成到其它應(yīng)用中,同時,也為系統(tǒng)的二次開發(fā)預(yù)留了很好的接口。此外,作為雨量數(shù)據(jù)分析系統(tǒng),必然會涉及到大量的雨量數(shù)據(jù),而這些雨量數(shù)據(jù)是從全國各地的設(shè)備終端采集匯總而來的,一旦有了這一開放的接口,所有的數(shù)據(jù)都可以通過它來寫入到數(shù)據(jù)庫中。另外,這些
98、雨量數(shù)據(jù)的采集是相當(dāng)不容易的,一般的科研機構(gòu)和學(xué)校是不可能獲取如此大量的真實數(shù)據(jù)的,例如本套系統(tǒng)就無法獲得到這些真實數(shù)據(jù),只能通過隨機數(shù)來生成假的數(shù)據(jù)。這樣就限制了這些數(shù)據(jù)的科研作用。然而,通過Web Service來提供開放的接口后,所有的用戶都可以通過它來很容易的獲取這些雨量數(shù)據(jù),還可以通過接口使用系統(tǒng)中已經(jīng)做好的各種功能,避免了重復(fù)開發(fā)的浪費。因此,使用Web Service來提供開放的接口是有很大的積極意義的。</p>
99、;<p> 5.3.3 Web Service接口的實現(xiàn)</p><p> 在系統(tǒng)中只提供簡單功能的實現(xiàn),主要接口有:</p><p><b> 1、獲取城市ID</b></p><p> 通過該接口可以查詢指定城市在系統(tǒng)中分配的ID值,其參數(shù)為城市名稱。在查詢城市數(shù)據(jù)前,首先要通過此接口獲得城市的ID值。</p&g
100、t;<p><b> 2、獲取雨量數(shù)據(jù)</b></p><p> 通過輸入查詢條件,來獲得雨量數(shù)據(jù)。這里的查詢條件就是SQL查詢語句中的where子句,用戶可以指定某一天、某幾天或某幾個月的等條件。例如最簡單的查詢“江油”的所有雨量數(shù)據(jù)的參數(shù)為“CityId = ‘0000000013’”。</p><p><b> 接口實現(xiàn)代碼如下:&
101、lt;/b></p><p> [WebMethod]</p><p> public string getCityId (string city)</p><p><b> {</b></p><p> return SVGRAS.BLL.SVGRAS_City.GetList ("CityNa
102、me='" + city + "'").Tables[0].Rows[0]["CityId"].ToString ();</p><p><b> }</b></p><p> [WebMethod]</p><p> public DataSet getRainData
103、(string sql)</p><p><b> {</b></p><p> return SVGRAS.BLL.SVGRAS_RainPerHour.GetList (sql);</p><p><b> }</b></p><p><b> 6 系統(tǒng)測試</b>
104、</p><p> 在前臺頁面中,對每種查詢方式都進行了測試,所有數(shù)據(jù)查詢、分析以及圖像生成功能都能正確工作。例如,選擇同一城市不同時間段比較模式,并設(shè)置起止日期和時間,這里的日期跨越兩個月,即4月30日到5月1日,設(shè)置顯示均值線方式;點擊城市名稱就可以選擇城市,并將其加邊框標(biāo)注出來,再次點擊即可取消相應(yīng)城市的選擇,并去掉相應(yīng)邊框;點擊確定按鈕后,就會打開新的窗口顯示查詢結(jié)果。</p><p
105、> 用戶管理界面列出了系統(tǒng)當(dāng)前的所有用戶,點擊“選擇”選中一個用戶后,可修改用戶名、密碼,并為用戶指定系統(tǒng)角色。系統(tǒng)當(dāng)前共有三種角色,角色的權(quán)限由管理員指定,例如要為系統(tǒng)管理員指定系統(tǒng)管理這一模塊的權(quán)限,選中這一角色,在權(quán)限分配區(qū)選中相應(yīng)的模塊權(quán)限即可。角色的選擇可以是一個或多個,默認角色選擇為空,若沒有為用戶指定系統(tǒng)角色,則用戶登陸系統(tǒng)后不會出現(xiàn)系統(tǒng)樹型菜單,用戶也就不能進行任何操作。</p><p>
106、 日志是根據(jù)用戶操作自動生成的,在后臺管理中可以根據(jù)選擇條件進行日志的查詢、刪除和下載,若選擇條件為空則默認為選擇所有日志。</p><p> 系統(tǒng)中的城市分為兩級,每一個城市都有其上級城市。通過輸入城市名稱并選擇上級城市后可新增一個城市,若要更新或刪除城市,則先要點擊對應(yīng)的選擇按鈕來選中一個城市,然后可對選中的城市信息進行更新或刪除等操作。</p><p><b> 結(jié)
107、 論</b></p><p> 雨量分析系統(tǒng)實現(xiàn)了對四川省部分市縣及其雨量數(shù)據(jù)的管理與分析功能,能夠以各種方式(例如相同城市不同時間或相同時間不同城市)查詢各市縣的歷史雨量數(shù)據(jù),并以SVG格式的圖形顯示出來。此外還實現(xiàn)了管理系統(tǒng)內(nèi)各個模塊及設(shè)置不同用戶權(quán)限的功能,以及數(shù)據(jù)庫備份和還原功能。通過本項目的開發(fā),對C#語言有了更多的體會,也更多地了解了B/S架構(gòu)系統(tǒng)的開發(fā)。在開發(fā)過程中,學(xué)會了SVG這
108、門新型的可伸縮矢量圖形語言,在使用時體會到了這門語言的實用性及它帶來的樂趣。</p><p> 在項目實現(xiàn)過程中也遇到過不少問題和困難,同時由于缺乏編程經(jīng)驗,在編寫代碼的過程中,碰到了很多難以解決的問題和障礙,在老師的指導(dǎo)和同學(xué)的幫助下,查找各種資料,這些問題得以解決,并積累了一定的開發(fā)經(jīng)驗。例如剛開始不太了解雨量數(shù)據(jù)如何轉(zhuǎn)換為SVG圖形來顯示,便從網(wǎng)上找了一個現(xiàn)有的將數(shù)據(jù)顯示為SVG格式的圖形的庫來使用。在查
109、看各種相關(guān)資料,了解了SVG并進行深入學(xué)習(xí)后,反復(fù)嘗試各種生成SVG圖形的方法。由于SVG本身就是XML文檔,因此選擇了用生成XML文檔的方式來生成SVG,并封裝了SVG的基本圖形元素,最終完成了一個較方便的創(chuàng)建SVG圖形的工具類。</p><p> 當(dāng)然,該雨量分析系統(tǒng)還是有很多不完善的地方。地圖信息本來應(yīng)該用SVG來組織和表示,這樣可以將其中的各種數(shù)據(jù)元素分離出來,實現(xiàn)按選擇條件在地圖上顯示城市及相應(yīng)雨量數(shù)
110、據(jù)的功能;而且SVG的交互效果沒有體現(xiàn)出來,對雨量數(shù)據(jù)的分析也不夠充分。但由于實現(xiàn)難度及時間限制,以上功能沒能實現(xiàn)。</p><p><b> 參考文獻</b></p><p> [1] Joseph Bustos, Karli Watson[美]..NET Web服務(wù)入門經(jīng)典——C#編程篇[M].侯彧譯.北京:清華大學(xué)出版社,2003。</p>&
111、lt;p> [2] Dinar Dalvi, Joe Gray[美]..NET XML高級編程[M].英宇,林琪譯.北京:清華大學(xué)出版社,2002。</p><p> [3] Jesse Liberty, Dan Hurwitz[美].Programming ASP.NET[M].南京:東南大學(xué)出版社,2006。</p><p> [4] 石磊,但正剛.ASP.NET數(shù)據(jù)庫編程
112、詳解C#版[M].北京:高等教育出版社,2004。</p><p> [5] 徐謖.ASP.NET應(yīng)用與開發(fā)案例教程[M].北京:清華大學(xué)出版社,2005。</p><p> [6] 李安渝.Web Services技術(shù)與實現(xiàn)[M].北京:國防工業(yè)出版社,2003。</p><p> [7] 蔡月茹,柳面玲.Web Service基礎(chǔ)教程[M].北京:清華大學(xué)
113、出版社,2005。</p><p> [8] Seely[美].SOAP XML跨平臺Web Service開發(fā)技術(shù)[M].楊濤,楊曉云,王建橋譯.北京:機械工業(yè)出版社,2002。</p><p> [9] Bill Trippe,Kate Binder[美].SVG設(shè)計在下一代Web站點中使用可縮放矢量圖形[M].高偉,英宇譯.北京:機械工業(yè)出版社,2003。</p>
114、<p><b> 致 謝</b></p><p> 本文是在黃興建老師和方睿老師的熱情關(guān)心和指導(dǎo)下完成的,他們淵博的知識和嚴謹?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本課題起到了極大的作用。在此向他們表示我最衷心的感謝!</p><p> 在論文完成過程中,本人還得到了張映熊同學(xué)的熱心幫助,本人向他表示深深的謝意!</p><p&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 肖逸-基于SVG的自動站雨量分析系統(tǒng)的設(shè)計代碼.rar
- 基于流量分析的網(wǎng)絡(luò)監(jiān)控系統(tǒng)-畢業(yè)論文
- 基于流量分析的網(wǎng)絡(luò)監(jiān)控系統(tǒng)-畢業(yè)論文
- 自動澆花系統(tǒng)的設(shè)計畢業(yè)論文
- 畢業(yè)論文--航空服務(wù)站貨物自動分揀系統(tǒng)設(shè)計
- 畢業(yè)論文--航空服務(wù)站貨物自動分揀系統(tǒng)設(shè)計
- 鄉(xiāng)鎮(zhèn)自動雨量站故障檢修
- 畢業(yè)論文--基于plc的自動灌裝系統(tǒng)
- 低壓電網(wǎng)svg無功補償裝置設(shè)計【自動化畢業(yè)論文】
- 畢業(yè)論文plc自動倉儲系統(tǒng)的設(shè)計
- 基于超聲波傳感器的自動雨量站.pdf
- 基于plc自動扶梯的變頻系統(tǒng)設(shè)計畢業(yè)論文
- 基于.net的自動閱卷考試系統(tǒng)畢業(yè)論文
- 基于.net的自動閱卷考試系統(tǒng)畢業(yè)論文
- 基于.net的自動閱卷考試系統(tǒng)畢業(yè)論文
- 畢業(yè)論文基于fpga設(shè)計地鐵自動售票系統(tǒng)
- 畢業(yè)論文基于jsp的畢業(yè)論文管理系統(tǒng)的設(shè)計
- 基于plc的自動扶梯控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于plc的天然氣調(diào)壓站的監(jiān)控系統(tǒng)設(shè)計畢業(yè)論文
- 基于plc自動門的控制系統(tǒng)設(shè)計-畢業(yè)論文
評論
0/150
提交評論