渠道水力计算在delphi上的实现.docx

上传人:cn****1 文档编号:549398566 上传时间:2023-02-05 格式:DOCX 页数:17 大小:17.36KB
返回 下载 相关 举报
渠道水力计算在delphi上的实现.docx_第1页
第1页 / 共17页
渠道水力计算在delphi上的实现.docx_第2页
第2页 / 共17页
渠道水力计算在delphi上的实现.docx_第3页
第3页 / 共17页
渠道水力计算在delphi上的实现.docx_第4页
第4页 / 共17页
渠道水力计算在delphi上的实现.docx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《渠道水力计算在delphi上的实现.docx》由会员分享,可在线阅读,更多相关《渠道水力计算在delphi上的实现.docx(17页珍藏版)》请在金锄头文库上搜索。

1、渠道水力计算在delphi上的实现摘要渠道水力计算一直以来在渠道设计中就是一件烦琐的事情,因为其涉及到大量的试算工作,在水利工程灌溉渠系设计中常令人不胜其烦。为化繁为简,减少设计中的工作量,考虑使用计算机技术实现试算工作的程序化。我局正使用delphi编程技术进行管理信息系统(MIS)的开发建设工作,故决定将其纳入MIS系统建设中,成为本局MIS系统的一部分。Delphi技术是美国Inprise公司开发的基于pascal语言的程序开发软件,其不仅在数据库编程方面有卓越表现,而且在数学计算中也成绩斐然。关键词水力计算Delphi 谢才系数流量模数业务服务器客户端一、 水力计算简介将渠道内水流视作

2、明渠均匀流这是渠道水力计算的前提,故计算公式采用明渠均匀流公式。主要任务是解决渠道的过水能力问题,即设计渠道的断面尺寸,以保证通过所需的流量,或校核渠道是否满足输水流量的要求等。总体而言,渠道水力计算的问题主要分两类:1、校核渠道过水能力;2、计算渠道的断面尺寸。校核渠道的过水能力主要指在渠道的断面形式、尺寸、糙率、底坡等都已确定的情况下,计算其过水能力。计算步骤为:先根据水深h,底宽b及边坡系数m计算出过水断面面积、湿周、水力半径R。再根据糙率n及水力半径R计算求出谢才系数C。最后用明渠均匀流公式Q=C(Ri)1/2计算出流量。计算渠道的断面尺寸是渠系工程设计中遇到最多的问题。在规划设计新渠

3、道时,设计流量由工程要求而定,坡度一般是由渠道大小根据地形条件确定,边坡系数m及糙率n,则由土质及渠壁材料与施工、管理运用等条件而定。也即已知Q、m、n、i,求渠道的水深h及底宽b。此问题有两个未知数b及h,故须经过试算才能确定。计算步骤为:1、根据已知的流量Q及渠道底坡i,求出流量模数k0;2、初步假定一水深,计算其相应的过水断面、湿周、水力半径R,并根据糙率n及水力半径R计算或查表求出相应的谢才系数C值。然后,按公式K=CR1/2求出相应的流量模数值;3、将计算出的设计流量模数与标准流量模数比较,若两者相等,则所设水深即为所求。若不等,则可另设一水深,重复上述步骤,直到计算出的设计流量模数

4、与标准流量模数相等为止。然后经综合考虑各方面因素,如施工便利,防洪超高和其他用途后最终确定渠道断面尺寸。二、delphi技术简介 Delphi是由美国Inprise公司推出的可视化编程环境,它提供了一种方便、快捷的Windows应用程序开发工具。Delphi使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象程序语言、当今世界上最快的编辑器、最为领先的数据库技术。Delphi技术的基础源自pascal语言,是对pascal语言编程的可视化、面向对象化发展,从早期的对Turbo Pascal的Windows化到如今对网络化编程拥有强大功能

5、,Delphi已经升级到了如今的第七个版本,功能更加强大,对网络开发的需求更为适应,对数据库开发的技术更为成熟与稳定。三、程序实现的方法本程序作为我局管理信息系统(MIS)的一部分外挂于我局管理信息系统的主界面上,属于水利常用计算模块。我局管理信息系统采用客户端、业务服务器、数据库管理系统三级结构,客户端和业务服务器采用dephi开发实现,数据库管理系统选择美国Microsoft 公司倍受业界好评的sql server 2000。因此,本程序的数据计算、数据添加和数据删除功能以函数的形式建于业务服务器中,在客户端通过函数调用达到功能的实现。为实现数据的保存与查询,相应地在我局管理信息系统的业务

6、数据库lsdata中建立一个数据库表watercalculationtable。客户端除实现业务服务器相关函数的调用外,还承担程序外观界面设置和部分简单功能的实现。用户只能通过程序客户端实现对软件的操作。1、功能设计本程序设计的主要目的在于实现对渠道水力计算的程序化和智能化,主要功能包括计算、成果显示、数据打印,另外为方便数据输入加入重置功能,为便于数据管理加入删除功能,另外为实现计算界面的退出而加入界面退出功能。2、界面设计为实现计算成果的显示功能在界面上添加一个dxdbgrid控件,作为成果显示的载体。为方便数据的录入和计算成果的单条显示添加十五个coastedit控件,为逐一说明各个co

7、astedit控件代表的数据而增入十五个与之对应的label控件,为程序美观用一个groupbox将所有coastedit控件和label控件归为一组。为了实现计算、删除、重置、打印、退出功能,引入五个 button控件其中计算按钮除在单击时触发计算功能外,在计算结束后自动执行数据添加功能,将计算数据添加入数据库中;删除按钮实现对库内单条数据的删除;重置按钮主要对coastedit控件中的数据进行清除,以利于新数据的输入;打印功能作用在于将计算所得的成果通过外接打印机打印出来;退出按钮的功能在于实现界面的退出,返回主界面。程序界面中渠道名称、试算次序数、渠道底宽、渠道水深、渠道比降、边坡系数、

8、渠道糙率、设计流量等数据可以手动输入,其他数据不能在界面上输入,由程序自动计算,并显示。根据渠道水力计算原理,可输入的数据除设计流量外均不允许为空,此外渠道糙率和渠道比降不能为零,出现上述情况,计算时程序将予以提示。为实现程序的打印功能,特增加一打印界面,在点击打印按钮时自动弹出,打印界面可以实现打印、打印预览功能,在此界面可以调用windows打印程序。具体界面设计图样见图1。 3、数据库表设计 本程序只有一张库表,即渠道水力计算表,经过慎密的数据分析,设计该表共包含十五个字段,分别为:渠道名称、试算次序数、渠道宽度、渠道水深、渠道比降、边坡系数、设计流量、渠道糙率、湿周、标准流量模数、过水

9、断面面积、水力半径、谢才系数、设计断面过水流量、设计流量模数。具体库表设计见表一渠道水力计算表 表一 编号中文名字段名数据类型数据长度可否为空备注1渠道名称DitchnameChar20否主键2试算次序数CalculationnoChar8否3渠道底宽DitchwidthNumer 8否4渠道水深ditchheightNumer8否5渠道比降DitchslopeNumer8否6边坡系数SlopenumerNumer8否7设计流量PlanvolumeNumer8可8渠道糙率DitchroughNumer 8否9湿周XnumerNumer 12可10标准流量模数KstandardNumer 12

10、可11过水断面面积FlowareaNumer 12 可12水力半径WaterradiusNumer 12 可13谢才系数CnumerNumer 12 可14过水流量DesignvolumeNumer 12 可15设计流量模数KdesignNumer 12 可4、内置代码设计内置代码主要是针对程序中相关控件触发的事件而设定的相应响应。本程序包含的事件主要有各button控件引发的单击事件、单击dxdbgrid控件引发的事件(dxdbgridclick)、数据集控件滚动事件(ADODataSet1AfterScroll)和程序界面建立时的事件(formcreat)。另外,业务服务器(teopera

11、tionserver)中包含的两个函数addwatercalculation和deletewatercalculation也用程序代码建立。各事件代码分别1) addwatercalculation函数,代码为function ( const ditchname: WideString; ditchwidth, ditchheight, ditchslope, slopenumer, ditchrough, planvolume: Currency; const calculationno: WideString): LongWord;var strSql : string; dwAffect

12、ed : Integer; kstandard,flowarea,waterradius,cnumer,designvolume,kdesign,xnumer:currency;begin Result := MakeResult(Sev_Error,Facility_Account,Err_Suc);kstandard:=strtofloat(formatfloat(,(planvolume/sqrt(ditchslope); flowarea:=strtofloat(formatfloat(,(ditchwidth+slopenumer*ditchheight)*ditchheight);

13、 xnumer:=strtofloat(formatfloat(,(ditchwidth+2*ditchheight*sqrt(1+sqr(slopenumer); waterradius:=strtofloat(formatfloat(,(flowarea/xnumer); cnumer:=strtofloat(formatfloat(,(1/ditchrough*power(waterradius,1/6);kdesign:=strtofloat(formatfloat(,(flowarea*cnumer*sqrt(waterradius); designvolume:=strtofloa

14、t(formatfloat(,(flowarea*cnumer*sqrt(waterradius*ditchslope); strsql:=insert into watercalculationtable (ditchname,ditchwidth,ditchheight, + ditchslope,slopenumer,planvolume,ditchrough,kstandard, + flowarea,waterradius,cnumer,designvolume,Kdesign,xnumer,calculationno) + values (+ditchname+, + +float

15、tostr(ditchwidth)+, + +floattostr(ditchheight)+, + +floattostr(ditchslope)+, + +floattostr(slopenumer)+, + +floattostr(planvolume)+, + +floattostr(ditchrough)+, + +floattostr(kstandard)+, + +floattostr(flowarea)+, + +floattostr(waterradius)+, + +floattostr(cnumer)+, + +floattostr(designvolume)+, + +floattostr(kdesign)+, + +floattostr(xnumer)+, + +calculationno+); ExecuteSQL(strSql,dwAffected); if dwAffected = 0 then begin Result := MakeResult(SEV_Error,Facility_Account,err_Insert); exit; end;end;2)deletewatercalculation函数的代码为function (const ditchname, calculationno: WideString): LongWord

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号