渠道水力計算在delphi上的實(shí)現(xiàn)_第1頁
渠道水力計算在delphi上的實(shí)現(xiàn)_第2頁
渠道水力計算在delphi上的實(shí)現(xiàn)_第3頁
渠道水力計算在delphi上的實(shí)現(xiàn)_第4頁
渠道水力計算在delphi上的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、渠道水力計算在delphi上的實(shí)現(xiàn)摘要:渠道水力計算一直以來在渠道設(shè)計中就是一件煩瑣的事情,因?yàn)槠渖婕暗酱罅康脑囁愎ぷ鳎谒こ坦喔惹翟O(shè)計中常令人不勝其煩。為化繁為簡,減少設(shè)計中的工作量,考慮使用計算機(jī)技術(shù)實(shí)現(xiàn)試算工作的程序化。我局正使用delphi編程技術(shù)進(jìn)展管理信息系統(tǒng)(IS)的開發(fā)建立工作,故決定將其納入IS系統(tǒng)建立中,成為本局IS系統(tǒng)的一局部。Delphi技術(shù)是美國Inprise公司開發(fā)的基于pasal語言的程序開發(fā)軟件,其不僅在數(shù)據(jù)庫編程方面有卓越表現(xiàn),而且在數(shù)學(xué)計算中也成績斐然。關(guān)鍵詞:水力計算Delphi謝才系數(shù)流量模數(shù)業(yè)務(wù)效勞器客戶端一、水力計算簡介將渠道內(nèi)水流視作明渠均勻

2、流這是渠道水力計算的前提,故計算公式采用明渠均勻流公式。主要任務(wù)是解決渠道的過水才能問題,即設(shè)計渠道的斷面尺寸,以保證通過所需的流量,或校核渠道是否滿足輸水流量的要求等。總體而言,渠道水力計算的問題主要分兩類:1、校核渠道過水才能;2、計算渠道的斷面尺寸。校核渠道的過水才能主要指在渠道的斷面形式、尺寸、糙率、底坡等都已確定的情況下,計算其過水才能。計算步驟為:先根據(jù)水深h,底寬b及邊坡系數(shù)計算出過水?dāng)嗝婷娣e、濕周、水力半徑R。再根據(jù)糙率n及水力半徑R計算或查表求出謝才系數(shù)。最后用明渠均勻流公式Q=(Ri)1/2計算出流量。計算渠道的斷面尺寸是渠系工程設(shè)計中遇到最多的問題。在規(guī)劃設(shè)計新渠道時,設(shè)

3、計流量由工程要求而定,坡度一般是由渠道大小根據(jù)地形條件確定,邊坡系數(shù)及糙率n,那么由土質(zhì)及渠壁材料與施工、管理運(yùn)用等條件而定。也即Q、n、i,求渠道的水深h及底寬b。此問題有兩個未知數(shù)b及h,故須經(jīng)過試算才能確定。計算步驟為:1、根據(jù)的流量Q及渠道底坡i,求出流量模數(shù)k0標(biāo)準(zhǔn)流量模數(shù);2、初步假定一水深,計算其相應(yīng)的過水?dāng)嗝妗裰堋⑺Π霃絉,并根據(jù)糙率n及水力半徑R計算或查表求出相應(yīng)的謝才系數(shù)值。然后,按公式K=R1/2求出相應(yīng)的流量模數(shù)值設(shè)計流量模數(shù);3、將計算出的設(shè)計流量模數(shù)與標(biāo)準(zhǔn)流量模數(shù)比擬,假設(shè)兩者相等,那么所設(shè)水深即為所求。假設(shè)不等,那么可另設(shè)一水深,重復(fù)上述步驟,直到計算出的設(shè)計

4、流量模數(shù)與標(biāo)準(zhǔn)流量模數(shù)相等為止。然后經(jīng)綜合考慮各方面因素,如施工便利,防洪超高和其他用處后最終確定渠道斷面尺寸。二、delphi技術(shù)簡介Delphi是由美國Inprise公司前Brland公司推出的可視化編程環(huán)境,它提供了一種方便、快捷的inds應(yīng)用程序開發(fā)工具。Delphi使用了irsftinds圖形用戶界面的許多先進(jìn)特性和設(shè)計思想,采用了可重復(fù)利用的完好的面向?qū)ο蟪绦蛘Z言bjet-rientedLanguage、當(dāng)今世界上最快的編輯器、最為領(lǐng)先的數(shù)據(jù)庫技術(shù)。Delphi技術(shù)的根底源自pasal語言,是對pasal語言編程的可視化、面向?qū)ο蠡_展,從早期的對TurbPasal的inds化到如

5、今對網(wǎng)絡(luò)化編程擁有強(qiáng)大功能,Delphi已經(jīng)晉級到了如今的第七個版本,功能更加強(qiáng)大,對網(wǎng)絡(luò)開發(fā)的需求更為適應(yīng),對數(shù)據(jù)庫開發(fā)的技術(shù)更為成熟與穩(wěn)定。三、程序?qū)崿F(xiàn)的方法本程序作為我局管理信息系統(tǒng)(IS)的一局部外掛于我局管理信息系統(tǒng)的主界面上,屬于水利常用計算模塊。我局管理信息系統(tǒng)采用客戶端、業(yè)務(wù)效勞器、數(shù)據(jù)庫管理系統(tǒng)DBS三級構(gòu)造,客戶端和業(yè)務(wù)效勞器采用dephi開發(fā)實(shí)現(xiàn),數(shù)據(jù)庫管理系統(tǒng)DBS選擇美國irsft公司倍受業(yè)界好評的sqlserver2000。因此,本程序的數(shù)據(jù)計算、數(shù)據(jù)添加和數(shù)據(jù)刪除功能以函數(shù)的形式建于業(yè)務(wù)效勞器中,在客戶端通過函數(shù)調(diào)用到達(dá)功能的實(shí)現(xiàn)。為實(shí)現(xiàn)數(shù)據(jù)的保存與查詢,相應(yīng)地在

6、我局管理信息系統(tǒng)的業(yè)務(wù)數(shù)據(jù)庫lsdata中建立一個數(shù)據(jù)庫表ateralulatintable。客戶端除實(shí)現(xiàn)業(yè)務(wù)效勞器相關(guān)函數(shù)的調(diào)用外,還承當(dāng)程序外觀界面設(shè)置和局部簡單功能的實(shí)現(xiàn)。用戶只能通過程序客戶端實(shí)現(xiàn)對軟件的操作。1、功能設(shè)計本程序設(shè)計的主要目的在于實(shí)現(xiàn)對渠道水力計算的程序化和智能化,主要功能包括計算、成果顯示、數(shù)據(jù)打印,另外為方便數(shù)據(jù)輸入?yún)⒓又刂霉δ埽瑸楸阌跀?shù)據(jù)管理參加刪除功能,另外為實(shí)現(xiàn)計算界面的退出而參加界面退出功能。2、界面設(shè)計為實(shí)現(xiàn)計算成果的顯示功能在界面上添加一個dxdbgrid控件,作為成果顯示的載體。為方便數(shù)據(jù)的錄入和計算成果的單條顯示添加十五個astedit控件,為逐一說

7、明各個astedit控件代表的數(shù)據(jù)而增入十五個與之對應(yīng)的label控件,為程序美觀用一個grupbx將所有astedit控件和label控件歸為一組。為了實(shí)現(xiàn)計算、刪除、重置、打英退出功能,引入五個buttn控件其中計算按鈕除在單擊時觸發(fā)計算功能外,在計算完畢后自動執(zhí)行數(shù)據(jù)添加功能,將計算數(shù)據(jù)添參加數(shù)據(jù)庫中;刪除按鈕實(shí)現(xiàn)對庫內(nèi)單條數(shù)據(jù)的刪除;重置按鈕主要對astedit控件中的數(shù)據(jù)進(jìn)展去除,以利于新數(shù)據(jù)的輸入;打印功能作用在于將計算所得的成果通過外接打印機(jī)打印出來;退出按鈕的功能在于實(shí)現(xiàn)界面的退出,返回主界面。程序界面中渠道名稱、試算次序數(shù)、渠道底寬、渠道水深、渠道比降、邊坡系數(shù)、渠道糙率、設(shè)

8、計流量等數(shù)據(jù)可以手動輸入,其他數(shù)據(jù)不能在界面上輸入,由程序自動計算,并顯示。根據(jù)渠道水力計算原理,可輸入的數(shù)據(jù)除設(shè)計流量外均不允許為空,此外渠道糙率和渠道比降不能為零,出現(xiàn)上述情況,計算時程序?qū)⒂枰蕴崾尽閷?shí)現(xiàn)程序的打印功能,特增加一打印界面,在點(diǎn)擊打印按鈕時自動彈出,打印界面可以實(shí)現(xiàn)打英打印預(yù)覽功能,在此界面可以調(diào)用inds打印程序。詳細(xì)界面設(shè)計圖樣見圖1。圖一3、數(shù)據(jù)庫表設(shè)計本程序只有一張庫表,即渠道水力計算表ateralulatintable,經(jīng)過慎密的數(shù)據(jù)分析,設(shè)計該表共包含十五個字段,分別為:渠道名稱、試算次序數(shù)、渠道寬度、渠道水深、渠道比降、邊坡系數(shù)、設(shè)計流量、渠道糙率、濕周、標(biāo)準(zhǔn)

9、流量模數(shù)、過水?dāng)嗝婷娣e、水力半徑、謝才系數(shù)、設(shè)計斷面過水流量、設(shè)計流量模數(shù)。詳細(xì)庫表設(shè)計見表一:渠道水力計算表ateralulatintable表一編號中文名字段名數(shù)據(jù)類型數(shù)據(jù)長度可否為空備注1渠道名稱Dithnaehar20否主鍵2試算次序數(shù)alulatinnhar8否3渠道底寬DithidthNuer8否4渠道水深dithhEightNuer8否5渠道比降DithslpeNuer8否6邊坡系數(shù)SlpenuerNuer8否7設(shè)計流量PlanvlueNuer8可8渠道糙率DithrughNuer8否9濕周XnuerNuer12可10標(biāo)準(zhǔn)流量模數(shù)KstandardNuer12可11過水?dāng)嗝婷娣eF

10、lareaNuer12可12水力半徑aterradiusNuer12可13謝才系數(shù)nuerNuer12可14過水流量DesignvlueNuer12可15設(shè)計流量模數(shù)KdesignNuer12可4、內(nèi)置代碼設(shè)計內(nèi)置代碼主要是針對程序中相關(guān)控件觸發(fā)的事件而設(shè)定的相應(yīng)響應(yīng)。本程序包含的事件主要有各buttn控件引發(fā)的單擊事件、單擊dxdbgrid控件引發(fā)的事件(dxdbgridlik)、數(shù)據(jù)集控件滾動事件(ADDataSet1AfterSrll)和程序界面建立時的事件(frreat)。另外,業(yè)務(wù)效勞器(teperatinserver)中包含的兩個函數(shù)addateralulatin和deleteat

11、eralulatin也用程序代碼建立。各事件代碼分別如下:1addateralulatin函數(shù),代碼為:funtinTTeperatinServer.addateralulatin(nstdithnae:ideString;dithidth,dithheight,dithslpe,slpenuer,dithrugh,planvlue:urreny;nstalulatinn:ideString):Lngrd;varstrSql:string;dAffeted:Integer;kstandard,flarea,aterradius,nuer,designvlue,kdesign,xnuer:urr

12、eny;beginResult:=akeResult(Sev_Errr,Faility_Aunt,Err_Su);kstandard:=strtflat(fratflat(0.00,(planvlue/sqrt(dithslpe);flarea:=strtflat(fratflat(0.00,(dithidth+slpenuer*dithheight)*dithheight);xnuer:=strtflat(fratflat(0.00,(dithidth+2*dithheight*sqrt(1+sqr(slpenuer);aterradius:=strtflat(fratflat(0.000,

13、(flarea/xnuer);nuer:=strtflat(fratflat(0.00,(1/dithrugh*per(aterradius,1/6);kdesign:=strtflat(fratflat(0.00,(flarea*nuer*sqrt(aterradius);designvlue:=strtflat(fratflat(0.00,(flarea*nuer*sqrt(aterradius*dithslpe);strsql:=insertintateralulatintable(dithnae,dithidth,dithheight,+dithslpe,slpenuer,planvl

14、ue,dithrugh,kstandard,+flarea,aterradius,nuer,designvlue,Kdesign,xnuer,alulatinn)+values(+dithnae+,+flattstr(dithidth)+,+flattstr(dithheight)+,+flattstr(dithslpe)+,+flattstr(slpenuer)+,+flattstr(planvlue)+,+flattstr(dithrugh)+,+flattstr(kstandard)+,+flattstr(flarea)+,+flattstr(aterradius)+,+flattstr

15、(nuer)+,+flattstr(designvlue)+,+flattstr(kdesign)+,+flattstr(xnuer)+,+alulatinn+);ExeuteSQL(strSql,dAffeted);ifdAffeted=0thenbeginResult:=akeResult(SEV_Errr,Faility_Aunt,err_Insert);exit;end;end;2deleteateralulatin函數(shù)的代碼為:funtinTTeperatinServer.deleteateralulatin(nstdithnae,alulatinn:ideString):Lngrd

16、;varstrSql:string;dAffeted:Integer;beginResult:=akeResult(Sev_Errr,Faility_Aunt,Err_Su);StrSql:=Deletefrateralulatintable+heredithnae=+dithnae+andalulatinn=+alulatinn+;ExeuteSQL(strSql,dAffeted);ifdAffeted0thenbeginResult:=akeResult(SEV_Errr,Faility_Aunt,err_Delete);exit;end;end;3)計算按鈕(Buttn1lik)的代碼

17、為:predureTFrPrie.Buttn1lik(Sender:Tbjet);varresultde:hresubeginresultde:=-1;ifastedit1.text=thenbeginappliatin.essagebx(對不起,渠道名稱不能為空.,提示,b_k+b_inarning);astedit1.setfus;exit;end;ifastedit2.text=thenbeginappliatin.essagebx(對不起,渠道底寬,不能為空,提示,b_k+b_inarning);astedit2.SetFus;exit;end;ifastedit3.text=then

18、beginappliatin.essagebx(對不起,渠道水深,不能為空,提示,b_k+b_inarning);astedit3.SetFus;exit;end;ifastedit4.text=thenbeginappliatin.essagebx(對不起,邊坡系數(shù),不能為空,提示,b_k+b_inarning);astedit4.SetFus;exit;end;ifastedit5.text=thenbeginappliatin.essagebx(對不起,渠道糙率,不能為空,提示,b_k+b_inarning);astedit5.SetFus;exit;end;ifastedit6.tex

19、t=thenbeginappliatin.essagebx(對不起,渠道比降,不能為空,提示,b_k+b_inarning);astedit6.SetFus;exit;end;ifastedit15.text=thenbeginappliatin.essagebx(對不起,試算次序數(shù),不能為空,提示,b_k+b_inarning);astedit15.SetFus;exit;end;ifastedit2.value=0thenbeginappliatin.essagebx(對不起,渠道底寬,不能為零,提示,b_k+b_inarning);astedit2.SetFus;exit;end;ifa

20、stedit3.value=0thenbeginappliatin.essagebx(對不起,渠道水深,不能為零,提示,b_k+b_inarning);astedit3.SetFus;exit;end;ifastedit6.value=0thenbeginappliatin.essagebx(對不起,渠道比降,不能為零,提示,b_k+b_inarning);astedit6.SetFus;exit;end;ifastedit5.value=0thenbeginappliatin.essagebx(對不起,渠道糙率,不能為零,提示,b_k+b_inarning);astedit5.SetFus;

21、exit;end;tryteperatinserver.begintrans;resultde:=teperatinserver.Addateralulatin(astedit1.text,astedit2.value,astedit3.value,astedit6.value,astedit4.value,astedit5.value,astedit7.value,astedit15.text);finallyifHResultde(Resultde)=0thenbeginteperatinserver.it;Refresh;astedit1.text:=;astedit2.text:=;a

22、stedit3.text:=;astedit4.text:=;astedit5.text:=;astedit6.text:=;astedit7.text:=;astedit8.text:=;astedit9.text:=;astedit10.text:=;astedit11.text:=;astedit12.text:=;astedit13.text:=;astedit14.text:=;astedit15.text:=;astedit1.setfus;endelsebeginteperatinserver.rllbak;appliatin.essageBx(添加失敗,提示,b_k+b_ina

23、rning);astedit1.SetFus;end;end;end;4打印按鈕(Buttn2lik)的代碼為:predureTFrPrie.Buttn2lik(Sender:Tbjet);varsvdata:string;Iheader:integer;Iheaderbjet:integer;strsql:string;Rerdset10:_Rerdset;beginSvDatafile:=GetParentDir(ExtratFilePath(ParaStr(0)+dataateralulatin.txt;ppReprt1.lseDataPipelines;ifHFile0thenFIle

24、Lse(HFile);ifFileExists(svdatafile)thenDeletefile(svdatafile);hFile:=Filereate(svDatafile);strSQL:=selet*frlsdata.db.ateralulatintable;svdata:=teperatinServer.ResultStrrder(strSQL);Filerite(hFile,Pinter(SvData),Length(SvData);Filelse(HFile);ppTextPipeline1.FileNae:=SvDataFile;ppReprt1.DataPipeline:=

25、pptextPipeLine1;/處理表尾ifppReprt1.bjetByNae(iHeader,iHeaderbjet,ppLabel8)thenTPpLabel(PpReprt1.Bandsiheader.bjetsiHeaderbjet).aptin:=Fainfraebjet.peratrnae;ithTfrReprtPrevie1.reate(self)dtryppVieer1.Reprt:=ppReprt1;ppVieer1.FirstPage;sh;exeptfree;end;ppReprt1.lseDataPipelines;filelse(hfile);end;5)重置按鈕

26、(Buttn5lik)的代碼為:predureTFrPrie.Buttn5lik(Sender:Tbjet);beginastedit1.text:=;astedit2.text:=;astedit3.text:=;astedit4.text:=;astedit5.text:=;astedit6.text:=;astedit7.text:=;astedit8.text:=;astedit9.text:=;astedit10.text:=;astedit11.text:=;astedit12.text:=;astedit13.text:=;astedit14.text:=;astedit15.t

27、ext:=;end;end.6)刪除按鈕(Buttn4lik)的代碼為:predureTFrPrie.Buttn4lik(Sender:Tbjet);varresultde:Hresubeginresultde:=-1;ifappliatin.essageBx(您確實(shí)要刪除嗎?,刪除確認(rèn),B_YesN+B_INARNING+B_DefButtn2+B_Systedal)=IdNthenexit;tryteperatinServer.BeginTrans;resultde:=teperatinServer.deleteateralulatin(astedit1.text,astedit15.te

28、xt);finallyifHResultde(Resultde)=0thenbeginappliatin.essageBx(刪除成功,提示,B_K+B_INARNING);teperatinServer.it;Refresh;astedit1.text:=;astedit2.text:=;astedit3.text:=;astedit4.text:=;astedit5.text:=;astedit6.text:=;astedit7.text:=;astedit8.text:=;astedit9.text:=;astedit10.text:=;astedit11.text:=;astedit12

29、.text:=;astedit13.text:=;astedit14.text:=;astedit15.text:=;endelsebeginappliatin.essageBx(刪除失敗,提示,B_K+B_INARNING);teperatinServer.RllBak;end;end;end;7)退出按鈕(Buttn4lik)的代碼為:predureTFrPrie.Buttn3lik(Sender:Tbjet);beginlse;end;8)程序界面創(chuàng)立事件(frreat)的代碼為:predureTFrPrie.Frreate(Sender:Tbjet);varstrsql:string;

30、destring1:string;beginteperatinServer:=getserver(teperatinServer);Refresh;astedit1.text:=;astedit2.text:=;astedit3.text:=;astedit4.text:=;astedit5.text:=;astedit6.text:=;astedit7.text:=;astedit8.text:=;astedit9.text:=;astedit10.text:=;astedit11.text:=;astedit12.text:=;astedit13.text:=;astedit14.text:=;astedit15.text:=;end;9)單擊dxdbgrid事件和數(shù)據(jù)集控件滾動事件的代碼(兩事件代碼根本一樣):beginif(addataset1.rerdsetnil)and(addataset1.rerdunt0)thenbeginastEdit1.text:=AdDataset1.Fields0.Value;astEdit2.value:=AdDataset1.Fields1.Value;astEdit3.value:=AdDataset1.Fields2.Value;astEdit4.value:=AdDataset1.Fields3.Value;a

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論