水利工程论文-渠道水力计算在delphi上的实现.doc_第1页
水利工程论文-渠道水力计算在delphi上的实现.doc_第2页
水利工程论文-渠道水力计算在delphi上的实现.doc_第3页
水利工程论文-渠道水力计算在delphi上的实现.doc_第4页
水利工程论文-渠道水力计算在delphi上的实现.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

水利工程论文-渠道水力计算在delphi上的实现摘要:渠道水力计算一直以来在渠道设计中就是一件烦琐的事情,因为其涉及到大量的试算工作,在水利工程灌溉渠系设计中常令人不胜其烦。为化繁为简,减少设计中的工作量,考虑使用计算机技术实现试算工作的程序化。我局正使用delphi编程技术进行管理信息系统(MIS)的开发建设工作,故决定将其纳入MIS系统建设中,成为本局MIS系统的一部分。Delphi技术是美国Inprise公司开发的基于pascal语言的程序开发软件,其不仅在数据库编程方面有卓越表现,而且在数学计算中也成绩斐然。关键词:水力计算Delphi谢才系数流量模数业务服务器客户端一、水力计算简介将渠道内水流视作明渠均匀流这是渠道水力计算的前提,故计算公式采用明渠均匀流公式。主要任务是解决渠道的过水能力问题,即设计渠道的断面尺寸,以保证通过所需的流量,或校核渠道是否满足输水流量的要求等。总体而言,渠道水力计算的问题主要分两类:1、校核渠道过水能力;2、计算渠道的断面尺寸。校核渠道的过水能力主要指在渠道的断面形式、尺寸、糙率、底坡等都已确定的情况下,计算其过水能力。计算步骤为:先根据水深h,底宽b及边坡系数m计算出过水断面面积、湿周、水力半径R。再根据糙率n及水力半径R计算(或查表)求出谢才系数C。最后用明渠均匀流公式Q=C(Ri)1/2计算出流量。计算渠道的断面尺寸是渠系工程设计中遇到最多的问题。在规划设计新渠道时,设计流量由工程要求而定,坡度一般是由渠道大小根据地形条件确定,边坡系数m及糙率n,则由土质及渠壁材料与施工、管理运用等条件而定。也即已知Q、m、n、i,求渠道的水深h及底宽b。此问题有两个未知数b及h,故须经过试算才能确定。计算步骤为:1、根据已知的流量Q及渠道底坡i,求出流量模数k0(标准流量模数);2、初步假定一水深,计算其相应的过水断面、湿周、水力半径R,并根据糙率n及水力半径R计算或查表求出相应的谢才系数C值。然后,按公式K=CR1/2求出相应的流量模数值(设计流量模数);3、将计算出的设计流量模数与标准流量模数比较,若两者相等,则所设水深即为所求。若不等,则可另设一水深,重复上述步骤,直到计算出的设计流量模数与标准流量模数相等为止。然后经综合考虑各方面因素,如施工便利,防洪超高和其他用途后最终确定渠道断面尺寸。二、delphi技术简介Delphi是由美国Inprise公司(前Borland公司)推出的可视化编程环境,它提供了一种方便、快捷的Windows应用程序开发工具。Delphi使用了MicrosoftWindows图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象程序语言(Object-OrientedLanguage)、当今世界上最快的编辑器、最为领先的数据库技术。Delphi技术的基础源自pascal语言,是对pascal语言编程的可视化、面向对象化发展,从早期的对TurboPascal的Windows化到如今对网络化编程拥有强大功能,Delphi已经升级到了如今的第七个版本,功能更加强大,对网络开发的需求更为适应,对数据库开发的技术更为成熟与稳定。三、程序实现的方法本程序作为我局管理信息系统(MIS)的一部分外挂于我局管理信息系统的主界面上,属于水利常用计算模块。我局管理信息系统采用客户端、业务服务器、数据库管理系统(DBMS)三级结构,客户端和业务服务器采用dephi开发实现,数据库管理系统(DBMS)选择美国Microsoft公司倍受业界好评的sqlserver2000。因此,本程序的数据计算、数据添加和数据删除功能以函数的形式建于业务服务器中,在客户端通过函数调用达到功能的实现。为实现数据的保存与查询,相应地在我局管理信息系统的业务数据库lsdata中建立一个数据库表watercalculationtable。客户端除实现业务服务器相关函数的调用外,还承担程序外观界面设置和部分简单功能的实现。用户只能通过程序客户端实现对软件的操作。1、功能设计本程序设计的主要目的在于实现对渠道水力计算的程序化和智能化,主要功能包括计算、成果显示、数据打印,另外为方便数据输入加入重置功能,为便于数据管理加入删除功能,另外为实现计算界面的退出而加入界面退出功能。2、界面设计为实现计算成果的显示功能在界面上添加一个dxdbgrid控件,作为成果显示的载体。为方便数据的录入和计算成果的单条显示添加十五个coastedit控件,为逐一说明各个coastedit控件代表的数据而增入十五个与之对应的label控件,为程序美观用一个groupbox将所有coastedit控件和label控件归为一组。为了实现计算、删除、重置、打印、退出功能,引入五个button控件其中计算按钮除在单击时触发计算功能外,在计算结束后自动执行数据添加功能,将计算数据添加入数据库中;删除按钮实现对库内单条数据的删除;重置按钮主要对coastedit控件中的数据进行清除,以利于新数据的输入;打印功能作用在于将计算所得的成果通过外接打印机打印出来;退出按钮的功能在于实现界面的退出,返回主界面。程序界面中渠道名称、试算次序数、渠道底宽、渠道水深、渠道比降、边坡系数、渠道糙率、设计流量等数据可以手动输入,其他数据不能在界面上输入,由程序自动计算,并显示。根据渠道水力计算原理,可输入的数据除设计流量外均不允许为空,此外渠道糙率和渠道比降不能为零,出现上述情况,计算时程序将予以提示。为实现程序的打印功能,特增加一打印界面,在点击打印按钮时自动弹出,打印界面可以实现打印、打印预览功能,在此界面可以调用windows打印程序。具体界面设计图样见图1。(图一)3、数据库表设计本程序只有一张库表,即渠道水力计算表(watercalculationtable),经过慎密的数据分析,设计该表共包含十五个字段,分别为:渠道名称、试算次序数、渠道宽度、渠道水深、渠道比降、边坡系数、设计流量、渠道糙率、湿周、标准流量模数、过水断面面积、水力半径、谢才系数、设计断面过水流量、设计流量模数。具体库表设计见表一:渠道水力计算表(watercalculationtable)表一编号中文名字段名数据类型数据长度可否为空备注1渠道名称DitchnameChar20否主键2试算次序数CalculationnoChar8否3渠道底宽DitchwidthNumer8否4渠道水深ditchheightNumer8否5渠道比降DitchslopeNumer8否6边坡系数SlopenumerNumer8否7设计流量PlanvolumeNumer8可8渠道糙率DitchroughNumer8否9湿周XnumerNumer12可10标准流量模数KstandardNumer12可11过水断面面积FlowareaNumer12可12水力半径WaterradiusNumer12可13谢才系数CnumerNumer12可14过水流量DesignvolumeNumer12可15设计流量模数KdesignNumer12可4、内置代码设计内置代码主要是针对程序中相关控件触发的事件而设定的相应响应。本程序包含的事件主要有各button控件引发的单击事件、单击dxdbgrid控件引发的事件(dxdbgridclick)、数据集控件滚动事件(ADODataSet1AfterScroll)和程序界面建立时的事件(formcreat)。另外,业务服务器(teoperationserver)中包含的两个函数addwatercalculation和deletewatercalculation也用程序代码建立。各事件代码分别如下:1)addwatercalculation函数,代码为:functionTTeOperationServer.addwatercalculation(constditchname:WideString;ditchwidth,ditchheight,ditchslope,slopenumer,ditchrough,planvolume:Currency;constcalculationno:WideString):LongWord;varstrSql:string;dwAffected:Integer;kstandard,flowarea,waterradius,cnumer,designvolume,kdesign,xnumer:currency;beginResult:=MakeResult(Sev_Error,Facility_Account,Err_Suc);kstandard:=strtofloat(formatfloat(0.00,(planvolume/sqrt(ditchslope);flowarea:=strtofloat(formatfloat(0.00,(ditchwidth+slopenumer*ditchheight)*ditchheight);xnumer:=strtofloat(formatfloat(0.00,(ditchwidth+2*ditchheight*sqrt(1+sqr(slopenumer);waterradius:=strtofloat(formatfloat(0.000,(flowarea/xnumer);cnumer:=strtofloat(formatfloat(0.00,(1/ditchrough*power(waterradius,1/6);kdesign:=strtofloat(formatfloat(0.00,(flowarea*cnumer*sqrt(waterradius);designvolume:=strtofloat(formatfloat(0.00,(flowarea*cnumer*sqrt(waterradius*ditchslope);strsql:=insertintowatercalculationtable(ditchname,ditchwidth,ditchheight,+ditchslope,slopenumer,planvolume,ditchrough,kstandard,+flowarea,waterradius,cnumer,designvolume,Kdesign,xnumer,calculationno)+values(+ditchname+,+floattostr(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);ifdwAffected=0thenbeginResult:=MakeResult(SEV_Error,Facility_Account,err_Insert);exit;end;end;2)deletewatercalculation函数的代码为:functionTTeOperationServer.deletewatercalculation(constditchname,calculationno:WideString):LongWord;varstrSql:string;dwAffected:Integer;beginResult:=MakeResult(Sev_Error,Facility_Account,Err_Suc);StrSql:=Deletefromwatercalculationtable+whereditchname=+ditchname+andca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论