- 2.56 MB
- 2022-05-17 11:09:45 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
本科毕业论文(设计)题目实验室设备管理系统-出入库管理模块学院计算机与信息科学学院专业计算机科学与技术年级200X级学号22200X0806050XX姓名XXX指导教师张元平成绩_____________________200X年X月XX日1计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块实验室设备管理系统-出入库管理模块XXX西南大学计算机与信息科学学院,重庆400715摘要:本文详细介绍了实验室设备管理系统的工作流程:设备入库、领用、报废、丢失、损坏、维修、调拨登记、例行统计报表,并对每个流程进行了概要设计与详细设计的描述。本系统的开发采用B/S模式,以微软的VisualStudio2008作为开发平台,实现了三层架构(即业务逻辑层、数据访问层、用户界面层)的实验室设备管理系统。该设备信息管理系统以设计模式为指导思想进行设计实现后,降低了层次之间、模块之间的耦合性,解决了重复开发、代码重用率低、功能模块移植工作量大等问题,提高了系统的稳定性、可扩展性、可维护性和可复用性。关键词:设计模式;AJAX;水晶报表;设备管理THEMANAGEMENTSYSTEMOFLABORATORYEQUIPMENTWEIQiangComputerandInformationScienceAcademy,SouthwestChinaNormalUniversity,Chongqing400715,ChinaAbstract:Thearticleintroducestheworkflowoflaboratoryequipmentmanagementsystemindetail:equipmentstorage,recipients,discard,lost,damaged,maintenance,allocationofregistration,routinestatisticalreports.Andthepreliminarydesignanddetaildesignofeachofprocessarealsodescribedinthearticle.ThedevelopmentofthesystemusesB/S(Browser/Server)modeandMicrosoft"sVisualStudio2008asdevelopmentplatformtoachieveathree-tiersystem(thatis,businesslogictier,dataaccesslayer,userinterfacelayer)oflaboratoryequipmentmanagementsystem.Afterachievingequipmentmanagementsystemdesignindesignpatterns,thecouplingwasgreatlyreducedbetweenthelayersandbetweenthemodules.Itsolvedtherepeateddevelopment,thelowcodereusablerate,heavyworkloadoffunctionalmoduletransplantationproblemsandsoon,andincreasedsystemstability,expansibility,reusabilityandmaintenance.KeyWords:DesignPatterns;AJAX;CrystalReport;EquipmentManagement50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块目录摘要1Abstract1目录2第1章引言11.1研究背景11.2论文研究内容和意义11.2.1论文研究内容11.2.2论文研究意义11.3论文组织结构2第2章相关应用技术32.1B/S模式32.2设计模式52.2.1设计模式概述52.2.2设计模式分类62.3AJAX92.3.1AJAX概述92.3.2ASP.NETAJAXControlToolkit介绍112.4水晶报表132.4.1水晶报表概述132.4.2拉(pull)模型152.4.3推(push)模型15第3章系统需求分析163.1需求概述163.1.1功能需求163.1.2性能需求163.1.3运行需求173.2数据流图173.2.1用户登录173.2.2设备信息查询173.2.3设备出入库管理183.3E-R图183.3.1设备E-R图183.3.2一般管理员E-R图193.3.3系统E-R图19第4章系统总体设计204.1系统总体结构204.2系统功能模块设计214.2.1信息查询模块214.2.2设备出入库管理模块224.2.3例行报表统计224.3数据库逻辑设计224.3.1设备信息表及其附属表224.3.2设备调拨表2450计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块4.3.3设备报损表244.3.4设备报废表254.3.5设备报丢表254.3.6设备报修表254.3.7设备出库表264.3.8数据库关系图264.4系统体系结构274.5开发环境、开发工具及平台284.5.1开发环境284.5.2开发平台的选择28第5章系统详细设计和实现295.1数据访问层的设计295.1.1DataAccess组件设计295.1.2DataAccess组件实现325.2业务逻辑层的设计355.3用户界面层的设计405.4打印报表45第6章总结与展望476.1总结476.2展望48参考文献:49致谢5050计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块第1章引言1.1研究背景随着高校管理变革的逐步推进、实验室建设的进一步规范化、复杂化,高校设备管理在学校的正常教学活动中越来越重要。为适应高等教育的发展,设备管理工作所涉及的设备计划、采购、验收入库、档案资料、调入调出、维修报废等各个环节,都应加大改革步伐,努力实现管理工作现代化,采用一些新的管理方法和技术手段,才能使设备管理工作更符合高校发展的需要。在当前的形式下,学校一方面受到教育经费投入不足的影响,另一方面学校的现有资源不能被充分利用,许多学校还存在重复低水平购置,现有教学资源浪费严重的情况,造成这种情况的原囚是多方面的,其中一个重要的因素是学校实验室及设备的管理落后于学校的发展,提高学校实验室的管理水平,实现学校实验室及设备管理的计算机管理,是十分必要和迫切的。1.2论文研究内容和意义1.2.1论文研究内容1)设计模式的使用:通过设计模式的使用,可以降低各个模块之间的耦合度,从而解决了重复开发、代码复用率低、功能模块移植量大等问题,从而提高软件设计的质量,提高系统的稳定性、可维护性和可复用性。2)水晶报表的使用:Windows下输出报表很容易,也容易打印,但在Web环境下,输出打印报表就有一定的难度,利用VS.NET内嵌的CrystalReports进行报表开发,既能快速的开发报表,又能导出复杂的交互性图表,并动态的将报表导出.pdf,.doc,.xls,html,rtf等多种格式。3)AJAX的使用:AJAX是一种创建交互式网页应用的网页开发技术。AJAX使得客户端可以在不刷新页面的情况下与服务器进行交互。AJAX技术使得页面和服务器的直接通讯可以使用异步操作,从而不需打断用户的操作,使得页面具有更快速的响应能力,并且还减少了页面与服务器的通讯量,提高了系统的性能。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块1.1.1论文研究意义实验室工作是高等教学工作中不可分割的一部分,也是培养学生工程创新能力的重要途径。只有运用科学的工具与手段来采集信息、进行数据处理,才能全面、综合地利用信息资源,设备管理人员才能及时准确地掌握各自管辖范围内各类设备的分布情况、新旧程度、使用状态和设备内部流动情况,才能以此推动实验室管理技术的进步,改善和加强实验室管理,辅助管理决策,全面提升实验室的管理水平。随着我校招生规模的不断扩大,学校加大了对实验室设备的投入,设备仪器数量大增。由于学校以前用的设备管理软件着重于对静态信息的管理,已不在满足当前的需求,且存在平台落后,标准不统一的问题,从而出现某些设备长期闲置,重复购置等现象。为了提高学校的办公效率,减少资金浪费现象,我们以实现设备信息全过程管理为目的,结合学校实验室管理特点,基于.NET构架的通用实验室设备管理系统的体系结构、系统开发的主要技术、系统功能的实现及系统在学校的应用,进行了对基于WEB的高校实验室设备管理系统的研究和开发。1.2论文组织结构本文由五章组成,各章内容如下:第一章:引言。主要说明研究背景,论文研究内容和意义。第二章:相关应用技术。本章主要介绍B/S模式、设计模式、AJAX、水晶报表等相关知识。第三章:系统需求分析。本章介绍了需求概况,模块涉及的DFD图,E-R图。第四章:系统总体设计。本章介绍了系统总体结构、系统功能模块设计、数据库逻辑设计、系统体系结构、开发环境、开发工具及平台。第五章:系统详细设计与实现。本章介绍了实验室设备管理系统的数据访问层、打印报表、出入库管理模块用户界面和业务逻辑层的设计和实现。第六章:总结与展望。对本课题的工作做总结,并提出下一步的工作内容。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块第1章相关应用技术1.1B/S模式B/S模式(Browser/ServerMode)即浏览器/服务器模式。它是随着Internet技术的兴起,对C/S模式的一种变化或者改进的结构。在这种模式下,用户工作界面是通过Web浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现,形成所谓三层模式。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。B/S与C/S模式相比,其优点在于:1)不必开发专用的客户端软件,在用户端不需要增加任何代码,用户只需使用现行的浏览器,其操作十分方便,简单易学,界面统一,降低了用户学习新知识的难度,用户易于接受,这样既节省了开发时间,也减少了系统出错的可能性,降低了维护费用。2)网络应用系统跨平台,兼容性好,保护原有的软硬件设施,原来的网络、操作系统、数据库都可以很容易地加以利用,可使系统在最短的时间内发挥效益。3)技术上相对成熟,投入费用少,系统维护简便,简单易用。应用Web技术,OA系统只需在服务器上集中实现和配置的维护、管理,大大降低了用户用于软件系统维护和升级的难度和费用,使办公自动化更加容易实施,用户投资风险小。4)系统运行稳定、安全、可靠,并可进行扩展。5)软件移植容易,并可以进行严密的安全管理。另外,B/S层次分离的优势体现在界面风格统一为浏览器,并具有统一的语言格式、统一的传输协议,系统管理简单,能够优化资源,可支持异种数据库和方便信息发布等。B/S三层结构分传统的三层应用体系和基于WEB的三层体系结构。传统的三层体系结构,克服了二层体系结构的一些限制。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块三层体系结构将用户界面层与业务逻辑层分开,用户界面层放在客户端,而将业务逻辑层和数据存储层放在中间的应用服务器上,如图2-1所示。用户界面层业务逻辑层数据访问层数据库服务器客户端应用服务器数据库图2-1传统的三层体系结构Figure2-1traditional3-tierstructure中间层服务器通过重用那些跨越多个客户的昂贵资源来改进可伸缩性,从而改善了性能。这个体系结构也改进了安全和应用管理。虽然三层体系结构消除了二层体系的一些缺陷,但它也有不足之处:复杂性、应用缺乏可移植性、提供商的不兼容性以及与Web的不兼容性。随着因特网的高速发展,WWW的广泛应用,传统的三层应用体系结构的局限越来越明显,这时基于Web的三层体系结构得到了广泛的应用。基于Web的三层体系结构如图2-2所示。WEB浏览器WEB服务器数据库服务器中间件图2-2基于Web的三层体系结构Figure2-23-tiersystemstructurebasedonWeb基于WEB的三层应用体系结构显示以下优点:1)优化了系统结构:将系统分为三层(或多层),业务逻辑放在应用服务层,软件的维护集中在应用服务层,实现了客户端的“零”维护,有利于软件维护及系统管理。2)提高了应用系统的安全性:将客户端与数据库隔离起来,有利于安全管理,有效防止恶意攻击。还可利用中间件的安全管理特性进一步加强权限控制管理。3)卓越的扩展能力:若要提高系统性能、处理速度,可增加应用服务器,分担一部分应用服务工作即可,而原来的应用服务器几乎可以不动。4)减少网络数据流量和提高数据库响应速度:基于Web三层应用体系结构中,应用服务层的引入有效地解决了网络瓶颈和数据库连接数过多引起数据库性能下降的问题。应用服务层往往有多台服务器,可有效地解决客户机访问服务层的瓶颈问题。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块5)提高系统性能:基于Web三层应用体系结构能更好地调整应用体系,还可利用中间件的特点来选择路由、平衡负载,提高整个系统的性能。总的来说,三层应用体系结构使应用系统的性能、安全性、扩展性有了很大的提高,也方便了系统的维护和管理。1.1设计模式实验室设备管理系统基于设计模式设计实现,本章将讨论设计模式的概念、分类等知识,分析研究23种GoF设计模式意图、使用场合、组合技术及在系统设计开发中的选择和使用等应用方法。1.1.1设计模式概述软件模式的思想最初来源于建筑领域,建筑师ChristonpherAlexander首先提出一种基于模式进行建筑设计的新方法。Alexander认为:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。这种模式的方法同样适用于软件研究。本文中的设计模式是对被用来在特定的场景下解决一般设计问题的类和相互通信的对象的描述。和面向对象技术比较而言,设计模式不是一种技术,而是一种软件设计的指导思想。使用软件设计模式的好处:l促进交流:模式的名称简化了设计者之间对设计方案的讨论。关于模式的优点、缺点和使用情况的共享知识使讨论和评估变得容易和快捷。l简化文档:命名著名模式的设计文档用几句户即可解释清楚模式的实现方式,而解释一个程序的形式和行为则需要好几页文档。l提高开发效率:支持或者纳入标准模式的语言和组件使设计和实现变得更为容易。l支持软件重用:针对问题领域选择模式并进行标准化,促进了软件的重用,从而提高了质量和生产率。l提供设计思想:模式可以充当设计的起点,或者充当改进设计的思想。一个设计模式命名、抽象确定了一个通用设计结构的主要方面,这些设计结构能用来构造可复用的面向对象设计。设计模式确定了所包含的类和实例,它们的角色、协作50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块方式以及职责分配。每一个设计模式都集中于一个特定的面向对象设计问题或设计点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效和如何取舍。1.1.1设计模式分类GoF设计模式共包含23种经典设计模式,见表2-1。表2-1设计模式Table2-1DesignPatterns创建型结构型行为型FactoryMethodAbstractFactoryBuilderPrototypeSingletonAdapterBridgeCompositeDecoratorFaçadeFlyweightProxyInterpreterTemplateMethodChainofresponsibilityCommandIteratorMementoObserverStateStrategyVisitor本系统在设计中主要涉及两种设计模式:1)抽象工厂模式(AbstractFactoryPattern)意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用场合:l一个系统要独立于其产品的创建、组合和表示时。l一个系统要由多个产品系列中的一个来配置时。l当你要强调一系列相关的产品对象的设计以便进行联合使用时。l需要提供一个产品类库,而只想显示它们的接口,而隐藏其实现时。抽象工厂模型图如图2-3所示:50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图2-3抽象工厂模式Figure2-3AbstractFactoryPattern实现要点:l抽象工厂将产品对象的创建延迟到它的具体工厂的子类。l如果没有应对“多系列对象创建”的需求变化,则没有必要使用抽象工厂模式,这时候使用简单的静态工厂完全可以。l系列对象指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中的“道路”与“房屋”的依赖,“道路”与“地道”的依赖。l抽象工厂模式经常和工厂方法模式共同组合来应对“对象创建”的需求变化。l通常在运行时刻创建一个具体工厂类的实例,这一具体工厂的创建具有特定实现的产品对象,为创建不同的产品对象,客户应使用不同的具体工厂。l把工厂作为单件,一个应用中一般每个产品系列只需一个具体工厂的实例,因此,工厂通常最好实现为一个单件模式。l50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块创建产品,抽象工厂仅声明一个创建产品的接口,真正创建产品是由具体产品类创建的,最通常的一个办法是为每一个产品定义一个工厂方法,一个具体的工厂将为每个产品重定义该工厂方法以指定产品,虽然这样的实现很简单,但它却要求每个产品系列都要有一个新的具体工厂子类,即使这些产品系列的差别很小。优点:l分离了具体的类。抽象工厂模式帮助你控制一个应用创建的对象的类,因为一个工厂封装创建产品对象的责任和过程。它将客户和类的实现分离,客户通过他们的抽象接口操纵实例,产品的类名也在具体工厂的实现中被分离,它们不出现在客户代码中。l它使得易于交换产品系列。一个具体工厂类在一个应用中仅出现一次——即在它初始化的时候。这使得改变一个应用的具体工厂变得很容易。它只需改变具体的工厂即可使用不同的产品配置,这是因为一个抽象工厂创建了一个完整的产品系列,所以整个产品系列会立刻改变。l它有利于产品的一致性。当一个系列的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象,这一点很重要,而抽象工厂很容易实现这一点。缺点:l难以支持新种类的产品。难以扩展抽象工厂以生产新种类的产品。这是因为抽象工厂接口确定了可以被创建的产品集合,支持新种类的产品就需要扩展该工厂接口,这将涉及抽象工厂类及其所有子类的改变。 2)外观模式(FacadePattern)意图:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。使用场合:l当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块l客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。l当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。外观模型图如图2-4所示:图2-4外观模式Figure2-4FacadePattern实现要点:lFacade模式对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。lFacade模式实现了子系统与客户间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。l如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性与通用性之间选择。1.1AJAX1.1.1AJAX概述ASP.NETAJAX是一种实现异步(Asynchronous)网络应用的技术,是ASP.NET的一种扩展技术。通过ASP.NET技术,开发人员可以将WEB服务器控件和客户端脚本结合起来,并在此基础上实现WEB页面的局部更新功能。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块AJAX是AsynchronousJavaScriptandXML(异步JavaScript和XML)的缩写,它是一种创建交互式网页应用的网页开发技术。其实AJAX并不是一种新技术,它只是由JavaScript、XML、XSLT、CSS、DOM和XMLHttpRequest等多种技术组成的。在AJAX中,XMLHttpRequest是其最核心的技术,该对象由浏览器中的JavaScript创建,负责在后台以异步的方式让客户端连接到服务器。它为页面中的JavaScript脚本提供了一种通讯方式,从而使得页面通过这些脚本能够与服务器发生交互。页面内的JavaScript脚本可以再不刷新页面的情况下与服务器进行交互,即页面可以从服务器提交数据。AJAX技术与传统的WEB技术相比,存在以下三个主要区别:l能够更新页面中的部分内容,不需要刷新整个页面就能够与服务器通信。l页面与服务器的直接通讯可以使用异步操作,从而不需要打断用户的操作,使得页面具有更加快速的响应能力。l由于页面与服务器交互时,只需要页面的部分内容,因此减少了页面与服务器的通讯量,提高了应用程序的效率。ASP.NETAJAX包括服务器端部分和客户端部分。其中,ASP.NETAJAX服务器端部分提供了5个服务器端控件,通过这些控件,开发人员可以轻松实现异步网页和一个无刷新的WEB环境。ASP.NETAJAX服务器端部分提供的5个服务器端控件如图2-5所示:图2-5ASP.NETAJAX服务端控件Figure2-5ASP.NETAJAXServiceControlslScriptManager控件:管理页面的脚本。lScripManagerProxy控件:管理页面的脚本。lUpdatePanel控件:和ScriptManager控件共同提供了一个无刷新的WEB环境。lTimer控件:定时器,它能定时触发用户自定义的操作。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块lUpdateProgress控件:显示整个或部分页面更新的过程。ASP.NETAJAX服务器端的架构如表2-2所示。ASP.NETAJAX服务器端控件ASP.NETAJAX服务器端扩展控件ASP.NETAJAX客户端脚本ASP.NETAJAXWEB服务ASP.NET框架表2-2ASP.NETAJAX服务端架构Table2-2ASP.NETAJAXServerArchitectureASP.NETAJAX客户端的架构如表2-3所示。客户端组件或控件ASP.NETAJAX基础框架/网络基础表2-3ASP.NETAJAX客户端架构Table2-3ASP.NETAJAXClientArchitecture各个部分具体说明如下:l客户端组件或控件:主要包括处理和封装客户端控件的类或组件,使得开发人员能够轻松和方便地使用这些控件。lASP.NETAJAX基础框架/网络基础:主要包括ASP.NETAJAX中与客户端相关的基础功能。1.1.1ASP.NETAJAXControlToolkit介绍ASP.NETAJAXControlToolkit是在ASP.NETAJAX基础之上构建的,是由社区和Microsoft共同开发的一个ASP.NETAJAX扩展控件包,其中包含了数十种基于ASP.NETAJAX的、提供某一专一功能的服务端控件。构建在ASP.NET2.0AJAXExtensions之上,志在成为最大、最好的可用Web应用程序的组件集合。ASP.NETAJAXControlToolkit是一个免费资源,它被微软ASP.NET官方网站所支持。ASP.NETAJAXControlToolkit解决了三个需要。首先,使网站开发人员有地方获取组件以更容易的构建他们的Web应用程序;第二,它给那些要编写客户端代码的开发人员一个强大的示例集;第三,它是一个使最好的脚本开发人员使工作更加突出的地方。ASP.NETAJAXControlToolkit控件图示如图2-6所示:50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图2-6ASP.NETAjaxControlToolkit控件Figure2-6ASP.NETAjaxControlToolkitControl在本系统中主要使用的ASP.NETAJAXControlToolkit控件说明如表2-4所示:控件名实现功能Accordion播放动画AutoComplete实现自动输入建议功能Calendar日历控件CascadingDropDown实现级联下拉选择的控件HoverMenu盘旋式菜单SlideShow实现播放照片或图片的功能TabContainer/TabPanel选项卡TextBoxWatermark为文本输入框添加水印表2-4Table2-450计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块1.1水晶报表水晶报表(CrystalReports)是Crystal公司开发,是一个功能强大的专业表报工具。CrystalReports用于处理数据库,主要帮助用户分析和解释重要信息,是办公自动化系统中不可缺少的开发工具。1.1.1水晶报表概述1)CrystalReports水晶报表提供如下功能:l针对所有以.NET为目标的程序语言提供高度的集成,用户可以在VisualBasic、VisualC#或VisualC++的项目中使用本身专长的程序语言来设计报表。l用户可以在Windows应用程序或ASP.NETWEB应用程序的项目中设计与使用报表。l提供强大的报表设计工具CrystalReportDesigner。CrystalReportDesigner是所见即所得的报表设计工具,它可以让用户定义报表的数据源,让设计者直接在屏幕画面上定位各个控件,并且可以轻易制作出各种复杂格式的报表。l通过CrystalReportforVisualStudio.NET所提供的报表查看控件(CrystalReportView),可以轻易将CrystalReportDesigner所制作的报表展现在WebForm网页与WindowsForm窗体上。2)CrystalReports水晶报表有下面一些主要的优点:lCrystalReports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。lCrystalReports可以用各种各样的格式发布报表,包括用Microsoft的Word和Excel发布、通过电子邮件甚至Web发布。高级的Web报表功能允许工作组中的其他成员在他们自己的Web浏览器中查看或更新共享报表。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块l快速的报表开发;l能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式;l由于Web应用程序所以的报表与报表Web服务处理都是在服务器上进行的,在客户端只需要浏览器就可以进行查看,而不需要安装额外的软件或组件。3)水晶报表的数据源分为两种:l.rpt报表文件:执行报表中的第一步就是在水晶报表设计器中创建报表,在默认安装中微软已经提供了一些现成的.rpt例子。lDataSource:.rpt文件取得数据库的方法取决于方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。 4)水晶报表的种类:lStrongly-typed报表:当你将报表文件加入到项目中去时,它就变成了一个了“strongly-typed”表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。lUn-Typed报表:这里的报表并不直接包含在项目中,因此称为“un-typed”报表。在这种情况下,你不得不使用水晶报表的“ReportDocuemt”对象建立一个实例,并且“手动”地调用报表。水晶报表(CrystalReports)现在已经被MicrosoftVisualStudio2008与MicrosoftVisualStudio2005集成在一起。使用水晶报表的强大功能来实现应用程序的统计分析及打印导出等功能,是微软平台上进行.NET应用程序开发报表的一种不错的选择。水晶报表在VS2008中有两种组件,在WEB项目里分别是CrystalReportSource,CrystalReportViewer。在FORM项目里分别是CrystalReport,CrystalReportViewer。CrystalReportSource,CrystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器。为了向开发人员提供最灵活的数据访问方法,CrystalReport数据库驱动程序被设计为可同时提供数据访问的拉模型(PULL)、和推模型(PUSH)。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块1.1.1拉(pull)模型拉模型(PULL模型):在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由CrystalReports本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。拉模型的图示如图2-7所示:图2-7拉模型Figure2-7Pullmsodel1.1.2推(push)模型推模型(PUSH模型):在推模型中,应用程序从数据源获取数据,然后将数据推给水晶报表文件。也就是说,推模型是用dataset组装水晶报表。 应用这种模型,我们不得不自己编写代码连接数据并组装数据集(DataSet),同时将它传送至报表。该方法使您可以将连接共享置入应用程序中,并在CrystalReports收到数据之前先将数据筛选出来。在某些情况下,通过使用连接共享以及限制记录集合的大小,可以使报表性能最大化。推模型的图示如图2-8所示:图2-8推模型Figure2-8Pushmodel50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块第1章系统需求分析1.1需求概述1.1.1功能需求实验室设备管理系统由系统管理员、院管理员、出入库管理员和用户(教职工、实验室管理员)来操作的,系统可分成系统管理员子系统、院管理员子系统、出入库管理员子系统和用户子系统。l普通用户子系统应包括服务指南、用户信息、信息查询。l系统管理员子系统应包括服务指南、用户信息、信息查询及系统管理。l院管理员子系统应包括服务指南、用户信息、信息查询及设备台帐管理。l出入库管理员子系统应包括服务指南、用户信息、信息查询及设备出入库管理等模块。实验室设备管理系统的主要功能:1)对于普通用户,应实现能方便地查询设备相关信息;能修改个人的基本信息,修改登录密码等功能;2)对于出入库管理员,应实现对设备验收人库、领用出库等数据进行管理,能方便地查询设备相关信息,能进行设备数据的更改、增加和删除操作;3)对于院设备管理员,应实现对设备的台帐管理(包括设备的调拨,报丢,报损,报修,报废等的管理),能方便地查询设备相关信息;4)对于系统管理人员,应实现信息监控,能方便地进行用户数据的更改、增加和删除操作,能进行系统管理,能方便地查询设备相关信息等功能。1.1.2性能需求系统的性能规定主要包括数据精确度、时效性、灵活性和安全保密性等要求。数据精确度要求系统输入数据能够在数据库中准确定位至正确记录,并且输出数据能够准确对应至某凭证单据。时效性要求对于任何操作,不应产生因响应时间过长而引起的数据库死锁、连接超时等现象。在系统灵活性方面,要求当需求发生某些变化时,系统的操作方式、数据结构、运行环境基本不变,而只是数据库内数据的改变。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块系统的安全保密性主要是数据库访问的安全保密性,可以通过两个层次实现。一是通过统一平台,操作系统和数据库系统的安全机制。操作系统自身的安全机制可以实现一定的安全保密性,数据库层面的权限管理也能够实施安全性控制。二是通过应用软件,对操作人员实行权限控制。通过设置用户角色可以控制其对数据库的访问,从而实现其权限控制。1.1.1运行需求1)系统的硬件平台:包括Web服务器、客户机、网卡及校园网络资源。2)系统的软件平台:服务器端:windowsNT/2003Server、IIS5.0及以上版本、SQLServer数据库或Oracle10g;客户端:WindowsXP、浏览器IE6.0及以上版本。1.2数据流图1.2.1用户登录图3-1用户登录数据流图Figure3-1UserloginDFD1.2.2设备信息查询图3-2设备信息查询数据流图Figure3-2EquipmentinformationqueryingDFD50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块1.1.1设备出入库管理图3-3设备出入库数据流图Figure3-3EquipmentoutofstorageDFD1.2E-R图显然,高校设备管理信息中包括如下实体:普通用户(教职工、实验室管理员)、一般管理员(院管理员、出入库管理员)、系统管理员和设备,但是对上述四个实体来说,通常还要指出所在部门,因此还要增加部门这个实体。各个实体的属性:l设备:设备编号、名称、设备种类、型号、品牌、单价、数量、生产厂家、出厂日期、购买日期、用途、保质期、设备来源、入库日期(如图3-4所示);l一般管理员:用户账号、姓名、密码、权限、职位、部门、电话、E-Mail(如图3-5所示);l各个实体之间的联系: (如图3-6所示);可以看出,一个用户可以查询多个物品,一个管理员可以管理多个物品、多个教职工,而部门与教职工及部门与物品是一对多的关系。1.2.1设备E-R图50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图3-4设备E-R图Figure3-4EquipmentE-R1.1.1一般管理员E-R图图3-5一般管理员E-R图Figure3-5GeneralmanagerE-R1.1.2系统E-R图图3-6系统E-RFigure3-6SystemE-R50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块第1章系统总体设计1.1系统总体结构该系统是以VisualStudio2008作为开发平台,基于.NET平台下B/S体系的三层结构。由用户界面层,中间业务逻辑层,数据访问层组成。使用WEB技术开发前端软件,使客户端应用通过从服务器下载的方式运行,这可大大提高系统的安全性;由于系统对客户端机器的硬件要求不高,用户可保留原有的软硬件投资;同时,由于用户只需在服务器上作配置和维护,将大大降低系统维护、升级的难度和费用;此外,采用浏览器的客户界面,操作十分简单,又可节省大量的培训时间和费用。该系统主要是对实验室设备的管理。包括普通用户对设备的查询和领出、对用户信息的维护;院管理员对设备的查询、设备的台帐管理(包括设备调拨、设备报修、设备报损、设备报废和设备报丢等);出入库管理员对设备的查询、设备的出入库管理及其相关的设备管理;系统管理员对设备的查询、用户的管理、系统的管理。系统执行流程图:(如图4-1所示)图4-1系统执行流程图Figure4-1Flowdiagramofsystemdevelop50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块系统的模块结构图:(如图4-2所示)实验室设备管理系统查看个人信息修改个人信息部门管理重要通知表格下载调拨管理报损管理报废管理入库管理报损管理报修管理品牌管理出库管理计量单位管理状态管理用户信息西用户查询发表通知表格管理用户管理出入库服务指南设备查询系统管理职位管理设备台帐图4-2系统模块结构图Figure4-2thestructureofsystemmodule1.1系统功能模块设计普通用户子系统实现对设备查询、用户信息管理等功能,系统管理员子系统实现对设备查询、用户信息管理、系统的管理等功能。出入库管理员子系统实现对设备查询、用户信息管理、设备的出入库及相关信息管理。院设备管理员子系统实现对设备查询、用户信息管理、设备调拨、设备报损、报修、报丢、报废等的登记和管理的功能。系统具体的功能模块如下:1.1.1信息查询模块1)设备信息明细查询模块:用于所有用户查询设备信息。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块2)调拨信息明细查询模块:用于所有用户查询调拨信息明细。3)报丢信息明细查询模块:用于所有用户查询相关的报丢信息。4)报损信息明细查询模块:用于所有用户查询相关的报损信息。5)报修信息明细查询模块:用于所有用户查询相关的报修信息。6)报废信息明细查询模块:用于所有用户查询相关的报废信息。1.1.1设备出入库管理模块1)设备入库登记模块:用于出入库管理员对入库设备进行入库登记。2)设备入库管理模块:用于出入库管理员对入库设备信息进行维护。3)设备出库登记模块:用于出入库管理员对出库领用设备进行出库登记。4)设备出库管理模块:用于出入库管理员对出库领用设备信息进行维护。5)其他管理模块:包括了品牌管理、状态管理、计量单位管理等,是对设备信息相关事务进行管理和维护。1.1.2例行报表统计1)设备入库明细表:统计设备入库明细信息。2)设备出库明细表:统计设备出库明细信息。3)设备调拨明细表:统计设备调拨明细信息。4)设备报丢明细表:统计设备报丢明细信息。5)设备报修明细表:统计设备报修明细信息。6)设备报损明细表:统计设备报损明细信息。7)设备报废明细表:统计设备报废明细信息。8)设备库存明细表:统计库存设备明细信息。1.2数据库逻辑设计本系统的重要表结构有:1.2.1设备信息表及其附属表设备信息:Equipment_Info(如图4-3所示)、设备品牌信息表:Equipment_Info_Brand(如图4-4所示)、设备分类信息:Equipment_Info_Category(如图4-5所示)、设备状态信息表:Equipment_Info_Status(如图4-6所示)、设备计量单位信息表:Equipment_Info_Unit(如图4-7所示)。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图4-3设备信息表Figure4-3Informationofequipment图4-4设备品牌信息表Figure4-4Equipment’sbrandinformation图4-5设备分类表Figure4-5Equipment’scategory图4-6设备状态表Figure4-6Equipment’sstatus50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图4-7设备计量单位表Figure4-7Equipment’sunit1.1.1设备调拨表设备调拨表:Equipment_Allocation(如图4-8所示),设备调拨种类表:Equipment_Allocation_Type(如图4-9所示)。图4-8设备调拨表Figure4-8Equipmentallocation图4-9设备调拨种类表Figure4-9Equipmentallocation’scategory1.1.2设备报损表设备报损表:Equipment_Damage(如图4-10所示)。图4-10设备报损表Figure4-10Equipmentdamage50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块1.1.1设备报废表设备报废表:Equipment_Discard(如图4-11所示),设备报废种类表:Equipment_Discard_Type(如图4-12所示)。图4-11设备报废表Figure4-11Equipmentdiscard图4-12设备报废种类表Figure4-12Equipmentdiscard’scategory1.1.2设备报丢表设备报丢表:Equipment_Lose(如图4-13所示)。图4-13设备报丢表Figure4-13Equipmentlose1.1.3设备报修表设备报修表:Equipment_Maintenance(如图4-14所示)。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图4-14设备报修表Figure4-14Equipmentmaintenance1.1.1设备出库表设备出库表:Equipment_StockOut(如图4-15所示)。图4-15设备出库表Figure4-15Equipmentoutofstorage1.1.2数据库关系图数据库关系图:(如图4-16所示)50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图4-16数据库关系图Figure4-16Databaserelationdiagram1.1系统体系结构该系统的体系结构为三层B/S结构。对Browser/Server模式而言,其在逻辑上采用了三层结构,解决三个层面的问题:1)用户界面层,提供给用户一个视觉上的界面,通过界面层,用户可以输入数据、获取数据;同时,用户界面层也提供了一定的安全性,确保用户不会看到机密的信息。这一层由客户端负责,通过WWW50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块浏览器实现信息浏览的功能。在客户端,向主URL(UniformRecourseLocator)所指定Web服务器提出服务申请。在Web服务器对用户进行身份验证后,用HTTP协议把所需的文件资料传送给用户,客户端只是接受文件资料,并显示在WWW浏览器上,这样使客户端真正成为“瘦”客户机。2)业务逻辑层(也称中间层)是用户界面层和数据访问层的桥梁,它响应用户界面层的用户请求,执行任务,从数据访问层抓取数据,并将必要的数据传送给用户界面层、使用清晰的语言陈述论点。Web服务器负责业务逻辑层的处理,为客户端提供公共的数据服务,处理客户端与数据库间的数据流。它的功能在具有CGI(CommonGatewayInterface,公共网关借口)的Web服务器上实现,Web服务器接受客户申请,首先需要CGI程序,以此与数据库连接,进行申请处理,而后将处理结果返回Web服务器,再由Web服务器传至客户端。3)在数据访问层,采用设计模式将访问数据库的功能进行封装,使得数据访问层可适应SQLServer和Oracle两种不同的数据源,并向业务逻辑层隐藏了数据源的实现细节,减小了业务逻辑层对数据访问层的依赖度。1.1开发环境、开发工具及平台1.1.1开发环境l开发技术:Ajax技术,ASP.NET运行环境,设计模式,水晶报表l系统的硬件平台:包括Web服务器、客户机、网卡及校园网络资源。l系统的软件平台:服务器端:windowsNT/2003Server,SQLserver2005或Oracle10g;客户端:WindowsXP,浏览器IE6.0及以上版本。1.1.2开发平台的选择VisualStudio.NET2008是一套完整的开发工具,用于生成ASP.NETWeb应用程序、XMLWebservices、桌面应用程序和移动应用程序。另外,这些语言利用了.NET框架的功能,此框架提供对简化ASP.NETWeb应用程序和XMLWebservices开发的关键技术的访问。开发语言选择C#。C#是专门为.NET应用而开发出的语言,这就从根本上保证了C#与.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现的淋漓尽致。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块第1章系统详细设计和实现1.1数据访问层的设计根据用户需求,在设备信息管理系统数据访问层DataAccess设计上,除了满足一般组件的复用性等设计目标外,具体应用上需要满足以下目标: 1)具有透明性:中间层业务逻辑对象在不知道SQLServer或Oracle数据源实现的具体细节情况下,可以方便的使用数据源。由于实现细节隐藏在数据访问层的内部,所以访问是透明的。2)尽量减少业务对象中代码复杂性:对中间业务逻辑对象提供数据访问的简单一致性,简化业务对象的代码,减小数据访问的复杂性。3)易于迁移:数据层组件使应用程序很容易在SQLServer或Oracle数据库间迁移。业务对象不了解底层的数据实现,所以迁移仅仅涉及到修改数据库配置文件。4)把所有的数据访问集中在组件上:所有的数据访问操作都委托给数据访问组件DataAccess,能够将应用程序的其他部分与数据访问实现相互隔离,从而使应用程序易于维护和管理。1.1.1DataAccess组件设计数据访问层组件要能实现上述设计目标,适应两种不同关系型数据源,降低层间耦合度,在设计上引入设计模式会效果会很好。在系统中,通过使用抽象工厂模式和外观模式两种GoF经典设计模式构造设计了能够适应SQLServer和Oracle两种不同数据源的较通用的数据访问组件DataAccess。图5-1详细说明了DataAccess组件类之间的关系和各设计模式在组件中的应用场合。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图5-1DataAccess设计Figure5-1DataAccess’design1)抽象工厂模式在DataAccess数据组件设计中的应用抽象工厂模式的意图:提供一个创建一系列相关或互相依赖的对象的接口,而无须指定其具体的类。抽象工厂模式的使用场合:l一个系统要独立于其产品的创建、组合和表示时。l一个系统要由多个产品系列中的一个来配置时。l需要提供一个产品类库,而只想显示它们的接口,而隐藏其实现时。微软的ADO.NET组件是对传统ADO的改进,可用于创建分布式的数据共享应用程序。它是一种高级的应用程序编程接口,面向支持对数据进行断开连接访问的松耦合的、N层的、基于Internet的应用程序。它是Microsoft.NET50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块Framework的核心组件,是.NET应用程序的数据访问模型,由一系列的数据库相关类和接口组成,它实现了一种全新的数据库访问机制,使得数据库编程变得相当容易。在ADO.NET组件提供的关系数据库相关类中,根据使用方式可以分为两类:共享类和特定类。共享类是对不同的关系数据库具体编程实现时使用一致的类,包括:Dataset,DataTable,DataRow,DataRelation,Constraint等。特定类则和共享类相反,是指在编码实现时,不同的关系数据库所使用的是不同的类。特定类包括:Connection,Command,DataAdapter,DataReader,Parameter等。所以数据组件要能适应SQLSERVER和ORCALE两种不同的数据源,就必须对它们对应的特定类进行封装。抽象工厂模式能够做到当客户应用程序想要在运行阶段决定需要使用的对象时,它能够处理相似的对象族。每个对象族都具有它本身关联的工厂对象,而且所有的工厂对象都是从一个通用的父类中继承而来的。如果应用到数据层组件,每个数据提供者可以看成一个族,每个族的成员都是一个具体的类,它能够使用某种数据提供者返回一个相应的产品,而对象族中的其它成员将使用一个相同的数据提供者来返回不同的产品。所以,引入抽象工厂模式,能很好的根据数据源的不同,由具体工厂返回不同的产品对象,达到封装并适应不同数据源的效果。如图5-1所示,IDbFactory是抽象工厂,该对象有两种类型的工厂,分别为oracleDBFactory和sqlDBFactory,它们都实现了IDbFactory接口,每种工厂都能够支持一种不同类型的数据源。具体产品系列有IDbConnection,IDbCommand,IDbDataAdapter,IDataParameter四种产品,oracleDbFacotry对应的产品族是OracleConnection,OracelCommand,OracelDataAdapter和OracelParameter。而sqlDbFactory对应的产品族是SqlConnection,SqlCommand,SqlDataAdapter和SqlParameter,两个工厂各自返回自己的产品。这样数据层就完全向中间业务逻辑层隐藏了数据源的实现细节,当底层数据源发生变化时,向业务逻辑层提供的接口不会变化,这样中间逻辑层对数据层的依赖度减小,可以灵活使用两种不同的关系型数据源。2)外观模式在DataAccess数据组件中的应用通过应用抽象工厂模式,使得数据组件DataAccess可以适应两种不同的数据源,达到了数据组件的主要功能。但是从图5-150计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块中可以看出,仅有这样设计,客户程序必须要知道IDbFactory、IDbConnection、IDbCommand、IDataAdapter和IDataParameters接口,这样会造成客户程序的代码混乱,数据组件的任何小的变化都会导致客户代码的变化。较理想的方式就是对客户呈现一个简单的接口、一致的界面,不需要让客户程序知道内部太多细节,既可以对客户编程提供便利,又可以封装内部的变化。外观模式为子系统中的一组对象提供一个集成在一起的高层接口,这个高层接口使得这个子系统更容易使用和维护,降低耦合便于扩展,通过它可以解耦关联、增加各部分的独立性,各部分的修改、扩展不影响其它部分。可以得知,外观设计模式可以解决组件设计对外提供一致接口的要求。如图5-1中Facade标示的类图部分,数据组件设计上加入了一个接口IDbOPerator。它是外界唯一与数据组件交互的接口,客户程序通过它和数据组件进行交互,而并不知道内部各个接口和类。由IDbOperator接口跟组件内的具体各个接口和类交互。它的作用就是使得数据组件的子系统简单化,减少客户程序对内部的依赖,将客户程序与子系统的实现部分分离,提高子系统的独立性,实现了松耦合关系。在DataAccess数据组件的设计中,运用了两种设计模式。抽象工厂模式帮助解决了两种关系型数据源的灵活选择问题,完成了数据组件的主要功能;外观模式在设计中的使用,进一步简化了系统的复杂性。两种GoF设计模式的组合使用,不仅使得中间业务逻辑层和数据层之间实现了各自的独立、松耦合,而且可以适应设备管理系统对关系数据源的不同需求。1.1.1DataAccess组件实现数据层DataAccess组件是中间业务逻辑层访问数据库的接口组件。在数据层的设计上,为了能够使系统程序能适应不同关系型数据源,降低中间业务逻辑层和数据层的耦合程度,采用了抽象工厂模式和外观模式两种GoF经典设计模式构造设计。下面通过介绍各个设计模式的实现来介绍数据层组件DataAccess的实现。(1)抽象工厂模式在数据层DataAccess组件的实现首先定义接口:publicinterfaceIDbFactory{50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块IDbConnectiongetDbConnection();IDbCommandgetDbCommand();IDbDataAdaptergetDataAdapter();IDataParametergetParameter(myParametermyPara);}在此接口中定义了四个方法,分别用来返回四种不同的产品IDbConnection,IDbCommand,IDataAdapter,IDataParameter,具体返回哪种产品系列的哪类产品,由具体工厂子类实现:publicclassoracleDBFactory:IDbFactory{//创建OracleConnection对象publicIDbConnectiongetDbConnection(){returnnewOracleConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString.ToString());} ……}在oracleDBFactory类中实现了IDbFactory接口的对应方法,返回的是Oracle对应的产品,同样在sqlDBFactory工厂子类中,返回SQLSERVER数据库对应产品。对于每种具体产品,都定义了相应的对象接口,具体的产品对象实现它们对应的父接口。在抽象工厂模式实现时,产品系列对象接口使用的都是.NET平台组件ADO.NET提供的接口类IDbConnection,IDbCommand,IDataAdapter,IDataParameter,具体的Oracle和SQLSERVER产品也都是ADO.NET组件提供的数据库操作类。数据DataAccess组件实现了具体对象产品的创建都有具体工厂子类常见,较好的封装了两种不同关系型数据源特定类。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块(1)外观模式在数据层DataAccess组件的实现数据访问层DataAccess组件为了给中间业务逻辑层各功能组件提供一个简单一致的接口,封装整个数据组件内部的复杂性,在设计上采用了外观模式。数据层组件在实现外观模式上提供了一个实现的关键类DbOperator,由它来封装数据组件内部各个类和接口:publicclassDbOperator:IDbOperator{privateIDbFactoryDbFactory;privateIDbConnection conn;privateIDbCommand cmd;privateIDataReader reader;privateIDbDataAdapter adapter;privateIDataParameter para;//构造函数publicDbOperator(IDbFactorydb){this.DbFactory=db;conn=DbFactory.getDbConnection();cmd=DbFactory.getDbCommand();adapter=DbFactory.getDataAdapter();}//打开数据库连接privateboolOpen(){if(conn==null)conn=DbFactory.getDbConnection();if(conn.State==ConnectionState.Closed){……}50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块returntrue;}//关闭数据库连接privatevoidClose(){if(conn!=null)//判断连接是否已经创建{if(conn.State==ConnectionState.Open)conn.Close();}}……}从DbOperator类的实现代码可见,它实现了接口IDbOperator和数据组件内部IDbFactory,IDbConnection,IDbCommand,IDataAdapter和IDataParamter交互,这些内部类或接口对外不可见,它们只在DbOperator类对外提供的常用数据操作方法中使用,IDbOperator接口是数据组件对外提供的唯一接口,这样实现了整个数据组件的简单、一致,而且也易于扩展、升级和维护。DataAccess数据组件采用两种经典GoF设计模式组合设计,灵活性好、稳定性高。既可以解决原有设备信息管理系统数据层存在的问题,其它系统也可以运用,具有较强的通用性。1.1业务逻辑层的设计中间层是业务逻辑层,是设备信息管理系统的功能实现层,执行具体业务规则和流程,是整个设备信息管理系统的核心,因此这部分的设计策略非常关键,它的结构设计的好坏将直接影响到系统的可扩充性、可维护性、稳定性、重用性等衡量系统的重要参数。在本系统中,我们利用面向对象(OO)的思想方法来设计,将所有数据和动作都用类(Class)来封装,并把这些类按照业务逻辑归类组织,形成业务模块,使得业务逻辑层的50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块各个功能组件对外提供简单一致的接口,使得中间层能够很好的与表示层和数据访问层的操作分离,降低系统的耦合性。下面列出系统的主要业务类:编号:1类名称:EntityBase名字空间:Business_Logic.Common功能:调用数据访问层的功能来实现各个实体类数据的添加、删除、修改和查询功能。编号:2类名称:Equipment名字空间:Business_Logic.Entity功能:提供设备入库所需的所有业务逻辑。编号:3类名称:StockOut名字空间:Business_Logic.Entity功能:提供设备出库所需的所有业务逻辑。编号:4类名称:Allocation名字空间:Business_Logic.Entity功能:提供设备调拨所需的所有业务逻辑。编号:5类名称:Damage名字空间:Business_Logic.Entity功能:提供设备报损所需的所有业务逻辑。编号:6类名称:Discard名字空间:Business_Logic.Entity功能:提供设备报废所需的所有业务逻辑。编号:7类名称:Lose50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块名字空间:Business_Logic.Entity功能:提供设备报丢所需的所有业务逻辑。编号:8类名称:Maintenance名字空间:Business_Logic.Entity功能:提供设备报修所需的所有业务逻辑。编号:9类名称:User名字空间:Business_Logic.Entity功能:提供用户管理所需的所有业务逻辑。编号:10类名称:Department名字空间:Business_Logic.Entity功能:提供用户部门管理所需的所有业务逻辑。l实体基类名称:EntityBase名字空间:Business_Logic.Common功能:调用数据访问层的功能来实现各个实体类数据的添加、删除、修改和查询功能。具体实现:publicclassEntityBase{privateIDbFactory_factory; 工厂类privateIDbOperator_operator; 访问数据访问层的类publicEntityBase() 构造函数,初始化具体使用的数据工厂{_factory=newsqlDBFactory();_operator=newDbOperator(_factory);}50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块功能:添加数据publicbooladd(stringproc_name,myParameter[]paras)publicbooladdBySql(stringsql) 功能:修改数据publicboolmodify(stringproc_name,myParameter[]paras)publicboolmodifyBySql(stringsql) 功能:删除数据publicbooldelete(stringproc_name,myParameter[]paras)publicbooldeleteBySql(stringsql) 功能:查询数据publicDataSetquery(stringproc_name,myParameter[]paras)publicDataSetquery(stringproc_name)publicDataSetqueryBySql(stringsql) 功能:读取数据publicIDataReadergetReader(stringproc_name,myParameter[]paras)publicIDataReadergetReaderBySql(stringsql)功能:用于判断数据库中是否有相应数据publicintExecuteScale(stringproc_name,myParameter[]paras)publicintExecuteScaleBySql(stringsql)}l入库登记名称:Equipment名字空间:Business_Logic.Entity功能:实现设备的入库登记、入库明细管理(包括修改、删除、制表),以及设备的入库明细查询。具体实现: publicclassEquipment:Business_Logic.Common.EntityBase{privateint_id;50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块 ……publicintid{…… }功能:获得设备生产厂家数据集publicDataSetGetManufacuturers()功能:通过设备编号来获取其相关信息publicIDataReaderGetEquipInfoByID()功能:入库登记publicboolInEnroll() 功能:按照入库时间查询设备信息PublicboolqueryEquipInfoByDate()功能:按照设备相关字段查询设备信息PublicboolqueryEquipInfo()功能:修改设备信息PublicboolmodifyEquipInfo() 功能:删除入库信息PublicbooldeleteEquipInfo()l设备出库名称:StockOut名字空间:Business_Logic.Entity功能:实现设备的出库登记、出库明细管理(包括修改、删除、制表),以及设备的出库明细查询。具体实现:publicclassStockOut:Business_Logic.Common.EntityBase{privateint_id;……publicintid{……}50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块……功能:获得某部门某设备的总数量publicintgetEquipNum()功能:出库登记publicboolOutEnroll()功能:删除某条出库信息publicbooldeleteStockOut() 功能:修改出库信息publicboolupdateStockOut()功能:获得所有出库设备信息publicDataSetgetAllStockOut() 功能:查询出库设备信息publicDataSetqueryStockOut(stringeName,stringbDate,stringeDate,intbrandID,intcategoryID,stringsource)}1.1用户界面层的设计表现层的内容主要是所有Web页面的设计工作,在该系统中,我所做的主要是与设备出入库管理相关的页面。在界面层的设计时,我使用AJAX技术并结合AjaxControlToolkit控件集,改善了传统Web应用程序页面响应速度慢的问题,提高了应用程序的效率。而且使得页面与服务器的直接通讯可以异步进行,从而不需要打断用户的操作,增强了用户体验效果。比如使用TextBoxWatermark为TextBox添加水印,可用于提示用户输入相关的内容;使用Calendar扩展控件与TextBox关联,使得当要输入日期类型数据时,直接点击TextBox,页面会无刷新的直接弹出Calendar控件供用户选择;使用AutoComplete控件可以实现Google搜索时的自动建议功能,等等。下面以设备入库登记和管理页面来进行详细说明:1)后台管理登陆页面50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块l页面名称:登陆l页面功能:实现用户后台管理登陆,当以出入库管理员的身份登录后就进入出入库管理页面。l页面图例:如图5-2所示。图5-2登录页面Figure5-2LoginPage 2)入库登记页面l页面名称:入库登记l页面功能:实现设备入库登记功能。将设备的相关信息保存到库存表中,同时设置设备的状态为“库存”。在设计输入日期的地方都采用Calendar控件与TextBox控件关联,实现快捷输入。在涉及数字输入的地方采用FilteredTextBox控件限制TextBox只能输入数字,如图5-4所示。l页面图示:如图5-3所示。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块图5-3Figure5-3图5-4Figure5-43)设备入库管理页面l页面名称:设入库管理l页面功能:对设备入库信息进行管理(修改、删除、查询操作)。可以按照不同的条件(按设备名、入库时间等)来查询设备入库信息。在该页面中在输入设备名的地方运用了AutoComplete控件从数据库中获取设备名来实现在输入设备名时的自动建议,如图5-6所示。在管理设备入库信息时,主要采用了GridView50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块控件来实现设备入库信息的修改、删除。l页面图例:如图5-5所示。图5-5Figure5-5图5-6Figure5-64)设备出库登记和出库管理页面l页面名称:出库登记/管理l页面功能:实现设备的出库登记,以及对设备出库信息的维护(包括编辑、删除、查询操作)。在提交数据时,会验证相关信息是否合法,所有数据合法才允许登记。l页面图例:和入库的图例类似。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块5)计量单位管理页面l页面名称:计量单位管理l页面功能:实现设备计量单位信息的维护(包括计量单位的添加、修改)。当添加新计量单位时,会检查是否已有该计量单位,没有该计量单位才添加。l页面图例:如图5-7所示图5-7Figure5-76)设备品牌管理页面l页面名称:设备品牌管理l页面功能:实现设备的品牌信息的维护(包括品牌的添加、修改)。当添加新品牌时,会检查是否已有该品牌,没有该品牌才添加。l页面图例:如图5-8所示图5-8Figure5-87)设备状态管理页面l页面名称:设备状态管理50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块l页面功能:实现设备状态信息的维护(编辑、添加)。当添加新状态时,会检查是否已有该状态,没有该品牌才状态。l页面图例:如图5-9所示。图5-9Figure5-98)设备明细查询页面l页面名称:设备明细查询l页面功能:提供多种查询条件供用户查询库存中的设备明细信息。l页面图例:如图5-10所示图5-10Figure5-101.1打印报表本部分是对系统的数据进行综合统计分析,产生业务常用报表。其中包括库存统计、入库统计、出库统计、调拨明细统计、报丢明细统计、报废明细统计、维修统计、报损明细统计等报表。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块这些统计功能的设计都是针对整个系统的主要功能模块和业务需要的。该系统的报表都使用Push模型实现,采用ADO.NET作为数据访问技术,连接数据库并组装数据集DataSet,同时将它传送至报表,充分利用了CrystalReport的数据汇总,排序等各项功能,对信息进行加工整理,输出各种样式的报表,以供管理人员进行分析和统计,及时了解企业的设备状况。设备入库明细表如图5-11所示。其他统计功能的实现基本类似,在此不再赘述。图5-11Figure5-1150计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块第1章总结与展望1.1总结本文对实验室设备管理系统的设计和实施进行了研究,从技术和实现两个方面对其进行了论述。本系统是基于B/S模式的三层体系架构的系统,具有以下特色:1)统计、报表功能更为强大:该系统利用CrystalReports来进行报表设计,解决了在Web环境下,输出报表打印难的问题。并且利用CrystalReports既能快速的开发报表,又能导出复杂的交互性图表,并动态的将报表导出.pdf,.doc,.xls,html,rtf等多种格式;充分利用了CrystalReports的数据汇总、排序、图表等各项功能,对信息进行加工整理,输出各种样式的报表,以供管理人员进行分析和统计,及时了解企业的设备状况。2)B/S模式的设计使得系统界面风格统一为浏览器,并具有统一的语言格式、统一的传输协议,不仅系统管理简单,优化资源,而且支持异种数据库和方便信息发布等。B/S模式设备管理系统的设计能实现不同的人员,从不同的地点,以不同的接入方式访问和操作共同的数据库,同时能有效地保护数据平台和管理访问权限,服务器数据库也很安全。3)本系统在设计时采用了多层应用系统架构的思想。在项目实施过程中,通过VisualStudio2008实现各系统层次的整合,有效的管理和组织复杂应用程序中各个业务对象,大大降低了各层次模块间的耦合度,增加了系统扩展的灵活性。4)在数据层中,考虑到不同部门对关系型数据源的不同要求,采用抽象工厂和外观两种软件设计模式设计实现了DataAccess数据访问组件,它能较好的适用Oracle和SQLServer两种不同关系型数据源的自由迁移,这样业务逻辑层可以透明的访问数据源,并减小了业务逻辑层操作数据库代码的复杂性。通过在数据访问层使用设计模式,使得在项目开发过程中可以把更多精力专注于业务逻辑的实施中,而不用考虑具体的数据源,方便了系统的开发及维护,也增强了数据库的可移植性。在用户界面层中,使用AJAX并结合AjaxControlToolkit控件集,改善了传统WEB应用程序页面响应速度慢的问题,提高了应用程序的效率。而且50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块使得页面与服务器的直接通讯可以异步进行,从而不需要打断用户的操作,增强了用户体验效果。该系统能有效的解决各设备管理系统的集成和可移植的问题,有利于后期的维护,提高了设备管理和相关决策信息的准确性,从而提高管理人员的工作效率和管理水平。1.1展望本系统虽然在很多方面优于原来的人工化、文档化的设备管理,但是由于时间限制以及本人水平有限,系统仍存在许多不尽人意和需进一步改善的地方。需在以后的工作中进一步研究和探讨。主要体现在以下几方面:l安全问题:虽然系统采用权限制来限制用户的访问,但对于依赖于网络的系统,仍存在很大的安全问题。对于网络中传输的数据(比如Session),和用户登陆密码都应该进行加密出,还有待对加密相关知识进行学习。l软件效率问题:本文主要关注于系统功能和相关技术的分析和设计,而且对AJAX客户端编程还不是很熟悉,导致系统某些部分的性能不佳,还有待进一步改善。l在设计业务逻辑层时没有考虑全面,使得业务逻辑层的接口过于复杂,应考虑采用外观模式来为用户界面处提供一个简单的接口。50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块参考文献:[1]邱郁惠,编著.系统分析师UML实务手册.机械工业出版社,2008.4.[2]张逸,著.软件设计精要与模式.电子工业出版社,2007.4.[3]陈冠军,等编著.ASP.NETAJAX实用开发详解.电子工业出版社,2008.1.[4]陈黎夫,编著.ASP.NETAJAX程序设计第Ⅰ卷:服务器端 ASP.NET2.0AJAXExtensions与ASP.NETAJAXControlToolkit.人民邮电出版社,2007.3.[5](美)StephenC.Perry,著,肖斌,王小振,等译.C#和.NET核心技术.机械工业出版社,2006.7.[6](美)Christopher Fox著,韩毅,罗颖,译.软件工程设计导论——过程、原理与模式(UML2.0版).清华大学出版社,2007.10.[7](英)Andy Buddy,Cameron Molly,SimonCollison,著,陈剑瓯,译.精通CSS高级web标准解决方案.人民邮电出版社.[8]陈娴,刘开文,王蓉玲,李健,编著.ASP.NET项目开发实践.中国铁道出版社,2003.8.[9]ChristianNagel,(美)BillEvjen,JayGlynn,等著,李敏波,翻译.C#高级编程(第4版).清华大学出版社,2006.10.[10]李律松,陈少刚,沈刚,等编著.VisualC#数据库高级教程.清华大学出版社,2005.6.[11]GrantPalmer著,康博,译.C#程序员参考手册.清华大学出版社,2005.8.[12](美)ErichGammaRichardHelmRalphJohnsonJohnVlissides,著.DesignPatternsElementsofReusableObject-OrientedSoftware.PearsonEducation, 2002.3.50计算机与信息科学学院 计算机科学与技术
实验室设备管理系统―设备出入库管理模块致谢在本次毕业设计中,我从指导老师张元平老师身上学到了很多东西。他在科研、教学工作上的一丝不苟、严谨求实的精神都在我心中留下了深刻印象。论文准备之初,他在论文的选题和课题的架构设计方面给予我悉心的帮助,使我的论文得以顺利完成;在论文的撰写和修改等各个方面都给予了我大量的指导和帮助,令我不但完成了论文,也学到了许多书本上学不到的知识,受益匪浅,特致以深深的感谢。另外还要感谢和我一起协作系统模块划分探究的同学,感谢你们一直不断的激励我,并给予莫大的支持和帮助。在此论文完成之际,谨向张元平导师致以深切的敬意和诚挚的谢意。最后,我还要感谢我们计算机与信息科学学院的全体老师和同学,他们无论在学习上还是在生活中都给予我很多无私的帮助,从而使我得以完成学业。再次感谢所有关心、帮助过我的老师、同学和朋友们!50计算机与信息科学学院 计算机科学与技术