版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于SVG的自動(dòng)站雨量分析系統(tǒng)的設(shè)計(jì)</p><p><b> 摘 要</b></p><p> SVG是由W3C組織開(kāi)發(fā)的基于可擴(kuò)展標(biāo)記語(yǔ)言的一種矢量圖形描述語(yǔ)言,已經(jīng)在互聯(lián)網(wǎng)上得到了較廣泛的應(yīng)用。為了以圖形方式直觀地顯示雨量數(shù)據(jù)變化,方便工作人員進(jìn)行雨量數(shù)據(jù)的查詢及分析,設(shè)計(jì)了本套基于SVG的雨量分析系統(tǒng)。</p><
2、;p> 該自動(dòng)站雨量分析系統(tǒng)是基于B/S架構(gòu),使用ASP.NET來(lái)開(kāi)發(fā)的。主要使用了.NET三層架構(gòu)、XML程序集、矢量圖形的動(dòng)態(tài)生成、Web服務(wù)等技術(shù),并實(shí)現(xiàn)了系統(tǒng)模塊管理、雨量數(shù)據(jù)管理、城市數(shù)據(jù)管理、雨量數(shù)據(jù)查詢、生成矢量圖形格式的圖表等功能模塊。在系統(tǒng)中主要對(duì)矢量圖形文檔的生成進(jìn)行了分析和設(shè)計(jì),采用DOM模型來(lái)操作該圖形文檔,并封裝了基本的圖形元素。</p><p> 該自動(dòng)站雨量分析系統(tǒng)作了新的
3、嘗試,采用基于可擴(kuò)展標(biāo)記語(yǔ)言的矢量圖形作為圖形格式,系統(tǒng)與Web服務(wù)技術(shù)相結(jié)合,使系統(tǒng)的可重用性和開(kāi)放性得到了很大的提高。</p><p> 關(guān)鍵詞:可伸縮矢量圖形;可擴(kuò)展標(biāo)記語(yǔ)言;.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 項(xiàng)目背景</b></p><p> 雨量監(jiān)
10、測(cè)對(duì)于工農(nóng)業(yè)生產(chǎn)以及人民生活中的災(zāi)害預(yù)防、有效利用水資源具有重要意義,建立完整高效的雨量監(jiān)測(cè)系統(tǒng)顯得非常有必要。雨量分析系統(tǒng)是應(yīng)用于防汛、水文等部門(mén)的,用于輔助分析自動(dòng)氣象站雨量監(jiān)測(cè)的數(shù)據(jù)。雨量分析系統(tǒng)通常都會(huì)生成一些圖表,但由于這些圖表是二進(jìn)制格式的,其可重用性不高,而且這些系統(tǒng)通常都缺乏開(kāi)放性,大量的數(shù)據(jù)無(wú)法提供給外部研究人員使用,造成資源浪費(fèi)。</p><p> 該自動(dòng)站雨量分析系統(tǒng)在雨量分析領(lǐng)域中作了新
11、的嘗試,它采用了基于XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)的開(kāi)放的SVG(Scalable Vector Graphics,可伸縮矢量圖形)作為圖形格式,在引入先進(jìn)技術(shù)的同時(shí),提高了系統(tǒng)的可重用性,而且該系統(tǒng)與Web服務(wù)的結(jié)合也使系統(tǒng)的開(kāi)放性大大地提高。作為示例,該系統(tǒng)要實(shí)現(xiàn)對(duì)四川省部分市縣的城市及雨量數(shù)據(jù)進(jìn)行管理與分析,能查詢各市縣的歷史雨量數(shù)據(jù)并以SVG格式的曲線圖顯示出來(lái),實(shí)現(xiàn)簡(jiǎn)單地統(tǒng)計(jì)分析
12、功能。作為一個(gè)完整的系統(tǒng),還要實(shí)現(xiàn)對(duì)系統(tǒng)內(nèi)各個(gè)模塊以及用戶權(quán)限的管理。</p><p> 1.2 本項(xiàng)目的應(yīng)用價(jià)值</p><p> 本套系統(tǒng)是基于SVG的雨量分析系統(tǒng),實(shí)現(xiàn)的主要功能是對(duì)各地收集的雨量數(shù)據(jù)加以分析,并以SVG矢量圖形方式進(jìn)行顯示,使用戶能夠更加直觀地了解某一區(qū)域的歷史雨量。雨量分析系統(tǒng)主要應(yīng)用于防汛、水文等部門(mén),通過(guò)對(duì)各地雨量數(shù)據(jù)的統(tǒng)計(jì)與分析,來(lái)預(yù)防可能會(huì)造成的洪水災(zāi)
13、害并有效的調(diào)配和利用水資源。</p><p> 1.3 本項(xiàng)目的相關(guān)開(kāi)發(fā)技術(shù)</p><p> 該項(xiàng)目采用.NET開(kāi)發(fā),開(kāi)發(fā)環(huán)境采用Visual Studio 2003,數(shù)據(jù)庫(kù)采用MSSQLServer,并使用.NET的三層架構(gòu)技術(shù),使業(yè)務(wù)邏輯與數(shù)據(jù)表示隔離開(kāi)來(lái),提高系統(tǒng)的模塊化程序;在圖像顯示上使用了基于XML的矢量圖形語(yǔ)言SVG,并使用.NET XML DOM(Document O
14、bject Model,文檔對(duì)象模型)來(lái)生成和操作SVG圖形;并使用Web服務(wù)來(lái)提供外部接口,以提高系統(tǒng)的開(kāi)放性。</p><p><b> 2 SVG技術(shù)</b></p><p><b> 2.1 XML介紹</b></p><p> XML是可擴(kuò)展標(biāo)記語(yǔ)言的簡(jiǎn)稱,它定義了結(jié)構(gòu)化表示數(shù)據(jù)的標(biāo)準(zhǔn)格式。XML是W3C(
15、World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)為適應(yīng)互聯(lián)網(wǎng)的發(fā)展而推出的新型Web語(yǔ)言,是國(guó)際標(biāo)準(zhǔn)化組織所制訂的SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)的子集。它是用于定義其他標(biāo)識(shí)語(yǔ)言的一種元語(yǔ)言。它具有可擴(kuò)展性、平臺(tái)獨(dú)立性、數(shù)據(jù)與表現(xiàn)分離以及結(jié)構(gòu)化數(shù)據(jù)等特點(diǎn),非常適合網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)傳輸和表達(dá)。XML通過(guò)其可擴(kuò)展性提供了一種通用的數(shù)據(jù)格式,不同的軟件系統(tǒng)之
16、間可以通過(guò)這種新的數(shù)據(jù)描述方式進(jìn)行通信,從而實(shí)現(xiàn)完全的交互操作,這源于XML將結(jié)構(gòu)化的數(shù)據(jù)表示為一個(gè)純文本的特性??梢酝ㄟ^(guò)XML對(duì)信息加以規(guī)范化定義和描述,并且在互聯(lián)網(wǎng)上進(jìn)行數(shù)據(jù)的傳輸。SVG就是XML在圖形圖像領(lǐng)域的一個(gè)應(yīng)用。</p><p><b> 2.2 SVG介紹</b></p><p> SVG是一種基于XML的開(kāi)放的標(biāo)準(zhǔn)文本式矢量圖形描述語(yǔ)言,即它是
17、用XML元語(yǔ)言定義的語(yǔ)言。SVG圖像是與XML1.0兼容的文檔,SVG元素是指示如何繪制圖像的一些指令,閱讀器解釋這些指令,把SVG圖像在指定設(shè)備上顯示出來(lái)。使用SVG可以在網(wǎng)頁(yè)上顯示出各種各樣的高質(zhì)量的矢量圖形,包括許多圖像處理中常見(jiàn)的功能,如圖形、文字、動(dòng)畫(huà)、顏色、濾鏡效果等。最關(guān)鍵的是SVG完全用普通文本來(lái)描述,也就是說(shuō),這是一種專門(mén)為網(wǎng)絡(luò)而設(shè)計(jì)的基于文本的圖像格式。由于SVG是基于XML的,所以可擴(kuò)展性很強(qiáng),能夠描述任何復(fù)雜的圖
18、像,甚至動(dòng)態(tài)交互式圖像。</p><p> 2.3 SVG的特點(diǎn)</p><p> 雖然SVG的“矢量描述”并不是一個(gè)全新的概念,但它綜合了矢量圖形、點(diǎn)陣圖像和純文字的優(yōu)點(diǎn),以一種標(biāo)準(zhǔn)將其統(tǒng)一起來(lái)描述。它由計(jì)算機(jī)根據(jù)矢量數(shù)據(jù)計(jì)算后繪制而成,相較于位圖圖像矢量圖像有以下特點(diǎn):(1)文件的大小與圖形的復(fù)雜程度有關(guān),而與圖形的具體尺寸無(wú)關(guān);(2)圖形的顯示尺寸可以無(wú)限縮放,變化后不影響圖形的
19、質(zhì)量。正是由于矢量圖像的這些特征,使得它尤其適合于網(wǎng)上傳播。圖片和交互在以前是兩個(gè)獨(dú)立的概念,而在SVG中,文字與圖形并非封裝于SVG內(nèi),而是可以借助DOM和腳本語(yǔ)言等手段與外界交互,使得在圖片內(nèi)進(jìn)行交互成為可能,這是以往的圖像所不能做到的。統(tǒng)一的標(biāo)準(zhǔn)和開(kāi)放性是SVG的強(qiáng)大生命力所在。標(biāo)準(zhǔn)統(tǒng)一可增強(qiáng)網(wǎng)絡(luò)的交流,結(jié)束目前業(yè)界各種格式并存的混亂局面;開(kāi)放性則有利于日后的各種新的元素加入其中擴(kuò)充其功能。SVG使用時(shí),客戶端的軟件負(fù)責(zé)解釋SVG
20、文本并將其轉(zhuǎn)化成實(shí)際的矢量圖像,文字仍是文字,線條仍是線條,可在客戶端即時(shí)修改,這也是SVG的一大特色。</p><p><b> 2.4 SVG規(guī)范</b></p><p> SVG規(guī)范定義了6種類型的對(duì)象,包括矢量圖形、圖像、漸變填充、濾鏡、可重用單元和文本。圖形對(duì)象可以進(jìn)行組合、添加樣式、幾何變換等操作。根據(jù)功能不同,這些主要對(duì)象可歸結(jié)為基本要素對(duì)象和頁(yè)面描
21、述功能對(duì)象兩大類,具體請(qǐng)見(jiàn)圖1和圖2所示。</p><p> 圖1 SVG基本要素</p><p> 圖2 SVG頁(yè)面描述功能</p><p> 框架元素,就是組成一個(gè)完整SVG文檔的基本元素,主要包括<svg>、<g>、<desc>元素和<title>元素等等。<svg>元素是文檔元素,必不可少的,
22、它相當(dāng)于指定一塊畫(huà)布,內(nèi)部的所有圖形元素都將顯示在這塊畫(huà)布指定的區(qū)域中。因此它有一些標(biāo)記位置的屬性像x,y,width,height。<desc>和<title>元素是用來(lái)描述圖像的注釋性元素。還有一些表示基本圖形的標(biāo)記,如rect,circle等等,SVG圖形就是通過(guò)組合這些基本的元素和組件,來(lái)生成復(fù)雜的圖形的。</p><p> 3 雨量分析系統(tǒng)的需求分析</p>&l
23、t;p><b> 3.1 系統(tǒng)需求</b></p><p> 需求分析是一種軟件工程活動(dòng),它在系統(tǒng)需求工程和軟件設(shè)計(jì)間起到橋梁的作用,主要任務(wù)是將用戶的需求變?yōu)檐浖墓δ芎托阅苊枋觥;赟VG的自動(dòng)站雨量分析系統(tǒng)要實(shí)現(xiàn)對(duì)四川省部分市縣及其雨量數(shù)據(jù)進(jìn)行管理與分析,能夠以各種時(shí)間方式查詢各市縣的歷史雨量數(shù)據(jù)并以SVG格式的曲線圖顯示出來(lái),要求實(shí)現(xiàn)簡(jiǎn)單地統(tǒng)計(jì)分析功能,例如統(tǒng)計(jì)同一時(shí)間段內(nèi)
24、兩個(gè)不同地區(qū)的雨量數(shù)據(jù),對(duì)其進(jìn)行分析,并生成SVG圖形以輔助工作人員判斷某一時(shí)間數(shù)據(jù)點(diǎn)過(guò)高的城市是否有發(fā)生災(zāi)害的可能性。作為一個(gè)完整的系統(tǒng),還要能夠管理系統(tǒng)內(nèi)各個(gè)模塊及設(shè)置不同用戶的權(quán)限。由于會(huì)涉及到大量數(shù)據(jù),因此要有對(duì)數(shù)據(jù)庫(kù)的管理,實(shí)現(xiàn)數(shù)據(jù)備份功能,以保障數(shù)據(jù)的安全性。</p><p> 系統(tǒng)功能模塊主要包括以下幾個(gè)方面:</p><p><b> 1、系統(tǒng)管理;</
25、b></p><p><b> 2、雨量數(shù)據(jù)管理;</b></p><p><b> 3、城市信息管理;</b></p><p><b> 4、前臺(tái)管理;</b></p><p><b> 5、數(shù)據(jù)備份。</b></p><
26、;p><b> 3.2 功能分析</b></p><p> 以下按照不同的模塊進(jìn)行功能描述:</p><p> 1、系統(tǒng)管理實(shí)現(xiàn)以下四個(gè)功能:</p><p> (1)模塊管理:管理系統(tǒng)中所有模塊,對(duì)模塊進(jìn)行添加、更新及刪除;</p><p> (2)用戶管理:添加系統(tǒng)用戶,選擇對(duì)應(yīng)的角色,對(duì)系統(tǒng)中已有用
27、戶進(jìn)行更新(包括登陸密碼及角色)、刪除;</p><p> ?。?)角色管理:新增、更新、刪除系統(tǒng)角色,分配角色權(quán)限;</p><p> ?。?)日志管理:能根據(jù)選擇條件對(duì)已有日志進(jìn)行查詢、刪除和下載。</p><p> 2、雨量數(shù)據(jù)管理頁(yè)面管理后臺(tái)的所有雨量數(shù)據(jù),有如下功能:</p><p> (1)數(shù)據(jù)查看:可根據(jù)選擇條件(包括日期和
28、城市選擇)顯示雨量數(shù)據(jù),也可根據(jù)選擇的顯示方式,以SVG圖形方式查看雨量數(shù)據(jù);</p><p> ?。?)數(shù)據(jù)錄入:選擇某一城市后,可以選擇任意一天進(jìn)行雨量數(shù)據(jù)輸入;</p><p> ?。?)數(shù)據(jù)更新:在選定城市某一天的雨量數(shù)據(jù)后,點(diǎn)擊更新可以修改雨量數(shù)據(jù)。</p><p> 3、城市信息管理頁(yè)面管理地圖頁(yè)面中出現(xiàn)的所有城市的雨量數(shù)據(jù),通過(guò)輸入城市名及選擇上級(jí)城
29、市新增城市數(shù)據(jù),也可以對(duì)已有城市數(shù)據(jù)進(jìn)行更新(修改名稱或上級(jí)城市)、刪除操作。</p><p> 4、前臺(tái)管理頁(yè)面放置了將前臺(tái)查詢頁(yè)面,這一模塊是整個(gè)系統(tǒng)的重點(diǎn)部分,包括地圖管理、選擇顯示方式、選擇查詢方式并生成圖形顯示頁(yè)面。區(qū)別于其它系統(tǒng),本套系統(tǒng)對(duì)于數(shù)據(jù)圖形使用了SVG這種文本式矢量圖形描述語(yǔ)言。</p><p> 用戶查詢數(shù)據(jù),并生成SVG曲線圖的操作流程如圖3所示。</p
30、><p> 圖3 SVG頁(yè)面描述功能</p><p> 5、系統(tǒng)的數(shù)據(jù)備份操作能夠?qū)崿F(xiàn)將數(shù)據(jù)庫(kù)文件備份到本機(jī)上的指定目錄下,需要時(shí)再進(jìn)行數(shù)據(jù)恢復(fù),以保證數(shù)據(jù)的安全性。備份管理有如下功能:</p><p> ?。?)數(shù)據(jù)備份:利用SQLServer的備份操作backup database進(jìn)行數(shù)據(jù)備份;</p><p> ?。?)數(shù)據(jù)恢復(fù):利用S
31、QLServer的恢復(fù)操作restore database進(jìn)行數(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è)計(jì)</p><p> 4.
32、1 系統(tǒng)模塊結(jié)構(gòu)</p><p> 系統(tǒng)主要分為系統(tǒng)管理、雨量數(shù)據(jù)管理、城市信息管理、前臺(tái)管理等幾大模塊,其結(jié)構(gòu)關(guān)系如圖5所示。</p><p><b> 圖5 系統(tǒng)模塊結(jié)構(gòu)</b></p><p> 4.2 數(shù)據(jù)庫(kù)的設(shè)計(jì)</p><p> 4.2.1 總體設(shè)計(jì)</p><p> 數(shù)據(jù)庫(kù)
33、的E-R模型圖如圖6所示。圖6中,用戶在具有某些角色之后,才有權(quán)限使用系統(tǒng)功能,而不能直接使用,因此設(shè)計(jì)中將角色與系統(tǒng)功能關(guān)聯(lián)起來(lái),并將用戶與系統(tǒng)功能隔離開(kāi)來(lái);日志的生成是在用戶使用系統(tǒng)功能的過(guò)程中自動(dòng)生成的,其中需要保存當(dāng)前用戶的ID和對(duì)應(yīng)的系統(tǒng)功能的ID。</p><p> 圖6 數(shù)據(jù)庫(kù)E-R圖</p><p> 4.2.2 數(shù)據(jù)庫(kù)表字段說(shuō)明</p><p>
34、; 1、城市數(shù)據(jù)表(City)存儲(chǔ)的是地圖上所有城市的相關(guān)信息,具體見(jiàn)表1所示。</p><p><b> 表1 城市數(shù)據(jù)表</b></p><p> 2、每小時(shí)降雨量表(RainPerHour)存儲(chǔ)的是城市中具體一天24小時(shí)的雨量數(shù)據(jù),Hour01表示0~1時(shí)的雨量數(shù)據(jù),依此類推,中間省略部分行,具體見(jiàn)表2所示。</p><p><
35、;b> 表2 雨量數(shù)據(jù)表</b></p><p> 3、模塊表(Func)存儲(chǔ)的是系統(tǒng)中所有模塊的信息,具體見(jiàn)表3所示。</p><p><b> 表3 模塊信息表</b></p><p> 4、日志表(Log)中存儲(chǔ)管理員對(duì)某一模塊進(jìn)行添加、修改等操作的記錄,無(wú)論成功與否,系統(tǒng)都會(huì)自動(dòng)記錄相應(yīng)的信息,具體見(jiàn)表4所示。
36、</p><p><b> 表4 日志信息表</b></p><p> 5、用戶表(User)中存儲(chǔ)用戶登陸系統(tǒng)的ID號(hào)、名稱和密碼等信息,具體見(jiàn)表5所示。</p><p><b> 表5 用戶表</b></p><p> 6、用戶角色關(guān)系表(UserRoleRel)存儲(chǔ)用戶在系統(tǒng)中屬于哪一
37、角色的信息,具體見(jiàn)表6所示。</p><p> 表6 用戶角色關(guān)系表</p><p> 7、角色表(Role)存儲(chǔ)每一個(gè)角色的角色名及對(duì)它權(quán)限的描述,具體見(jiàn)表7所示。</p><p><b> 表7 角色表</b></p><p> 8、角色權(quán)限關(guān)系表(RoleFuncRel)存儲(chǔ)角色對(duì)于某一模塊是否具有讀取、增
38、加、更新、刪除等操作的權(quán)限,具體見(jiàn)表8所示。</p><p> 表8 角色權(quán)限關(guān)系表</p><p> 4.3 開(kāi)發(fā)技術(shù)及過(guò)程</p><p> 4.3.1 三層架構(gòu)</p><p> 三層架構(gòu)也稱三層體系結(jié)構(gòu),即表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層。表現(xiàn)層主要指用戶界面,它要求盡可能的簡(jiǎn)單,使最終用戶不需要進(jìn)行任何培訓(xùn)就能方便地訪問(wèn)信息;
39、第二層就是業(yè)務(wù)邏輯層,也就是常說(shuō)的中間件,所有的應(yīng)用系統(tǒng)、應(yīng)用邏輯、控制都在這一層,系統(tǒng)的復(fù)雜性也主要體現(xiàn)在業(yè)務(wù)邏輯層;最后的數(shù)據(jù)訪問(wèn)層存儲(chǔ)大量的數(shù)據(jù)信息和數(shù)據(jù)邏輯,所有與數(shù)據(jù)有關(guān)的安全、完整性控制、數(shù)據(jù)的一致性、并發(fā)操作等都是在第三層完成。三層架構(gòu)的層次關(guān)系見(jiàn)圖7所示。</p><p> 圖7 三層架構(gòu)示意圖</p><p> 這些層相互之間獨(dú)立性好,可以單獨(dú)開(kāi)發(fā),單獨(dú)測(cè)試。三層架構(gòu)
40、另一個(gè)優(yōu)點(diǎn)是它的安全性,客戶端只能通過(guò)上一層來(lái)訪問(wèn)下一層的服務(wù),減少了入口點(diǎn),把很多危險(xiǎn)的系統(tǒng)功能都屏蔽了。</p><p> 表現(xiàn)層位于最上層,離用戶最近,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。通過(guò)表現(xiàn)層,用戶輸入數(shù)據(jù)、獲取數(shù)據(jù)。表現(xiàn)層同時(shí)也提供一定的安全性,確保用戶沒(méi)有機(jī)會(huì)看到機(jī)密的信息。中間的業(yè)務(wù)邏輯層是表現(xiàn)層和數(shù)據(jù)訪問(wèn)層的橋梁,它響應(yīng)表現(xiàn)層的用戶請(qǐng)求,負(fù)責(zé)處理用戶輸入的信息,
41、或者是將這些信息發(fā)送給數(shù)據(jù)訪問(wèn)層進(jìn)行保存,或者是調(diào)用數(shù)據(jù)訪問(wèn)層中的函數(shù)再次讀出這些數(shù)據(jù)。業(yè)務(wù)邏輯層也可以包括一些對(duì)“商業(yè)邏輯”描述的代碼在里面。數(shù)據(jù)訪問(wèn)層定義和維護(hù)數(shù)據(jù)的完整性、安全性,它響應(yīng)業(yè)務(wù)邏輯層的請(qǐng)求來(lái)訪問(wèn)數(shù)據(jù),僅實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存和讀取操作。訪問(wèn)的數(shù)據(jù)可以是數(shù)據(jù)庫(kù)系統(tǒng)、二進(jìn)制文件、文本文檔或是XML文檔等等。</p><p> 本項(xiàng)目中.NET三層架構(gòu)中各個(gè)包之間的關(guān)系結(jié)構(gòu)如圖8所示。</p>
42、;<p> 圖8 三層架構(gòu)名稱空間關(guān)系圖</p><p> 其中,Model命名空間中的類對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的表,為整個(gè)架構(gòu)提供方便的數(shù)據(jù)表示形式;IDAL和SQLServerDAL對(duì)應(yīng)于數(shù)據(jù)訪問(wèn)層,IDAL命名空間中定義了一整套用于操作數(shù)據(jù)庫(kù)的接口,具體的數(shù)據(jù)訪問(wèn)操作在SQLServerDAL命名空間中實(shí)現(xiàn);DALFactory命名空間中定義了獲取數(shù)據(jù)訪問(wèn)操作的方法,在BLL命名空間中,就使用這些
43、方法來(lái)獲取符合IDAL中定義的接口的對(duì)象,再用它來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,顯然它們屬于業(yè)務(wù)邏輯層;而表現(xiàn)層對(duì)應(yīng)于前臺(tái)頁(yè)面代碼,包括獲取用戶響應(yīng)和請(qǐng)求,再通過(guò)BLL來(lái)獲取數(shù)據(jù)并返回給用戶。</p><p> 下面給出具體例子說(shuō)明數(shù)據(jù)和指令是如何在各層之間流動(dòng)和傳遞的。</p><p> 首先,表現(xiàn)層中的某一對(duì)象調(diào)用業(yè)務(wù)邏輯層BLL中的Add函數(shù),來(lái)向數(shù)據(jù)庫(kù)中添加數(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í),數(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,首先進(jìn)行業(yè)務(wù)邏輯處理(比如數(shù)據(jù)完整性,合法性以及其他一些業(yè)務(wù)處理),然后調(diào)用工廠中相應(yīng)的方法來(lái)創(chuàng)建相應(yīng)的SQLServerDAL對(duì)象,以獲得訪問(wèn)數(shù)據(jù)訪問(wèn)層的對(duì)象。</p><p> 工廠類中對(duì)應(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í),數(shù)據(jù)流向數(shù)據(jù)訪問(wèn)層,指令執(zhí)行到數(shù)據(jù)訪問(wèn)層:</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ù)訪問(wèn)層,通過(guò)調(diào)用存儲(chǔ)過(guò)程的方式,將數(shù)據(jù)傳遞到數(shù)據(jù)庫(kù),并執(zhí)行相應(yīng)的操作。DbHelperSQL.ExecuteSql()表示封裝好的方法,strSql.ToString()放置添加語(yǔ)句。此時(shí),調(diào)用DbHelperSQL.ExecuteSql(),執(zhí)行SQL語(yǔ)句。 </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)符合文檔對(duì)象模型的定義。將SVG文檔用DOM表示,其結(jié)構(gòu)見(jiàn)圖9所示。</p><p> 圖9 SVG文檔的DOM對(duì)象結(jié)構(gòu)</p><p> 圖9對(duì)應(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)實(shí)現(xiàn)</b></p><p> 5.1 雨量數(shù)據(jù)管理的實(shí)現(xiàn)</p>
62、<p> 在雨量數(shù)據(jù)管理頁(yè)面中進(jìn)行雨量數(shù)據(jù)錄入時(shí),必須先選中要添加雨量數(shù)據(jù)的城市及日期,點(diǎn)擊“確定”后系統(tǒng)首先查看是否有該城市這一天的數(shù)據(jù),有的話就直接顯示,沒(méi)有的話會(huì)創(chuàng)建一條新的雨量數(shù)據(jù)記錄,自動(dòng)生成隨機(jī)數(shù)作為這一天24小時(shí)的雨量數(shù)據(jù),并將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中。這里創(chuàng)建新雨量數(shù)據(jù)記錄是基于三層架構(gòu)來(lái)做的,首先創(chuàng)建Model.SVGRAS_RainPerHour對(duì)象,然后將數(shù)據(jù)保存到其成員變量中,再調(diào)用BLL.SVGRAS_
63、RainPerHour.Add方法來(lái)將此對(duì)象包含的數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中。其相關(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> 頁(yè)面效果如圖10所示。</p><p> 圖10 雨量數(shù)據(jù)錄入界面</p><p> 在實(shí)際應(yīng)用中,這里生成的數(shù)據(jù)全部為0,而具體的數(shù)據(jù)需要通過(guò)數(shù)據(jù)更新功能來(lái)輸入
73、。這里采用自動(dòng)生成數(shù)據(jù)方式,是為了方便系統(tǒng)的測(cè)試與演示。用戶要填入新的雨量數(shù)據(jù),需要點(diǎn)擊更新按鈕進(jìn)入數(shù)據(jù)更新頁(yè)面,在其中填入新數(shù)據(jù)后點(diǎn)擊提交按鈕完成更新。</p><p> 5.2 雨量數(shù)據(jù)分析與SVG圖像的生成</p><p> 1、獲取用戶設(shè)置的查詢參數(shù)</p><p> 用戶在查詢頁(yè)面中設(shè)置相應(yīng)的查詢參數(shù),如查詢方式、查詢?nèi)掌诘鹊?,并點(diǎn)擊確定按鈕(即選擇
74、某一城市)后,程序首先會(huì)驗(yàn)證用戶的參數(shù)設(shè)置是否正確,若不正確,則彈出錯(cuò)誤提示;若通過(guò)驗(yàn)證,再按照用戶設(shè)置的查詢參數(shù)傳到后續(xù)程序中。</p><p> 這里的驗(yàn)證分為兩部分,一部分是在瀏覽器端進(jìn)行的,使用javascript代碼,在向服務(wù)器發(fā)送數(shù)據(jù)前完成驗(yàn)證,這里的驗(yàn)證是測(cè)試用戶輸入的數(shù)據(jù)是否合法,如日期格式是否正確,參數(shù)是否設(shè)置完整等等,如果用戶設(shè)置的是按多日查詢,卻只設(shè)置了起始日期,那么就不會(huì)通過(guò)驗(yàn)證。只有通
75、過(guò)驗(yàn)證才會(huì)將參數(shù)數(shù)據(jù)發(fā)送到服務(wù)器端,這樣可以在一定程度上減輕服務(wù)器端的壓力。</p><p><b> 圖11 前臺(tái)界面</b></p><p> 另一部分驗(yàn)證是在服務(wù)器端進(jìn)行的,它主要驗(yàn)證用戶是否擁有操作權(quán)限,以及數(shù)據(jù)庫(kù)中是否存在數(shù)據(jù)。只有通過(guò)驗(yàn)證后,才能在數(shù)據(jù)庫(kù)中查詢相應(yīng)的雨量數(shù)據(jù)。</p><p> 2、從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)</
76、p><p> 按照用戶設(shè)置的查詢模式,轉(zhuǎn)到相應(yīng)模式的查詢代碼中。然后再根據(jù)查詢參數(shù),從數(shù)據(jù)庫(kù)中獲取相應(yīng)的數(shù)據(jù)。如:用戶設(shè)置的查詢模式為按天查詢,查詢城市為成都,日期為2007-5-27,然后調(diào)用strWhere()方法來(lái)生成查詢參數(shù),再傳入三層架構(gòu)中的業(yè)務(wù)邏輯層中的getList()方法,就得到了查詢的結(jié)果,代碼如下:</p><p> DataTable table1=BLL.SVGRA
77、S_RainPerHour.GetList(strWhere("days")).Tables[0];</p><p> 3、對(duì)數(shù)據(jù)進(jìn)行分析處理,并組織為適合顯示的形式</p><p> 前面查詢得到的是一個(gè)DataTable表,里面的數(shù)據(jù)是與數(shù)據(jù)庫(kù)中對(duì)應(yīng)起來(lái)的,但這樣的數(shù)據(jù)卻不便于生成圖像,因此要對(duì)它進(jìn)行重組,轉(zhuǎn)換為雨量數(shù)據(jù)和相關(guān)文字信息。在這里定義了一個(gè)類Rain
78、fallData來(lái)輔助,這個(gè)類包含了城市信息、時(shí)間信息、相應(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> //計(jì)算出最大最小值</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ù)都存到該類的對(duì)象中,并將這些對(duì)象傳給SVG顯示模塊。</p><p> 此外,若查詢模式是多日查詢或多月查詢,還需要將數(shù)據(jù)按日或月累加起來(lái)。</p><p> 4、使用XML對(duì)象來(lái)生成SVG文檔</p><p> 項(xiàng)目中定義了一個(gè)SVG文檔類SVGDocument,它繼承自XMLDocument,在它
85、內(nèi)部封裝了加載SVG文檔元素的操作,以后創(chuàng)建好文檔中的元素后就直接插入到該文檔中即可。另外定義了一個(gè)輔助類SVGHelper,里面定義了一些向某個(gè)結(jié)點(diǎn)添加基本SVG元素的操作,以方便向文檔中添加SVG圖形?,F(xiàn)在,創(chuàng)建一個(gè)SVG文檔,并且添加一條線、一個(gè)圓、一個(gè)矩形和一行文本的代碼如下:</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)系的細(xì)節(jié),并提供創(chuàng)建坐標(biāo)系、向坐標(biāo)系中添加點(diǎn)、添加線等接口操作,相應(yīng)的也定義了坐標(biāo)類Coordinate,來(lái)對(duì)坐標(biāo)信息進(jìn)行封裝。現(xiàn)在,向SVG文檔中添加坐標(biāo)系,并向坐標(biāo)系中添加一系列點(diǎn)和線的代碼如下:</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)點(diǎn)的數(shù)組</p
91、><p> 處理按照用戶參數(shù)查詢獲得的數(shù)據(jù),并將其轉(zhuǎn)換為對(duì)應(yīng)于坐標(biāo)系中的坐標(biāo)點(diǎn)的數(shù)組。這里需要求出所有雨量數(shù)據(jù)的最大值和最小值,并計(jì)算出合理的縱坐標(biāo)的坐標(biāo)點(diǎn)數(shù),然后將每一個(gè)雨量數(shù)據(jù)除以一個(gè)縱坐標(biāo)點(diǎn)代表的雨量數(shù)據(jù),以轉(zhuǎn)換為坐標(biāo)位置。然后將坐標(biāo)點(diǎn)添加到坐標(biāo)系上,并連成曲線。</p><p> 7、添加相應(yīng)的文字標(biāo)簽及均值線</p><p> 在點(diǎn)上以及線上面,加上說(shuō)明
92、文字。不同的線會(huì)用不同的顏色顯示,并標(biāo)注相應(yīng)的說(shuō)明文字。同時(shí),將求出的每組數(shù)據(jù)的均值以均值線的方式畫(huà)到坐標(biāo)系上。</p><p> 8、修改響應(yīng)類型為SVG文檔類型(image/svg+xml)</p><p> 將要返回的響應(yīng)類型改為image/svg+xml,這樣瀏覽器才會(huì)將頁(yè)面作為SVG圖形來(lái)解析。然后將SVG文檔(以XML對(duì)象表示)的內(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方式提供開(kāi)放的外部接口</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)平臺(tái)的基礎(chǔ)上構(gòu)建一個(gè)通用的,與平臺(tái)和語(yǔ)言無(wú)關(guān)的接口層,各種不同平臺(tái)之上的應(yīng)用通過(guò)這個(gè)接口層來(lái)集成已有的服務(wù)。</p><p> Web Service具有以下一些特征:</p><p> 1、完好的封裝性:Web Service既然是一種部署在Web上的對(duì)象,自然具備對(duì)象的良好封裝性。對(duì)使用者而言,只能看到該對(duì)象提供的功能列表。
96、</p><p> 2、松散耦合:當(dāng)一個(gè)Web Service的實(shí)現(xiàn)發(fā)生變化時(shí),調(diào)用者完全不會(huì)感覺(jué)到。對(duì)調(diào)用者來(lái)說(shuō),只要調(diào)用的接口不變,其內(nèi)部實(shí)現(xiàn)的任何變化對(duì)用戶來(lái)說(shuō)都是透明的。</p><p> 3、高度可集成能力:由于Web Service采用簡(jiǎn)單的、易于理解的XML作為接口描述,完全屏蔽了不同平臺(tái)和系統(tǒng)的差異性,因此,任何符合協(xié)議的應(yīng)用都可以集成已有的Web Service。&l
97、t;/p><p> 5.3.2 使用Web Service的意義</p><p> 使用Web Service可以引入很高的開(kāi)放性,使得系統(tǒng)可以方便的集成到其它應(yīng)用中,同時(shí),也為系統(tǒng)的二次開(kāi)發(fā)預(yù)留了很好的接口。此外,作為雨量數(shù)據(jù)分析系統(tǒng),必然會(huì)涉及到大量的雨量數(shù)據(jù),而這些雨量數(shù)據(jù)是從全國(guó)各地的設(shè)備終端采集匯總而來(lái)的,一旦有了這一開(kāi)放的接口,所有的數(shù)據(jù)都可以通過(guò)它來(lái)寫(xiě)入到數(shù)據(jù)庫(kù)中。另外,這些
98、雨量數(shù)據(jù)的采集是相當(dāng)不容易的,一般的科研機(jī)構(gòu)和學(xué)校是不可能獲取如此大量的真實(shí)數(shù)據(jù)的,例如本套系統(tǒng)就無(wú)法獲得到這些真實(shí)數(shù)據(jù),只能通過(guò)隨機(jī)數(shù)來(lái)生成假的數(shù)據(jù)。這樣就限制了這些數(shù)據(jù)的科研作用。然而,通過(guò)Web Service來(lái)提供開(kāi)放的接口后,所有的用戶都可以通過(guò)它來(lái)很容易的獲取這些雨量數(shù)據(jù),還可以通過(guò)接口使用系統(tǒng)中已經(jīng)做好的各種功能,避免了重復(fù)開(kāi)發(fā)的浪費(fèi)。因此,使用Web Service來(lái)提供開(kāi)放的接口是有很大的積極意義的。</p>
99、;<p> 5.3.3 Web Service接口的實(shí)現(xiàn)</p><p> 在系統(tǒng)中只提供簡(jiǎn)單功能的實(shí)現(xiàn),主要接口有:</p><p><b> 1、獲取城市ID</b></p><p> 通過(guò)該接口可以查詢指定城市在系統(tǒng)中分配的ID值,其參數(shù)為城市名稱。在查詢城市數(shù)據(jù)前,首先要通過(guò)此接口獲得城市的ID值。</p&g
100、t;<p><b> 2、獲取雨量數(shù)據(jù)</b></p><p> 通過(guò)輸入查詢條件,來(lái)獲得雨量數(shù)據(jù)。這里的查詢條件就是SQL查詢語(yǔ)句中的where子句,用戶可以指定某一天、某幾天或某幾個(gè)月的等條件。例如最簡(jiǎn)單的查詢“江油”的所有雨量數(shù)據(jù)的參數(shù)為“CityId = ‘0000000013’”。</p><p><b> 接口實(shí)現(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)測(cè)試</b>
104、</p><p> 在前臺(tái)頁(yè)面中,對(duì)每種查詢方式都進(jìn)行了測(cè)試,所有數(shù)據(jù)查詢、分析以及圖像生成功能都能正確工作。例如,選擇同一城市不同時(shí)間段比較模式,并設(shè)置起止日期和時(shí)間,這里的日期跨越兩個(gè)月,即4月30日到5月1日,設(shè)置顯示均值線方式;點(diǎn)擊城市名稱就可以選擇城市,并將其加邊框標(biāo)注出來(lái),再次點(diǎn)擊即可取消相應(yīng)城市的選擇,并去掉相應(yīng)邊框;點(diǎn)擊確定按鈕后,就會(huì)打開(kāi)新的窗口顯示查詢結(jié)果。</p><p
105、> 用戶管理界面列出了系統(tǒng)當(dāng)前的所有用戶,點(diǎn)擊“選擇”選中一個(gè)用戶后,可修改用戶名、密碼,并為用戶指定系統(tǒng)角色。系統(tǒng)當(dāng)前共有三種角色,角色的權(quán)限由管理員指定,例如要為系統(tǒng)管理員指定系統(tǒng)管理這一模塊的權(quán)限,選中這一角色,在權(quán)限分配區(qū)選中相應(yīng)的模塊權(quán)限即可。角色的選擇可以是一個(gè)或多個(gè),默認(rèn)角色選擇為空,若沒(méi)有為用戶指定系統(tǒng)角色,則用戶登陸系統(tǒng)后不會(huì)出現(xiàn)系統(tǒng)樹(shù)型菜單,用戶也就不能進(jìn)行任何操作。</p><p>
106、 日志是根據(jù)用戶操作自動(dòng)生成的,在后臺(tái)管理中可以根據(jù)選擇條件進(jìn)行日志的查詢、刪除和下載,若選擇條件為空則默認(rèn)為選擇所有日志。</p><p> 系統(tǒng)中的城市分為兩級(jí),每一個(gè)城市都有其上級(jí)城市。通過(guò)輸入城市名稱并選擇上級(jí)城市后可新增一個(gè)城市,若要更新或刪除城市,則先要點(diǎn)擊對(duì)應(yīng)的選擇按鈕來(lái)選中一個(gè)城市,然后可對(duì)選中的城市信息進(jìn)行更新或刪除等操作。</p><p><b> 結(jié)
107、 論</b></p><p> 雨量分析系統(tǒng)實(shí)現(xiàn)了對(duì)四川省部分市縣及其雨量數(shù)據(jù)的管理與分析功能,能夠以各種方式(例如相同城市不同時(shí)間或相同時(shí)間不同城市)查詢各市縣的歷史雨量數(shù)據(jù),并以SVG格式的圖形顯示出來(lái)。此外還實(shí)現(xiàn)了管理系統(tǒng)內(nèi)各個(gè)模塊及設(shè)置不同用戶權(quán)限的功能,以及數(shù)據(jù)庫(kù)備份和還原功能。通過(guò)本項(xiàng)目的開(kāi)發(fā),對(duì)C#語(yǔ)言有了更多的體會(huì),也更多地了解了B/S架構(gòu)系統(tǒng)的開(kāi)發(fā)。在開(kāi)發(fā)過(guò)程中,學(xué)會(huì)了SVG這
108、門(mén)新型的可伸縮矢量圖形語(yǔ)言,在使用時(shí)體會(huì)到了這門(mén)語(yǔ)言的實(shí)用性及它帶來(lái)的樂(lè)趣。</p><p> 在項(xiàng)目實(shí)現(xiàn)過(guò)程中也遇到過(guò)不少問(wèn)題和困難,同時(shí)由于缺乏編程經(jīng)驗(yàn),在編寫(xiě)代碼的過(guò)程中,碰到了很多難以解決的問(wèn)題和障礙,在老師的指導(dǎo)和同學(xué)的幫助下,查找各種資料,這些問(wèn)題得以解決,并積累了一定的開(kāi)發(fā)經(jīng)驗(yàn)。例如剛開(kāi)始不太了解雨量數(shù)據(jù)如何轉(zhuǎn)換為SVG圖形來(lái)顯示,便從網(wǎng)上找了一個(gè)現(xiàn)有的將數(shù)據(jù)顯示為SVG格式的圖形的庫(kù)來(lái)使用。在查
109、看各種相關(guān)資料,了解了SVG并進(jìn)行深入學(xué)習(xí)后,反復(fù)嘗試各種生成SVG圖形的方法。由于SVG本身就是XML文檔,因此選擇了用生成XML文檔的方式來(lái)生成SVG,并封裝了SVG的基本圖形元素,最終完成了一個(gè)較方便的創(chuàng)建SVG圖形的工具類。</p><p> 當(dāng)然,該雨量分析系統(tǒng)還是有很多不完善的地方。地圖信息本來(lái)應(yīng)該用SVG來(lái)組織和表示,這樣可以將其中的各種數(shù)據(jù)元素分離出來(lái),實(shí)現(xiàn)按選擇條件在地圖上顯示城市及相應(yīng)雨量數(shù)
110、據(jù)的功能;而且SVG的交互效果沒(méi)有體現(xiàn)出來(lái),對(duì)雨量數(shù)據(jù)的分析也不夠充分。但由于實(shí)現(xiàn)難度及時(shí)間限制,以上功能沒(méi)能實(shí)現(xiàn)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] Joseph Bustos, Karli Watson[美]..NET Web服務(wù)入門(mén)經(jīng)典——C#編程篇[M].侯彧譯.北京:清華大學(xué)出版社,2003。</p>&
111、lt;p> [2] Dinar Dalvi, Joe Gray[美]..NET XML高級(jí)編程[M].英宇,林琪譯.北京:清華大學(xué)出版社,2002。</p><p> [3] Jesse Liberty, Dan Hurwitz[美].Programming ASP.NET[M].南京:東南大學(xué)出版社,2006。</p><p> [4] 石磊,但正剛.ASP.NET數(shù)據(jù)庫(kù)編程
112、詳解C#版[M].北京:高等教育出版社,2004。</p><p> [5] 徐謖.ASP.NET應(yīng)用與開(kāi)發(fā)案例教程[M].北京:清華大學(xué)出版社,2005。</p><p> [6] 李安渝.Web Services技術(shù)與實(shí)現(xiàn)[M].北京:國(guó)防工業(yè)出版社,2003。</p><p> [7] 蔡月茹,柳面玲.Web Service基礎(chǔ)教程[M].北京:清華大學(xué)
113、出版社,2005。</p><p> [8] Seely[美].SOAP XML跨平臺(tái)Web Service開(kāi)發(fā)技術(shù)[M].楊濤,楊曉云,王建橋譯.北京:機(jī)械工業(yè)出版社,2002。</p><p> [9] Bill Trippe,Kate Binder[美].SVG設(shè)計(jì)在下一代Web站點(diǎn)中使用可縮放矢量圖形[M].高偉,英宇譯.北京:機(jī)械工業(yè)出版社,2003。</p>
114、<p><b> 致 謝</b></p><p> 本文是在黃興建老師和方睿老師的熱情關(guān)心和指導(dǎo)下完成的,他們淵博的知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對(duì)順利完成本課題起到了極大的作用。在此向他們表示我最衷心的感謝!</p><p> 在論文完成過(guò)程中,本人還得到了張映熊同學(xué)的熱心幫助,本人向他表示深深的謝意!</p><p&g
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 肖逸-基于SVG的自動(dòng)站雨量分析系統(tǒng)的設(shè)計(jì)代碼.rar
- 基于流量分析的網(wǎng)絡(luò)監(jiān)控系統(tǒng)-畢業(yè)論文
- 基于流量分析的網(wǎng)絡(luò)監(jiān)控系統(tǒng)-畢業(yè)論文
- 自動(dòng)澆花系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文--航空服務(wù)站貨物自動(dòng)分揀系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文--航空服務(wù)站貨物自動(dòng)分揀系統(tǒng)設(shè)計(jì)
- 鄉(xiāng)鎮(zhèn)自動(dòng)雨量站故障檢修
- 畢業(yè)論文--基于plc的自動(dòng)灌裝系統(tǒng)
- 低壓電網(wǎng)svg無(wú)功補(bǔ)償裝置設(shè)計(jì)【自動(dòng)化畢業(yè)論文】
- 畢業(yè)論文plc自動(dòng)倉(cāng)儲(chǔ)系統(tǒng)的設(shè)計(jì)
- 基于超聲波傳感器的自動(dòng)雨量站.pdf
- 基于plc自動(dòng)扶梯的變頻系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于.net的自動(dòng)閱卷考試系統(tǒng)畢業(yè)論文
- 基于.net的自動(dòng)閱卷考試系統(tǒng)畢業(yè)論文
- 基于.net的自動(dòng)閱卷考試系統(tǒng)畢業(yè)論文
- 畢業(yè)論文基于fpga設(shè)計(jì)地鐵自動(dòng)售票系統(tǒng)
- 畢業(yè)論文基于jsp的畢業(yè)論文管理系統(tǒng)的設(shè)計(jì)
- 基于plc的自動(dòng)扶梯控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于plc的天然氣調(diào)壓站的監(jiān)控系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于plc自動(dòng)門(mén)的控制系統(tǒng)設(shè)計(jì)-畢業(yè)論文
評(píng)論
0/150
提交評(píng)論