基于flexj2ee的车辆维修管理系统的设计与实现本科论文_第1页
基于flexj2ee的车辆维修管理系统的设计与实现本科论文_第2页
基于flexj2ee的车辆维修管理系统的设计与实现本科论文_第3页
基于flexj2ee的车辆维修管理系统的设计与实现本科论文_第4页
基于flexj2ee的车辆维修管理系统的设计与实现本科论文_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

基于Flex/J2EE的车辆维修管理系统的设计与实现32-33-学士学位论文基于Flex/J2EE的车辆维修管理系统的设计与实现院系:专业:姓名:指导教师:完成日期:目录摘要 -4-Abstract -5-第一章绪论 -6-1.1论文研究背景 -6-1.1.1车辆维修管理系统的概述 -6-1.1.2车辆维修管理系统的使用现状及其发展 -6-1.2论文内容和意义 -7-1.2.1论文的内容 -7-1.2.2论文的意义 -7-1.3论文章节安排 -7-第二章车辆管理系统的相关技术介绍 -9-2.1车辆维修管理系统的技术背景介绍 -9-2.2RIA介绍 -9-2.2.1RIA简介 -9-2.2.2RIA的发展历史 -10-2.3Flex3和ActionScript3介绍 -10-2.3.1Flex3技术简介 -10-2.3.2ActionScript3技术简介 -11-2.3.3Flex发展历史和前景展望 -12-2.4J2EE技术 -13-2.4.1J2EE技术介绍 -13-2.4.2Flex3与J2EE的结合 -14-第三章车辆维修管理系统总体架构 -15-3.1系统总体架构 -15-3.1.1系统描述 -15-3.1.2系统架构设计 -15-3.2需求分析 -16-3.2.1功能需求分析 -16-3.2.2模块设计 -17-3.3 数据库的设计与实现 -19-第四章车辆维修管理系统详细设计与实现 -22-4.1开发工具概述 -22-4.2Flex前端界面和功能的实现 -22-4.2.1系统所实现具体功能 -22-4.2.2系统功能的实现过程 -27-4.3BlazeDS实现的Flex与J2EE的交互 -30-4.4J2EE后台的实现介绍 -33-4.5系统实现中的难点解决 -34-第五章总结与展望 -36-5.1论文总结 -36-5.2论文展望 -36-参考文献 -38-致谢 -39-摘要当今社会,人们对网页的要求越来越来高,其中包括网页的表现力,这就对网站的开发者提出了挑战。由此RIA应运而生,他改变了人们浏览网页的方式,给人们以全新的使用体验。其中Flex更是以其强大的功能和独特的创意赢得了人们的追捧,并在RIA领域中得到了快速发展。本文旨在运用Flex构建车辆维修管理系统来阐述Flex构建的显示层的实现过程还有Flex与后台的J2EE的交互过程。系统通过Adobe开源的Flex数据通信服务BlazeDS以实现Flex与后台J2EE的交互。该系统的设计与实现可以帮助车辆维修企业提高业务水平和工作效率。同时Flex技术的使用更可以增强车辆维修企业的用户与系统的交互。通过网络,企业用户还能更好的共享和沟通业务信息,真正为企业带来便利。论文的主要工作如下:介绍了RIA、Flex、J2EE等技术的概念和发展及Flex的优势和特点。同时也介绍了车辆维修行业的概况,分析了车辆维修软件在行业里的使用现状。对车辆维修管理系统的需求进行了详细分析,并按照需求对系统进行了整体的架构设计、各个功能模块的设计、还有数据库的设计。重点分析和阐述了Flex显示层的实现效果和过程,展示了各个界面的实现功能。同时还分析了Flex与后台J2EE通过BlazeDS交互的实现过程并阐述了实现中遇到问题的解决办法。同时本文还结合系统的实现对Flex技术的优势和面临的挑战进行了一定的探讨,并对其前景进行了展望。关键词:Flex、RIA、J2EE、车辆维修、管理系统。AbstractNowadays,people’sexpectationsonbrowsingfantasticwebpagesandhavingmoreinteractionbetweenusersandpagesaregettingmuchstrongerthaneverbefore,whichisagreatchallengeforthewebsitedevelopers.So,theRIAcomesintoexistenceasthesituationrequires.Itwillchangethewaythatpeoplebrowsewebpages.Itwillbringtheusersabrandnewexperience.Flexispowerfulandcreativewhichwinthepeople'spursuitanditisdevelopingrapidlyinRIA.ThisthesisaimsatexpatiatetherealizationofFlexpresentationlayerandtheinteractionbetweenFlexandJ2EEbymeansofdesigningandrealizingtheVehicleMaintenanceManagementSystemwithFlex.ThesystemconnectsJ2EEwithFlexbyAdobeopensourcedataservicesBlazeDS.Thedesignandrealizationofthissystemcanassistthevehiclemaintenanceandrepairenterprisetoraisethelevelofservicesandimprovetheworkefficiency.TheUsageofFlexcanenhancetheinteractionbetweenenterpriseusersandsystem.Andoutletsindifferentplacescansharethesameinformation,whichbringconveniencetotheenterprises.Themainworkofthisthesisisasfollows:Introducetheconcepts,historiesofRIA,Flex,J2EEandthecharacteristics,advantagesofFlex.AnalyzetherequestofVehicleMaintenanceManagementSystem,workoutthesolution,designthestructureofthesystemandthedatabase;AnalyzetherealizationofFlexpresentationlayerandtheinteractionbetweenFlexandJ2EE.Explainhowtosolvetheproblemintherealization.ThisthesisalsodiscussedtheadvantagesandchallengesofFlexandtheprospectforFlex.Keywords:Flex,RIA,J2EE,VehicleMaintenanceManagementSystem第一章绪论1.1论文研究背景1.1.1车辆维修管理系统的概述随着我国经济的飞速发展,汽车在我国变得越来越普及,这也就直接带动了汽车维修业的繁荣,汽车维修业已成为一个迅速崛起的庞大产业,为公路交通运输业提供了强有力的技术保障。但是汽车维修行业本身也存在一定的问题,诸如行业的诚信度和信誉度较差、乱收费问题、从业人员素质、技术水平、服务水平较低、市场秩序有待进一步规范等等,再加上我国加入世贸组织后,汽车维修行业所面临的巨大挑战都影响着汽车维修行业的发展。因此,提高汽车维修行业的竞争力和管理水平迫在眉睫,车辆维修数字化管理正好顺应了汽车维修行业提高竞争力和管理水平的需求,从而一批车辆维修管理软件应运而生,他们对汽车维修行业的快速和健康发展起到了积极的促进作用。车辆维修管理软件可以帮助汽车维修企业管理和记录日常的维修业务,用计算机来参与汽修厂的管理,可明显提高汽修厂的管理水平和工作效率,加强对员工的监管,进而促进汽车维修企业更快更好的发展,提高汽车维修企业的市场竞争力。车辆维修管理软件可以提供包括汽修业务管理、汽配业务管理、售后服务管理、客户关系管理、系统管理等日常业务的管理功能,这些功能可以有效地帮助汽车维修企业更好地管理自己的业务,从而提高自己的市场竞争力。1.1.2车辆维修管理系统的使用现状及其发展目前车辆维修管理系统已经被应用于大大小小的车辆维修企业里,并且为企业的管理带来了很大的帮助。由此看出,车辆维修企业对车辆维修管理系统的需求还是很大的,不过仍然有很多车辆维修企业还没有使用维修管理软件,原因并不在于这些企业不想使用,而是苦于此类软件很大程度上无法满足所有企业的需求。关键在于软件开发者要根据各个维修厂家的实际业务需求来开发出真正满足企业要求的软件来,这是非常重要的,而不能闭门造车,想通过一个软件的开发就能覆盖所有车辆维修企业的需要,这是不现实的。 从车辆管理系统的现状来看,大大小小各种功能的车辆管理软件可谓是铺天盖地层出不穷,且都能提供车辆维修企业日常业务所需的各种功能。但是大多数的车辆维修管理系统都是无法连接到网络上的,更不用说用Flex这样的表现力极强的Web技术来开发了,但是随着如今车辆维修行业的日渐壮大,连锁的车辆维修企业也越来越多了,所以如果能够把各个车辆维修点通过网络连接起来进行统一管理和调配肯定会大大提高车辆维修企业的竞争力。1.2论文内容和意义1.2.1论文的内容本文主要探讨RIA的主要技术FLEX、ActionScript3以及Flex和J2EE的结合,并通过这些技术来阐述如何实现基于FLEX/J2EE的车辆维修管理系统,并通过该系统来说明Flex、Actionscript3和BlazeDS等FLEX相关技术给车辆维修软件的开发和使用所带来的改变和意义。从而让人们进一步了解和体会到Flex技术给用户所带来的优秀的交互体验。1.2.2论文的意义本文通过探讨和使用Flex这一优秀的RIA技术来车辆维修管理系统的设计和实现,具体意义有:展现Flex技术在界面表现和与用户交互方面的优势,这无疑将大大提高软件的易用性和使用体验,从而满足用户日益提高的对软件的要求。利用Flex与J2EE的结合构建架构的车辆维修管理系统,可以实现架构不能实现的功能,并且提高了开发和维护效率,以满足车辆维修企业增长的业务需求,实现联网管理,提高企业的管理效率。1.3论文章节安排论文分为5章,各章具体内容安排如下:作为引言,主要讨论课题的研究背景、车辆维修管理系统的使用现状分析及本文的主要内容、意义和论文的组织编排。主要介绍本文所用到的技术理论和概念。包括RIA、Flex以及系统实现中所使用的相关技术和概念如Actionscript3、J2EE、BlazeDS等。主要阐述车辆维修管理系统总体架构、系统的需求分析、系统的模块设计、数据库的设计以及开发工具和环境的概述主要讲述系统详细设计与实现。如Flex前端的实现和Java后台的逻辑实现同时也会探讨系统实现过程中所遇到的问题和解决办法总结与展望,主要对论文的实际工作进行总结、归纳,并结合车辆管理系统的实现展望Flex在软件系统开发方面的前景。第二章车辆管理系统的相关技术介绍2.1车辆维修管理系统的技术背景介绍 车辆维修管理软件可以帮助汽车维修企业管理和记录日常的维修业务,用计算机来参与汽修厂的管理,明显提高了汽修厂的管理水平和工作效率,增强了汽车维修企业的市场竞争力。但从车辆管理系统的现状来看,大大小小各种功能的车辆管理软件可谓是铺天盖地层出不穷,虽都能提供车辆维修企业日常业务所需的各种功能,但没有特色。首先大多数的车辆维修管理系统都是无法连接到网络上的,这就限制了软件的使用范围,大大降低了管理系统的实用性。其次单一的界面没有特色,容易使用户产生审美疲劳,对于用户没有友好度,更不用说使用RIA这样的Web技术来开发了。而本文旨在使用Flex这一极具表现力的技术来实现传统车辆维修管理系统所没有、的良好的交互性和友好度,为用户带来使用体验上巨大的变化。同时又通过网络这一载体,可以允许企业用户在不同的地点查看和修改企业的各种管理信息,从而不再有地域的限制。这就大大提高了管理系统的应用价值。然而在业务层,本文使用J2EE作为解决方案,来为企业提供更加可靠和高效的应用系统,完全可以满足车辆维修企业的业务需求。结合Flex强大的表现力和J2EE出色的业务处理能力而设计开发出来的车辆维修管理系统相比传统的系统有了很大的优势和提升,同时也具有可行性高、开发效率高、维护成本低等特点。下面就将对本系统用到的各种技术进行详细的介绍。2.2RIA介绍2.2.1RIA简介互联网早已成为人们日常生活中重要的一部分了,每天人们要浏览各种网页并从中获取大量的信息。然而传统的网页表现已经很难满足人们的要求了,人们需要更丰富更多彩的网页表现。频繁的网页刷新、请求响应等待的时间等传统网页都具有的问题降低了人们上网的乐趣。当然传统网页也有其优势所在那就是带宽的需求比较低,节省网络的资源,浏览速度较快,但是随着网络技术的发展和硬件设备的提升,带宽已经不在是问题了,网页技术的发展也不再受到带宽的制约了。有了人们日益增长的需求又有硬件设备的发展做保证,新技术应运而生。RIA富互联网技术为网页的浏览带来了全新的体验。RichInternetApplication即富因特网应用程序[1],RIA的富体现在其丰富的界面表现能力可以实现类似桌面应用系统的效果。传统网页的输入框选择框等组件已近让人们产生了审美上的疲劳,而且无法与浏览者有更多的交互,界面呆板、生硬、缺乏生气。而运用RIA技术的界面则充分的展现了其“富”的一面,同时强大的交互性更为网页增添了活力。RIA同样适合企业级开发,对于企业用户来说,他们可以保留现有的系统架构,如J2EE、.NET等,而只需对前台的界面进行改变。RIA技术可以与这些架构进行很好的结合,将系统变得更快速、美观、易用。与之前的系统相比,RIA技术大大地提高了系统的表现力和交互性,使得界面的友好度加强,最主要的时间少了系统频繁的刷新和远程交互,大大地提高了使用效率。2.2.2RIA的发展历史“富互联网应用系统”一词源于Macromedia公司在2002年3月发表的一份白皮书,尽管如此,该词在更早的年代中就已包含以下含义[2]:远程脚本(由微软于1998年左右提出)、XInternet(由ForresterResearch于2000年10月提出)、富(网页)客户端富网络应用[2]。随着RIA技术的不断发展,涌现出了很多种新兴的技术。首先当然是Adobe的Flex,从它一经推出就受到了广大开发者的热捧,并在这几年的到了很大程度的发展和推广。同时Flex的最大竞争对手SilverLight也由微软公司于Flex之后推出,并且给Flex带来了很大的冲击。如今Sun公司的JavaFX也逐渐崭露头角。这些技术各有各的优势,其中Flex先入为主,如今已经被很多的开发人员所接受,并且有了很多成功的应用案例,而SilverLight和JavaFx还有很长的路要走。可以肯定的是在RIA领域竞争才刚刚开始,会有更多新的技术出现,他们毫无疑问会为网页的浏览体验带来翻天覆地的变化。2.3Flex3和ActionScript3介绍2.3.1Flex3技术简介Flex是一种基于标准编程模型的高效RIA开发产品集,最初由Macromedia公司在2004年发布,后被Adobe公司冠以商标。“基于标准编程模型的高效RIA开发产品集”,这是Adobe公司对Flex技术的官方定义[1]。Flex是以Flash的为基础而推出的,需要FlashPlayer插件才可以运行。由于Flash的广为流行,所以大多数的浏览器都安装了FlashPlayer插件,这就为Flex铺平了道路,可以说使用Flex开发的网页基本可以在大多数的浏览器上运行,体现了Flex优秀的跨平台性,这成为了Flex得天独厚的优势。Flex3可以使用Adobe开发的IDE(集成开发化境)FlexBuilder3进行所见即所得的开发,或者通过在Eclipse里安装Flex的插件,也可以进行Flex的开发。Flex3具有如下的优势:出色的界面表现能力和交互性良好的跨平台性开发和维护的方便快捷服务器端架构的灵活使用优秀的多媒体解决方案这些Flex的优势让它在RIA的领域独具特色,并且占有很大的市场,同时Flex的潜力也是非常巨大的,期待着Flex的发展可以给网页的浏览体验带来更大的提升。2.3.2ActionScript3ActionScript是针对AdobeFlashPlayer运行时环境的编程语言,它在Flash内容和应用程序中实现了交互性、数据处理以及其它许多功能[3]。ActionScript的代码由FlashPlayer中的ActionScript虚拟机(AVM)来执行的[3]。ActionScript代码通常被编译器编译成“字节码格式”(一种由计算机编写且能够为计算机所理解的编程语言),如AdobeFlashCS3Professional或AdobeFlexBuilder的内置编译器或AdobeFlexSDK和FlexDataServices中提供的编译器。字节码嵌入SWF文件中,SWF文件由运行时环境FlashPlayer执行[3]。ActionScript3.0是一门纯粹的面向对象的语言,它相比ActionScript2.0有了很大的性能改善。虽然ActionScript3.0对于在AdobeFlashPlayer9中运行的内容并不是必需的,但它使用新型的虚拟机AVM2实现了性能的改善[3]。ActionScript3.0代码的执行速度可以比旧式ActionScript代码快10倍[3]。从这一点可以看出ActionScript3.0的巨大变化,Flex在拥有了自己华丽的外衣之后又有了ActionScript作为它的聪慧的大脑,这让Flex的功能更强大、更具有竞争优势。Flex程序由MXML文件和ActionScript代码构成。MXML是基于XML的标准,用于编写Flex界面的组件;ActionScript基于ECMAScript,可以用来实现Flex前台的逻辑或者为Flex增添动态效果,其语法有些类似JavaScript。这两者的结合就构成了一个完整的Flex文件。由于MXML与ActionScript的关系就像HTML和JavaScript的关系,所以对于开发者来说还是很容易理解的。2.3.3Flex发展历史和前景展望AdobeFlex最初由\o"Macromedia"Macromedia公司在\o"2004年"2004年\o"3月"3月发布,Flex经历了几个版本的变化,现在到了Flex4,已经推出了\o"/AIR_FLEX_down/FLEX4_SDK/"SDK下载,新版本的Flex4将于2009发布,以下是Flex的发展历史[2]:Flex1.0-2004年3月Flex1.5-2004年10月Flex2.0(Alpha)-2005年10月Flex2.0Beta1-2006年2月Flex2.0Beta2-2006年3月Flex2.0Beta3-2006年5月Flex2.0Final-2006年6月28日Flex3.0Beta-2008年3月Flex4–预计2009年从Flex现在的普及度来看,国外要好于国内,在Flex方面,国内的使用度还是相对较少,可能这和Flex并不完全成熟有关系,毕竟Flex还是一个较新的技术。但是Flex作为RIA开发的一把利器有着他无可取代的优势,所以还是具有很大的潜力和市场的,关键看以后Flex要往什么方向发展,还有Adobe怎样利用Flex已有的优势进行市场的拓宽。与此同时在RIA开发平台领域,除了Adobe的Flex,微软还正式推出了Silverlight、同时Sun公司也推出了基于Java平台的JavaFX,目标同样是直指RIA开发。目前来看,这三种技术各有优势,Flex先入为主,目前已经有了一个很大的市场,但是Silverlight的先天优势是有Windows平台的支持,而JavaFX作为后起之秀,还有很多需要改进。Silverlight虽然较Flex推出的时间晚,但已经给Flex造成很大的压力。Silverlight的一些特性对Flex是致命的打击,比如对于搜索引擎的友好等。现在就看Adobe如何应对了,RIA是个非常大的市场,竞争才刚刚开始,不过这是件好事,可以促进各个技术的不断发展和进步,为用户带来更好的使用体验。2.4J2EE技术2.4.1J2EE技术介绍J2EE是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构[4]。J2EE技术的基础就是核心Java平台或Java2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBCAPI、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构[4]。目前,Java2平台有3个版本,它们是适用于小型设备和智能卡的Java2平台Micro版(Java2PlatformMicroEdition,J2ME)、适用于桌面系统的Java2平台标准版(Java2PlatformStandardEdition,J2SE)、适用于创建服务器应用程序和服务的Java2平台企业版(Java2PlatformEnterpriseEdition,J2EE)[4]。J2EE是一种技术体系,它包括了各类服务和架构,为企业级的开发提供了出色的解决方案。同时也提高了企业级开发的效率,增强了系统的灵活性和易维护性,提高了系统的安全性。J2EE的体系结构如下图:图2-1J2EE体系结构图[4]2.4.2Flex3与J2EE的结合Flex3与J2EE的结合主要依赖于Flex与Java的数据通信机制,主要有一下两种形式:一类是通过传统的HTTP方式发送请求来和服务器端进行交互,另外一类则是通过LCDS或BlazeDS等与服务端进行通信。BlazeDS可以看做是LCDS(LiveCycleDataService)的简化版,是开源的,而LCDS是要收费的它少了后者的DataManagementService高级功能,目前不支持RTMP协议。本文主要使用BlazeDS来实现Flex与Java的通信,BlazeDS的核心功能包括:RPCservices和MessagingService。下图展示了BlazeDS的主要特征[5]:图2-2BlazeDS的主要特征[5]第一类RPCService远程服务主要有HttpServices,WebService和RemotingService这几种通信方式。第二类MessageService消息服务主要有Publish&Subscribe,Collaboration,RealTimeDataPush这几种方式。Blazeds主要可以用来实现Flex的代理服务、发布订阅消息和软件集群等功能。本文就是使用Blazeds来实现Flex与后台J2EE的通信的。

第三章车辆维修管理系统总体架构3.1系统总体架构3.1.1系统描述本文主要探讨使用Flex和J2EE等技术实现车辆维修管理系统,从而让车辆维修企业的用户在满足自身的业务需求的同时得到丰富的使用体验。用户可以通过网络登陆该系统进行车辆维修管理,对车辆、配件的入库出库等进行记录,可以对客户的资料进行管理,还能通过搜索功能来查询这些信息。车辆维修管理系统的界面由Flex实现以增强用户体验,业务逻辑则由J2EE技术来实现,力求通过美观的界面、简便的操作、实用的功能来方便车辆维修厂家对业务资料的整理和查找,从而提高工作效率。让用户体会到富互联网应用系统的方便快捷和丰富的用户体验。因为该系统是基于web的,所以可以允许用户通过浏览器异地访问系统,从而使用户对企业信息的管理不会受到时间和地点的限制,同时还可以做到信息和资源共享,真正做到方便高效。3.1.2系统架构设计本文使用Adobe开源的Flex数据通信服务BlazeDS来实现Flex与Java后台的通信,使用Servlet来接收Flex端传过来的数据,并调用JDBC来连接数据库。Flex拥有很好的界面表示,可以给用户以全新的使用体验,而后台Java则专注于逻辑处理和与数据库的交互连接,Flex负责前台的表现层,Java负责后台的逻辑层,这样可以将两个层分开,中间使用BlazeDS作为桥梁实现两者的沟通,分别利用Flex和J2EE各自的优势,构建出更好地车辆维修管理系统。下图是系统的整体架构图:WebServerWebServerJ2EEServerHttpService请求HttpService响应BlazeDSServletJavaBean数据库JDBCFlex客户端图3-1系统的整体架构图3.2需求分析3.2.1功能需求分析作为车辆维修管理软件,首先要对车辆的维修进行记录、增加和删除,还有对库房中的配件进行管理、对配件进行合理的分类、对配件的使用进行记录,同时要规范设备的管理,使用设备要进行登记。客户信息也需要进行记录,以方便以后业务联系和维修记录的查找。具体系统涉及的信息如下:维修登记信息:单位名称、联系电话、车辆厂牌型号、车牌号、车驾号、行驶公里数、汽油表显示(4/44/32/14/1)、进厂时间、约定交车日期、接修车辆序列号、维修分类(机电维修保险事故非保险事故)、结帐方式(现金记账)、维修明细、所用配件明细、结账信息(工时费用零件费用其他费用总计税额)、保单号、报案号、保险公司名称、记账单位库房信息:配件名称、数量、单价、配件品质(正厂,付厂,拆车设备信息:名称、数量、单价、购买日期、保修日期客户信息要求:被保险人、身份证号/组织机构代码、车牌号、车架号发动机号、购置日期、保险公司名称、厂牌型号、保险内容、保单起始日期、保险金额、联系电话系统实现的主要功能如下:信息管理功能:对维修信息、配件出入库信息、设备信息、客户信息等进行管理,包括增删改等功能,为企业业务的管理提供参考性依据信息信息的检索功能:对已存在的信息进行查找筛选,已达到对业务的有效管理提醒功能:当维修车辆快要到交车日期了,提前几天提醒;对于库房中少于一定数量的配件进行补货提示,对保险快到期的车辆提前一个月提示。这些提示功能将很好的帮助车辆维修企业提高业务质量,更好地服务客户。用户管理功能:对使用管理系统的人进行权限控制,需要有管理员密码才能使用软件,这样可以很好的实现了系统的安全性,防止不相关人员修改重要信息3.2.2模块设计按照上文的需求分析,系统主要划分为四个模块:维修登记模块:负责登记车辆的维修记录,并对这些记录进行管理;库房管理模块:负责库房中配件的管理,对数量不够的配件进行补货提示;设备管理模块:负责设备的管理,对使用和状态进行记录;客户信息模块:负责对客户信息进行记录和管理,以便以后查找和参考;用户登陆模块:负责对用户的登陆密码进行验证,对系统实现权限管理;下图是系统的整体设计图图3-2系统的整体设计下面是系统的各个模块的用例图图3-3维修登记模块的用例图图3-4库房管理模块的用例图图3-5设备管理模块的用例图图3-6客户信息模块用例图如下:图3-7用户登陆模块用例图:数据库的设计与实现根据功能模块和系统的需求分析对数据库进行总体设计,具体如下:维修车辆记录表(vehicles):保存维修车辆的维修记录信息。配件库存表(accessories):保存所有配件库存信息。设备库存表(devices):保存所有设备库存和设备状态数据。客户信息表(clients):保存车辆维修企业的客户信息。普通用户表(user):保存所有注册的普通系统用户的账户信息。系统管理员表(admin):保存所有注册的系统管理员的账户信息。按照功能模块和数据库的需求分析,总共设计了6张数据库表,分别为维修车辆记录表(vehicles)、配件库存表(accessories)、设备库存表(devices)、设备库存表(devices)、客户信息表(clients)、客户信息表(clients)、普通用户表(user)、系统管理员表(admin)。通过以上几张表得到数据库的实体图如下:图3-8维修记录信息实体图3-9配件库存信息实体图3-10设备库存信息实体:图3-11客户信息实体:以下是数据库的总体设计图:图3-12数据库的总体设计图第四章车辆维修管理系统详细设计与实现4.1开发工具概述本文所实现系统的开发工具如下:Flex:FlexBuilder3Java:Eclipse数据库:MySQL5.0Web容器:Tomcat6浏览器:IE7FlashPlayer版本:FlashPlayer10操作系统:WindowsXPSP2FlexBuiler3为试用版,功能接近于正式版,就是少了Flex的Chart等组件,因为这些是Adobe的收费项目。4.2Flex前端界面和功能的实现4.2.1系统所实现具体功能上文已经提到一个完整的Flex程序由MXML代码和ActionScript代码组成。其中MXML是一种基于XML的标记语言,在Flex技术中,MXML用于设计用户界面,实现丰富的Flex表现层。从作用上说,MXML和HTML的功能是基本一致的,都是设计用户界面,但是MXML提供了较HTML更为丰富的界面组件,并且在开发上更为结构化,条理更加清晰。MXML的编写同样类似于HTML,它通过标签来定义和描述组件。本文的车辆维修管理系统的Flex界面实现是通过一个MXML文件来实现的,Flex的开发不像以往的HTML开发需要很多的页面,Flex可以在一个MXML页面中完成设计,而不需要很多页面的不断切换,这就大大提高了软件使用时的效率。下面将对系统的几个重要界面的实现和效果进行详细阐述:首先,下图展示了车辆维修管理系统的总体流程:图4-1系统的总体流程图登陆界面:登陆画面可以允许普通用户和管理员登录系统,可以通过勾选管理员选择框来决定是以管理员还是普通用户身份登陆。管理员和普通用户有不同的操作系统的权限。管理员可以添加、删除、保存、修改和查询各种信息,但是普通用户只能查看和搜索数据。这样就有效的实现了系统的权限管理。图4-1登陆界面注册画面:在注册画面里可以添加管理员和普通用户,普通用户只需输入用户名和密码就可以注册,但是管理员需要输入已有的管理员用户名和密码,在验证通过以后,才可以申请新的管理员账户。图4-2注册画面欢迎界面:欢迎界面由四幅图片组成快速导航画面,在最上部有一条导航栏,这条导航栏不会随着画面的迁移而消失,它会一直处于系统的最上部用来方便用户选择功能界面。通过点击欢迎界面的四幅图画,可以分别转到维修登记、库房管理、设备管理、客户信息这四张功能页面了,页面的过渡是采用Flex的特效实现的,不会有页面刷新,整个过程平滑,给用户以很好的使用体验。图4-3欢迎界面维修登记界面:在维修登记界面可以进行维修记录的管理,进行入库、出库操作。图4-4维修登记界面维修车辆入库窗口:在维修车辆入库弹出窗口中,用户可以填写入库维修车辆的信息和维修信息,单击确认添加按钮就可以把记录添加到数据库中,同时表格会自动读取新的数据库数据,然后在表格里显示。整个过程同样不需要刷新页面,用户在使用时,就像使用桌面应用软件一样流畅。图4-5维修车辆入库窗口库存管理界面:在库存管理界面中除了增删改等功能外,还有库存提醒功能,当配件的数量小于50的时候,就会自动标红。如果配件数量等于0的话,配件出库按钮就不会显示。这样就可以很直观的对配件的库存情况进行判断,当然库存管理界面也可以对配件的信息进行搜索。图4-6库存管理界面设备管理界面:设备界面上可以对设备进行出库和入库操作,单击表格左侧的按钮可以弹出设备出库登记画面,如下图所示,在出库登记画面里可以填写出库设备的数量,而设备名称系统会自动添加。图4-7设备管理界面客户信息界面:客户信息界面用来记录客户的各种信息并可以对其进行检索。图4-8客户信息界面同时每个界面都有信息搜索功能,当用户点击搜索按钮时就会在数据表的下端显示出搜索界面,在搜索见面中输入关键字就可以对数据进行过滤,把结果数据显示在表格中,方便用户查阅。同样整个过程不需要刷新页面。如下图为按车牌号搜索:图4-9按车牌号搜索界面搜索结果:图4-10搜索结果显示4.2.2系统功能的实现过程下面对整个实现过程中具体的几个关键点进行阐述,并附上实现代码。首先是界面中组件的实现,在Flex中组件的实现可以通过MXML标签来标记或者通过ActionScript动态生成,本项目中使用到了弹出画面,就像Windows操作系统中的窗口一样,这样的设计可以给用户带来类似桌面应用的体验,操作更上手。现在以登录窗口为例子来阐述效果的实现过程:<mx:TitleWindowxmlns:mx="/2006/mxml" layout="absolute"width="358"height="268" showCloseButton="true" title="系统登陆" fontSize="12"horizontalAlign="left"verticalAlign="middle" creationComplete="txt_username.stage.focus=txt_username" >登录窗口是一个弹出窗口(PopupWindow)是一个自定义组件,是在Flex自带的TitleWindow的基础上自定义的,它是整个弹出窗口中最上层的容器,接下来的组件都是建立在这个容器之上的,不过作为一个自定义组件,他不能直接运行,要通过Flex项目的主程序(就是以<mx:Application></mx:Application>标记的MXML文件)运行。登陆界面到注册界面的过渡效果是通过Flex的states和transitions来实现的,Flex不用切换页面就可以从登陆界面转换到注册界面,整个过程不需要刷新页面,大大提高了效率。Flex一个重要的精髓就是事件机制,下面以主画面感应登录窗口移出界面的例子来阐述事件机制在系统中的应用,具体代码如下登录窗口ActionScript代码:privatefunctionadminLoginResultHandler():void{if(passAdminLoginValue.lastResult.rss.xml.servletresult==true){myTitleWindowEffect.play();this.isAdmin=true;this.dispatchEvent(newEvent('myEvent'));}else{Alert.show('用户名或密码错误','提示');}}主画面部分ActionScript代码:privatefunctionaddLoginWindow():void{ newWin=loginTitleWindow(PopUpManager.createPopUp(this,loginTitleWindow,true));……省略部分代码this.newWin.addEventListener('myEvent',onPageOpen);}这段代码实现了主画面感应登陆窗口移出界面后调用onPageOpen方法来实现系统的初始化。这个过程用到了Flex的事件机制。首先在登录窗口中的函数adminLoginResultHandler()是在管理员登陆成功以后调用的方法,在方法里定义了一个新的事件myEvent,然后通过dispatchEvent方法将事件分发出去,从而myEvent事件被添加到事件流里,等待主画面捕获。在主画面中同样也定义了一个函数,该方法是用来弹出登录窗口的,在函数里为将要弹出的登录画面添加对myEvent事件的监听,当弹出画面分发出myEvent时间后,被自己监听到,这样在主画面中就可以调用主画面的方法onPageOpen,从而实现主画面的初始化。整个过程中就是通过事件的分发与捕获来实现主画面感应登陆窗口移出界面的效果。当然这里的用到的事件是自定义的事件myEvent,在Flex里有很多定义好的事件类型,对事件机制的使用可以为开发带来很多便利,同时可以实现一些无法实现的效果。大大增强了Flex的功能。Flex的另一个精髓就是数据绑定,下面是数据绑定在这个系统中的一个应用:<mx:DataGridid="myDg"dataProvider="{getVehicleIn.lastResult.vehiclesIn.vehicleIn}">以上代码是定义一个Flex数据组件DataGrid的部分代码该组件用来显示后台传过来的XML数据,并把它作为数据源显示出来,如图所示:图4-11数据源绑定显示图其中的dataProvider属性代表数据源,这里通过一对花括号{}把传回的XML绑定在了dataProvider上,这样当后台传回数据后,DataGrid组件就会自动解析XML文件,并将它显示出来。privatefunctionsearch():void{ this.myDgArrayCollection=ArrayCollection(this.myDg.dataProvider); myDgArrayCollection.filterFunction=myFilterFunction; myDgArrayCollection.refresh(); }}上面这段代码是搜索功能实现的一部分代码,其中也用到了数据绑定,这里将DataGrid的数据源赋给了myDgArrayCollection,它是ArrayCollection型的变量,可以用来对数据进行复杂的排序、过滤等功能。这样对myDgArrayCollection的过滤操作就会在调用refresh()方法以后同步到DataGrid的数据源,从而使得DataGrid刷新数据,显示过滤后的结果集,实现搜索的效果。当然myDgArrayCollection在定义的时候要添加[Bindable]标签,如下:[Bindable]privatevarmyDgArrayCollection:ArrayCollection;这样myDgArrayCollection才能被绑定为DataGrid的数据源,否则DataGrid将无法感应myDgArrayCollection的变化。4.3BlazeDS实现的Flex与J2EE的交互这一部分是本文的一个研究重点,也是实现基于Flex/J2EE的车辆维修管理系统的技术重点,即Flex前台和Java后台的通信。BlazeDS为使用Flex或者AIR的客户端程序提供了高度可扩展的远程访问和消息服务。BlazeDS为客户端程序连接到服务端数据、并在多个客户端和服务器间传送数据提供了一系列的服务。BlazeDS实现了客户端之间的实时消息。一个BlazeDS应用包括两个部分[5]:一个客户端应用程序和一个服务端的J2EE程序,架构如下图:图4-12Blazeds架构[5]BlazeDS是开源的,所以可以在Adobe的官网上下载。BlazeDS里的flex文件夹中包括了最重要的四个配置文件:messaging-config.xml、proxy-config.xml、remoting-config.xml、services-config.xml。这些文件里包含了Flex和Java交互所需的配置,在这些配置文件里可以修改Flex和Java的通信的方式、与后台Java交互的文件相对路径等与后台通信有关的信息。本文使用httpservice的通信方式来实现Flex和后台J2EE的交互,用tomcat作为应用服务器。前端的MXML文件通过BlazeDS向后台的Servlet发送Http的请求,然后通过Servlet调用JDBC访问数据库,最后Servlet将封装好的XML数据返回给前台Flex的MXML文件,MXML负责解析传回的XML从而实现数据的交互。以上就是整个Flex与后台Java交互的过程,具体的流程图如下:图4-13Flex与后台交互流程图首先Flex部分需要在MXML中申明Flex通过httpservice所要通信的Java类,这里使用的是Servlet来接收Flex传过来的值。下面以管理系统的维修登记界面的添加维修记录的功能为例子进行分析Flex部分的代码如下: privatefunctionsaveAddedVehical():void{if(txt_id.text==''){Alert.show('接车序列号不能为空','提示');}else{ varparams:URLVariables=newURLVariables(); params.id=txt_id.text; params.vehicalID=txt_vehicalID.text; params.vehicalBrandModel=txt_vehicalBrandModel.text; ………(省略部分代码)params.taxAmount=txt_taxAmount.text; panyName=txt_companyName.text; params.telephoneNum=txt_telephoneNum.text; addVehicalIn.send(params); parent.removeChild(this); this.addVehicalFlag=true;} }<mx:HTTPServiceid="addVehicalIn"destination="addVehicalInServlet"fault="Alert.show('添加出错,可能是接车序列号重复,请检查','提示')"useProxy="true"/> 这段代码实现了Flex端把dataGrid也就是表格里的数据通过httpservice传给后台的Servlet接收。实现过程是单击界面上的确认添加按钮<mx:Buttonx="227"y="515"label="确认添加"click="saveAddedVehical()"icon="@Embed(source='../assets/Symbol-Check.png')"width="110"/>然后调用saveAddedVehical()方法把表单里填的数据存入URLVariables类型的变量params里,然后调用addVehicalIn.send(params)方法,把变量通过httpservice发送给后台的Servlet,中间通过BlazeDS实现。要让BlazeDS能够运作首先先要在Flex端定义如下的代码:<mx:HTTPServiceid="addVehicalIn"destination="addVehicalInServlet"fault="Alert.show('添加出错,可能是接车序列号重复,请检查','提示')"useProxy="true"/>其中的destination属性的值对应BlazeDS配置文件proxy-config.xml里的destination标签的id,这需要自己手动添加如下代码:<destinationid="addVehicalInServlet"><properties><url>http://localhost:8400/MyProject/servlet/addvehicalinservlet</url></properties></destination>这样Flex里的Httpservice就与BlazeDS里的配置对应了,而BlazeDS也与后台的Servlet通过url属性连接起来了其中servlet/addvehicalinservlet是后台的Servlet在服务器中的映射。而后台的Servlet和接受JSP的数据一样通过doPost方法接收Flex传过来的参数将request.getParameter的值赋给Servlet内部的变量,然后就都是后台Java的工作了。4.4J2EE后台的实现介绍后台的采用J2EE技术中的Servlet、JavaBean和JDBC进行业务逻辑处理和访问数据库,因为J2EE不是本文重点,所以就分析一下Flex端获取后台数据库中数据的实现过程,具体代码如下:publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); response.setHeader("Cache-Control","no-cache"); try { Connectioncondb=GetConnection.getConnection(); st=condb.createStatement(); rs=st.executeQuery("select*fromvehicalIn"); while(rs.next()){ this.id=rs.getString("id"); this.vehicalID=rs.getString("vehicalID");………(省略部分代码) this.taxAmount=rs.getString("taxAmount"); panyName=rs.getString("companyName"); this.telephoneNum=rs.getString("telephoneNum"); content+="<vehicalIn><id>" +this.id+ "</id><vehicalID>" +this.vehicalID+ "</vehicalID><vehicalBrandModel>" +this.vehicalBrandModel+ "</vehicalBrandModel><vehicalDriveNum>" +this.vehicalDriveNum+………(省略部分代码) "</companyName><telephoneNum>" +this.telephoneNum+ "</telephoneNum></vehicalIn>"; } }catch(SQLExceptione){ e.printStackTrace(); }content="<?xmlversion=\"1.0\"encoding=\"UTF-8\"?><vehicalsIn>"+content;content+="</vehicalsIn>";System.out.println(content);response.getWriter().write(content); }以上是VehicalIn_Servlet这个Servlet中的doPost方法,它的作用是接收Flex端的请求把数据库中vehicalIn表中的数据读取出来然后封装成一个XML传回给Flex的数据组件DataGrid,将其作为DataGrid的数据源,DataGrid会自动解析XML,并把它显示出来。但这需要在web.xml文件中配置Servlet,添加Servlet的映射,从而使得Flex端在BlazeDS里面可以通过Servlet在Web容器中的映射找到对应的Servlet来处理数据的传输。4.5系统实现中的难点解决在整个系统实现的过程中还遇到一些困难比如说当Flex端把带有汉字的数据传给后台然后存入数据库中,再在Flex端刷新显示数据,就会遇到乱码的问题。还有在数据库中存储汉字,但是Flex端获取以后就变成了乱码,还有一种情况是Flex端正常显示而数据库中存储的数据是乱码。

温馨提示

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

评论

0/150

提交评论