• 15.68 MB
  • 2022-04-22 11:50:31 发布

基于cad二次开发技术晋城市供水管网管理系统地研究

  • 81页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'太原理工大学硕士研究生学位论文基于CAD二次开发技术的晋城市供水管网管理系统的研究摘要本文阐述了AutoCAD二次开发的模式、原理、方法,研究了软件加密基本模式与方法、USBKEY加密原理和方法等系统开发理论基础;根据管网管理部门对系统的实际需求,结合供水管网信息管理的特点,设计了基于AutoCAD二次开发技术的供水管网管理信息系统的体系结构和功能;分析了供水管网的信息结构、信息流动情况、信息间的互相制约关系,建立了管网管理数据库E-R模型,并针对管网管理部门的对管网信息实际要求,科学设计了供水管网管理信息数据库和存储过程。本文在上述设计的基础上,采用集成式二次开发模式,以AutoCAD2010和VisualStudio2008.NET为系统开发平台,以C#为开发语言,以SQLSERVER2008为管理数据库,运用AutoCAD组件技术和AutoCADDotNETAPI开发技术实现了晋城市供水管网管理信息系统。系统由三个部分构成,即安全管理、图形管理和属性管理。其中,安全管理主要包括注册认证、权限管理、实时保护、数据备份与恢复等;图形管理主要包括软件初始化、管网管理、图像漫游、实体查询、自动成图等;属性管理主要包括属性信息编辑与更新、属性菜单定制、多条件查询统计和信息导出等。系统采用软、硬相结合的加密方式和一次一密的强双因子认证模式,结合了现代密码学技术、智能卡技术和USB技术,研发了USBKEY,提高系统安全性。 太原理工大学硕士研究生学位论文本文把基于AutoCAD的二次开发技术应用到晋城市供水管网系统中,为晋城市供水管网提供了新的管理方式。该系统在应用过程中,表现出了很强实用性。关键字:AutoCAD,二次开发,人机交互..供水管网,USBKEYII 太原理工大学硕士研究生学位论文THESTUDY0NPIPELINEMANAGEMENTSYSTEMOFTHEJINCHENGCITYBASED0NSECoNDARYDEVELOPMENTOFCADTECHNOLOGYABSTRACTThispaperelaboratesthemodeofsecondarydevelopmentofAutoCAD,theprinciples,methods,softwareencryptionmodelsandmethods,USBKEYencryptionprinciplesandmethodsoftheoreticalfoundationandothertheoreticalbasisofsystemdevelopment;Accordingtotheactualneedsofthenetworkmanagementdepartmentofthesystem,combinedwiththecharacteristicsofthewatersuppliednetworkinformationmanagement,designedthearchitectureandfunctionalityofwatersuppliedpipenetworkmanagementinformationsystembasedonthesecondarydevelopmenttechnologyofAutoCAD;Analyzedtheinformationstructureofthewatersuppliednetwork,theflowofinformation,mutualconsVaintrelationshipbetweentheinformation;establishedthenetworkmanagementdatabaseE—Rmodel,forinthepracticalrequirementsfornetworkmanagementdepartmentsofthepipenetworkinformation,designedthepipelinemanagementinformationdatabaseandstoredproceduresscientific.Onthebasisoftheabovedesign,adoptedtheintegrationofsecondarydevelopment,AutoCAD2010andVisualStudio,2008.NETbasicplatformforIII ————一太原理工大学硕士研究生学位论文——————————————————————————————二——二二==.二■=二=二=-_一——一systemdevelopment,C挣forthedevelopmentoflanguage,SQLSERVER2008forManagementdatabase,throughtheuseofAutoCADcomponenttechnologyandAutoCADDotNETAPItechnology,acheiveIdthewatersuppliednetworkmanagementinformationsystemofJinchengCity.Thesystemconsistsofthreepans,safetymanagement,graphicsmanagemen。tandpropertymanagement.Amongofthese,safetymanagementincludedregistration,authentication,rightsmanagement,real-timeprotection,databackupandrecoveryandSOon;graphicalmanagementcontainsmainlysoftwareinitialization,ne觚orkmanagement,imageroamingentityqueries,aut·omaticmappingandSOon;propenvmanagementincludededitingandupdatingofattributeinformation,attributemenucustomization,multi—criteriaquerystatisticsandinfonnationexportandSOon.Thesystemadoptstheencryptionbasedonsoftwareandhardware,meanwhile,usesthestrongtwo—factorauthenticationmodeunitedone—timepassword.Insystemdevelopment,modemcryptographytechnology,intelligentcardtechnologyandUSBtechnologyareusedtodevelopUSBKEYandimprovethesafetyofsystemgreatly.ThesecondarydevelopmentofAutoCADisappliedinthewaterpipelinesnetworksystemofJinchengcity.ItprovidesanewmethodformanagementofJinchengcity.Thissystemrunswellandhasverystrongpracticability.IV 太原理工大学硕士研究生学位论文KEYWORDS:AutoCAD,secondarydevelopment,Human—computerInteraction,watersupplynetwork,USBKEYV 太原理工大学硕士研究生学位论文1.1研发背景第一章绪论我国是水资源短缺的国家,特别是北方地区水资源缺乏的形势日趋严峻,据统计中国的城市供水漏损水量却高达每年60亿立方米。随着工业的迅速发展和城市人口的不断增加,水资源紧缺现象比较严重。对于城市供水来说,承受的压力很大。管网管理信息化和现代化成为供水管网管理部门越来越迫切的需要。对于建设城市生命线工程,完善供水管网管理方法和完善相应的管理信息系统具有重要的意义。在城市供水管网系统中运用信息技术,使得内部管理得到了加强,有效解决了供水系统中管道老化腐蚀导致的水质污染、供水设施年限过长或者维护不善导致故障导致的“跑、冒、滴、漏"等水资源浪费、管道承压能力跟不上用水需求导致的爆管等水资源流失和供水调配不合理导致局部企业和居民用水短缺等现象,从而降低了管网损失,提高了水资源利用率和供水服务水平,提升了供水部门的经济和社会效益。供水管网管理信息系统从开发技术可分为三类,即传统管理信息系统(MIS)、地理信息系统(GIS)和计算机辅助设计(CAD)。MIS是传统的信息管理方式,它用于管理并处理供水管理中的海量数据并用于系统决策,但无法支持图形可视化,不能实现图形和属性的综合管理,不能满足用户的需要。GIS在管网监测、动态模拟、事故预警和空间分析等功能方面别具优势n1,但是资金投入量大。AutoCAD体系结构开放,为用户创造的二次开发条件便利,所提供的开发工具与接口种类很多,允许开发者自由定制各种功能心3,并且能够满足供水系统基础数据管理、统计和分析等需要,管理人员具有熟悉CAD应用技术,对基于CAD二次开发软件的接受度高。据此本项目研发选用AutoCADZ次开发技术。1.2CAD二次开发技术进展1.2.1CAD二次开发技术发展Autodesk公司于1982年11月推出了第一版AutoCAD,即AutoCADVI.0。经过多年,计算机技术不断发展,外围设备迅速更新,AutoCAD形成为-fl技术口1。目前被广泛使 太原理工大学硕士研究生学位论文用的是AutoCAD2007或AutoCAD2008,最新版本是AutoCAD2012。AutoCAD软件不断更新和完善本身的功能,其二次开发接口及工具也在不断地升级和发展。AutoCAD二二次开发包括文件二次开发和系统二次开发心1,文件开发可实现的开发内容和文件类型如下表:表I-I文件开发内容Tab.1—1Thecontentoffiledevelopment文件类型开发类型ACAD.PGPAutoCAD命令的用户化(定义外部命令和命令别名等)ACAD.UN,木.LIN修改标准线型,建立用户自定义线型及线型库ACAD.PAT,木.n气T修改标准填充图案,建立用户自定义图案及图案库宰.SCR建立用户的命令脚本文件,自动执行一系列AutoCAD命令木.SLD.木.SLB建立用户的幻灯片及幻灯片库ACAD.SHP,章.SHP建立用户的自定义符号库和自定义字体文件开发用户的自定义菜单(包括下拉菜单、工具栏菜单、图像菜单、屏木.^/n汛7,幸.MNS幕菜单、定点设备菜单永1数字化仪菜单等)实现AutoCAD与其他CAD系统之间数据交换的中间文件,也是丰.DXFAutoCAD与其他用户应用程序之间图形数据的中间文件木.DCL建立用户的自定义对话框AutoCAD系统二次开发始于1986年,当时的版本是R2.18,二次开发工具为AutoLISP。之后,又相继出现了ADS、DSL、ADSRX、ObjectAR.X、ActiveXAutomation、VBA、VisualLisp和.NET等二次开发工具,其演进过程见表1-2。表1-2CAD二次开发语言演进表Tab.1-2TheevolutiontableofCADsecondarydevelopmentlanguage年份198619891990199319951996199719982006于1二发AutOActiveXⅥsualADSDSLADSRXObjectARXVBA.NET语言LISPAutomationLisp其中AutoLISP语言规则简单、易于交互,但是功能单一,综合处理能力差、程序运行速度慢、源程序保密性差陌1,已经不再使用;较之AutoLISP,ADS编译执行速度快、大规模处理能力和程序源代码的可读性较强。但是C语言难于掌握,程序的隐藏错误常导致AutoCAD甚至至操作系统的崩溃,源代码很长,需要编译才能运行,现在AutoCAD不再支持这种开发工具。目前开发者常用的是0bjectARX、VisualLisp、VBA和.NET。2 太原理工大学硕士研究生学位论文ObjectARX本身是基于AutoCAD平台的二次开发,本质上是基于AutoCAD的DLL且共享AutoCAD的地址空间。在使用过程中,CAD版本不同,所用的开发包与开发环境也不同。2000版到2002版使用的是VC++6.0;2004版到2006版使用VS.NET2002;2007版到2009版使用VS.NET2005:CAD2010以后的版本可以使用VS.NET2008。其中的字符串自CAD2007版开始就采用UNICODE编码了。ObjectARX支持多文档的开发、应用,能和AutoCAD系统相互通信,可以访问、编辑和扩展CAD的图形数据库,能够使用MFC创建用户接口,可以创建自定义实体和自定义类型,能够开发出各种类型的复杂应用,还可以与其他开发环境进行自由地交互与协作阳3。VBA结合了ActiveX自动化对象模型,成为新型CAD定制的模式构架代表。凭借VB语言应用的广泛性和自动化对象模型功能强大的特点,跻身为CAD开发常用工具之一。当开发者需要访问AutoCAD技术框架时,VBA则为一种新的选择口1。VisualLISP是由AutoCAD软件自带的可视化、集成型二次开发环境。它采用了递归的控制结构,程序的设计比较简单。而且它不像早期的AutoLISP,程序非要先用编辑}工具进行文本编辑,才能在CAD中加载,然后反复调试。VisualLISP相对前者,开发的便利性大大提升。从CAD2000开始,出现了VisualLISP这种集成的开发环境。作为良好的二次开发工具,它完整地提供了IDE,也就是集成开发环境。用户可以快捷调用CAD命令,高效调试程序,方便修改源码陋1。从AutoCAD2006开始,AutoCAD增加了.NETAPI,它提供了一系列托管的外包类(ManagedWrapperClass),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NET、C#和ManagedC++等对AutoCAU进行二次开发。随着版本的更新,在AutoCAD2010中,NETAPI已经拥有与C++相匹配的强大功能,由于开发接口是完全面向对象的,又具有方便易用的特点,所以NETAPI是目前较理想的AutoCAD开发工具,也是今后的发展方向。将ObjectARX、VisualLisp、VBA矛n.NET的程序执行机制、开发特点和系统特点作以比较,如下表l一3: 太原理工大学硕士研究生学位论文袁1-3CAD常用二次开发工具的比较Tab.1-3ThecomparisonofCADseconddevelopingtoolsincommonUSe二次开发技术二次开发语言程序执行机制开发特点系统特点VisualLispVisualLisp解译/编译开发周期短交互性ObjectARX编译适合大型软件开发智能型VBAVisualBasic解译适合中小程序开发易用性.NETC撑&VB.NET编译适合大中程序开发易用智能1.2。2国内外管网管理CAD开发技术研究现状目前,在国内外管网管理中,AutoCAD是最普遍的应用平台,大部分设计软件都是基于该平台完成的二次开发。美国环境保护总署下设的国家风险管理研究所主要针对压管网进行水质分析和水力计算而开发的EPANET软件19】。哈尔滨工业大学给排水系统研究室开发的WNW4.0软件,主要用于给水管网信息管理和分析研究【101。总参工程兵第四设计研究院开发的WAT-V2.0软件,主要用于建筑给排水设计中计算和绘图。中国建筑科学研究院下属电子计算中心研发的ABD—WV2.0软件,是一个加入三维效果的给排水信息系统Itl】。另外,国内外一些软件公司还使用CAD--次开发技术开发了一些管网管理软件,影响力较大的有美[]的WaterCADll21、加拿大的GPS.X和simwbrks[13】,还有国内的Inter-GPV、HY-SZGXV9.0、HY-NctDesign2004、天正给排水软件和理正给排水软件。这些软件开发侧重点不同,适用范围各异。这些研究提高了CAD二次开发技术在管网管理中的应用,为管理工作提供现代化的技术手段。从国内外的研究与应用水平的角度看,CAD二次开发技术在管网管理系统中的应用程度将会继续加深。1.3晋城市供水管网管理现状晋城市位于山西省东南部,是山西通往中原的重要门户n制。随着供水管网的飞速扩展,管网的信息量正在越来越庞大,晋城市供水管网管理部门也积累了越来越多供水管网设计、施工、竣工的图件和表册资料。该市对这些资料的管理方式,从完全由人工保管进步到以人工方式为主计算机参与的程度,但是还停留在传统管理阶段。这种落后的4 太原理工大学硕士研究生学位论文管进步到以人工方式为主计算机参与的程度,但是还停留在传统管理阶段。这种落后的管理方式为晋城市供水管网的规划、建设和管理工作带来了带来很大的困难。主要包括以下几个方面n引:(1)资料不全,信息精度低。多方面原因造成了晋城市现有的供水管网资料短缺不全。已有的资料大多为CAD图的打印件,要么不符合现状,要么精度不高。图表表示杂乱无章、图件制作不合标准,不同的施工单位作图坐标选取不统一且信息精确度参差不齐,扫描成电子图件后很难实现图像拼接与信息整理。(2)地图与数据更新速度慢。晋城市管网覆盖范围不断扩展,供水管线连接日趋复杂,管线的广度、长度不断增加,管线、管材信息量逐渐增大。完成改建和维护工作之后,管线走向、管道位置、管材型号等相关管线管件信息都会改变。这就要求在供水管网管理中,迅速及时地更新数据以保证数据现势性。而目前的管理方式很难达到这一要求。(3)信息查询不方便。目前,属性数据和图形数据分开管理,不能相联。管道与j管材信息等难以在图纸上反映出来。查询图形上莱条管线的属性数据,仅靠管理人员的判断。这种管理方式,使得图形信息和属性信息的一一对应很难进行,而且不能自动识别、智能提取和合理利用图形本身的丰富信息.在图纸上进行难以进行信息查询或电子地图的各种操作,如放大缩小、数据量算等。(4)数据统计分析困难。信息化、自动化程度很低的人工管理模式管理效率十分低下。供水管线缺乏科学管理,不能直观清楚表达出管网的综合状况。管网数据呈带状分布,数据量很大,也基本无法进行有效的统计工作,不能满足规划、管理和施工的需求。在规划过程中,管线设置不合理,给水管径、管位的设计不科学;在工程施工中,如果缺乏有效的分析和精确的设计,很容易损毁或破坏埋设在地下供水管网,造成停水事故。水是经济发展的支撑,也是人民生活的保障。落后的管理必将导致供水行业工作效率的低下和水资源的大量损失,以上各种问题亟待解决。晋城市必须加快管网管理信息化进程,只有实现供水管网现代化管理才能满足规划决策部门、运行管理部门和施工建设单位的迫切需要。使用AutoCAD的二次开发技术来建立专业的数字化管理系统能够有效地解决这些问题,为晋城市供水管网的管理提供新的方式,实现该市供水行业的规范化、自动化、现代化和信息化。 太原理工大学硕士研究生学位论文1.4系统开发的技术路线为了切实解决目前供水管网管理存在的问题,根据管网管理部门的实际需求,结合管网管理特点,本项目主要采用,NETAutoCAD二次开发技术进行开发。路线如下:(1)分析AutoCAD二次开发技术的研究进展和国内外研究现状;(2)研究AutoCAD二次开发和加密的基础理论,讨论CAD二次开发的模式、技术和方法,系统安全性开发技术与方法;(3)分析供水管网管理特点和实际需求,设计晋城市供水管网管理信息系统的总体功能和数据库模型:(4)进行晋城市供水管网管理信息系统及数据库的详细设计;(5)依据设计进行系统开发、测试与试运行;(6)修正系统后正式发布,交给用户正式使用。 太原理工大学硕士研究生学位论文第二章基于CAD二次开发技术的供水管网管理信息系统研发模式与方法2.1CAD----次开发模式与方法在AutoCAD的二次开发环境中,基于编程接口定制软件环境或开发新功能,这一过程就是CAD软件的二次开发。二次开发使软件功能更加完善,能提高系统性能。它将设计效率和质量提高,使自身技术需求能够得到满足,从而将AutoCAD的软件价值充分挖掘并发挥出来。也就是说,基于AutoCAD的二次开发在本质上是一个软件创新的过程【16】。在CAD技术应用过程中,应用水平越来越高,应用领域也越来越大。作为一种通用型软件,AutoCAD的功能不可能完全针对每个客户来设计。各种行业都有自己的特点,作为在不同行业中从事不同工作的用户,具体要求各不相同。CAD系统功能与用户具体需求之间存在矛盾,这种矛盾随着应用的扩展与深入不断增加不断升级。为了解决这种“众口难调”的矛盾,CAD允许用户自己“开小灶”。针对工程设计与管理工作中具体的特点和实际的需求,对通用化、商品化的AutoCAD进行二次开发,即实现其本地化和专属化。从而满足管理所需的功能,达到设计理想的结果[171。2.1.1CAD二次开发模式根据二次开发技术的不同,CAD二次开发模式可分为两种:内嵌机制和外部开发机制n8f。内嵌机制是把语法解释器集成在宿主程序(即通用的CAD软件)中,直接在程序中调用脚本程序段,执行后即可在宿主程序中得到结果。属于这种形式的二次开发有:AutoCAD中的AutoLisp、AreView中的脚本和Pro/E中的Pro/Program脚本。由外部集成开发环境调用宿主程序暴露出来的函数接口,来实现某种功能的开发机制便称外部开发机制。比如说为了实现用户定制功能,VB、Delphi、VC++等语言调用了AutoCAD的接口程序,那么这一开发过程正是采用了外部开发机制。内嵌机制有很强的针对性,主要用于扩充宿主程序功能。宿主程序与开发程序能够很好的融合在一起,学习和使用起来都相对容易。但是,它必须固定在宿主程序上,只能与宿主程序一起运行。因此,灵活性很差,功能受到这种机制本身的限制。7 太原理工大学硕士研究生学位论文图2-1内嵌机制的体系结构Fig.2—1Thearchitectureofinherent:mechanism相对于内嵌机制来说,外部开发机制非常强大。从开发能力上讲,对于宿主程序所能够提供的功能,外部开发机制几乎可以全部实现。从独立性来讲,外部开发机制不必过于依赖宿主程序,宿主程序的运行也完全不受程序执行的影响。外部开发机制的强独立性还表现在新应用程序的生成能力和界面与功能的自主程度上。此外,该开发机制所调用的宿主程序的插件还可以是开发成果。如此一来,宿主程序就增加了功能模块。采用外部机制的二次开发实际上就是软件的创新。因此,这种开发机制不仅要求开发人员的开发能力,还要求开发人员非常熟悉宿主程序。图2—2外部开发机制的体系结构Fig.2—2Thearchitectureofexternalexploitationmechanism2.1。2CAD二次开发的方法CAD二次开发的方法大致分为四种,即基于面向对象技术的方法、基于组件技术的方法、基于ActiveX技术的方法和基于动态链接库技术的方法。(1)基于面向对象技术的二次开发方法“面向对象”的核心思想是:视一切实体为对象。具体来说,无论在分析客观需求过程中,还是软件功能设计过程中,乃至构造程序的过程中,都要把对象当做中心。解决问题时,只有将问题域观察和分析的焦点集中在现实存在的客体之上的方法才是面向对象方法。一个事物既具备属性,又发生行为。在解空间中,事物由对象来描述。对事物属性的描述,被称为数据;对其行为的体现即为“数据的操作”;客体问的关系被描述成对象间的关系;客体间的相互驱动和流动被描述成为对象间的通信。使用对象描述客体,就是将问题域映射向解空间,也是计算机系统模拟客观世界。最终根据数据格式和操作功能,所有的对象都要被抽象成某个类。面向对象程序设计也就是面向对象分析并进行程序设计,它关注的是待处理数据,强调的是问题域中的事物,对事物的描述很 太原理工大学硕士研究生学位论文直观,系统描述的中心也是数据。对于这种设计方式而言,编程开发是~个操作与集合数据的过程,要解决的关键问题就是代码重用问题。这种方式对事物特性与联系的表示效率高,因此合适用于大型系统、复杂系统的设计。在CAD二次开发中,面向对象方法的应用表现在两个方面:一是开发工具的使用,二是设计对象的分类。AutoCAD提供的二次开发接口是面向对象的,所选用的编程语言也是面向对象的。某一特定对象的某一特定行为是由某一特定函数来执行的,库中的各.个函数具有各自的功能。要进行系统设计时,以对象作为基本概念,按照“了解”——“分析”——“归纳”——“分类”——“建图”这种步骤来进行。第一步,对总体设计对象作以了解;第二步,对不同对象进行分析;第三步,对对象的属性的公共部分作出归纳;第四步,按设计对象的不同特征进行分类;最后,建立起相应的语义描述完整的关系图,层次结构由对象构成,结构最高层为公共属性,最底层为特殊属性。最终完成了,面向对象系统的分析和CAD系统模型的设计。(2)基于组件技术的二次开发方法简单说,组件就是对象,它是对属性和方法的简单封装。属性可以访问组件数据,方法是可见而简单的组件功能。实际上,COM组件是以二进制形式发布的可执行程序,它是遵循COM规范编写的,而且封装了内部细节,可以动态的插入应用服务于其他组件、操作系统或应用程序。只要调用接口中的函数,就能享受到COM对象所提供的服务。。组件技术是为了保证程序间的互操作而规定的技术标准,主要在Windows操作系统中应用。它将一些细节用某种编程手段封装起来,使各种业务的逻辑规则能够实现。在处理用户内部操作细节的同时,将事物机制和安全机制体现出来。在封装的过程中,可以用任何支持组件编写的工具来完成,编程工具没有什么实际的意义,仅充当了工具。而最终完成的组件是与语言本身已经没有了任何的关系,甚至可以实现跨平台。对我们而言,它就是一种有输入输出接口的的黑匣子,能够实现功能却不暴露实现过程。组件技术采用的是一种“先分解,再组合”的思路。类似于积木的玩法,首先将包装完好的积木拆成一块块的“木头单元”,然后依自己的需要选用“砖块”或者“窗户”搭建成设计的房子。组件技术和积木~样,包装好的积木是单个大型系统,其中包含的木块是各种基础服务功能;木块是软件组件或者独立的功能单元;木块的组合搭建就是组件问的连接和组件与用户间的服务连接。搭建过程中遵循统一、严格的组件连接标准,这种连接与平台无关。组件技术解决了程序与程序问的交互难题,使软件的可复用度大 太原理工大学硕士研究生学位论文大提高,还实现了软件跨平台应用。在遵循技术规范的前提下,可以不受语言限制和身份限制自由地使用复用性软件组件。使用组件技术可以提高代码的兼容性,不受相关版本独立更新的影响。一旦采用组件技术来开发软件,就远离了“一切从头开始”的编码模式。直接以组件为主来开发,不用按部就班来建立全新的应用。为了确定软件系统的体系结构,首先要分析并描述在应用领域内要开发系统所面临的共同问题;接下来,根据系统的特殊需求,开发专用组件或特殊化组件;之后,将专用组件和重用组件按系统框架的样式组装起来,完成系统开发。使用组件技术可以实现某些单纯的编程手段不能完成的功能。组件对象不是普通的可执行文件,更不是将各种规则定死在其内部。如果少量得进行接口更动,它依然可以很平滑地扩展和升级。它具有下列主要特征。①COM定义了组件对象连接的二进制结构~一接口,保证了不同语言开发的组件对象的互操作性,同时借助接口不可改变的规定和编译、运行时的强制类型检查,避免了版本冲突等问题。另外,CoM对象的多态性也通过COM接口得以实现。②COM定义并实现了基接口IUnknown,利用引用计算机机制有效地管理对象的生命周期,并通过成员函数QueryInterface确定对象所支持的接口,从而避免了版本冲突,使软件升级更加方便。③COM是一种客户/N务器(client/serveT,c/s)模式,它具有进程透明性。COM通过本地过程调用(LPC)和远程过程调用(RPC)实现不同进程之间的通信,不管是进程内组件还是进程外组件,客户程序并不需要了解组件所处的位置,客户所见的只是组件所实现的接口,而接口作为客户与服务器之间的协议是不变的。(43COM具有可扩展的体系结构,可以将程序中的所用组件替换或为组件增加新的接口,以随时进行系统的升级与定制。⑤COM具有很高的可复用性,可以利用已有的组件快速地建立新的应用,可以在多个应用程序中重复利用同一个组件,也可以复用应用程序的结构。组件化程序设计是从系统角度出发的。但在具体的组件设计时,即局部设计时,还是需要运用结构化和面向对象程序设计方法作为软件设计的基础n引。.j女—●kCoM组件I客户程序容器n由r-!々.图2-3COM的工作原理Fig.2—3WorkingprincipleofCOM10 太原理工大学硕士研究生学位论文(3)基于ActiveX技术的二次开发方法ActiveX是由微软公司提出的,是OLE技术的发展。它本质上是一组技术集,包括应用于Internet的技术,对象链接和嵌入技术。这些技术的基础都是COM,它们将会往多媒体方向发展。在网络环境中,它们能够控制进程问的通信和软件部件的交互。ActiveX这一组件系统是面向对象的。它不但包括组件软件的分布式软件的相互作用、用户的永久存储和应用程序脚本的交互,还包括OLE的自动化、属性页、自定义控制、数据的统一传送、复合文档各个方面。可以使用ActiveX对象所提供的各种不同功能。在二进制级上,由不同供应商所提供的软件组件可以使用ActiveX对象实现通信和连接。ActiveX对象实现组件间相互作用以及系统与组件间的交互,都是通过接口完成的。作为一种标准,在单机或网络环境中ActiveX可以被用来实现不同软件构件的相互操作。其中,软件构件可以由多种不同的语言来开发。ActiveX是针对Internet相关开发的应用技术,所采用的连接模式是c/s。它应用的范围很广,包括客户端和Web服务器的方方面面。此外,也可以使用它进行普通桌面应用程序的创建。ActiveX控件的存在形式通常为DLL或OCX,它是ActiveX技术的核心。在所有COM组件的使用中,ActiveX控件得到最广的应用。它将应用程序模块化,也就是将提供给用户的操作和数据封装起来。因此,用户接触到的只有对象。用户使用对象的消息传递机制、方法和属性就能实现应用程序的扩充或其他操作。至于程序内部如何实现这一具体过程与用户无关。使用该控件,便可减少重复开发,共享代码,保证开发成果与合法性操作。图2-4Activex的工作原理Fig.2-4WorkingprincipleofActiveX(4)基于动态链接库技术的二次开发方法动态链接库(DLL)是包含了数据和代码的库,是函数与过程的集合体,其中有很多公共代码或资源可供多个程序使用。就像在生活中,我们将有使用价值但一时间不用着的物品存放在储藏室里,需要时将物品取出即可使用。在程序开发中,也有“储藏室”和“物品”,只不过“储藏室"DLL的存储能力更强,其中存储的内容是抽象的类、函数 太原理工大学硕士研究生学位论文和变量,而且使用方式很有特点。在实际使用过程中,应用程序使用DLL函数来实现功能,是在运行或加载时进行链接,不会将库中功能代码直接插入应用程序的代码中去。在Windows环境下,它不仅能提供代码共享方法还能实现程序间通信。实际上,它本身是一种磁盘文件,允许其它DLL和多个程序同时调用,一旦运行即被加载。软件功能的发布有两种形式:单个可执行程序方式和库方式。为了方便其他应用程序的使用,将可分的可执行程序的各部分放进功能库中。DLL不仅含有各种资源、服务函数、数据还有可执行代码,库函数使用范围很大。DLL的执行依靠EXE的调用,它本身不具备主动启动执行的能力。DLL文件的内部结构与EXE文件的不同点,在DLL装载到内存后才能表现出来。使用DLL的优点在于:语言的选择具有随意性,可用多种语言编写应用程序;平台差异问题无关紧要,方便程序的本地化;灵活性和针对性强,根据需要执行操作,根据操作装入代码。斑用程序1DLL庶埘程垮2lCALLA()}剖醺数A()陆—剖cALLA()i图2-5动态链接库的工作原理Fig.2—5Workingprincipleofdynamiclinklibrary2.1.3CAD二次开发技术随CAD版本的更新,其二次开发的工具也不断发展。从1986年开始到现在,相继出现了AutoLISP、ADS、DCL、ADS.RS、ObjectAlLX、VBA、VisualLISP、DotNET等二次开发技术。(1)AutoLISP开发技术AutoLISP是嵌入AutoCAD内部的Lisp语言,是CAD二次开发语言中唯一的解释性语言,是AutoCAD最早的二次开发技术。它通过进程间通信(tPC)与AutoCAD交:互,不但可以调用近乎全部的CAD命令,又能为C.A.D增加命令。开发交互式程序不仅:限方便,图形处理能力也很强大。语法简单,学习和使用起来都很容易。但是,较慢的:i垂行速度、较弱的保护机制、底层和系统支持的缺乏以及较差的综合处理能力限制i『_它的应用范围,只能用来开发数据处理强度很低的小规模程序。(2)ADS技术最早能够支持ADS技术的是AutoCAD的Rll版本。ADS是基于c语言的一种开 太原理工大学硕士研究生学位论文发技术。ADS既可以通过内部进程通信与AutoCAD交互,也可以直接与硬件通信,这种通信方式很灵活[201。ADS采用结构化的编程开发体系,编写完成的代码经C编译器编译生成.EXE和.EXP格式的可执行文件才能在AutoCAD环境中运行,程序保密性很好,运行速度较快。ADS不仅具有很强的高速处理大批量数据的能力,还能够灵活地调用C语言库函数和ADS库函数。但是,它不能适应可视化编程,应用难度大,不符合软件开发技术的发展趋势。(3)VisualLISPVisualLISP从AutoCADR14开始发展,AutoCAD的2000版本已经完成与AutoCAD的完整集成。它能够完全兼容AtuoLISP,它采用IPC与AutoCAD通信。与其说它是一种新的开发工具,不如说它是AtuoLISP的改良版。不再像过去那样,将运行引擎嵌入AutoCAD中。所增强功能有很多,比如说采用了有色代码编辑器、提供了ActiveX对象及事件的使用、提高了开发效率、完善了调试工具、加强了原始代码安全性、新增了功能函数。开发人员可以方便地分析程序的运行情况,可以进行底层开发,可以缩短开发时间,可以不再担心软件盗版和用户误操作,可以进行ActiveX/COM自动化操作,可以使用CAD对象和反应器,还可以用代码操作系统文件。但是,VisualLISP必须依靠AutoCAD,不能单独运行。(4)VBAVBA是VisualBasic的一种特殊版本,能方便的使用Windows资源,具备完善的数据管理与数据访问能力,创建对话框和图形用户界面的效率很高。它是由AutoCADRl4开始提供给编程人员的自动执行任务、面向对象的开发环境。VBA采用了ActiveX技术,和ObjectARX一样能够和CAD共享相同的进程空间。因此,VBA应用程序不仅运行速度快,而且程序间的沟通能力很强大。这种沟通不限于CAD与开发应用程序之间,还包括AutoCAD和其他windows应用程序的交互,方便了数据的集成与共享‘211。Active对象模型比较开放,显示CAD对象的同时显示其方法,方便用户访问和操作AutoCAD。程序的发布方式很灵活,不仅可以嵌入CAD图形,还能独立起来。VBA源程序存储在宏语言程序的.txt格式中,不能编译,容易暴露在用户面前。不但保密性不好,而且安全性也差,用户的误操作甚至可以导致程序的崩溃。(5)ObjectARX从软件开发的角度来看,ObjectARX是一种以C++为程序开发语言,以面向对象为 太原理工大学硕士研究生学位论文开发方式的二次开发技术【221。从本质来看,它是一种以应用程序接口(API)为核心,包含动态链接库的二次开发技术。其中的动态链接库不仅配置了通用工具,而且它与AutoCAD共享运行地址空间。因此,ObjectARX程序可以直接与AutoCAD交互,即直接调用其库函数,直接访问其几何造型核心、图形系统甚至数据库结构,而且程序运行速度更快。ObjectARX不仅能与系统集成,而且能够与其它Windows应用程序自由通信、交互操作,集成度很高。另外,C++代码具有多态性,可封装也可继承,可重用性强。ObjectARX开发出来的软件性能好,系统稳定性强,内部功能实现效率高。(6)AutoCAD.NETAutoCAD.NET是基于Mircosoft.NET架构直接进行AutoCAD二次开发的一种新技术[231。不管开发人员熟悉的语言是VisualBasic.NET还是VisualC群.NET,使用AutoCAD.NET进行AutoCAD二次开发的基本方法和步骤基本上是一样的。目前能支持AutoCAD.NET开发方法的软件版本为AutoCAD2005到AutoCAD2012,但能完全支持DotNET开发技术的则是从AutoCAD2006开始。.NETAPI提供了一系列托管的外包类(ManagedWrapperClass),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NET、C≠≠和ManagedC++等对AutoCAD进行二次开发。其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有方便易用的特点,是较理想的AutoCAD二:次开发工具。本项目选用.NETAPI这种二次开发技术进行系统开发。2.2系统安全加密原理与方法软件信息存储的是数字信号而非模拟信号,这一存储形式有着不可改变的缺点,即为易复制性。因此,作为信息的重要载体,计算机软件可能被非法复制、非授权安装使用、恶意分析攻击和越权访问,从而造成信息的泄露、丢失、破坏等恶果。因此,软件相关信息安全成为软件开发者和使用者共同重视的问题。为保证信息的安全性所采取的技术手段被称为软件加密技术。2.2.1密码学原理密码学是一门主要研究密码的编制和破译的技术科学瞳圳。为保证信息安全,将明文转换成密文进行传输,然后在接收端把密文还原成明文,这一过程即为数据加密汹1。加14 太原理工大学硕士研究生学位论文密即按某种方式将要发送的消息转换成看起来毫无意义的符号乜6|。密码是隐蔽文字、图像、语言等信息的特种符号。“明文”就是可被看懂的文本,通常用“M”来表示心7l。“密文”就是一堆乱码,不经过解密不能传递表达信息,经过解密转换成明文,记为“C"。用于加密和解密的数学函数被称作“密码算法”,也就是密码瞳8|。密钥是用来加密和解密运算的,它是一种参数,即在明文转换为密文或将密文转换为明文的算法中输入的数据.密钥常用K来表示,K可以是很多数值里的任意值瞳9|。所谓的密钥空间,就是密钥可能值的范围。加密函数E作用于M得到密文C,用数学语言表示为E(M)=C;解密函数D作用于C产生M,用数学语言表示为:D(C)=M:先加密后再解密消息,原始的明文将恢复出来,则表示为D(E(M))=M。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤。密钥是用来对数据进行编码和解密的一种算法。明文、密文、密钥、加密解密设备或算法组成了密码系统。在安全保密中,通过适当的钥加密技术和管理机制可以保证信息安全。密码技术,如加密技术和身份认证技术,是实现软件安全服务的重要基础b0|。2.2.2MD5算法图2-6加密、解密基本模式Fig.2—6TheBasicModelofencryptionanddecryption常见的加密算法有:DES算法、MD5算法、RSA算法。其中,RSA是基于数论的公钥密码算法b1|,DES是分组密码中的一组曲剔,为非机密数据的正式数据加密标准∞3|,MD5算法作为一种重要的Hash函数,被广泛应用于数据完整性和消息认证领域∞4|,其算法原理为:原输入报文的“报文摘要值(MessageDigest)”就是输出。无论信息输入的长度如何,MD5所产生的输出长度不变,一直为128比特。MD5处理输入的信息方式为:先经过512位分组,然后继续划分。经划分,每一分组都能得到16个32位子分组。经过一系列的复杂处理后,四个32位分组就能组成算法的输出。当然,要生成一个128位散列值口卯还需将它们级联起来。 太原理工大学硕士研究生学位论文2.2.3系统加密模式与方法现阶段各种加密技术相继出现并不断发展,比如说信息保密技术、信息隐藏技术、消息认证技术、密钥管理技术、数字签名技术等。对于加密系统来说,无论是采用哪种技:术,许可验证是关键,高层加密算法和底层密钥产生体系是核心。在软件安装和系统运行时,加密系统通过口令字和端口处获得的特殊数据或其它方法判断出用户是否得到授权。继而保护合法使用,中断非法操作。系统加密的基本模式如图2—7所示。2—7系统加密基本模式Fig.2-7Thebasicmodelofsoftwareencryption根据加密的实现是否依赖于硬件,可将软件系统舒,JJJn密分为对软加密与硬加密两类∞引。软加密技术是一种纯软件的保护技术,不需要额外的硬件来支持。软加密使用程序验证使用者是否合法,这种验证程序通常应用了加密算法与解密算法。对于硬加密而言,硬件是它实现加密技术的基础与关键∞7J。复制软件较容易,复制硬件相对困难。从这两种:8口密技术的实现方式来看,硬加密的安全性稍强。常见的软加密方法有许可证加密、序列号加密和密码表加密∞8l;常见的硬加密方法有:软件狗、加密卡、磁盘加密、单片机加密锁口9J。2。2.4USBKEY的原理及特点USBKEY是近几年发展起来的一种方便、安全、可靠的软件加密工具,它是安装在计算机外设USB接口上可编程、可读写的硬件设备阻0|,俗称USB加密狗。在USBKEY内部存:有一定的数据和算法,计算机可以与之通讯来获得其中的数据,或通过USBKEY进行某种计算H¨。USBKEY其大小类似U盘,可直接在电脑的USB接口插拔。用户在登陆平台时..程序通过相应的加密接口函数向插在计算机上的加密狗发出查询命令,软件狗迅速16 太原理工大学硕二}=研究生学位论文计算查询并给出响应,只有检测到特定的加密狗和准确的物理验证后,才允许正常登陆。在运行过程中,被保护的系统要不断的判断USBKEY是否存在,如果没有检测到,那么不能运行程序哺刘。其中,检测机制为:系统通过API函数向加密狗发送指令,利用返回的结果来判断。利用USBKEY进行软件加密,安全性好、兼容性佳、使用方便、功能强大。USBKEY可以实现软件加密,未经授权用户不能打开、使用、破坏软件信息,防止非法复制、非授权安装使用;可以实现权限管理,用户只能使用被授权的功能,增加了用户群部门内部的管理手段;还可以防御外来侵犯,连接在网络上的计算机都有受到恶意分析攻击的可能性,只要有USBKEY黑客很难操纵用户机器进行非法登录。 太原理工大学硕士研究生学位论文第三章基于CAD二次开发技术的供水管网管理信息系统总体设计3.1系统总体结构设计考虑到修改和扩展软件的可能性,本系统采用了模块化设计。当需要完善或增加功能时,将功能模块直接加入到预留的接口位置即可完成软件功能的扩展。供水管网工程规模庞大,管网信息不仅数量很大而且种类复杂。考虑到这些特征,本文将系统设计为基于AutoCAD的的应用服务型系统。该系统采用B/S体系结构。即以服务层为核心,数据层为支撑,AutoCAD为空间数据的展示平台。基于AutoCAD供水管网信息管理系统的基本结构如图3.1所示。D蒋(;格式AutoCAD翱簸.|鼙用襁潆游瓣粼形数糍露.疆,lt应掰程序襻}浚骛l入数l数攘立攒图3—1系统基本结构图Fig.3一IThebasicstructuraldiagramofsystem根据需求分析结果,结合系统功能的架构,并考虑管网信息管理的特点,本文将本系统分成三个部分,又把要实现的设计目标按功能和内容划分为17个模块,各模块之间既相互独立,又能通过菜单调用联系起来组成一个有机的整体。这三个部分各自实现安全管理、图形管理和属性管理。安全管理部分主要实现管网管理信息系统的安全管理.,确保信息可靠,数据准确;图形管理部分主要为用户提供地图服务,将地理信息直观地展示出来:属性管理部分的主要功能是提供属性信息的查询、统计、分析、删除、添加、更新等服务。其中,安全管理部分包括注册认证模块、权限管理模块、实时保护模块、数据备份模块、数据恢复模块;图形管理部分包括软件初始化模块、管网图加载模块、i:i0000比例尺管线地形图载入模块、I:i000比例尺管线地形图管理模块、实体查询模块、自动成图模块;属性管理部分包括属性添加模块、属性更新模块、属性菜单定制10裂1iA一熏燃一黼一燃一姒褫~糍一陵一键壤一更一掰一蛰 ————.太原理工大学硕士研究生学位论文————————————————————————————————————————————o—二—二.二.————模块、多条件属性窗口查询、属性统计模块、和信息导出模块。图3-2系统总体结构图Fig.3-2Theoverallstructuraldiagram—ofsystem20 太原理工大学硕士研究生学位论文3.2软件功能设计在工程中,AutoCAD软件的属性数据处理能力相对薄弱。要弥补该软件的不足,最合适的方法就是借助SQLServer数据库强大的数据处理能力。该系统采用CAD二次技术开发管线图形子系统,同时利用数据库管理系统管理相应属性数据,并通过应用程序将SOLServer数据库和AutoCAD相互关联,使属性记录关联对应图形,便于管线属性与图形实体的互相查询。从而为管网管理部门提供了高效的数据管理服务。软件应设计以下几种功能:从而为管网管理部门提供了高效的数据管理服务。软件应设计以下几种功能:(1)首次使用该软件前需要确认密钥来完成用户注册和权限分配。每次打开该软件均需要确认密钥,系统核对用户是否合法。如果合法,则可以顺利进入系统界面进行各种功能操作,如果密钥错误,经错误提示后仍不能提供正确密钥则为非法用户,对于非法用户不能使用该软件,系统将退出。≈(2)系统为用户提供多种类型的属性查询方式。用户既可以对图形实体进行操作得到属性,又可以直接进行库操作得到相关信息。当管网信息发生变化时,用户可以方便地通过功能窗口将其相应属性信息输入并存储到$QI。Server数据库的对应数据库表项中。(3)系统为用户提供多尺度管网信息图选择操作。根据用户对图形详细程度的不同要求可以选择不同比例尺图。当用户需要添加图形实体时,在窗口上输入或选择实体形状的限制条件,DWG图上会自动绘制目标实体。(4)用户能够使用该系统提供的多条件查询统计功能。用户选取几个条件逻辑组合后,能够得到同时符合各个条件的查询结果和统计数据,并可以使用“数据导出”功能导出自动成为包含目标数据的文件。在软件功能设计阶段,用软件开发的思想设计了系统将来运行的大致流程,如图3—3所示。 太原理工大学硕士研究生学位论文图3-3系统流程图Fig.3—3Thesystemflowchart启动信息管理系统之后,计算机开始加载用户程序。用户需要将密钥提供给系统,由系统来判断用户的合法性。如果,不提供密钥或密钥识别失败,则退出系统。如果密钥识别成功,即该用户为合法用户,那么用户便可顺利进入系统,使用各子系统、各模块的功能,最后,退出系统。系统的详细功能由各个模块具体地来实现。本系统共有十七个功能模块,各个模块功能各异、相互关联,其功能如下:注册认证模块:安装软件之后,使用USBKEY的身份认证功能验证用户身份是否合法,之后根据用户身份的判断决定是否授权使用该软件。权限管理模块:根据用来进行系统注册的USBKEY类型判断并赋予用户不同的角色。不同的角色,相对应的权限不同,能够使用的软件功能也不同。实时保护模块:在软件运行过程中,检测USBKEY是否保持与计算机相连接。一旦USBKEY离开了USB接口,马上中断程序。规定时间内.,仍没检测到合法USBKEY,自动退出系统,以保证系统安全性。数据备份模块:系统存在发生故障和出现错误的可能性,这种故障和错误一旦发生.,会造成数据的丢失或损坏。为保证数据的安全性,基于数据复制的方式将数据集合的全部或部分备好附件。数据恢复模块:由于系统的硬件故障、人为的操作失误、操作系统的设计漏洞、数据处理和访问软件平台故障或其他原因,造成数据丢失和毁坏时,使用数据备份还原数据、恢复服务。软件初始化模块:初始化软件服务,连接并打开CAD软件为用户使用图形相关功能做准备,保证晋城市管网管理系统中的DWG图文件能够快速准确地打开。22 太原理工大学硕士研究生学位论文管网图加载模块:CAD软件服务被激活后,迅速加载DWG格式的晋城市供水管网图,在CAD窗口中将其打开。l:10000比例尺管线地形图载入模块:当用户点击“1:10000管线地形图”按钮后,“零时间”响应。迅速关闭之前的供水管网图,同时打开比例尺为1:10000的管线地形图,为用户提供准确直观的地图信息。1:1000比例尺管线地形图载入模块:用户点击“l:1000管线地形图”按钮后,自动关闭窗口中其他的DWG文件且打开1:1000比例尺的管线地形图,提供给用户小比例尺地图服务和更详细的管网地理信息。实体查询模块:根据用户所选择的属性信息条件,选择出符合限制条件的所有实体,并在DWG图上将查询出来的实体高亮显示。自动成图模块:根据用户通过交互窗口给定的描述性数据,自动向DWG模型空间中添加符合条件的图形对象,生成目标图形,减少用户手工操作。属性添加模块:选择新增管段,将相应的管道属性和管材属性信息键入属性添加窗口并保存到SQLServer数据库各表项中。其中,键入属性信息是由用户来完成的。属性更新模块:将所选管段管道管件属性调出并显示在属性添加窗口上,供用户根据当前属性做以修改。之后,将修改后符合现实情况的属性数据存入SQLServer数据库。菜单定制模块:根据用户在DWG图形文件中的所选择的管段实体,从SQLServer数据库表项中提取相应的的属性数据并将其显示在自定义属性菜单上。多条件属性窗口查询:根据用户选择条件的不同组合,从SQLServer数据库表项中,提取所有符合查询条件的属性数据并以表格的形式将其显示在属性查询窗口上。属性统计模块:根据用户选择的不同统计条件,统计出给定条件下管道或管件的统计值。信息导出模块:将用户条件查询、统计的结果,以EXCEL单文件形式输出,方便了用户对资料的进一步分析和打印。3.3系统安全设计对于信息管理系统来说,安全问题是重中之重,没有用户会信任不可靠的软件。只有保证系统的安全性,用户才能够放心的使用系统的功能。信息安全就是软件使用者能 太原理工大学硕士研究生学位论文且只能使用并操作相应权限允许的信息,绝对不可能接触到权限以外的其他数据。很早以前人们利用狗鼻子的气味识别能力判断来访者的身份。同样,要保护信息安全就要在软件中加入安全防护体系,禁止非法访问、限制越权操作。本系统需要一种安全性高、操作简单和性价比高的软件保护工具来保证用户的经济利益和信息安全。“用户名/密码”这种信息保护方式最常见,但是安全性不高;生物特征认证方式虽然安全性高,但是应用起来比较麻烦;专业加密设备安全性很好,但是成本很高用户不能接受;USBKEY硬件成本较低、兼顾系统高安全性和用户使用便利性,完全能满足用户需求。USBKEY它读写数据是通过计算机的标准外设USB接口直接进行的,无需专门的接口设备(读卡器)却集成了智能卡的优势性能,既有价格低廉、使用简单外形小巧、携带方便等特点又具有智能卡安全度高的特性。为保证系统的信息安全,本系统选择USBKEY来实现用户身份认证、用户权限管理和软件实时保护。采用合适的加密算法对信息进行加密存储,在系统注册和软件运行期间快速对比密钥、精准识别合法用户。支持合法用户的使用,同时使非法用户破译困难。对用户权限进行完善的管理,针对不同的用户设置不同的访问权限,在其访问之前对其身份进行合法性验证,限制用户的越权操作。USBKEY加密体系结构如图3—4所示。图3-4USB加密体系结构Fig.3-4ThearchitectureofUSBencryption24 太原理工大学硕士研究生学位论文第四章基于CAD二次开发技术的供水管网管理信息系统数据库设计在系统开发的整个过程中,数据库的设计至关重要,它是数据库建立的基础。数据库设计的质量决定了编码阶段调用数据的效率。在给定应用环境中,构造对象的概念模型并在其基础上设计出数据库表的物理结构的过程就是数据库设计。数据库设计的目标在于构造出最优、最合理的数据库模式;其落脚点在于建立数据库,实现数据的高效存储;其最终目的是为了满足用户信息和处理的要求。数据库设计是一项涉及到多学科的综合性技术,它与一般软件系统的设计既有相同的问题和解决方法,又有独特个性的特点‘43I。4.1数据库模型设计在概念设计阶段,要从用户的角度看待数据及处理要求和约束,产生一个反映供水管网管理与设计部门组织信息需求的数据库概念结构。在需求分析的基础上,采用“概括”、“分类”和“聚集”等数据抽象方法对用户需求进行综合、归纳与抽象,设计成局部概念模式,然后进一步综合成全局概念模式。 太原理工大学硕士研究生学位论文图4-1E—R图Fig.4-1ThechartofE-R供水管网分区域进行管理,一个供水分区内包括很多很多街道小区。一条街道或一个小区又铺设了多条管道。一条供水管道由多条管段、多个节点组成。其中,管道分为两种类型,一类是普通的管道,另一类是渐缩管和渐扩管;节点上装置了排气阀、四通、三通、阀门、水表、消火栓和测压点。管段和管件本身具有一定属性,当它们加入管网后:更具有的新的属性,比如说:所在街道、所在分区等,为了便于管理还给它们编了号。这个E-R模型清晰的反映了供水管网的信息结构、信息流动情况、信息间的互相制约关系以及管网管理部门对信息储存、查询和JJrl-r的要求等。E-R模型不依赖于计算机系统,并且独立于数据库逻辑结构。数据库管理系统不能支持这种模型结构。4.2数据库表设计根据上述逻辑结构设计管网数据的存储结构。本文设计了十张表,为使系统的各数据表的含义更加清晰,对其作如下功能描述。26 太原理工大学硕士研究生学位论文(1)Dbo.消防栓表用于记录DWG文件中消防栓的相关属性数据,包括:编号、X坐标、Y坐标、所在管道、所在街道、所在分区、规格编号和类型。表4-1消火栓表设计Tab.4-1Thetableofhydrantdesign列名数据类型是否允许空编号Nvarchar(255)是X坐标float是Y坐标float是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格编号Nvarchar(255)是类型Nvarchar(255)是(2)dbo.阀门表用于记录DWG文件中阀门的相关属性数据,包括:编号、X坐标、Y坐标、所在管道、所在节点、所在街道、所在分区、规格型号和类型。表4-2阀门表设计Tab.4-2Thetableofvalvedesign列名数据类型是否允许空编号Nvarchar(255)是x坐标float是Y坐标float是所在管道Nvarchar(255)是所在节点Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格型号Nvarchar(255)是类型Nvarchar(255)是27 太原理工大学硕士研究生学位论文(3)dbo.管道表用于记录DWG文件中管道的相关属性,包括:编号、ID、级别、起点X坐标、起点Y坐标、终点编号、终点X坐标、终点Y坐标、管长、管径、管材、承压等级、接口形式、埋设时间、管道位置、起点地面标高和起点地面标高等数据。其中,管径的DN值单位为毫米,管长和地面标高的单位均为米。表4-3管道表设计Tab.4—3Thetableofpipelinedesign列名数据类型是否允许为空编号Nvarchar(255)否级别Nvarchar(255)是起点编号Nvarchar(255)是起点X坐标float是起点Y坐标float是终点编号Nvarchar(255)是终点X坐标float是终点Y坐标float是管长float是管径float是管材Nvarchar(255)是承压等级Nvarchar(255)是接口形式Nvarchar(255)是埋设时间Nvarchar(255)是管道位置Nvarchar(255)是起点地面标高float是起点埋深Nvarchar(255)是终点地面标高float是终点埋深Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是IDNvarchar(255)否 太原理工大学硕士研究生学位论文(4)dbo.渐缩扩管表用于记录DWG文件中渐缩管和渐扩管的相关属性数据,包括:编号、X坐标、Y坐标、所在管道、所在节点、所在街道、所在分区、规格型号和类型。表4-4渐缩(扩)管表设计Tab.44Thetableofreducingpipedesign列名数据类型是否允许空编号Nvarchar(255)是X坐标float是Y坐标float是所在节点Nvarchar(255)是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格型号Nvarchar(255)是类型Nvarchar(255)是(5)dbo.节点表用于记录DWG文件中节点的相关属性数据,包括:编号、X坐标、Y坐标、节点性质、所在管道、所在街道、所在分区。表4-5节点表设计Tab.4—5Thetableofnodedesign列名数据类型是否允许空编号Nvarchar(255)是X坐标float是Y坐标float是节点性质Nvarchar(255)是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是(6)dbo.排气阀表用于记录DwG文件中排气阀的相关属性数据,包括:编号、x29 太原理工大学硕士研究生学位论文坐标、Y坐标、所在节点、所在管道、所在街道、所在分区、规格型号和类型。表4-6排气阀表设计Tab.4—6Thetableofexhaustvalvedesign列名数据类型是否允许空编号Nvarchar(255)是X坐标float是Y坐标float是所在节点Nvarchar(255)是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格型号Nvarchar(255)是类型Nvarchar(255)是(7)dbo.三通表用于记录DWG文件中三通管件的相关属性数据,包括:编号、X坐标、Y坐标、所在管道、所在节点、所在街道、所在分区、规格型号和类型。表4-7三通表设计Tab.4-7Thetableofteedesign列名数据类型是否允许空编号Nvarchar(255)是x坐标float是Y坐标float是所在节点Nvarchar(255)是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格型号Nvarchar(255)是类型Nvarchar(255)是(8)dbo.水表表用于记录DWG文件中水表的相关属性数据,包括:编号、X坐标、30 太原理工大学硕士研究生学位论文Y坐标、所在管道、所在街道、所在分区、规格型号和类型。表4-8水表设计表Tab.4—8Thetableofwatermeterdesign列名数据类型是否允许空编号Nvarchar(255)是X坐标float是Y坐标float是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格型号Nvarchar(255)是类型Nvarchar(255)是(9)Dbo.四通表用于记录DWG文件中四通管件的相关属性数据,包括:编号、X坐标、Y坐标、所在管道、所在节点、所在街道、所在分区、规格型号和类型。表4-9四通数据表设计Tab.4—9Thetableoffourpassdatadesign列名数据类型是否允许空编号Nvarchar(255)是x坐标float是Y坐标float是所在节点Nvarchar(255)是所在管道Nvarcbar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是规格编号Nvarchar(255)是(10)dbo.测压点表用于记录DWG文件中测压点的相关属性数据,包括:编号、X坐标、Y坐标、所在管道、所在街道、所在分区和备注。 太原理工大学硕士研究生学位论文表4-10测压点表设计Tab.4-10Thetableofpressllremeasurementnodedesign列名数据类型是否允许空编号Nvarchar(255)是X坐标float是Y坐标float是所在管道Nvarchar(255)是所在街道Nvarchar(255)是所在分区Nvarchar(255)是备注Nvarchar(255)是为了缩短数据读取时间将“管道ID”、“所在街道”和“所在分区"建立索引,其中“管道ID”为主索引。4.3存储过程设计存储过程是一组经编译后储存在数据库中的SQL程序集,它可用来完成特定的功能。TransactSOL存储过程可以接受输入参数,以参数形式返回输出值,或者返回成功、失败的状态信息H4J。在本系统中,将SQL语句存储在存储过程中。像编程语言的函数一样,SQLServer存储过程能将向调用函数返回多个值心5|。当需要对数据库进行操作时,只需要调用相应的存储过程。利用存储过程与数据库交互,安全、稳定而且数据查询效率高。在设计系统时合理地使用存储过程可以使软件结构更加清晰,更加易于维护,可以提高软件整体质量H6l。管网管理系统设计包括30个存储过程,每一个存储过程都完成特定的数据库操作。其中,dbo.ceyadian、dbo.famen、dbo.jiansuokuoguan、dbo.paiqifa等8个存储过程分别用来实现:查询某一管道时,从数据库中测压点表、阀门表、渐缩管表等表中取出该管道上相应管件的“编号”、“X坐标"、“Y坐标”、“规格型号”等属性;dbo.chfamen、dbo.chgdxx、dbo.chjiansuokuoguan、dbo.chPOINT等9个存储过程分别用来实现:查询某一管段或管件编号时,从数据库中阀门表、管道表、渐缩(扩)管表、节点表等表中取出该编号对应的全部属性值;dbo.delfamen、dbo.deljiansuokuoguan、dbo.delpaiqifa、dbo.delpoint等8个存储过程分别用来实32 太原理工大学硕士研究生学位论文现:管件编号一定时,删除阀门表、渐缩(扩)管表、排气阀表等表中该编号对应的全部字段;dbo.getgdxx用来从数据库管道表中取出ID值一定时所有属性值:dbo.delgdxx用来删除管道表中某ID所对应的全部属性字段;dbo.chgdxxid用来从管道表中提取某一ID所对应的全部属性字段;dbo.getguandao用来提取管道表中所有编号。本文中选取3个代表性较强的存储过程来重点介绍,并对相关脚本作出解释。(1)获取阀门信息的存储过程名称为famen,该存储过程查询阀门信息表,并提取“编号”、“坐标x”、“坐标Y”、“所在管道”、“所在街道”、“所在分区”、“备注”属性字段。首先创建名为ceyadian的存储过程,代码如下:CREATEPROCEDURE【dbo].[ceyadian】然后定义过程参数parameter的字段长度和数据类型,代码如下:@parameterlint=5.@parameternvarchar(30)从测压点表里选取“所在管道”字段等于参数parameter时的“编号”、“坐标X”、“坐标Y”、“所在管道”、“所在街道”、“所在分区”、“备注”字段,代码如下:AS/木SETNOCOUNTON木/SELECT编号,坐标X,坐标Y所在管道,所在街道,所在分区,备注FROM测压点WHEREf所在管道=@parameter)RETURN(2)获取管道信息的存储过程名称为delgdxx,该存储过程查询管道信息表,删除管道表中某ID所对应的全部属性字段属性字段。首先修改已存在的存储过程,将其命名为ceyadian,代码如下:ALTERPROCEDURE[dbo】.[delgdxx]接下来定义过程参数@parameterlint=5,@parameternvarchar(30)然后从管道表中删除符合条件的全部字段AS/*SETNOCOUNTON木/13 太原理工大学硕士研究生学位论文deleteFROM管道表WHERE(id=@parameter)RETURN(3)获取三通信息的存储过程名称为chsantong,该存储过程查询当三通编号为某一特定值时,从数据库中三通表中取出该编号对应的全部属性字段。第一步修改已存在的存储过程,将其命名为chsantongALTERPROCEDURE[dbo].[chsantong]第二步定义过程参数@parameterlint=5,@parameternvarchar(30)第三步完成符合条件的查询,从三通表中提取所有“编号”等于过程参数的所有属性字段。AS户SETNOCOUNTON木/SELECT木FROM三通WHERE(编号=@parameter)RFTTrRN 一奎堕堡三奎堂堡主婴窒竺堂垡笙塞————_————-———_———__——’——————————————_—●————_————————_——————————————_————●—————————————————一一第五章实现基于CAD二次开发技术的供水管网管理信息系统的关键技术CAD的二次开发主要涉及这些关键技术:多媒体技术、面向对象技术、人工智能技术、工程数据库管理技术、分布式环境技术、集成产品模型研究和软件工程技术。本项目需要解决的三大难题分别是安全问题、图形管理和属性管理问题。针对这些问题,在软件开发过程中主要使用了加密技术、图形交互技术、AutoCAD二次开发技术和数据库管理技术。5.1USBKEY;/JI:I密技术权限管理和身份认证技术有很多,常见的有:用户名/密码方式、工C卡加密技术、动态口令加密技术、生物特征加密技术和USBKEY加密技术,其中用户名/密码方式主要嵌入在应用软件中,能够保护非关键的系统,但保护敏感信息能力有所欠缺;工C卡加密技术简单易行,但IC加密卡被窃取后信息安全得不到保证;动态口令加密技术一次一密,安全性较高但使用繁琐;生物特征加密技术安全性值得信任,但是稳定性不够;USBKEY加密技术安全可靠,成本也合适,对于地市级管网管理软件的加密而言的确是不错的选择。但是该技术依赖硬件的安全性,单单利用其硬件特征或加密算法来实现软件加密也不能让开发者与使用者放心。为解决这一矛盾,本系统采用双因子认证模式进行加密。通过组合两种不同的条件来核实使用者身份,明显提高了安全性。5.1.1双因子认证模式的USBKEY加密技术本系统采用软、硬相结合的加密方式和一次一密的强双因子认证模式,选用流行的MD5算法,结合了现代密码学技术、智能卡技术和USB技术,针对管网管理系统研发出安全性较高的USBKEY。每个USBKEY都有唯一的硬件ID,此外基于单向散列HMAC—MD5算法的加密技术还产生一个验证码。用户只有同时验证通过了,才能登录系统。实现原理为:USBKEY内置MD5算法,使用随机数进行带密钥的单向散列运算得到结果H7J。当 需要验证用户身份时,系统读取usBKEY中的唯一硬件ID,通过产生的随机数调用USBKEY接口得到随机数进行^lD5运算的结果,系统将读取的硬件ID、随机数、运算结果与数据库中存储的相应数据做比较,相同则认证成功。图5-1USBKEY加密模式Fig.5—1TheencryptionmodelofUSBKEY核心代码如下:privatevoidmatchDriveLetterWithSerial0{sei’ialNumber.Clear0:ManagementObjectdiskss=null:stz’ing[]diskArray:stz’ingdriveNumber:varsearcher=newManagementOb.jectSeaz、chef(”SEI。ECT术FROMWin32一LogicalDiskToPartition”):for。each(Mm]agelllentObjectdminsearcher.Get0)(getValueInQuotes(dm[”Dependent”].ToStringO):diskArray2getValueInQuotes(din[”Antecedent”].ToString0).Split(’,’):driveNumber=diskArray[0].Remove(0,6).Trim():vardisks2newManagementOb.jectSearcher(”SELECT术FROMWin32DiskDrive”)foreach(~lanagementOb、jectdiskindisks.Get0)fif((disk[”Name”].ToStringO==C\\\\.\\蹦YSICAI.DRIVE”+driveNumber))&&(disk[”InterfaceType”].ToString()==”USB”))(stringdriver=”win32一logicaldisk.deviceid=\””十getValueInQuotes(dm[”Dependent”].ToStringO).Substring(0,1)+”:\””:try{diskss=newManagementObjec£(driver):serialNumber.Add(diskss.GetPropertyValue(”Vo】umeSerialNumbex、”).ToString())36 ——一一太原理工大学硕士研究生学位论文————————————————————————————————————,二二_二二=∑—=∑二2=_一.)catch(Exceptionex)MessageBox.Show(ex.Message):privatevoidtimerl一Tick(objectsender,EvelltArgse){.jli}c]assjm=newjmcta.SS0:if(jm.cheekcoad0==0)(timerl.Interval=5000:}elseif(jm.checkcoad()==1)(timerl.Enabled=false:。,ial。薛esultresultl=鲥essage融。x.Showtt(”密镅识别错误,请插入正确的销钥”,,,密钥:、uI锚伏挺:l科--MessageBo盖Buttons.OKCancel,MessageBoxIe(}11.Information):⋯⋯⋯川~。⋯if(resultl==DiallogResu]t.0K){jm.checkcoad0:timerl.Enabled=true:timerl.Interval=100:)elSeSystem.Windows.Forms.Applieati。¨.ExitThread0:timerl.Enabled=false:|_)_ia|o艘tjSujtresult=熊essageB(、x.Show(”请将密钥插入到USB接口”,”密钥插入提示一,MessageBoxButtons.OKCancel,MessageBoxIc)n.工nformation):if(result==I)ia】ogRf、su}t.OK)(jm.checkcoad0:timerl.Enabled=true:timerl.Interval=100:)elsef37 System.Windows.Forms.Application.ExitThr,ead05.1.2应用加密模块的系统注册软件在首次使用时需要进行系统注册,系统向用户索取与产品授权使用所匹配的USB加密狗,而且系统注册操作过程中系统只允许USB接口上只存在一个USB加密狗。计算机发现并识别USB接口上的电子狗,系统中调用matchDriveLetterWithSerial函数来获取USB接口上的USB狗密钥,调用xxMD5Digest函数实现MD5运算,再通过指定路径找到加密模块中的合法密钥参数,并将得到的产品使用密钥与合法密钥参数作以比较,完成验证。在验证过程中,如果发现多个USB设备,系统将显示给用户‘‘密钥无法识别,,提示::如果用户插入其他产品电子狗或与本系统无关的其他USB设备,系统将弹出“密钥识别锚41-、跃I::i”和“插入正确密钥”提示;如果用户没有插入USB狗来配合系统注册,系统会提示用户插入USB加密狗。成功注册后,系统将保存这次系统注册,在下次使用时不必再进行安全注册。主要代码如下:publicvoidwritecoad(Formfm){matchDriveLetterWithSerial():stringpath=System.Windows.Forms.Appl.ication.StartupPath+”\\load.ini”:readtxtcod(path):if(serialNumber.Count>0){if(serialNumber.Count==1)(foreach(stringcincoad)(foreach(stringcoadnumberinserialNumber){if(C==coadnumber){StreamWriterSW=newSt:reamWriter、(System.Windows.Forms.ApD]ication.StartupPath+”\\coad.ini”):SW.Write(coadnumber):38 SW.Close():flag=true:)elseif(serialNumber.Count>1)(Dialo:.,,注册时请保证⋯接|::=】上只有密钥一,一gResultresultlMessageBoxShow(USB=.“汪册时请1朱旺谈¨p七尺伺黼驯’密钥无法识别提示”,MessageB(ⅨButt。ns.OKCancel,MessageB。xIeon.Information):iffresultl==I)ialogResu]t.OK){writecoad(fro):)else(fm.Close():)if(!flag)(..DialogResuItresultl=MessageB(池Show(”密钥识别错误,请插入正确的密钥”,”密钥错误提示”,Message8()xButtons.OKCanoel,MessageBoxk㈤.Information):if(resultl==DialogResult.OK)(writecoad(fm):)else{fm.Close0:})e1se(DialogResultresult:MessageBox.Show(~清将密钥插入到USB接口”,,,密钥插入提示”,=.⋯。淆将薇钥摘八剑攒U,觜钥j融八憷不’MessageBoxBl,ittofls.OKCancel,MessageBox]:con.Information):iffresult==DialogResult.OK){writecoad(fm):)else(fm.Close0:39 太原理工大学硕士研究生学位论文5.1.3软件使用的系统安全验证用户登录的系统安全验证功能是依赖USB加密狗进行的。在用户打开将使用软件时,检测端口是否存在合法USB加密狗;在软件使用过程中也要保证USB接口上连接有合法加密狗。该模块matchDriveLetterWithSerial函数来获取密钥,使用bool型字段flag作为标志变量进行判断,变量值为true就意味着通过加密验证。系统采用不定时扫描技术,确保信息安全。在扫描过程中,一旦发现缺少合法USBKEY将自动由普通模式切换到高频率扫描模式,直到检测到合法USBKEY为止。如果出现错误,系统将会中断软件运行并弹出要求核对密钥的提示。在系统应用中,如果密钥识别正确,那么用户可选择各自权限直接系统;如果系统运行过程中密钥识别正确,那么用户继续自己的各种功能操作。当密钥识别错误时,提示“密钥识别错误,请插入正确的密钥”;当没有插入密钥或密钥不能读取时,提示“请将密钥插入到USB接口”。密钥相关提示窗口都设有“确定"和“取消”选择,如果用户需要打开或继续使用软件,那么可以重新进行密钥验证;如果用户不能提供合法USB加密狗或不希望使用该软件,那么本系统自动安全退出。主要代码如下:matchDriveLetterWithSerial0:stringpath=System.Windows.Forms.Appljca£iorl.StartupPath+”\\coad.ini”:readtxtcod(path):if(serialNumber.Count>0)、(foreach(stringcincoad)(foreach(stringcoadnumberinserialNumber)(if(c==coadnumber)(flag=true;}40 太原理工大学硕士研究生学位论文)if(!flag){DialogResa]tresultl=MessageBox.Show(”密钥识别错误,请插入正确的密钥”,”密钥错误提示”,}lessageBoxBut;tons.OKCancel,}lessageBoxIcon.Information):if(resultl==Dia]ogresult.OK)(10adcheck(fm):)else{System.Windows.Forms.Ap阻icatiOil.ExitThread0:)else{DialogResu]tresult=MessageBox.Show(”请将密钥插入NUSB接口”,”密钥插入提示”,麓essageB()x至j}utt。ns.OKCancel,MessageBoxIcon.Information):if(result==DialogResu]t.OK)(10adcheck(fm):)else(System.Windows.Forms.AppljcatiOI。1.ExitThread0:)5.2图形管理与人机交互对于供水管网管理和设计来说,不同比例尺的管网图和地形图至关重要。在晋城市供水管网管理系统中,操作和管理的地图为DWG格式的电子图件。AutoCAD.NETAPI技术、COM技术、人机交互技术是图形管理子系统实现的关键。5.2.1AutoCAD.NETAPI技术NET环境下对AutoCAD进行二次开发主要是用到AutoCAD.NETAPI对AutoCAD应用程序进行操作n81。利用.NETAPI的功能,用户可以采用程序操作AutoCAD。这种方式既4l 太原理工大学硕士研究生学位论文能从内部开始,也能从外部进行。只有它将AutoCAD对象显示到“外部世界”,编程语言和环境才可以访问它们。API是一种包含动态连接库文件中的函数。AutoCAD.NETAPI就是Autodesk公司提供给.NET用户的CAD二次开发函数。使用C#对CAD二次开发实际上就是通过编程的方式使用AutoCAD.NETAPI提供的程序集对AutoCAD和图形文件进行自主操作,得到实用性更强的文件、功能或系统。对于本系统而言就是利用这些技术手段在CAD软件的基础上建立符合晋城市供水管网设计和管理实际需要的信息管理系统。用于访问AutoCAD程序对象或图形文件对象的结构、类、方法、事件都包含于动态链接库文件中。本系统开发所使用的2010版AutoCAD的托管程序集由两个动态链接库文件组成。这两个文件分别为acdbmgd.dll和acmgd.dll,它们包含了.NETAPI的所有外包类。其中AcDbMgd.dll用来处理图形文件对象,其中包含的命名空间和类可处理DWG文件和CAD数据库的各种相关操作;AcMgd.dll用来处理AutoCAD应用程序,比如说文档对象、程序对象。在VisualStudi02008平台上建立C#I程文件,打开CAD的安装目录添加引用上述DLL文件。防止加载DLL文件到AutoCAD中引用文件副本的可能性,在成功引用acdbmgd.dll和acmgd.dll之后,应将引用的“复制本地”属性设为False。至此,本工程可以使用API相关动态链接库文件里提供的全部API组件和所有的命名空间,接下来就可以使用AutoCADAPI函数了。对于程序的初始化和清除,不同开发工具所采用的方法不一样。ObjectARX程序的载入点是“acrxEntryPoint”函数㈣1,调用这个函数就可以完成该操作。在.NETAPI中实现起来相对麻烦。IExtensionApplication接口包含有两个功能函数,一个是Initialize函数,另一个是Terminate函数。在程序被加载时,Initialize函数可以实现程序的初始化;程序被卸载时,Terminate函数可以完成清除操作,但是调用函数之前需要封装初始化代码。实现代码如下:publicclassMyARX:IExtensionApplication(publicvoidInitialize0{//初始化操作}42 ———————————————二堕要里三奎堂堡里型堂堡堡壅1)ublicvoidTerminate0f//清除操作5.2.2COM与.NETAPI的互操作Aut。cAD·NETAP工的编程接口是由ObjectARX币HActiveXAutomati。n交叉实现的。通过·NETAPI,程序员可以方便的使用ObjectARX署tlActiveXAutomati。n技术。目前,二次开发函数没有全部封装进.NETAPI,但是通过COM方式使用Activex可以弥补当前·NETAP工些许不足。增加了COM引用后,应用程序通过引用COM来使mActivex能够直接访问cAD的根对象和文档对象。在建立Visualstudi。c#工程后添加acdbmgd.dll、acmgd·dl1和Aut。CAD2010TypeLibrary为调用二次开发函数做准备。在建立的工程项目中添加Aut。CAD2010TypeLibrary即可添加下述命名空间。usi’ngSystem:usi‘ngSystem.Collections:usi‘ngSystem.IO,"‘usi‘ngSystem.Data;usingSystem.ComponentModel:usi‘ngSystem.Diagnostics:usi+ngSystem.Management·usi‘ngSystem.Net:usi‘ngSystem.Web:usi’ngSystem.Xml:usi‘ngSystem.Linq;usi’ngSystem.Text:usi’ngSystem.Drawing;usingSystem.Text.RegularExpressions:usi‘ngSystem.Data.SqlClient:usi’ngSystem.Data.OleDb,"usi’ngSystem.Data.SqlClient:uslngSystem·Security.Cryptography:usingSystem.C01]ections.Generic:usingSystem.Windows.Forms:usi’ngInfragistics.Win;usingInfragistics.Win.UitraWinGrid:usingAutodesk.AutoCAD.Interop:usingAutodesk.AutoCAD.Interop.Common:43 太原理工大学硕士研究生学位论文usingAutodesk.AutoCAD.DatabaseServices:usingAutodesk.AutoCAD.Runtime:usingAutodesk.AutoCAD.hpplicationServices:usingAutodesk.AutoCAD.EditorInput:usingAutodesk.hutoCAD.Geometry:其中,system是类库,包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、属性和处理异常的基础类和基类:System.collections是集合,包含定义各种对象集合(如列表、队列、位数组、哈希表和字典)的接_口和类:System.Collections.Generic包含定义泛型集合的接口和类:System.ComponentModel提供用于实现组件和控件的运行时和设计时行为的类:System.Data包含组成大部分ADO.NET结构的类,可以生成可用于有效管理来自多个数据源的数据的组件:System.Drawing提供对GDI+基本图形功能的访问:System.Text包含表示ASCII、Unicode、UTF一7和UTF一8字符编码类和用于在字符块和字节块之间相互转换的抽象基类,以及不需要创建字符串的中间实例就可以操作和格式化字符串对象的帮助器类;System.Windows.Forms包含用于创建基于Windows的应用程序的类,这些应用程序可以充分利用MicrosoftWindows操作系统中的丰富用户界面功能。访问AutoCAD程序对象要引用Autodesk.AutoCAD.ApplicationServices,访问AutoCAD编辑器要引用Autodesk.AutoCAD.EditorInput,命令注册要引用Autodesk.AutoCAD.Runtime。在工程引用的命名空间中Autodesk.AutoCAD、Autodesk.AutoCAD.Geometry和Autodesk.AutoCAD.Runtime是包含于acdbmgd.dl中的,用于在图形文件中对对象进行操作。Autodesk.AutoCAD.App],icationServices和Autodesk.AutoCAD.EditorInput包含于acmgd.dll,用于对AutoCAD应用程序进行操作。5.2.3CAD启动初始化操作用外部程序启动CAD,就是要建立起系统与CAD的联:系。ObjectARX或NetApi只能在进程内使用,启动CAD程序或获得当前的CAD程序进程只能通过Com调用。使用Autodesk.AutoCAD.Runtime命名空间下的Marshal方法集中的GetActiveObject方法从运行对象表(progID)参数为AutoCAD.Application得至IJCAD对象的运行实例。如果没有CAD运行,则将其应用程序激活,且设置应用程序对象变量AcadApp的Visible属性为 太原理工大学硕士研究生学位论文true,实现CAD在后台启动的同时为用户显示其软件界面渤1。启动CAD的同时判断open函数包含CAD启动的核心代码,在用户所使用按钮的响应函数里面调用open函数。privatevoidopen0(try{AcadApp=(AcadApplication)System.Runtime.InteropServices.Mars]la.1.GetActiveObjeet(”AutoCAD.Application”):)catch(tryfTypeacType2Type.GetTypeFromProgID(proglD):AcadApp=(AcadApplication)AetiV?Itor.CreateInstance(acType,true):)catch(MessageBox.Show(”Cannotcreateobjectoftype\””+progID+”--):)if(AcadApp!=null){Acadkpp.Visible=true:if(AcadApp.Application.Documents.Count>O)(button5.Enabled=false:AcadApp.ActiveDocument.SendCommandrPOINT2,2,0”):AcadApp.ActiveDocument.Close(nul1,null):AcadApp.Application.Documents.Open(System.Windows.Forms,Application.StartupPath+”\\1.dwg”,null,null):AcadApp.ActiveDocument.SetVariable(”FILEDIA”,0):AcadApp.ActiveDocument,SendCommand(”Het1oad”十System.Windows.Forms.Application.StartupPath+,,\\sj.dll”+(char)13):AcadApp.ActiveDocument.SendCommand(”属性”+(char)13):AcadApp.ActiveDocument.SetVariable(”FILEDIA”,1):)else{button5.Enabled=false:AcadApp·Application.Documents.Open(System.Windows.Forms.ApplicatioH.StartupPath+”\kS.dwg”,null,null):45 太原理工大学硕士研究生学位论文一———————————————————————————————————————————————————————————_——————————————————————————————~AcadA。PP.ActiveDocument.SendCommand(”POINT2,Z0”):AcadApp.ActiveDocument.SetVariable(”FILEDIA”,0):AcadApp.ActiveDocument.SendCommandCnet1oad”+System.Windows.Forms.Application.StartupPath+”\lsj.dll”+(char)13):AcadApp.ActiveDocument.SendCommand(”属性”+(char)13):AcadApp.ActiveDocument.SetVariable(”FILEDIA”,1):5.2.4DWG图件的自定义操作AutoCAD.NETAPI有许多不同类型的对象。圆弧、直线是对象,标注和文字是对象,标注样式与线型也是对象;视图和视口等图形显示是对象,图层、组合和块等组织结构是对象,DwG数据库里面的图形文档和关系表是对象,甚至AutoCAD应用程序本身也是对象。对象是AutoCAD.NETAPI的主要构造块,每~个显示的对象均精确代表一个AutoCAD组件,它们之间又组成了不同的程序集和命名空间。实际上,DWG322件是一个存NNNx寸N数据,同时存储非图形对象数据的数据库文件。AutoCAD应程序通过Database类读I汉DWG文件,Document中所显示的数据由Application类从Database中提取。于是,用户就能看到前台视图。具体来说,首先使用CAD应用程序对象Application的Documents方法的C0unt属性判断当前窗口是否存在正运行的对象文件∞1I。如果存在,那么将其关闭并打开指定DwG文件;如果不存在,直接打开指定管线图文件。关键代码如下:privatevoidbutton4_Click(objectsender,EventArgse)(AcadDoc=AcadApp.ActiveDOcument:if(AcadApp.Application.Documents.Count>0)(if(AcadApp.GetAcadState0.IsQuiescent)(AcadApp.ActiveDocument.Close(nul】,nul1):AcadApp.Application.Documents.Open(System.Windo、】lrS.Forms.Application.StartupPath+”\\3.dwg”,null,null):button5.Enabled=true:)else(MessageBox.Show(CAD中有未完成的指令,请先完成该指令!):46 太原理工大学硕士研究生学位论文)elsefAcadApp.Application.Documents.Open(System.Windows.Forms.App]ieatiOll.StartupPath+”\\3.dwg”,null,null):)5.3属性管理与数据库技术数据是信息管理系统的血液,数据库中所存储的属性数据是供水管网上管道、管材的数据描述。采用数据库技术将这些管网数据和信息资源合理地管理起来,它们才能服务于管网日常管理和设计工作。为实现数据使用的科学性和高效性,本次开发中采用SQLServer数据库管理技术。5.3.1属性复合查询与统计的实现为了方便用户对管道信息的查询与统计,首先将数据加载到表“dataSeti.管道表”中,然后使用ADO数据访问技术并结合UltraGrid控件和DataGridView控件将数据显示出来,实现了模糊查询、多条件查询与统计功能。提供给用户的数据筛选项分别为“级别”、“管径”、“管材”、“管道位置”、“所在街道”和“所在分区”。ADO.NET数据库访问技术具有三个专用对象以执行特定任务,用于代替记录集对象,它们分别是DataAdapter、DataReader和Dataset。DataAdapter提供了一个数据库与DataSet之间的桥梁,能工作于不同的数据源。在只读和只进的连接模式下,DataReader对象从数据源读取数据,提供了高效获取数据的途径∞引。在断开数据库连接的情况下,DataSet对象从表中取出记录,并存放在内存中,提供了数据库内容的复制。采用这种方式查询属性就是直接访问数据库,并对数据库中的表进行读取查询操作。该功能的实现表示为流程图如下:47 privatevoidInfragistics.{数糍露图5-2复合查询与统计流程图Fig.5.2Theflowchartofcompoundquell]andstatisticultraGridl_BeforeRowFilterDropDownPopulate(objectsender,UltraWinGrid.8eforeR。wF主n.erDropDownPopulateEventM’gse)e.ValueList.ValueListItems.RemoveAt(1)if(”级别”==e.Column.Key){e.Handled=true:e.ValueList.ValueListltems.Add(newFilterCondition(e.Column,FilterComparisionOperator.Match,一⋯级管”),”一级管”):e.ValueList.ValueListItems.Add(newFiiterCondition(e.Column,Fiit.erCompafe.ValneWp坩):)ueList.isionOperatoValueListItei1terCondition(e.Cor.Match,ms.Add(1umn,Fiif(”管径”一e.Column.Key){一二二级管”),”二级管”)ltel’(b鼹par主sionoperat;or.Match,”三级管”),”三级管e.ValueList.ValueListltems.Add(newFilterCondition(e.Column,Fi]terComparisionOper‘ator.LessThanorEqualTo,50),”<50”):e.ValueList.ValueListItems.Add(newFilterCondition(e.Column,F主lterC()mparision()perator.LessThanOrEqualTo,100),”<】00”):e.ValueList.ValueListltems.Add(Fi1.terComparisiorion;·eratot.LessThanorEqualTo,150),e.ValueList.ValueListItems.Add(newFilterCondit.ion(e.Column,Filt({reomparisionOperator.LessThanorEqualTo,200),”<200”):e.ValueList.ValueListItems.Add(newF:ilterConditiorl(e.Column,Fi1te‘Comparisionf)per’at.or.LessThanOrEqualTo,250),”<250”):e.ValueList.ValueListItems.Add(newFi1terCondition(e.Column,FilterComparisionOperatol:.LessThanorEqualTo,300),”<300”):e.ValueList.ValueLiStltems.Add(48nmU,●iOCe,L1O_lt,tidO(£eC.r1、,.,jpFO5Ⅳle(ptMin[O]一dist)&&ptPic[0]<(ptMax[O]+dist)&ptPic[1:I(ptMin[1]一dist)&&ptPic[1]<(ptMax[1]+dist))(sj.Form2idfrm=newsj.For‘m20:idfrm.getgdid=id:idfrm.Show0:m_DbClick=true:)50 太原理工大学硕士研究生学位论文5.3.3信息添加、更新与存储数据库由数据表构成。在面向对象编程中,实体对象一般表示为数据表,实体对象的属性表示为表中的字段。数据表是一种特殊的数据结构,每个表的字段数、字段类型、字段长度和其他约束均不相同。但是,对表进行修改、删除、插入、查询等存取操作相同。DataSet对象是ADO.NET的核心【531,它不但能够批量更新数据,而且能高效处理所读取的数据,还能提供了更好的编程实现数据库更新的功能。因为DataSet对象与数据库始终是不连接的,可以添加、修改和删除DataSet只?象中包含的任何脱离数据库连接的记录。在完成他修改了之后,可以通过将DataSet对象链接到DataAdapter对象来记录传输给数据库[541。关键代码如下:publicDataSetdatadr(stringid,stringdataname)stringmysql:switch(dataname)(case”管道表”:mysql=舻select冰from,,+dataname+∥whereID=’,,+id+∥’∥:break:default:mysql=”select术from”+dataname+”where编号”+id+”’”:break:)SqlConnectionmycon=newSqlConnection(con):SqlCommandmycom=newSqlCommand(mysql,mycon):mycon.Open0:DataSetds=newDataSet0:Sq]DataAdapterda=newSqlDataAdaPter(mycom),:da.Fil1(ds,dataname):returnds:)privatevoidloadjied0c1]eckpd=newctbeck0:if(!pd.checkdata(this.textBoxl—1.Text.ToString0,”节点”))tDataSetdas=pd.datadr(this.textBoxl一1.Text.ToString0,”节点”):5l textBoxl1.Text2.Text3.Text4.Text5.Text6.Text7.Text太原理工大学硕士研究生学位论文das.Tables[0]das.Tables[O]das.Tables[0]Rows[0儿Rows[0][Rows[O][Rows[0][Rows[0儿Rows[0][”编号”].ToStrin90:”X坐标”].ToString0:”Y坐标”].ToString0:”所在管道”].”所在街区”].”所在分区”].”节点性质”].)}privatevoidbuttonl_Click(objectsender,EventArgse){try{stringfld01=floatfld02=floatfld03=stringfld04=stringfld05=stringfld06=stringfld07=ToStrin90:textBoxl_1.Text.ToString0.Trim(:):(float)Convert.ToDouble(textBoxl一2.Text.Trim0(float)Convert.ToDouble(textBoxl一3.Text.Trim0);4.——5.Text.ToString0.Trim(:}:ToString0.Trim():ToString0.Trim(:):ToString0.Trim():if(fldOl==null||fld01==~lfld01==””){MessageBox.Show(”节点编号不能为空,请输入节点编号!”):)else{ch∈,ckda=newcheck():da.deleteda(”节点”,fld01)://删除testDataSetTableAdapters.:{芎点TableAdapterwelcome.testDataSetTableAdapters.’专点’『ab:leAdapterintrows=jied.Insert(fldOl,fld02,fld03,if(rows>0){Jied=new():fld04,fld05,fld06,fld07):/l/存储MessageBox.Show(”数据添加成功!”,”成功提示窗”,MessageBoxButtons.OK,辩essageBoxIcon.Information):)else{MessageBox.Show(”数据没添加成功!”,”失败说明甯”,,磁essageB()xButt(ms.OK,粥essageBoxlco】,1.Hand):return:)5267 太原理工大学硕士研究生学位论文)catch(Exceptionex){MessageBox.Show(ex.Message))53 太原理工大学硕士研究生学位论文第六章晋城市供水管网管理信息系统的实现6.1系统开发及运行环境6.1.1系统开发平台晋城市供水管网管理信息系统的开发平台要求如下:(1)电脑硬件配置参数:CPU:2.0G、内存4G、硬盘500G;(2)操作系统:WindowsServer2008版;(3)应用软件:MicrosoftVisualC#、SQLServer2008、AutoCAD2010。6.1.2系统运行平台晋城市供水管网管理信息系统应在特定的环境中运行,要求如下:(4)电脑硬件配置参数:主频应达到2GHz及以上,内存1GB或IGB以上;(5)操作系统:WindowsXP、WindowsVista、Windows7;(6)运行环境:安装有DotNetFX35、SQLServerCompactEdition、SqlExpress、WindowsInstaller3.1和2010版AutoCAD软件。55 太原理工大学硕士研究生学位论文6.2系统功能实现图6-1晋城市供水管网管理信息系统主界面Fig.6·lThemaininterfaceofwatersupplynetworkmanagementinformationsysteminJinCheng系统大致包括七大功能,为了便于用户使用这些功能相应的按钮大多置于主界面上。使用“启动”功能,可在本系统内初始化AutoCAD,并迅速打开晋城市供水管网图;使用“1:10000管线地形图”功能,可调用1:10000比例尺的管网地形图;使用“1:1000管线地形图”功能,可调用1:1000比例尺的管网地形图;使用“添加管线属性”功能,可选择1:1000比例尺图上的实体进行管线数据添加;使用“管网属性查询”功能,可点击1:10000比例尺管网图实体进行快捷属性查询;使用“添加管件属性”功能,可选取1:10000比例尺管网地形图添加管件属性;使用“所有管道信息”功能,可直接进行属性数据的库操作。 太原理工大学硕士研究生学位论文6.2.1系统安全注册本系统内置了加密文件,安装之后必须使用USBI}【EY进行系统注册。成功注册之后,才能进入系统。图6—2为注册窗口,用户将USB加密狗插入计算机USB接口进行注册验证。懋鞠翻懑瘸裁闽鼷缀麟翳鬻麟鬻糍缀缓麓鬻赣蓑黪慰⋯¨|。;|.系统注册¨|。。j用户拄册说明书毳曩霎萎霎委磊委萋||善||蓑萋萋羹霪霎蒺萎篓_¨。÷ij。0。囝团翌塑}图6-2注册窗口Fig.6—2Discoverywindow如果没有检测到USBKEY,系统弹出提示窗口提示用户使用USBKEY以及如何使用USBKEY。提示窗口如图6—3所示。图6-3密钥插入提示信息栏Fig.6—3Thepromptingmessagehurdleofkeyinserted如果检测到的USBKEY是不合法的,系统弹出提示窗151提示用户插入正确的USBKEY来进行验证。如果用户持有USBKEY,重新验证即可。如果是非法用,j取消操作后,系统直接自动退出。提示窗口如图6.4所示。图6-4密钥错误提示信息栏Fig.64Thepromptingmessagehurdleofkeyerror57 太原理工大学硕士研究生学位论文6.2.2用户权限管理应供水管网管理和设计工作的需要,本系统设置了三个用户角色,即普通用户、高级用户、数据维护人员。角色的分配由系统根据用户手持的USBKEY级别直接分配权限,不需要用户来填写或选择。不同权限或不同身份的用户使用到的功能有所差异。当用户通过系统验证合法之后,便可以进入系统主界面使用被授权的功能。对于普通用户来说,只能进行地图浏览。进入主界面之后,只有“启动”可用。点击“启动”按钮,界面会显示出晋城市供水管网图,同时也激活了“1:10000管线地形图”和“1:1000管线地形图”按钮。如果要浏览比例尺为l:10000和1:1000的管线地形图,点击相应按钮即可。普通用户的使用功能可从界而.卜.表现出来,如图6.5所示。图6-5普通用户功能使用界面Fig.6—5ThefunctionaloperatingInterfaceofgeneralusers对于高级用户而言,除了能够进行地图浏览还能进行属性信息的查看。高级用户进入主界面,“启动”和“所有管道信息”功能按钮都是可用的。同样,要点击“启动按钮”才能继续使用管线地形图的浏览。在1:10000管线地形图上,高级用户进行属性快捷查询操作,系统便弹出自定义属性菜单来显示相应属性信息。系统为属性快捷查询的具体操作提供两种可选择的方式,一种为双击管段,另一种为点击主界面上“管线属性查询”按钮,然后在图上单击管段。用户可依照自身使用习惯来选择。“所有管道信息”功能, 太原理工大学硕士研究生学位论文是另一种属性查询的方式。不用选择管段,可以直接查询所有管道和管件属性,也可以根据需要进行多条件选择查询并统计属性信息。图6-6为表现在界面上的效果。图6-6高级用尸功能使用界面Fig.6—6ThefunctionaloperatingInterfaceofseniorusers数据维护人员可以使用本系统所提供的全部功能。供水管网改扩建引起图上管道、管件的地理信息和数据库中属性数据的变动。这些应变动需要的添加和修改,只能由授权的维护人员来完成。目前,本系统设计的自动成图模块尚未实现,维护人员只能手动绘图在DWG图上添加与修改管道和管件。属性信息的添加和更新在系统提供的管道信息添加窗口和管件信息添加窗口上进行。 图6-7维护人员功能使用界面Fig.6-7ThefunctionaloperatingInterfaceofmaintainers6.2.3多尺度管网图查询供水管网图是供水管网最直观的信息载体,它记录了晋城市供水管线及各种供水设施的实际情况和具体地理位置。这种需要妥善保存的图件,需要在实际生产中频繁使用,这些资料在对外服务、管网改造工作、扩建和设计中起着很大的作用。管网图的信息详略程度和操作方式不同会给用户使用带来影响。用户对地理信息详细程度的不同要求决定了系统可操作管网图件的多尺度特点。本系统提供了三种电子地图,分别为:管网图、1:10000比例尺管网地形图和l:1000比例尺管网地形图,分别见图6.8、图6-9、图6.10。本系统图件显示是由CAD来完成的,在此过程中,系统程序自动控制,不用用户手动选择打开文件的名称或存储路径。无论是希望浏览大比例尺图还是小比例尺图,点击“启动CAD”后,再点击相应按钮即可。打开管线图后,对管网图进行放大、缩小、移动等图操作与直接在AutoCAD软件中的各种操作并无区别。 图6-8晋城市管网图Fig.6-8ThetubenetworkgraphoftheJinChcngCity图6-91:10000比例尺管线地形图Fig.6-91:10000scalepipelinemap61 太原理工大学硕士研究生学位论文图6—101:1000比例尺管线地形图Fig.6—101"1000scalepipelinemap图6—11为细节图,通过“放大”操作用户可以清晰地查看管网铺设情况。图6-111:1000比例尺管线地形图放大图Fig.6—11Theenlargeddrawing1:1000scalepipelinemap62 太原理工大学硕士研究生学位论文6.2.4快捷属性数据查询CAD软件自带的属性管理不能满足晋城市供水管网管理工作的需求。快捷属性数据查询是系统中定制给用户属性查询的一种方式,即指定某根管道以管网空间范围设定的查询。这种方式可直观地将图形实体和属性信息联系在一起。用户选择“管网属性查询”后,选择图上某管段,就能够快速获得相应管道属性信息。在图中选择一条管段操作,在属性窗口清晰地显示了该管段信息:编号为PSZzJ53-J56,起点x坐标3929770.4106,起点Y坐标531546.799,终点X坐标3929149.799,终点Y坐标531522.2465,所在街道为泽洲路,管道级别为一级,所在分区为B区,管道长度为641.4米,管径为600毫米,管材为球铸,承压等级数据不全,接口形式为承插,埋设时间为1905年6月,管道位置为人行道,起点和终点地面标高各为707.4米和697.29米,但是起点埋深和终点埋深尚未确定,信息暂时为空。图6-12自定义属性菜单Fig.6—12Themenuofuser-definedattribute63 太原理工大学硕士研究生学位论文点击管线属性窗口底部的“查询管件”按钮即可了解管件信息。在管件窗口项部有九个菜单按钮用以切换不同类型的管件信息。其中,阀门信息如下图:图6-13管件窗口阀门信息表Fig.6-13Theinformationtableofvalvesinthetubewindow这条管段上有四处阀门编号分别为:ZzF27、ZzF28、ZzF30、ZzF301,X坐标和Y坐标分别为:(3929765.8883,531547.0047)、(3929719.9021,531548.7399)、(3929199.8711,531568.3704)、(3929162.529,531529.5973),均为蝶阀,其型号均为600.1帛点习l●L堪蕾.蒜苦f■l鼍_E鞠I■lrj一1,警{i■■由l。矗曩Ili幽江蛙1=≮檀lm瓶。l鬟麓:尊鬻i。““董。j。㈣%M∞※《㈣}㈣《_一:黉㈦《1枉l》秘:《;蒋国}镬国如国·lICmI,謦融d;鼬t节点信息表躐霸躁;。鞲嘲嘲。鞠嚣。“884‘濯l翮孺黼黝麟斓嘲掰酾鞠嚣““舔灞灞霜嘲黼‰黼盔鬣蠲黼霭爨翻i叠翻zz承39291∞02335315∞“0I成iJs3一Js6泽州路0ztJsS39291b“3Ol10$3152224SSPsztJ53一js6泽州路BzzJ弱口tJ2¨39∞l‘gT∞$31啦-22"0S5I"S"Zt353一JsB泽州路B·l“一:.。r。“《—*_一一”11;;1图6-14管件窗口节点信息表Fig.6—14Theinformationtableofnodesinthetubewindow在这条管段上有三个节点,编号分别为Zz354、ZzJ55、ZzJ56(FtJ24),x坐标和Y坐标分别为(3929198.0233,531568.4401)、(3929155.8118,531522.2465)、 太原理工大学硕士研究生学位论文(3929149.799,531522.2465)。图6-15管件窗口排气阀信息表Fig.6—15Theinformationtableofexhaustvalvesintherobewindow该管道上只有一处排气阀,如图6-15所示:排气阀的编号为ZzPQF2,X坐标和Y坐标为(3929191.9319,531561.774),规格型号为“100”,类型为“单”等。对于三通、四通、消火栓等管件的属性信息查询方式大同小异,本文不再赘述6.2。5复合查询与信息统计一——嘲——⋯“《捌《赫Ⅻ《铺《%Ⅻ硝目瓣《错%∞ⅫⅫ##獬鳓,d一■一—·叫妒嫡导~鳙号;起觚坐标趋赢I坐标终点x鍪标终点I塑稼鳆勋v■矽最压等缀¨|-PSS#jJl一J3393陀409530T∞6393026{1645530701.879三级卫一黟管树PSB=H·J53921"333835553。653550839273359929530686.5066一级矿管长jP邬=J(I∥一T)一J(139280585769534T8450lS3921j056509253d,7866752一级—i亍一管泔待署PS:ByzcJ2—333930266859l528489S927393026710S65288,7et6524三级『管经F"SI)xa"-23一LfxJt393003I2771S3050083623931070726l5304692372二级妒级掰l"SI】x2"(58—1)一Mygs393104556015316291T99393lO∞4853163954二鳋l,SlWt_】"盯—2)一J盯一3392906394835291501107392906395345291772T05一级∥接口形式oPSFtJ28一J2939291533808531816835"3929153蹭82531824,02∞一级∥理设对溺_。I"S10tJgo一∞13929108s8955329820948392:91001993533352e122一组∥起点x坐曝rSHcJ4一J53930258906453367995323930261.3275336603358二级舻龆点I坐球l"Si-aU"40J5’3929S6259e,8530528193l392916950135306198"『『08一级矿起点地面掾主|PSm皿3一J243923"30I669530B踮99{T392"r2757762S30607365二级矿起点蟪渫譬I’Sl(xJ2卜J啦!一1)3929T3538125309H9734392973S13915309596393一鲠垮Ps}IxiJ2一J(2—1)393049887652973662939305958201529726090l三级舻所在分医瓢。矿所莅街道誊PSJsJ8一J939294646538S31183Z‘l"i,339鸽363312531188465l一鲠『终点x坐标PsJdq,l卜∞39300,7762452衢99.8871∞304T78114529593.615T三级t"SLl-d(1l-1)一llqry3929了29670253393l815l3929T29fi967533∞0846S三级妒终点T坐俅P捌jt-heJ2一J伫’3)3926576.1995314ST52663926526045553152844,52三强矿终点地面振PsI"gtJB一盯3928s21T1e,8528了408291∞2852l714,8528"r36829l二级∥耋簪点堙潦I*SF"I"Lx叮(1_2)一J(13929431081"452镐963174392啦65627d,5286963293三级嚣E9cIqan9q’R’a口Q^AA^"7Rc挣0qRl3’’79一蛹壶㈡·F翼’l。"q-”o’?呵黔‘ij‘“jj叠i曩__。蓿息套渖l、?_一信息荨出It图6-16管道全部属性信息查询图Fig.6—16Thequeryinformationdiagramoftubes’allattributes对于管道的复合查询和统计是由多条件查询与选择显示组合完成的。图6一16所示65 太原理工大学硕士研究生学位论文子界面左部设置了类型复选框,可选类型分别为:“编号”、“承压等级"、“管材”、“管长”、r。管道位置”、“管径”、“级别"、“接口形式”、“:埋设时间”、“起点X坐标”、“起点Y坐标”、“起点地面标高”、“起点埋深”、“所在分区”、“所在街道”、“终点X坐标”、“终点Y坐标”、“终点地面标高”和“终点埋深”。用户勾选不同的复选框,系统窗口便显示不同类型的管段信息。选择显示包括:单选显示和组合显示。单选显示包括19种显示方式,即:仅显示所有管道编号、仅显示所有管道承压等级、仅显示所有管道管材、仅显示所有管道管长、仅显示所有管道位置、仅显示所有管道管径、仅显示所有管道级别、仅显示所有管道接口形式、仅显示所有管道埋设时间、仅显示所有管道起点X坐标、仅显示所有管道Y坐标、仅显示所有管道起点地面标高、仅显示所有管道起点埋深、仅显示所有管道所在分区、仅显示所有管道所在街道、仅显示所有管道终点X坐标、仅显示所有管道终点Y坐标、仅显示所有管道终点地面标高、仅显示所有管道终点埋深。组合显示的显示方式就更多了,可以选择显示所有管道的编号和所在街道,可以选择显示所有管道的管长、管径和材质,可以选择所有管道的起点和终点的XY坐标,还可以所有管道的编号、埋设时间、所在街道、所在分区、承压等级、级别和接口形式。多条件查询:系统根据管网管理的特性设置了各种管线查询统计条件,按管材查询、按管径查询、按管道位置查询、按级别查询、按所在分区查询、按所在街道查询和组合查询。根据管道级别分为:“一级”、“二级”和“三级”;根据管段长度分为:“<50”、“‘<100”、“<150”、“<200”、“<250”、“<300”、“<350”、“<400”、“<450’’和“<500”;根据管径大小分为:“75”、“100”、“150"、“200”、“300”、“350”、“400”、“500’’、“600"、“700”、“800”;根据管材分为:“球管”、“玻璃钢”、‘‘PE管”、“铸铁”、和“PVC”;根据管道接口形式分为:“承插’’和“热熔”;根据管道位置分为“非机动道’’、“机动车道⋯’和“人行道”;根据所在街道大致分为:“西大街”、“北大街”、“东大街”、“建设南路”’、“兰花路”、“凤城路”、“太行路”、“景西路”、“新市西街”、“文昌街”、“新市东街”、“凤台街”、“太行路”和“泽州路”;根据所在分区分为:“A级”、“B级”和“C级”三个区。使用选择显示功能,如果仅选择所有管道编号,结果如图6-17所示。66 太原理工大学硕士研究生学位论文编号承压等缓营材营长管道经置管径级别接口形式埋设时闻起点燃标起点!坐标起点地面檬起点埋操所在分区崩在街道终点x坐标终点I坐标终点地面探终点埋深图6-17晋城管道编号信息显示图Fig.6-17Thetubes’numberinformatioudisplayingdiagramoftheJinChengCity若选择显示管道编号和管材,结果如图6.18所示。图6-18晋城管道编号及管材信息显示图Fig.6.18Thetubes’numberandmaterialinformationdisplayingdiagramoftheJinChengCity67妒一广一广一广一r一厂一广一L-一广一广一广一厂一广一厂一广一广一广一广一广 如选择显示管道的管材、级别和所在分区信息,则结果如图6.19所示。≥。函iii霾i囊鬻蠢i;il警i嚣。蠹4i溢鑫;瀚i蓍i誊赢=黪蠹滚i蠢警螂÷簿羹羹毒雾警;釜i澄瓤j苦,V。纛j?。j多曩I诵覃。i鞫灞酣最鄹冀gE*镧。。∞●‘EMil礤。’㈣7t蝴唠*V?月照£”i“x4≯簿咿。即n《V*一g酬了一彝喇虢j陉∞3024095307096三级棒蚨C1厂舞盼.t豢剃糕392T33383S55卸B535608一级球铸D麓ji⋯。雾i!盼;裁瀵j”3钯舯58.5769534T845015一级球铸Dj|¨I鬻≮缨蒺*:1_麟黼鹾囊藤j;3驰02∞85915284695927三级球铸C荔ji篱*i∥.;!r-二鸶簌瀵溺豢舶|3∞3l27715:幻S∞8362二缓悔铁^39:;1045.560lS316拍1799二媛睁陕^蠢i誊浮?豢萋。—1=『_}0“眷∞譬jRlhio二[攀嘲纛溯蓑j鬟眨帅.94835∞1501107一级哮博D9929ls33808S31816837一缓碡接器鬻ii辫强爹_|I广蠲[j窝:p|糍|_;1j麓睡i3929l∞.S895532蜘20948一缓l朝《钢D黪搿篱。纂∥;辑魏尊x坚鹾麴蓑‘鬟B0拳璐90B‘5336T99532二级D1r起氟垂赢辫渗3镀’56259485瓢628193l一缀Cj爹鬻鬻I|;Ii戮392730】B6953【)6∞9947二蓦夏球舞D鼍蔓丁巍童箝蘸i攀潮鬈3q2eT3s3812S3D∞49734一缀B。i爹爹j誉鬻爹。妒新臻≥女医i薹銎l蕤i3孵叭∞876529736.629三级C攀攀j爹篆鬻爹i广衢i自目罐萋囊瑟鬻3{抡口t盹65385311832473一镊B≯簿一一攀j≯—r茔鼋_獯x堑舔:一嚣攀勰b04TT624,52959988TI三级C磐鼍。篓蓍j誓誊王:黪鬻嘲攘3哪29.6702S33∞l61Sl三鳋球铸D39285781995314575266三顿球铎Di。瀵藜黪鬻爹。』∑繁垮哆曦溺鬻3孵碰浍l7l昭528T们8291二组球铸D广绥煮壤蘸嚣黪秘囊雾392钒31.087t528B∞3174三级C。格。鬻鋈.、镕蠹≥t⋯一⋯氯溺鬻:3{12993T.08l5299408936一圾Ci。。卅图6-19晋城管道多条件信息显示图Fig.6--19Thetubes’multi-conditioninformationdisplayingdiagramoftheJinChengCitty如若选择编号为PSZzJ86一J87的管道,再点击界面下部的“信息查询"按钮,则弹出管件窗口,在此窗口能获得该条管段上所有的节点信息、测压点信息、阀门信息、渐缩管信息、渐扩管信息、排气阀信息、水表信息、消火栓信息、三通信息和四通信息。如图6-20所示。 太原理工大学硕士研究生学位论文图6-20晋城节点信息查询窗口Fig.6-20Thenode-query-informationwindowoftheJinChengCity如果设置查询级别为“三级”、管径为“100”、管材为“铸铁”、所在街道为“泽州路”且限定只显示管道编号、起点和终点坐标、级别、管长、管径和管材,那么查询结果如图6.21所示。系统显示符合查询条件各管道的信息,统计结果为符合条件的管道供六条,管道总长度为444.30米—黼暖霹鞲嘲翮醑鞴丽鞲鞠鞠飘秘鞲辅磷鼎鳓涮獬獬糕鞲黼勰瓣瓣鞣赫赫彝§鼙{霉剥、’;㈧—_藕号起点£型繁起点¥坐拣缚搬坐标终点l坐标匐嘲叫营长’_营径一管奉|PsNpxJ3一J439313851382531203lT539313@178325311931829三竣12100铎钞PsNpxJ(3—1)一J(3’∞31455840553118622T339314∞1328531050415i三级140l100铸铮Ps即xJ(3—2)一j-(3—39315059巧45311T585483931529666253i2679918三级9S6100薅锌78Z:152一1)一j(sz—i一1)叭叫541【5317664539304023689531T561421三嫒125100涛镑PSXsJ62—1)一Jc523930404S4l5317684539304∞7085319435349三{夏178100铸锷PSD‘叮啦一1)一J啦一鹑30s343S125307498304鹌。黼5OgT35307558442三媛6ll∞锥铮台计:6条息长赝:4¨30j。,≯漤爹i。童攀』¨-_?|:;一≯萋ij图6-21晋城属性信息统计窗口Fig.6—21TheattributeinformationstatisticalwindowoftheJinChengCity6.2.6EXCEL报表输出69 太原理工大学硕士研究生学位论文Excel是微软公司推出的一种office软件,它内置了大量函数,还提供了强大的分析决策工具,此外还具有很多优点:人工智能特性突出、数据综合管理能力很强。使用Excel可以得到很多帮助,对于具体问题而言这些帮助都很有针对性。进行数据分析时,能够表示出柱状图、饼状图等各种统计图,使用户更加直观的分析数据。在本系统中,提供MicrosoftOfficeExcel工作表这种数据导出类型,便于用户对管网数据的基本操作处理、统计决策和预测分析。用户点击图5-19底部“信息导出"按钮,马上会弹出路径选择窗口,如图6-22所示。图6-22属性信息导出路径选择窗口Fig.6—22Theselectionwindowoftlleattribmeinformafion’Sderivedpstll选择保存之后,EXCEL表将被自动保存起来,同时该文件将自动打开。结果如图6.23所示。70 太原理工大学硕士研究生学位论文凌空l牛∞曩斌瞧】视田@I队q)搐式勤工且∞数蠡∞曹口瞧)蟹鼽∞誊新端旦∞蠢j矗萄_一。⋯_⋯⋯■.扫x尊·学鎏多固鸢·盘繁:‰矗懑·yr、盖-搽凌£-:i甜弩-整-t30--Oi若国霉魄骚疑簪镑蠡E呷中心^r,.1t。·Brg芒添粤回墨,:噶%·裟李委叠薹:磊t△·爻0叠瓣嬲撬黝镳瓣。t·,^l-氆扫编号K档_9Pr∞降U一*⋯RS:耄牵秘一基接口形式。_蠼设嗍。《■☆0是点地蔼标商起点埋海拇点疃面檬毫一『”缚点埋薅c。一。崩疆黼_燕在势甥≯2j面插机动车L埴739787415蠼适公司A3{,l承插机动车道72404721513撕币末街^4卜{承插机动车道7380873751撵州豁A5lj承掂机动车谨726372631南坪巷A6承抵机动车道7254272292离坪着^7承插机动车道7286273088寓坪譬^8晕掂机动车道722047220e瞄i路(躯盛装部’A9j承捕机动车堪720B"72654E行路‘堋区武装都)A10j最插199907机动车谨7094516070e96150太,傩^”毫最插机动车道7826470342太行踌^12j最插机动车遭703427043e太行龉A13l承插机动车谨7026470281160丈行踌^1毒《最娃扎动车谨,1939,1g29老千所A幅}最插机动jE谨7"92971g2El老千所^16最播I恸车灌r256972,34新市齐街AjZ承插机动车遵7273472,31撕市东街A馏{承抽机动车j苴7273472735新市幂街A191晕赫奢L动车道77G1372661瓤市末酱^,Bj最插机动车道7266172769新市车街^2t{赢插’99901机动车谨7276972771新市求掰A22i承插机动车畦12697r2657i剥H土地局A23:最撼机动车道7368220073681200苑北路A2E;承插机动车谨736e120073681苑北路^篱j最插机动车谨73691?3681103苑北路^。,R{蚤糯7"1n’^二“《t*hE、一●,l‘I}i‘■¨蝰宙氇)t畸自选压雕∞·\、口o+臻嘲蠲.镲蠲国。蠢”纛-矗·量型葺黛酒:。。薹j鬻《j:熬鬻。“援黪荔一强“i黛⋯一。螽暮黪i嫩”≯。一键蘩.誊芽⋯n嬲。裁纛黛嘲*、w图6-23属}生信息导出EXCEL表Fig.6-23TheEXCELtableoftheattributeinformationentailment6.2.7属性信息更新与添加管道改造、维护和扩建之后,供水线路和管网管材发生了变化。必然要对当前管网图做以修改,相应的属性信息也必须随之加以更新。需要将新增或改变的管道编号、管道起点坐标、管道终点坐标、所在街道、管道级别、所在分区、管道长、管径、管材、承压等级、接口形式、埋设时间、管道位置、起终点地面标高、起点埋深、终点埋深添加并保存到SQLServer数据库中。对于各种管材信息也要一一添加和更新,选定新增或改建的管道,进入管材信息添加窗口。对于节点信息要添加的内容有:节点编号、节点性质、x坐标、Y坐标、所在街区和所在分区,如图6.24所示。 太原理工大学硕士研究生学位论文图6—24节点信息添加窗口Fig.6—24Theaddingnodeinformationwindow对于阀门要添加编号、规格型号、阀门类型、所在节点、X坐标、Y坐标、所在分区及所在街道。如下图;图6—24阀门信息添加窗口Fig.6-25Theaddingvalvesinformationwindow对于其他管材信息,比如说渐缩管、渐扩管、排气阀、三通、四通等相关信息添加方式与节点信息和阀门信息添加方法相同,正确添加信息后选择“保存”,所添加的属性信息才能成功添加到数据库中。 太原理工大学硕士研究生学位论文7.1结论第七章结论与建议本文将AutoCAD二次开发技术应用于供水管网管理,以实现信息化管理为目的,基于AutoCAD二次开发平台,建立了DWG图形与属性数据库的联系,实现了供水管网的空间信息——属性数据一体化的现代化管理。本文的主要研究成果包括:(1)分析了AutoCAD二次开发技术的研究进展和管网管理信息系统的研究现状,并根据新一代开发工具DotNETAPI的特点,提出使用DotNETAPI技术的CAD二次开发是供水管网管理信息系统的发展方向之一。(2)分析了软件加密基本模式、加密实现方法、USBKEY加密原理和MD5算法原理。提出以软硬件结合为加密方式,以MD5算法为加密算法,应用现代密码学技术、智能卡技术和USB技术的软件加密方案。(3)针对供水管网信息管理的需求和用户的实际要求,进行了系统体系和功能设计。(4)根据用户需求结合供水管网数据的特点,设计了供水管网属性数据库的概念模型结构、物理表结构和存储过程。(5)基于AutoCAD平台,结合晋城市水资源数据,实现了水资源信息的动态管理,并进行了测试。目前,已经投入使用。7.2建议目前,本文的研究只取得了阶段性成果。在系统的研究和开发过程中发现了一些问题,需要做进一步探讨与更深层次的研究。这些问题表现在:(1)由于时间的限制,系统中的许多功能还不够完善,将来在水力计算、系统一体化、资料库、网络信息、三维模拟等方面还可以进行大量的补充,以使系统更加符合设计的实际需要。(2)由于供水管网数据量大,并且更新频繁,所以对系统数据库的复杂性的考虑还不够全面,未来必须对供水管网数据作进一步的研究,选择更合适的方案建库。71 太原理工型量堕主婴壅生堂垡笙茎————一———————————————————————一。(3)系统中为用户提供了多尺度的地图服务。不同比例尺地图表现的地理要素的详细程度不同。因此,使用自动成图功能模块更新地形信息和管网信息时,一要:b口入地图自动综合的算法才能保持地图信息的准确性。74 ——一一.太原理工大学硕士研究生学位论文———————————————————————————————————————————二__=∑二.参考文献【1】张海亚,基于GIS的城市供水管网爆管空间分析及预测[学位论文],天津,天津大学,2009[2]肖刚,李学,李俊源,机械CAD原理与实践(第2版)[M】,北京:清华大学出版社,2006:137.156[3]PeterTimothyWhelan.CAD/CAMDatabaseManagementSystemRequirementsforMechanicalPaas[D],Georgia,GeorgiaInstituteofTechnology,1989[4】赵双双,张作勇,蔡亚泽.AutoCAD二次开发浅析[J】.继续教育研究,2001,3:102。104[5]郝天轩,魏建平,杨运良等.数字化及可视化技术在矿井通风系统中的应用[M】,北京:煤炭工业出版社,2009:28.29[6】郑益民,赵永平.桥梁工程CAD[M],北京:北方交通大学出版社,2002:280—280[7]t子君,王凯富.煤矿CAD软件开发【M】,北京:煤炭工业出版社,2009:44-46[8】丁伯阳,岩土工程数字化原理与技术[M】,北京:科学出版社,2007:389.390[9]葛琳,给水管网优化设计及其CAD的研究[D],长沙,湖南大学,2003[10]袁--N,城市给水管网工况模拟技术及其应用的研究【学位论文],北京,北京工业大学,2005[11】魏武强,应用软件在铁路给排水设计中的集成与二次开发[J】.铁道勘测与设计,2010,05:249—25l[12]AutoCADDevelopmentSystemProgrammer’SReference,AutoDesk,Inc.[13]DouglasE.Comer,ComputerNetworksandInternetsDouglasE.Comer(5thedition)[M],PrenticeHall,2008:133-178[14】马朝群,晋城市城市公共交通可持续发展研究[D】,武汉,华中科技大学,2007【15]王会文,蒙城县供水管网数字化管理系统的设计与实现[D],合肥,合肥工业大学,2010[16]王晓斐,星载天线热分析平台开发的关键技术研究[学位论文],西安,西安电子科技大学,2009[17】杜平安,廖伟智,黄洁.现代CAD方法与技术[M],北京:清华大学出版社,2008:204.217[18]张田,基于.NET的AutoCAD二次开发实现矿图动态查询系统的研究[学位论文],贵州,贵州大学,2007【19】李咏红,CAD二次开发方法研究与实现[学位论文],成都,电子科技大学,20047S 太原理工大学硕士研究生学位论文[20】梁艳霞,曹飞,AutoCAD二次开发工具综述[J],计算机辅助设计与制造,2001,07:43—44[21】陈家祯,林艳钦,AutoCAD二次开发平台与开发实例[J],计算机与现代化,2001,02:103.106[22]刘其洪,林颖,李伟光,基于ObjectARX的CAD/C.a心/l系统的快速开发[J】,《精密制造与自动化》,2003,增刊:124—126[23】曾洪飞,张帆,卢择临.AutoCADVBA&VB.NET开发基础与实例教程[M],北京:中国电力出版社,2008:266—266[24]Zhuxinkai,Xulixin,Jiayonghong,USBInterfaceDataAcquisitionSystemHardwareDesign,ChineseControlConference,2006[25]McKinlayA.,VI.Softwaresafetyandsecurity.ComputerSecrityAppiicationsConference[J],ProceedingsoftheSixthAnnual,1990,313"~320[26]龌J振宇,蒋建春.密码学基础与安全应用一匕京邮电大学出版社,2008.10.1-2[27]BruceSchneier(吴世忠,祝世雄,张文政等译),应用密码学,北京:机械工业出版社,2000:3.10[281崔鹏,杨军,施进明等.加解密技术在我国新一代气象卫星数据传输中的应用[J],气象科技,2006,34(2):233[29]WilliamStallings,杨明,胥光辉等,密码编码学与网络安全原理与实践(第二版)(M),北京:电子工业出版社,2001"1—23[30]DouglasR.Stinson,密码学原理与实践[M】.冯登国译,北京:电子工业出版社,2003:2.36[31]WunnavaS.V,RassiE.DataEncryptionPerformanceandEvaluationSchemes.SoutheastCon,2002.ProceedingsIEEE,2002:234—285[32]NBS.DataEncryptionStandard,FIPSPUB46.NationalBureauofStandards,WashingtonD.C.,1977[33]DiffieW,HellmanME.Newdirectionsincryptography.IEEETrans.onInformationTheory,1976,22(6):644—654.[34]舒畅,MD5算法原理及其碰撞攻击[J],软件导刊,2007,6:103.103[35]张裔智,赵毅,汤小斌.MD5算法研究[J】,计算机科!学2008,35(7):295.295[36】孙科学,基于USB的硬件加密系统的设计与实现[学位论文】,北京,北京邮电大学,2006[37】黄德华,软件综合防伪及电子网络注册系统研究【学位论文】,西安,西北工业大学,200476 太原理工大学硕士研究生学位论文[38]徐海风,曹小军,软件加密方法与技术[J],山西冶金,2007,01:61-63[39】任立鹏,基于USB技术的软件加密锁研究与实现[学位论文],沈阳,沈阳航空工业学院,2010【40]朱兴星,基7:usB安全钥的文件加密系统研究与设计【学位论文】,长沙,国防科技大学,2008[41]王继东,基于客户软件的USB加密[学位论文],南京,南京信息工程大学,2006【42]杨辉,软件资源保护系统的设计与实现【学位论3c1,曲阜,曲阜师范大学,2006[43]来宾,谭明勇.数据库原理与应用【M】,北京:冶金工业出版社,2003:120—122[4411i孟宪虎,马雪英,邓绪斌.大型数据库系统管理、设计与实例分析:基于SQLServer[M],北京:电子工业出版社,2008:2.50【451孑L令德.毕业设计实例教程-从系统开发到论文写作(第二版)[M],北京:国防工业出版社,2007:85[46]杨云,王毅.ASRNET2.0典型项目开发[M】,北京:人民邮电出版社,2007:23.78【471i射宗晓,郭立生.信息安全管理体系应用手册:IsO/IEC27001标准解读及应用模板[M】.北京:中国标准出版社,2008:158[48】魏坤,陈开,竺长安,基于.NET技术与AutoCAD的产品数据管理系统研究[J】,制造技术与机床,2008,07:126.129[49]支1J林,麦智晖,阎汉生,NET平台下AutoCAD的二次开发[J】,CAD/CAM与制造业信息化,2006,01:29.30[50/g建,包装纸盒计算机辅助设计系统研究与实现[学位论文】,保定,河北农业大学,2009【51】熊刚,给水管网快速计算及绘图自动化[学位论文】,合肥,合肥工业大学,2007【52]郭丽,季焕淑,一个服务级双机热备系统设计【J],硅谷,2011,17:10[53]胡东明,龙门起重机金属结构CAD系统研究与开发[学位论文],大连,大连理工大学。,2009【54】彭勤涛,ADO.NET的数据库访问技术研究与应用[J】,电脑编程技巧与维护,2009,18:65.6677 太原理工大学硕士研究生学位论文致谢本文的撰写和系统开发都是在导师的悉心指点下完成的。在此向我的导师——一水利科学与工程学院杨军耀老师致以诚挚的感谢。在攻读硕士学位的三年里,杨老师教会了我很多,从大处讲有软件开发和水文地质,从细节上说有文档报告写作技巧、电脑组装、打印机墨盒安装等等。杨老师本人治学严谨、勤于研究,具有令人佩服的实干精神和渊博的学术知识,对研究动向和新技术的把握能力很强。:在杨老师的影响下,我进步很大,从“纸上谈兵”的理论爱好者转变成一个对专业知识和相关技术的学习和研究满怀热情的人。杨老师对我进行了认真负责地全面培养,希望我做技术时能成为优秀技术员,做项目负责人能够独当一面。但是我不够勤勉,想必老师教导起来也很辛苦。回首三年研究生生活,只觉得“师恩如海”。同时,也要感谢其他为我教授专业课的张永波老师、郑秀清老师、赵志怀老师、张锦老师和贾绣明老师。感谢我的父亲、母亲还有外婆一直以来对我的支持。感谢同门和朋友们温暖的鼓励和热情的帮助。特别需要感谢师兄王铭和李鹏对我学习上的指导;感谢好友刘彬、张伟、李辉、吴娟、郑霞对我的帮助;感谢同门张雷雷、师妹岳剑飞、师弟闰苗祥、韩冬、王震等人对我的鼓励;感谢开发过程中分享资料、一起讨论技术难题的网友快狗慢猪和雪山飞狐。最后,衷心感谢所有帮助过我的人!作者:王哲2012年3月'