1、Internet分步式共享资源模具开发摘 要随着信息时代的来临,计算机技术和网络通迅技术的飞速发展,信息化大大促进了科技前进的步伐,也给传统工业的制造模式带来了巨大的挑战。与此同时,在模具制造行业亦不可避免地面临着一次信息化的改革。本课题就是以此探索模具开发与流行技术的结合,从而希望实现更大的效率与质的飞跃。Internet环境下的模具异地协同工作是建立在最新Web技术、协同工作理论、网络数据库、网络化计算机辅助设计与制造技术的基础之上的,配合分析模具企业的实际需求,实现以B/S结构模式的开发设计。B/S结构基于Web技术,真正的实现了网络化模式。其只需服务器支持,客户端便可依赖于诸如Inte
2、rnet Explorer,Netscape,FireFox等Web浏览器实现交互。其主要目标是实现跨系统、跨地域、跨部门、互联互通、信息、资源、经验共享,以便利于设计人员查阅资料,分享经验,协同合作,从而促进开发速度,降低模具开发设计成本,提高企业运营的效率。本设计着重探索了其实现的主要问题,以及设计出初步的可行方案。关键词 Internet;模具;协同工作模式;B/S模式Mold development Under the InternetAbstract Along with the coming of technical times, the technology of compute
3、r science and internet communication develops in a high speed. Informatization not only accelerates the pace of technology to go ahead, but also takes challengeto the production mold of traditional industry. Meanwhile, the mode production industry facing an informational reform is inevitable. The pu
4、rpose of this topic is to achieve higher efficiency and efficiency development of this industry though investigating the combination of mold development and prevalent technique. Under the internet environment, the mold collaboration in different areas bases on the elements of last Web technique, col
5、laboration theory, Internet data base, Internet computer assistant design technique and manufacture technique to achieve the exploration design of B/S structural mode though analyzing the actual needs of the mold enterprise. B/S structure which bases on the Web technique really achieve the Internet
6、mode. Only sustained by the server, the clients of it can communicate with each other by Web browsers such as Internet Explorer,Netscape and FireFox, etc. The major purpose of it is to share information, resources and experienceamong different system, regions and departments, which is convenient for
7、 designers to check informations, share experience, so as to accelerate the speed of development, reduce the cost of mold design and improve the efficiencyof the enterprise.Keywords Internet; combination of mold development;mold design; B/S structure 35目 录1 绪 言11.1 概述11.2 中国模具行业背景预先状11.3 Internet分步式
8、共享资源模具开发的特点与实际意义21.4 模具协同设计系统开发工具22模具协同设计系统系统设计分析42.1系统、需求分析42.2模具协同设计系统的三层构架52.2系统整体规划设计63Internet分步式共享资源模具开发流程93.1模具协同设计系统基础框架93.2共享资源的解决方案123.3用户注册,登录,管理203.4协同式开发方案设计273.5权限设计314结论334.1设计总结334.2研究展望33致 谢34参考文献351 绪 言1.1 概述世记,人类迈进了信息时代。传统工业设计制作,依赖于画图板,三角尺的时代已经一去不复返了。网络的快速普及,Internet技术的快速发展与完善,加深了
9、生产社会化的程度。随着市场竞争的逐步加深,企业对网络的利用程度,直接影响着其综合竞争能力的提高。信息的价值, 越来越受到人们的重视。丰富的信息成为企业竞争力的重要组成部分,信息资源也越来越成为企业的战略资源。随着互联网的快速发展,为信息的传播提供了更广泛,更便利的途径。网络协同设计,辅助设计更是为企业在市场竞争转型提供了新的渠道。其便利的工作模式与设计模式实现跨系统、跨地域,跨部门、互联互通、信息、资源、经验共享等等功能,从而有利于企业设计开发人员更好的融入到开发过程中,更好地利用人类共同的知识财富。进而为企业生产缩短开发周期,降低生产成本,提高生产质量提供了可能1 2。1.2 中国模具行业背
10、景与现状中国的制作业起步较慢,但在改革过程中逐渐赶了上来。中国的模具企业大部分是中小企业,大规模的企业生产制造较少,一般是从作坊式的企业成长起来,甚至目前仍有许多模具企业是作坊式的管理,其竞争力水平不高。面对如此激烈的市场竞争,其落后的生产模式与管理水平,使其发展犹如逆水行舟,举步维艰。在模具设计制造时期,成本、技术、质量、沟通等问题层出不断,使模具企业中的管理和技术人员只有疲于奔命。因此,模具制造企业要提高竞争水平,具备快速反应和及时调整的能力,没有一套先进的管理系统实现管理的信息化是很难做到的。八十年代,制造模具的手段主要是依赖普通的机械加工设备,对于形状复杂的模具则是依靠钳工的技能来完成
11、,优秀的模具钳工在模具企业内起着决定性的作用,竞争的焦点在于谁有能力把模具生产出来。到了九十年代,CAD/CAM技术,数控加工技术及EDM加工技术逐步被广泛应用,制造出模具已经不是问题,CAD/CAM技术及数控技术的应用水平是衡量模具的主要内容,是模具发展的第一次变革。模具企业的管理模式也发生改变,管理也显得越来越重要。21世纪,网络技术、计算机应用等IT技术飞速发展,以及计算机技术应用成本的大幅降低、网络速度的提高、网络应用的迅速普及等等这一切说明信息化时代很快就要到来,谁能掌握主动,抢占先机,把IT技术尽快应用到模具企业,谁就能在开拓市场、提高企业核心竞争能力方面占有优势3。通过信息化建设
12、,实现模具制造信息化与协同设计。所谓信息化的模具企业,就是在模具企业应用INTERNET、ERP等信息化技术,把模具企业上下游业务过程,技术沟通过程,以及模具企业内部业务管理过程,以IT形式固定下来,最终提高模具企业的经营管理水平,提高模具企业运转的效率。并使用计算机网络辅助设计,加强开发设计人员之间的协作,以及共享资源与经验,对比以往设计人员查阅手册,分开设计(分任务设计),更有效地降低了成本,并提高了开发人员的开发水平4。1.3 Internet分步式共享资源模具开发的特点与实际意义CAD/CAM技术的推广已由“甩图板”阶段跨入到了深化应用阶段。CAPP技术的应用,可以大大提高企业工艺编制
13、的效率和准确性;PDM系统的应用,可以对产品开发数据进行有效的管理;MIS/ERP系统的应用,则可以从根本上降低企业的成本,提高生产和管理效率。这些系统之间实现信息的集成和功能上的配合,并逐步实现企业的全面信息化,已成为CAD/CAM技术深化应用的主题, 是模具发展的第二次变革。本课题密切结合中国模具制造行业的现状,探索性地进行了研究,务求找到一条行之有效的途径,提高企业的竞争力水平。CAD/CAM技术的推广已由“甩图板”阶段跨入到了深化应用阶段。CAPP技术的应用,可以大大提高企业工艺编制的效率和准确性;PDM系统的应用,可以对产品开发数据进行有效的管理;MIS/ERP系统的应用,则可以从根
14、本上降低企业的成本,提高生产和管理效率。这些系统之间实现信息的集成和功能上的配合,并逐步实现企业的全面信息化,已成为CAD/CAM技术深化应用的主题, 是模具发展的第二次变革。因此,结合信息技术,实现共享资源与协同分工,正符合模具发展的新方向5。对比以往,B/S结构的生产方式,在模具开发方面,其涉及不深。而现在网络资源急剧增加,若企业不能对其进行有效的利用与开发,将是一巨大损失。开发网络设计资源的目的就是通过网络技术,将散见于各地产品研发机构中的设计资源,以产品设计资源库的形式有机地组成一个整体,使设计人员能够方便、及时地通过面前的电脑获取所需的资源。运用网络设计资源,设计人员改变了手工获取设
15、计资源的状况,改面对面的设计组织模式为基于网络设计的异地协同设计模式,更有效于设计人员发挥主观能动性。网络企业的建立,总的来讲是基于INTERNET技术和计算机管理技术,并融合了EPR、CRM、SCM、PM等技术,以及一些行业标准化的规范。通过INTERNET技术,模具企业可以跟国内外客户建立联系,开拓更广阔的市场;进行企业与国内外客户业务、技术的沟通;建立企业和客户之间的接口。把INTERNET技术融合在模具开发中,还可以实现远程异地办公,提高企业的快速反应能力,更加有效地管理企业6。1.4 模具协同设计系统开发工具主要使用Visual Studio.Net2003与SQL Server作为
16、Microsoft的最新主流的开发工具,Visual Studio .Net为开发人员提供了最具效率的开发工具。良好的用户界面,使用托管式语言机制,使开发人员更得心应手。C#是一种最新的、面向对象的编程语言。C#语言从C和C+演变而来,它是给那些愿意牺牲C+一点底层功能,以获得更方便和更产品化的企业开发人员而创造的。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。它使开发者用更少的代码做更多的事,同时也不易出错。更值得一提的是,它完全支持现有的网络编程新标准。故选用其进行开发,
17、将方便与快捷7 8 9。Microsoft SQL Server基于关系型数据库的大型数据库系统,它具有独立于硬件平台、对称的多处理器结构、抢占式多任务管理、完善的安全系统和容错功能,并具有易于维护的特点。SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用10。C#,SQL server作为Microsoft推荐的两种开发工具,且在Microsoft推出.net之初,就为提升SQL server性能构建了SQLserver专用的访问类库,其性能得到大大的提升。因此,无论从哪个角度,选用这两种工具都使开
18、发人员游刃有余。2模具协同设计系统系统设计分析2.1系统、需求分析工欲善其事,必先利其器。在课题设计这么一个庞杂的过程中,预先对其做好充足的分析是非常必要的,有序的规划,开始时制订的标准,往往决定了其进展的顺利程度。设计之初,通过上网查找资料,详细分析模具协同设计系统系统及其组成,并进行详细的需求分析。参考文献1112有关章节中所述原理,同时对模具开发制造行业进行分析,使对系统有了大体的了解。针对本课题,其中要实现的资源共享,以及协同制造,其主要的工作模式在于共享与不同人员的参考,且要求跨系统,跨地域,其重中之重在于如何实现其共享的模式,以及模具设计人员协调的模式,经反复思考,修改后,在开始阶
19、段设计了B/S结构的系统大体框架图(如图1所示)。模具资源数据库服务器Web服务器Internet互联网络Internet设计人员设计人员设计人员模具企业管理人员资料管理员模具客户企业图1系统大体框架图从本质上说,在基于B/S结构的应用系统中,模具企业管理人员,设计人员通过浏览器连向互联网,再向服务器发送服务请求,Web根据不同的请求返回不同的内容。同样的,Web服务器自动判断来自用户的请求,向数据库服务器检索,操作数据。这样的优点是很明显的,作为模具企业或者模具开发人员,不必为其使用的客户端系统安装专用的服务程序,只需用浏览器连向Internet即可。而在此,只须在Web服务器和数据库服务器
20、布署配置完即可。这样优势是不言而喻的,其通用性,只要是在世界上任何能连向网络的机器向服务器发出请求即可,且可以让在网络内的用户实时获取所需内容。其模式,只需要一个浏览器便可实现基本的操作,无需其他操作,这种模式大大简化了客户机的工作模式。在另一个方面,由于网络的开放,资源共享,允许更有优秀的模具设计人员参与其中,效率由此可以得到很大的提升。虽然此模式大大减轻了对客户端的要求,而与此对应的是其对服务器的要求相应的负担加重了,服务器的负荷必须支持多用户的同时连接,并保证传输质量。其对服务器的硬件要求超出了很多客户机的要求,然在网络化大行其道的今天,服务器的配置只是充当了一个基本的角色,其硬件的要求
21、已经基本满足行业发展的需要。2.2模具协同设计系统的三层构架采用现流行的开发模式,基于Web模式的B/S三层结构。目前,互联网中绝大部分的网站和大多数Web应用系统都采用了这种体系结构。由于采用三层结构的Web应用程序基本上可以实现传桌面应用软件的绝大部分功能,所以Web就不仅是模具企业,模具开发人员发布信息的平台,而且也是软件开发的平台。使用三层结构,主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级。从计算机辅助设计制造软件的设计原则,更好地符合了扩展性、实用性、易用性的原则。参考文献13所述原理,在采用三层体系结构的Web应用程序中,Web浏览器向Web服务器请求某个HTML文档
22、或者请求某个脚本程序。Web服务器根据Web浏览器请求文档的类型执行相应的操作;如果Web浏览器请求的是某HTML文档,Web服务器就返回该文档;如果Web浏览器请求的是某个程序,Web服务器则执行(或者调用外部程序执行)该程序,然后将程序执行的结果返回给Web浏览器。其具体原理如图2:结果命令应答请求Web浏览器Web服务器数据信息图2系统大体框架图从目前因特网上基于B/S结构的网站来看,或是从某些高端WEB应用服务器软件的应用设计来看,动态网站应用要可扩展,可伸缩到大规模,必然采取三层结构。即明确地划分WEB服务器、应用服务器和数据库服务器三层并在不同层面上作进一步的负载均衡控制。从本课题
23、设计选用的开发环境与工具出发,.Net下三层结构包含: 模具设计系统表示层(USL)、模具协同设计业务逻辑层(BLL)、模具数据访问层(DAL)(如图2所示)。模具数据访问层:主要是对原始数据(模具开发中所需的资源,或者模具系统的资料)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务模具协同设计业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。模具设计系统表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成aspx, 如果
24、逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。图3三层结构原理图2.2系统整体规划设计由以上详细的分析,结合模具企业的工作模式,从协同模式与开发模式分析,初步规划好模具设计协调工作模式的整体框架(如图4所示):注册:以方便系统管理人员,模具开发人员,资料管理人员进行登录,并要求注册者提供详细的联系资料,以及相应的简介。方便模具企业进行联系沟通。企业留言:为客户提供一个留言平台,以方便客户发送请求给模具企业,客户可在留言板上填写详细的要求(一般是模具制造的要求),并在留言板中必须填写详细的联系方式,最后发送给系统管理员。设计开发人员:首先必须进行注册,然后进行登录系统
25、,才可执行相应的操作。1.参与项目:为了确保开发人员的真实性,设计开发人员必须通过管理人员在后台对其认证才可参与到项目中。否则将无权参与项目。其次,参与到项目中的设计人员,可在回复中提出自己的解决方案,并汇报项目的进展情况。其允许不同的模具设计人员在不同的平台,不同的地域通过Internet联系在一起。2.资料检索:对于模具开发人员,开发过程中需要检索的数据。信息资源呈现的方式,初步以目录的方式方便开发人员查找与阅读。3.个人信息管理:开发人员自身的资料管理,需提供详细真实的资料,以便管理人员进行沟通联系。管理人员:登陆后行使所有的管理权限,1.用户管理:对注册开发人员进行管理,通过注册资料与
26、设计开发人员取得联系,确认后进行认证,认证后设计人员可参与到项目中。其中,对提供虚假信息的注册人员进行删除。2.项目管理:在这里可添加新项目,对现在的项目进行管理,包括锁定项目,删除等。同时也在此处给查看项目设计人员的回复,给予指导。或者发现相关的问题,及时进行锁定。3.企业留言管理:通过企业的留言,得到企业大体的设计需求,并通过其联系方式主动与客户取得联系,详谈模具设计具体要求。其次对于无用企业留言信息可进行删除等。3.发送邮件:网上主要沟通方式,Email在互联网发展过程中占有重要地位,其联系的方式得到大多数的认可和使用。故在管理系统中也添加了此项功能,方便管理人员发送邮件,而省去用其它方
27、式发送邮件的麻烦。4.资料管理,主要是为模具设计开发人员提供详细的模具开发方面的资料。并在后台中对资料进行分类,添加,编辑,删除等管理。资料录入人员:以在模具设计开发方面资深人士进行资料汇总,专职负责资料的录入与管理,以减轻管理人员的负担。但其并不参与到其他的模具设计项目的操作中。综上所述,模具协同设计系统可实现明确分工,以及布署模具开发人员进行协同开发设计。网站主界面企业留言开发人员资料录入人员系统管理人员企业留言产品设计需求联系方式资料检索登陆参与项目跟进展示所有全部项目个人资料管理修改密码登陆人员注册注册类型填写详细资料网站人员管理开设项目课题企业留言信息管理发送邮件资料管理项目课题管理
28、修改密码退出系统目录管理资料录入图4系统框架图3Internet分步式共享资源模具开发流程3.1模具协同设计系统基础框架首先为模具协同设计系统构建网站服务器环境,在这里结合本课题的需要,使用是IIS服务器,也就是Window自带的Internet信息服务。先我的电脑里面新建项目所在的目录,并在IIS里新建一个虚拟目录ME,其目标指向本课题所在的目录即可,以后便可以通过浏览器,在地址栏输入Http:/localhost/ME/,进行访问。如下图。图5Internet信息服务图在Visual Studio .Net中新建项目,选择ASP.NET Web项目,指定解决方案目录,生成模具协同设计系统的
29、解决方案,并分类构建数据库连接层(db.cs),系统公用层(sys.cs),网页公用层(web.cs),页面分页类(pager.cs),文件处理类(FileSys.cs),网站用户类(WebUser.cs)。建立项目成功后如下图6。以上是系统继续开发的基础。图6系统结构图其次,为模具协同设计系统配置好开发所需环境。设置好web.config文件,为整个B/S模式网站做好配置,代码如下:其中,这里Constr为配置SQLServer模具数据库与模具协同设计系统连接的字符串,Email为系统发送Email所需的Email的用户信息,其中Email为发送者Email地址,EmailUser为发送服务
30、器的用户名,EmailPWD为发送服务器的密码,EmailSmtp为Email发送所必需的SMTP服务器地址。接下来,为开发工具Visual Studio .Net配置数据库连接,以便可以更好地得到数据库支持。配置如图7。图7数据连接图最后测试数据库连接是否连接正确。点击测试连接(T)按钮,若连接正确,则可以实现数据传输,效果图如图8。图7数据成功连接图3.2共享资源的解决方案本课题的重要内容之一是实现模具开发人员共享资源,其主要资源是以往的知识所得,且已形成比较固定的规模。因在设计中经常要查阅各种标准,规范和手册,其中包括几何图形,文字资料,数字信息等大量数据。如何存储,检索,管理这些数据,
31、是开发过程中必须认真解决的一个重要问题。在传统的设计过程中,模具设计人员通过查手册,阅读相关说明文档等工具书获得相关数据资料,其效率不高,资料的开放性不足。目前,能比较好地解决共享问题的数据处理方法,被公认为是数据库技术。所以,在本课题中也使用数据库技术进行全部资料,信息的管理,实现信息的集成与系统处理。在数据库设计过程中就是运用数据库和文件的形式加以管理,从而在计算机上实现方便的管理,配合网络,实现这些资源的共享,使异地的开发人员可以方便的调用。最终反映出来的是设计开发信息的共享和数据的交换。因为考虑模具开发的资料、资源,其分类与知识结构符合树形特点,且用树形结构直观易于开发人员直接使用以及
32、检索,因其分类明确,且可以无限的扩展内容。且在ASP.NET中提供了完善的树形目录的解决方案:使用控件TreeView。树形目录经典的解决方案是用递归算法。递归算法的优点就是简洁,可扩充性好。为了解决树在生成过程中的层树不定的问题,同时也是为了让树的扩展性更好。树的生成使用了递归的方法。生成树的代码一旦写成,可以不改动源代码,生成无限级层次的树。树的结构完全由数据库中表的数据决定。故设计树形结构目录的存储模式:由于树形结构是一类非线性数据结构,其分支关系,以及同级关系类似于自然界中的树。参考文献14,对树的存储结构的分析,由此采用近似的双亲表示法,即每个节点只有唯一的父节点。具体参见文献对算法
33、的描述,此处略。考虑本课题对资料的索引关系要求对其分类明确,双亲表示法中只显示父级节点继承的原理对树形目录的管理实现存在一定的难度与繁杂。如在显示从子节点找到根节点的关系时,由于只有一个上级父级节点的继承,在显示继承关系时,则必须遍历整个树开结构,其程序的开销是得不偿失的。故在数据存储之时,就在存储完整的树形继承关系链:“根节点_父节点1_父节点2_父节点3_.”。如对任一节点N,其继承关系字段就存储为:“0_1_6_.M_”,其中表示的关系就是从根节点0到1再到6一直到M,M就表示上一级的节点值,若此极点再生产子节点,则子节点的关系为:“0_1_6_.M_N_”,如此可一目了然的知道其中的父
34、子级的关系,更利于操作。具体树的生成递归算法原理如下图:是否开始从数据库取出以0-开始的所有根节点显示根级内容取父节点N,父节点ID自动生成子级继承关系链N_ID从数据库中取出所有N_ID级的内容显示判断是否存在M_ID取父节点M,父节点ID自动生成子级继承关系链M_ID结束图9递归原理图具体递归算法代码如下:void BindTree(TreeView TV)DataRow rs = dt.Select(TreeID=0_,pid);foreach( DataRow r in rs)TreeNode rootnode = new TreeNode();rootnode.Text = rtit
35、le.ToString();rootnode.Target=main;rootnode.ImageUrl=images/root.gif;TV.Nodes.Add(rootnode);rootnode.NavigateUrl = Catalog_Manage.aspx?node=+rootnode.GetNodeIndex()+&id=+rid.ToString()+&TreeID=+rTreeID.ToString()+&pid=+rpid.ToString();CreateTree(rTreeID.ToString()+rid.ToString()+_,rootnode);void Cre
36、ateTree(string TreeID,TreeNode tn)DataRow rs = dt.Select(TreeID=+TreeID+,pid);foreach( DataRow r in rs )TreeNode tempnode = new TreeNode();tempnode.Text = rtitle.ToString();tempnode.Target=main;tn.Nodes.Add(tempnode);tempnode.NavigateUrl=Catalog_Manage.aspx?node=+tempnode.GetNodeIndex()+&id=+rid.ToS
37、tring()+&TreeID=+rTreeID.ToString()+&pid=+rpid.ToString();CreateTree(rTreeID.ToString()+rid.ToString()+_,tempnode);其实现原理说明如下:BindTree函数实现树开目录的绑定,在BindTree中绑定根节点,其中数据存储为“0_”。rootnode.Text 是为树目录节点设定显示的文本,rootnode.Target 为节点设计超链接转向的框架,这里是转到main框架,这样使用页面框架的好处是在每次更改显示节点时,可不刷新树形目录,如此可大大提高程序的效率,因为相对来说,动态树形
38、目录的显示,如上述原理,是采用递归算法的,虽然递归算法有以上所述的优点,但其缺点也是很明显的:低效。因为递归就是程序不断调用自身,对系统的资源消耗比较大。随着节点的增多,执行效率会变的很低。故若在页面反复执行树形目录绑定,则其实现并不合理。考虑至此,在浏览器中实现用框架访问,节点的超链接是指向main框架的,如此,便可避免访问不同节点时,达到不刷新树形目录页面,而是在框架指向的页面中刷新。rootnode.NavigateUrl指定节点所访问的超链接的地址。在完成上述设置后,使用控件TreeView绑定数据,TV.Nodes.Add(rootnode)。CreateTree中传入父节点的值,自
39、动查找与之匹配的子节点,对子节点的绑定,绑定原理与rootnode绑定数据是一样的。然后自动以子节点为下一级的父节点,自动调用CreateTree,如此递归,直至遍历到树形目录的最小子级,递归结束。实现效果如下图10:图10树形目录图并且要实现动态的管理功能,便于资料的更新。其功能要求添加子目录,删除子目录,编辑标题,添加文章,修改文章等,并要实现更人性的功能:上移,下移功能。更要实现人性化的操作,使用者才能得心应手。故综合以上因素,设计如下图11。因规划中已对树形目录做好了继承关系的存储,故目录的添加与删除不存在大问题,添加目录只需找到要节点,然后根据节点的关系,生成另一关系链存储即可。但此
40、时排序功能却是难点之一,因要实现动态的排序,上移,下移,并要固定改变带来排序的不同。因此必须在数据存储时加一标识字段,来标记节点的排序位置。设计之初,排序的使用了整个树的排序,加了个字段标识所有的节点,然其效率低下,因为位置的改变是通过改变继承关系链来改变的,因而一个节点的改变就可能引起整个树的位置的改变。再三思索,查阅了顺序文件,索引文件的检索方法,得出,若将关系链与排序标识分开,显示树形目录之时,只需提取同级的所以节点,然后在这所有节点中标识一个字段来进行排序即可,这种排序不涉及父子级的继承关系,排序也只在一个树形分支内完成,与整个树形的排序相比,其程序的开销远远地小于整体的排序,效率因此
41、也得到了巨大的提高!图11树形管理图其节点移动的代码如下:void Move(string order_str)string pid1,pid2=,t_pid=-99999999;pid1=Requestpid;sql=select * from CATALOG where TreeID=+RequestTreeID+ order by pid +order_str;DataTable dt=db.GetDataTable(sql);int i=0;foreach(DataRow r in dt.Rows)if(int.Parse(rpid.ToString()=int.Parse(pid1)
42、pid2=dt.Rowsi-1pid.ToString();i=i+1;sql=update CATALOG set pid=+t_pid+ where TreeID=+RequestTreeID+ and pid=+pid1;db.ExecuteNonQuery(sql);sql=update CATALOG set pid=+pid1+ where TreeID=+RequestTreeID+ and pid=+pid2;db.ExecuteNonQuery(sql);sql=update CATALOG set pid=+pid2+ where TreeID=+RequestTreeID
43、+ and pid=+t_pid;db.ExecuteNonQuery(sql);其实质就是进行要改变排序两行的位置标识,用一临时变量存储用于交换即可。在实现代码中,先取得要移动的两节点的PID值:pid1,pid2,并取一临时变量t_pid,这里t_pid=-99999999,因为这个值通过预测不可能出现在程序中,故可用来标识,以便利于实现交换。通过获取要移动的pid1,按传入的参数确定上移或下移,再确定与pid1相临的pid2的值。然后根据树继承关系链的值TreeID和PID结合,首先把pid1换成t_pid,接着把pid2换成pid1的值,最后把t_pid换回成pid2的值,即实现了上移
44、或下移的交换。然对于移到最上或最下,参考文献15,对数据库技术,利用了一点小技巧,因数据库本身对数据的处理有Max与Min,故实现移到最上功能代码如下:sql=select min(pid) from CATALOG where TreeID=+TreeID+;int MinID=int.Parse(db.ExecuteScalar(sql).ToString()-1;sql=update CATALOG set pid=+MinID.ToString()+ where ID=+ID.ToString();db.ExecuteNonQuery(sql);其原理如下,先在数据库中通过sql语句s
45、elect min(pid) from CATALOG where TreeID=+TreeID+,从同一级别的TreeID组中,取出最小的PID值MinID,然后要使所选节点的位置排至最上,则只需把PID值等于MinID值减一即可。反之则移至最下。sql=select max(pid) from CATALOG where TreeID=+TreeID+;int MaxID=int.Parse(db.ExecuteScalar(sql).ToString()+1;sql=update CATALOG set pid=+MaxID.ToString()+ where ID=+ID.ToString();db.ExecuteNonQuery(sql);与移至最上原理相似,先在数据库中通过sql语句select max(pid) from CATALOG where TreeID=+TreeI