摘要:文中提出了基于C/S結(jié)構(gòu)的水利工程造價(jià)系統(tǒng),對(duì)系統(tǒng)功能及總體結(jié)構(gòu)設(shè)計(jì)進(jìn)行了闡述,并說明了系統(tǒng)數(shù)據(jù)庫構(gòu)建及數(shù)據(jù)分層計(jì)算等關(guān)鍵技術(shù)。
關(guān)鍵詞:水利工程造價(jià);C/S;數(shù)據(jù)庫;數(shù)據(jù)分層計(jì)算
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)11-20274-02
1 引言
隨著水利水電事業(yè)的蓬勃發(fā)展,在水利水電工程建設(shè)中,對(duì)工程造價(jià)進(jìn)行系統(tǒng)管理越來越受到重視。舊有的水利工程造價(jià)系統(tǒng)在通用性及造價(jià)實(shí)時(shí)計(jì)算等方面已不能滿足當(dāng)前的應(yīng)用需要。文中在深入研究水利工程造價(jià)業(yè)務(wù)流程和水利定額體系以及水利工程造價(jià)編制辦法的基礎(chǔ)上,構(gòu)建了一個(gè)基于C/S結(jié)構(gòu)的水利工程造價(jià)系統(tǒng),系統(tǒng)中采用不同的定額體系對(duì)應(yīng)不同的數(shù)據(jù)庫來解決造價(jià)系統(tǒng)的通用性問題,采用“數(shù)據(jù)分層計(jì)算”來解決數(shù)據(jù)的實(shí)時(shí)計(jì)算問題。
2 水利工程造價(jià)系統(tǒng)主要功能及業(yè)務(wù)流程
水利工程造價(jià)系統(tǒng)是指能夠?qū)λこ踢M(jìn)行搜集、加工、整理、運(yùn)算、分析、預(yù)測(cè)、輔助決策、傳遞、儲(chǔ)存、維護(hù)和使用的計(jì)算機(jī)系統(tǒng)。也就是說,它用系統(tǒng)思維的方法,以計(jì)算機(jī)技術(shù)為基礎(chǔ),綜合利用各種數(shù)據(jù)、信息,輔助人們?yōu)樗こ淘靸r(jià)管理決策提供服務(wù)。一個(gè)水利造價(jià)管理信息系統(tǒng)應(yīng)具有如下功能:
(1)正確地計(jì)算各種水利工程造價(jià),算出各類造價(jià)指標(biāo)及材料匯總等;
(2)利用數(shù)學(xué)的方法,判斷分析工程各階段造價(jià)的準(zhǔn)確性,為決策提供準(zhǔn)確的決策信息;
(3)合理安排工程費(fèi)用的分布,對(duì)工程施工中的費(fèi)用進(jìn)行動(dòng)態(tài)跟蹤,及時(shí)了解費(fèi)用情況,以便做出正確的處理;
(4)正確及時(shí)處理所收集的價(jià)格信息、指數(shù)情況、銀行匯率等現(xiàn)實(shí)指標(biāo),做出正確預(yù)測(cè);
(5)根據(jù)工程造價(jià)的數(shù)據(jù),打印出各種招標(biāo)投標(biāo)所需的報(bào)表文件;
(6)分類、整理己發(fā)生各工程數(shù)據(jù),作為以后工程計(jì)價(jià)、評(píng)估的依據(jù)。
其業(yè)務(wù)流程圖如圖1所示。
3 水利工程造價(jià)系統(tǒng)統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)采用C/S體系結(jié)構(gòu),使用標(biāo)準(zhǔn)TCP/IP網(wǎng)絡(luò)協(xié)議,采用ASA(Sybase Adaptive SQL Anywhere)作為后臺(tái)數(shù)據(jù)庫管理系統(tǒng),基于Delphi開發(fā)。
水利工程造價(jià)系統(tǒng)由文件管理、工程編輯、工程造價(jià)、造價(jià)報(bào)表、工具包以及幫助六大部分組成,其系統(tǒng)結(jié)構(gòu)如圖2所示,整個(gè)系統(tǒng)分為客戶端和服務(wù)器端,數(shù)據(jù)庫放在服務(wù)器上,為保證數(shù)據(jù)庫安全,在服務(wù)器前還設(shè)置了一防火墻。
在本系統(tǒng)中,我們采用C/S結(jié)構(gòu)的原因如下:
(1)目前確定的需求:在水利工程造價(jià)系統(tǒng)中一個(gè)確定的事實(shí)就是,造價(jià)系統(tǒng)基本上是單機(jī)使用的。各個(gè)水利工程是都一個(gè)完整的個(gè)體,工程之間相互沒有太多的關(guān)系,也基本上沒有多人共同完成一個(gè)水利工程造價(jià)的情況。
(2)未來可能的需求:來自用戶的未來的最可能的需求是定額體系的修改和擴(kuò)充。使用C/S體系,當(dāng)用戶的定額體系修改或擴(kuò)充時(shí),增加一個(gè)數(shù)據(jù)庫就可以了,這在基于C/S結(jié)構(gòu)下的桌面數(shù)據(jù)庫來說,是能簡單實(shí)現(xiàn)的。
(3)運(yùn)行與維護(hù)考慮:C/S架構(gòu)的數(shù)據(jù)庫系統(tǒng),由于數(shù)據(jù)庫是建立在通用的平臺(tái)之上,并且支持SQL這樣的通用技術(shù),對(duì)數(shù)據(jù)庫的維護(hù)工作更加專業(yè),但更為開放,這意味著維護(hù)和進(jìn)一步開發(fā)對(duì)原設(shè)計(jì)開發(fā)者的依賴性可以降低。
(4)安裝發(fā)布考慮:基于C/S結(jié)構(gòu)下的程序安裝發(fā)布簡單。
(5)性能、開發(fā)與品質(zhì)保證考慮:以目前的技術(shù)環(huán)境而言,在C/S結(jié)構(gòu)下,有更多成熟的,適合不同規(guī)模應(yīng)用的開發(fā)平臺(tái)與數(shù)據(jù)庫平臺(tái)可供選擇,并普遍遵循或采用SQL等標(biāo)準(zhǔn)或技術(shù),相對(duì)較具開放性,有更多的技術(shù)支持、開發(fā)與維護(hù)人員的來源,并且基于技術(shù)與行業(yè)發(fā)展的趨勢(shì),將來也會(huì)有更多的發(fā)展和保障。
3.2 數(shù)據(jù)庫設(shè)計(jì)
基于水利工程的特點(diǎn),為了解決水利工程造價(jià)系統(tǒng)的適應(yīng)性差的問題,我們對(duì)傳統(tǒng)的C/S結(jié)構(gòu)進(jìn)行了擴(kuò)展。即前臺(tái)一個(gè)應(yīng)用程序,后臺(tái)多個(gè)數(shù)據(jù)庫,在應(yīng)用程序中建有幾個(gè)連接,分別連接不同的數(shù)據(jù)庫。我們根據(jù)定額標(biāo)準(zhǔn)和工程差異,在定義數(shù)據(jù)庫時(shí),定義多個(gè)標(biāo)準(zhǔn)定額數(shù)據(jù)庫與工程數(shù)據(jù)庫,客戶端在工作時(shí),根據(jù)實(shí)際情況,由用戶選擇相應(yīng)的數(shù)據(jù)庫來進(jìn)行工程造價(jià)的操作。
具體的體系結(jié)構(gòu)如圖3所示。
3.2.1 標(biāo)準(zhǔn)定額數(shù)據(jù)庫
按水利行業(yè)的特點(diǎn),一個(gè)水利工程只可能用到一種定額體系,不可能同時(shí)使用兩種或兩種以上的定額體系,因?yàn)椴煌亩~體系,對(duì)費(fèi)用的計(jì)算方式,費(fèi)用的組成,各個(gè)定額的材料組成都是不一樣的。一個(gè)水利工程項(xiàng)目,不可能同時(shí)采用兩種計(jì)算方式。因此,根據(jù)這種情況,我們定義每一個(gè)定額體系就是一個(gè)標(biāo)準(zhǔn)定額數(shù)據(jù)庫。這樣做有以下幾個(gè)優(yōu)點(diǎn):
(1)每個(gè)定額體系相互不影響。當(dāng)某個(gè)標(biāo)準(zhǔn)定額數(shù)據(jù)庫中的數(shù)據(jù)錄入的誤時(shí),只需要更新這個(gè)標(biāo)準(zhǔn)定額數(shù)據(jù)庫,與其它的無關(guān),減少了更新數(shù)據(jù)時(shí)的更新的數(shù)據(jù)量。
(2)因?yàn)闃?biāo)準(zhǔn)定額數(shù)據(jù)庫中的數(shù)據(jù)較多,分開處理后,也避免了因?yàn)閿?shù)據(jù)量太多引起的數(shù)據(jù)查詢效率問題。
(3)費(fèi)用計(jì)算標(biāo)準(zhǔn)存在于標(biāo)準(zhǔn)定額庫中。當(dāng)不同的定額體系采用不同的費(fèi)用計(jì)算標(biāo)準(zhǔn)時(shí),調(diào)用對(duì)應(yīng)數(shù)據(jù)庫中的費(fèi)用計(jì)算存儲(chǔ)過程就可以了,不用修改程序。當(dāng)標(biāo)準(zhǔn)定額體系中的計(jì)算方式變更時(shí),只需要更新此數(shù)據(jù)庫的存儲(chǔ)過程,與程序無關(guān)。系統(tǒng)維護(hù)人員甚至于可以在用戶處進(jìn)行數(shù)據(jù)庫的維護(hù)工作。
3.2.2 工程數(shù)據(jù)庫
根據(jù)水利工程的特點(diǎn),一個(gè)水利工程與其它水利工程之間基本上沒有什么關(guān)系,我們?cè)O(shè)計(jì)一個(gè)水利工程就是一個(gè)工程數(shù)據(jù)庫。在系統(tǒng)新建工程時(shí),從一個(gè)工程模板數(shù)據(jù)拷貝一個(gè)文件就生成了新的工程數(shù)據(jù)。當(dāng)然,根據(jù)系統(tǒng)使用的定額體系不同,工程模板有可能是不同的。因此,一個(gè)標(biāo)準(zhǔn)定額數(shù)據(jù)庫就要求有一個(gè)對(duì)應(yīng)工程數(shù)據(jù)庫模板,也可以幾個(gè)標(biāo)準(zhǔn)定額數(shù)據(jù)庫共用一個(gè)工程數(shù)據(jù)庫模板。這樣設(shè)計(jì)有以下的優(yōu)點(diǎn):
(1)工程數(shù)據(jù)庫相互獨(dú)立。當(dāng)一個(gè)工程的數(shù)據(jù)發(fā)生錯(cuò)誤時(shí),不會(huì)影響其它的工程。而且是工程數(shù)據(jù)的備份十分方便,就是文件的拷貝。
(2)新建工程速度快。因?yàn)椴捎昧斯こ棠0鍞?shù)據(jù)庫,新建工程只是拷貝工程模板文件,非常方便。因?yàn)樾陆üこ瘫仨氂幸恍┏跏紨?shù)據(jù),不用這種方式,就必須進(jìn)行數(shù)據(jù)庫的操作,生成一些初始數(shù)據(jù)。
(3)模板維護(hù)方便。當(dāng)新建工程的需求改變時(shí),采用工程模板的方式只需要對(duì)工程模板進(jìn)行更新就可以了,不需要進(jìn)行程序更新。
3.3 數(shù)據(jù)分層計(jì)算
在水利工程造價(jià)系統(tǒng)中,最主要的業(yè)務(wù)就是工程數(shù)據(jù)編輯。而其中最大的問題在于數(shù)據(jù)的實(shí)時(shí)計(jì)算,本系統(tǒng)中我們采用數(shù)據(jù)分層計(jì)算的思想來解決這一難題。
水利工程造價(jià)的工程費(fèi)用在本質(zhì)上其實(shí)是一棵標(biāo)準(zhǔn)的樹,數(shù)據(jù)的修改一般是發(fā)生在樹的節(jié)點(diǎn),因此對(duì)于工程造價(jià)的計(jì)算問題,實(shí)際上就轉(zhuǎn)化成了樹的遍歷問題,其分層計(jì)算的思想是,找到用到材料的最大層次的節(jié)點(diǎn)。從這一層開始,進(jìn)行計(jì)算直到根節(jié)點(diǎn)。在對(duì)最大層計(jì)算時(shí),所有用到此材料節(jié)點(diǎn)構(gòu)成一個(gè)待計(jì)算的結(jié)點(diǎn)集合。遍歷此集合,計(jì)算節(jié)點(diǎn)的值,將這些節(jié)點(diǎn)的直接上級(jí)形成一個(gè)下次要計(jì)算的節(jié)點(diǎn)集合(不含重復(fù)的),同時(shí)將本層中變化了的材料節(jié)點(diǎn)再加入節(jié)點(diǎn)集合中。再對(duì)新集合進(jìn)行同前的遍歷操作,一直計(jì)算到根節(jié)點(diǎn)。
算法的實(shí)現(xiàn)如下:
Funetion Leve1Caleulate(EndNode:TTreeNode)
Begin
找到計(jì)算終點(diǎn)節(jié)點(diǎn)EndNode的層次號(hào);
在EndNode的子孫中找到變化節(jié)點(diǎn)的最大的層次號(hào)LevelMax;
將該層的所有變化的子孫節(jié)點(diǎn)找出來,形成節(jié)點(diǎn)數(shù)組。
For I:=Leve1Max Down to 1 step -1 do
Begin
For J:=1 to節(jié)點(diǎn)數(shù)組中節(jié)點(diǎn)數(shù)Do
Begin
計(jì)算節(jié)點(diǎn)數(shù)組[i]的值;
取節(jié)點(diǎn)數(shù)組[i]的父節(jié)點(diǎn)ID;//可利用節(jié)點(diǎn)的路徑值
If父節(jié)點(diǎn)ID not in父節(jié)點(diǎn)數(shù)組Then
將父節(jié)點(diǎn)ID加入到父節(jié)點(diǎn)數(shù)組;
End;
將上一層變化了的節(jié)點(diǎn)加入父節(jié)點(diǎn)數(shù)組;
將父節(jié)點(diǎn)數(shù)組賦值給節(jié)點(diǎn)數(shù)組;
End;
End;
4 總結(jié)
基于C/S結(jié)構(gòu)的水利工程造價(jià)系統(tǒng),系統(tǒng)的通用性和實(shí)時(shí)數(shù)據(jù)的計(jì)算速度和以往的造價(jià)系統(tǒng)相比有了明顯的提升。從實(shí)際使用效果來看,用戶反應(yīng)界面友好,操作方便,造價(jià)管理方便,用戶滿意度良好。
參考文獻(xiàn):
[1] 水利工程設(shè)計(jì)概(估)算編制規(guī)定[S].(水總[2002]16號(hào)).
[2] Christine Hofmeister.實(shí)用軟件體系結(jié)構(gòu)(英文版)[M].電子工業(yè)出版社,2003.
[3] Michael V Mannino.Database Design,Application Development,and Administration[M].HardCover,2004.
[4] 肖永順、李生海,等.Delphi程序設(shè)計(jì)[M].人民郵電出版社,2000.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文