Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 标准规范 > 基于java的药店管理系统,基于java的药店管理系统设计

基于java的药店管理系统,基于java的药店管理系统设计

收藏

本作品内容为基于java的药店管理系统,格式为 doc ,大小 4598824 KB ,页数为 62页

基于java的药店管理系统


('北京邮电大学毕业设计基于java的药店管理系统摘要随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。随着药店规模的发展不断扩大,药品数量急剧增加,有关药品的各种信息量也成倍增长,药店管理系统成为市场常用的系统之一。它最主要的特点是能够实时的和准确的控制店内的销售、管理情况。本课题所研究的药店管理系统,实现了药物管理分类的全过程,为患者呈现出所有药品的详细信息,此系统利用计算机网络实现了在各个不同种类药品信息共享,提高了患者在选药上的准确性,为药店也解决了不小的压力。同时也合理的分配资源。同时系统将所有的药品信息透明化,不会让广大群众花冤枉钱。本系统运用了Spring,Hibernate,Struts流行框架技术来对业务逻辑和数据持久化操作,在划分模块及确定各模块所需实现的功能,各模块之间的功能的协调和信息沟通,模块设计结束后的整合。此系统流程相对清晰,功能上主要完成对药品的管理和各种操作,同时也实现了对系统管理员的增删操作。通过后期系统的不断完善和改造,优化界面并且修改系统漏洞,基本实现了各个功能模块。关键词:药店管理系统,Web,java,数据库I北京邮电大学毕业设计PharmacymanagementSystembasedonJAVAAbstractWiththerapiddevelopmentofmodernscienceandtechnology,computertechnologyhaspenetratedintobrotherfield,becomethenecessarytoolsforvariousindustries,especiallytheInternettechnologypromotionandtheestablishmentoftheinformationhighway,makeITindustryinmarketcompetitionmoreshowsitsuniqueadvantages,intotheinformationtimes,ahugedatainformationwaitingforprocessingtheprocessingandtransmission,thismakesthefurtherdevelopmentofthedatabaseofbooksanduseisparticularlyurgent.Alongwiththedevelopmentofmedicineindustryrulesscaleexpandingconstantly,drugdramaticallyincrease,allkindsofinformationaboutthedrugsalsoincreaseexponentially.Medicalmanagementsystemonthemarketisthemostcommonlyusedoneofthesystem.Thesubjectofthemedicinemanagementsystem,realizethewholeprocessofdrugclassificationmanagementforpatientswithpresentsallpharmaceuticalofdetailedinformation,thesystemrealizedtheuseofcomputernetworkinalldifferentkindsofinformationsharingdrugs,andimprovethepatientintheaccuracyoftheselectedmedicine,forhospitalandsolvedtheamountofpressure.Atthesametimealsoreasonableallocationofresources.Andthesystemwillbeallofthedruginformationtransparency,won\'tletthepeopleinthebeautifulinjustice.ThissystemusingaSpring,Hibernate,Strutspopulartechnologyframeworkbusinesslogicanddatapersistentoperation,inthedivisionandthedeterminationneededforeachmodulemoduleoftherealizationofthefunction,thefunctionofeachmodulebetweenthecoordinationandinformationcommunication,moduledesigninaftertheendoftheintegration.Processofthesystemisrelativelyclear,thesystemfunctionmainlycompletesthemanagementofmedicaldrugs,aswellasimplementationofthesystemadministratortoaddordeleteoperation.Throughthesystemconstantlyimprovesandreformsfinally,optimizingtheinterfacedisplay,changingthesystemvulnerabilities,eachfunctionalmodulehasbeenbasicallyachieved.II北京邮电大学毕业设计Keywords:Medicinemanagementsystem,Web,java,database目录摘要...........................................................................................................................................IAbstract.....................................................................................................................................II绪论..........................................................................................................................................1第一章系统开发背景..............................................................................................................21.1开发背景.....................................................................................................................21.2我国药店管理系统发展现状.....................................................................................21.2.1不同层面药店的发展现状..............................................................................21.2.2药店进销存管理的发展现状..........................................................................3第二章系统相关技术.............................................................................................................42.1设计思想.....................................................................................................................42.2开发工具.....................................................................................................................42.2.1java简介..........................................................................................................42.2.2struts介绍........................................................................................................52.2.3spring介绍.......................................................................................................52.2.4Hibernate介绍.................................................................................................62.2.5安装mysql.......................................................................................................7第三章系统分析......................................................................................................................93.1需求分析.....................................................................................................................93.1.1可行性分析......................................................................................................93.1.2技术可行性......................................................................................................93.1.3经济可行性......................................................................................................93.1.4管理可行性....................................................................................................103.1.5法律可行性....................................................................................................103.2系统E-R图...............................................................................................................103.3数据流程分析...........................................................................................................123.4数据字典...................................................................................................................133.5系统用例图...............................................................................................................163.6数据库表...................................................................................................................17第四章系统设计与实现........................................................................................................194.1系统功能设计...........................................................................................................194.2系统功能界面介绍...................................................................................................194.2.1系统登录页面................................................................................................204.2.2系统首页页面................................................................................................204.2.3药品管理页面................................................................................................214.2.4类别管理页面................................................................................................234.2.5药品购买页面................................................................................................244.2.6销售管理页面................................................................................................274.2.7进货/需求管理页面......................................................................................284.2.8系统设置页面................................................................................................28第五章系统测试....................................................................................................................30III北京邮电大学毕业设计5.1系统测试原理及测试原则.......................................................................................305.1.1测试的原理....................................................................................................305.1.2系统测试原则................................................................................................315.2系统测试的方法.......................................................................................................315.3测试项目说明...........................................................................................................31结论........................................................................................................................................36致谢........................................................................................................................................37参考文献..................................................................................................................................38外文原文..................................................................................................................................39外文译文..................................................................................................................................47IV北京邮电大学毕业设计绪论随着计算机科学技术的发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,信息化管理发挥着越来越重要的作用。信息化管理工作已经渗透到各个领域的日常工作中,无论是其自身还是所发挥的作用,都为医药或个人的创新、发展以及经济效益做出了显著的贡献。就药店而言,特别是一些中小型的药店,在信息化过程中的步伐要落后于大中型药店,而对于这些药店的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快药品的信息化进程是必不可少的。药店需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加药品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。这些直接影响销售的方便性及管理的规范性。随着信息时代的发展,对效率的要求日益提高,药店经营涉及进、销、存等多个环节,涉及药品种类繁多、业务量大、库存管理复杂,使用手工管理已无法胜任,因而软件控制销售和管理已经取代了传统手工方式。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速药品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在药店购物中能基本上都能购得所需的药品,并且还要既保证药品质量还要享受优质,方便的服务。1北京邮电大学毕业设计第一章系统开发背景1.1开发背景网上药店管理系统是未来药店行业的发展趋势,就现在而言它已经成为我国药店行业发展的一种重要形态,同时为国民经济的发展发挥了重要的作用。随着药店高速的发展,其经营管理也变得愈加复杂,早期的药店人员站柜台的形式早已不能满足现有销售也的发展,所以网上药店管理是势在必行。如今随着现代化信息技术的迅猛发展和普及,药品的生存和竞争环境发生了根本的变化。药品要想在市场竞争中立于不败之地,必须进行信息化建设,所以信息化管理就成为药店获取竞争优势的关键所在。药店的信息管理技术是保证药品内、外部信息在药店行业中准确、快捷的流动,为决策提供依据,其关键是实现设计信息、生产信息管理信息的有效整合。药店信息化管理能够降低药品的成本,提高药店的整体管理水平,获得更大的利润。为此,在选题过程中,我选择了药店管理系统设计题目,依靠现代化的计算机信息处理技术来管理药店,使系统具有检索迅速、查找方便、可靠性高存储量大、保密性好、寿命长、成本低等特点,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出药品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快药店经营管理效率。步入数字化时代,有巨大的数据信息等待着加工处理和传输,药店系统本就需要有一个强大的数据库支持,这就需要对数据库进行进一步的开发和利用,而对药品的进销存管理,信息的存储和处理也显的尤其重要。要适应如今激烈的市场竞争,就需要有高效的处理方式和管理方法,因此加快药店的信息化进程是必不可少的。1.2我国药店管理系统发展现状1.2.1不同层面药店的发展现状目前,我国药店信息化状况的分布基本明朗:在高端药店,进销存核心结构体系基本运作正常,面临的主要问题是数据的深挖掘和加工、财务业务系统的高度集成、根据药品的并购重组保证系统和数据的统一、稳定;在中端药店,分散营运向集中管理转变,进销存核心结构系统正在由分散单店管理、销售核算向连锁管理、进价核算过渡在低端药店,刚刚涉足、转向连锁零售业,对于信息化认识处于表面层次,业务流程和信息系统建设需要一段时间的探索、认识和渐进过程。而整个零售行业对信息化的认识已经逐渐趋向一致的认识:信息化是药店可持续发展、增强核心竞争力的必要手段。药店管理系统从药品运营及管理的实际情况出发,结合当前中国零售业发展趋势,顺应了零售行业对信息化的要求,为商业管理信息系统提供了系统全面的技术解决方案。基于以上原因,药店管理系统目前在各个商业领域都发挥了很大的作用,也得到了越来越多的大、中、小型商业药店的应用。但就目前的应用状况分析,管理系统在中、高端药店得到了广泛的应用和重视,在小型药店、零售店的应用仅局限于信息化的表2北京邮电大学毕业设计面层次,没有得到高度的重视。同时,小药店也因资金方面问题限制了其向更高程度信息化的应用。随着信息化的快速发展,以及激烈的市场竞争,各药店也将在信息化上下功夫,以高效率、低成本立足市场,获得更多的利润。1.2.2药店进销存管理的发展现状进销存管理是药店在管理中的一个极为重要的环节,并且也是零售商能否取得利润的关键。也就是说,如果能做到进货合理、销售及时、库存量最少、积压药品减少,那么零售商将得到一个最理想的效益。由此可见,进销存管理决策的是否正确直接影响了零售商获得的经济效益。在对进销存进行手工管理的情况下,药店管理人员无法对进货量和库存量进行良好的控制,很难及时并正确得到药品的动态供求信息和库存信息,并且采购部门、仓储部门和销售部门各部门之间的通讯也不能做到通畅,这在竞争激烈的市场中也是非常不利的。药店进销存管理系统就是在这种状况下出现的,它利用计算机的技术,使得药店进货、库存和销售能够有机结合起来,提高药店正常运营的效率,提升效益,而且药店在系统的运用下可以在客观性、时效性、科学性等方面获得信息,为管理者运用现代化手段管理药店提供了保证,使药品的各个方面的投入最大限度地发挥效益,避免了在药品购、销、存多方面产生漏洞。我国国内药店在信息技术设备上投入的资金相对较小,在日常管理中,计算机应用、数据交换、信息传输上都存在滞后的问题。尽管一些药店已经配备了POS系统,不过仅仅充当着计算器、出纳和打印机的功能,而在市场预测、资料读取存储、报表生成、药品的分析等功能都无法进行落实。在一些环节上往往还是采用人力管理的方式进行低效的销售、采购、仓储、财务处理。本系统以已有的进销存系统作为基础,对药店的经营管理中的信息收集、加工、使用进行分析研究,实现药店系统的设计和实施,最终进行对经营的管理和决策,增加药店的效益,并提高日常运营效率。3北京邮电大学毕业设计第二章系统相关技术2.1设计思想本系统的设计思想是:该系统使药店的管理员,可以更加方便地使用药店管理系统来管理将实现药物管理分类的全过程,为患者呈现出所有药品的详细信息,此系统利用计算机网络实现了在各个不同种类药品信息共享,提高了患者在选药上的准确性,改善了小病患者的就医困难现状。为医院也解决了不小的压力,同时也合理的分配资源,同时系统将所有的药品信息透明化。这样就提高了在WEB领域下的办公自动化的信息管理,使医药的管理员可以更加方便地在WEB领域中对医药的各种进货产品,发货产品,库存药品,以及各种产品的进货发货价格进行管理,使医药的管理员,更加方便地查看医药内的进货产品,发货产品,库存产品,以及各种产品的价格等等信息进行查看。通过这些价格等等信息。进行简单的统计计算。提高了药店管理员的工作效率,这样就使药店管理系统就会变得更加有意义。2.2开发工具2.2.1java简介Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。具备了简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。(1)面向对象:其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。(2)可移植性:就是在这个系统上作的程序经过一次编译后可以移植到别的系统上解释执行,只要经过简单的粘贴和复制就行了,不影响程序的效果(3)安全性:在服务器上运行的大多数Java(TM)程序是应用程序,而不是applet,所以“砂箱”安全性模型对它们不起限制作用。从安全性的观点看,Java应用程序所受的安全性限制与服务器上的任何其它程序相同。要在服务器上运行Java程序,4北京邮电大学毕业设计您必须对集成文件系统中的类文件具有权限。程序一旦启动,它就在该用户权限控制下运行。您可以使用沿用权限来访问具有运行程序的用户的权限和程序拥有者权限的对象。沿用权限临时地将用户原先无权访问的对象的权限授予用户。(4)并发性:Java支持多线程技术,就是多个线程并行机制,多线程是Java的一个重要方法,特别有利于在程序中实现并发任务.Java提供Thread线程类,实现了多线程的并发机制.然而,程序的并发执行必定会出现多个线程互斥访问临界资源的局面,因而并发系统解决的关键就是对临界资源的管理和分配问题,而在进行临界资源分配时有两方面需要考虑,即安全性和公平性.文中首先讨论了多线程并发系统中的安全性与公平性问题,指出安全性与公平性在并发系统中访问临界资源时的重要性.并通过火车行驶单行隧道的实例,演示各种条件下的行驶情况来进一步说明该问题.JavaEE(JavaPlatform,EnterpriseEdition)是sun公司推出的企业级应用程序版本。这个版本以前称为J2EE。能够我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。JavaEE技术包含了JDBC(JavaDatabaseConnectivity)提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序,同时,JDBC也是个商标名。2.2.2struts介绍Struts对Model,View和Controller都提供了对应的组件。ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。Model部分:由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。View部分:该部分采用JSP(或HTML、PHP……)实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。Controller组件:Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,就是ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。2.2.3spring介绍Spring框架是一个分层架构,由7个定义良好的模块组成。Spring模块构建在核心5北京邮电大学毕业设计容器之上,核心容器定义了创建、配置和管理bean的方式,组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。SpringAOP:通过配置管理特性,SpringAOP模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何对象支持AOP。SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。SpringDAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。SpringDAO的面向JDBC的异常遵从通用的DAO异常层次结构。SpringORM:Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatisSQLMap。所有这些都遵从Spring的通用事务和DAO异常层次结构。SpringWeb模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与JakartaStruts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。SpringMVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI。Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。Spring设计的核心是org.springframework.beans包,它的设计目标是与JavaBean组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是BeanFactory接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory也可以管理对象之间的关系。BeanFactory支持两个对象模型。单态模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton是默认的也是最常用的对象模型。对于无状态服务对象很理想。原型模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。bean工厂的概念是Spring作为IOC容器的基础。IOC将处理事情的责任从应用程序代码转移到框架。正如我将在下一个示例中演示的那样,Spring框架使用JavaBean属性和配置数据来指出必须设置的依赖关系。2.2.4Hibernate介绍Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软6北京邮电大学毕业设计件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate不仅管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间,它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(EnterpriseJavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的优缺点是Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。Hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。缺点是Hibernate限制您所使用的对象模型。例如,一个持久性类不能映射到多个表。2.2.5安装mysql1、运行mysql安装文件。2、按Next,然后选择安装方式,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,下一步,在“DeveloperComponents(开发者部分)”上左键单击,选择“Thisfeature,andallsubfeatures,willbeinstalledonlocalharddrive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQLServer(mysql服务器)”、“ClientPrograms(mysql客户端程序)”、“Documentation(文档)”也如此操作,以保证安装所有文件。3、点击Change,改变安装路径;原路径是"C:\\ProgramFiles\\MySQL\\MySQLServer5.5\\",如:也可以修改为:"D:mysql\\"。4、现在开始安装最后的配置,点Next,选择服务器类型,“DeveloperMachine(开发测试类,mysql占用很少资源)”、“ServerMachine(服务器类型,mysql占用较多资源)”、“DedicatedMySQLServerMachine(专门的数据库服务器,mysql占用所有可用资源)”,大家根据自己的类型选择了,一般选“ServerMachine”,不会太少,也不会占满。5、再Next,选择mysql数据库的大致用途,“MultifunctionalDatabase(通用多功能型,好)”、“TransactionalDatabaseOnly(服务器类型,专注于事务处理,一般)”、“Non-TransactionalDatabaseOnly(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),随自己的用途而选择了,我这里选择“TransactionalDatabaseOnly”,按“Next”继续。6、对InnoDBTablespace进行配置,就是为InnoDB数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续7北京邮电大学毕业设计7、选择您的网站的一般mysql访问量,同时连接的数目,“DecisionSupport(DSS)/OLAP(20个左右)”、“OnlineTransactionProcessing(OLTP)(500个左右)”、“ManualSetting(手动设置,自己输一个数)”,我这里选“OnlineTransactionProcessing(OLTP)”,自己的服务器,应该够用了,按“Next”继续8、是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,我这里启用,把前面的勾打上,PortNumber:3306,按“Next”继续9、对mysql默认数据库语言编码进行设置,第一个是西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然后在CharacterSet那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字、和其它乱七八糟的字——使用mysql的时候,在执行数据操作命令之前运行一次“SETNAMESGBK;”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。按“Next”继续10、选择是否将mysql安装为windows服务,还可以指定ServiceName(服务标识名称),是否将mysql的bin目录加入到WindowsPATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe-uusername-ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,ServiceName不变。按“Next”继续。11、询问是否要修改默认root用户(超级管理)的密码(默认为空),“Newrootpassword”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“ModifySecuritySettings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。“Enablerootaccessfromremotemachines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“CreateAnAnonymousAccount(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。12、最后一个Next再加Execute,可以看到上面的步骤全部完成,安装完成。13、检测MySQL是否安装成功,键盘的Win+R,弹出运行对话框,输入cmd后回车,进入命令提示符,然后输入:"mysql-uroot-p",回车后要求输入密码,因为密码为空,所以直接再按回车即可。8北京邮电大学毕业设计第三章系统分析3.1需求分析21世纪,药店的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为药店营业者努力追求的目标。药店管理系统是一个药店行业不可缺少的一部分,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力,这些都能够极大地提高货品医药的管理效率和降低经营成本,使药店管理科学化、正规化、经营盈利化它的内容对于药店的决策者和管理者来说都是至关重要的,因此,开发一个药店管理系统是很有必要的,具有其特有的技术意义和管理意义。同时随着药店规模的不断扩大,与供应商间的往来及顾客销售业务也越来越多,手工管理这些纷繁复杂数据的方式已经不适应药店发展的要求,实现数据规范化、自动化的电脑管理,是一个管理规范、动作高效的药店的必然要求。药店管理系统的目标是实现药品信息化管理,减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提升药店综合竞争力。时间就是金钱,效率就是生命。药店管理系统能够为药店节省大量人力资源,减少管理费用,从而间接为药店节约成本,提高工作效率。因此药店管理系统有着广泛的前景和实际应用的价值。3.1.1可行性分析对药店管理系统的可行性的分析与研究是开发者实施该系统的基本前提,是操作实施必不可少的步骤。可行性研究的目的就是用最小的资源与可能短的时间内研究并确定提出的问题是否行的通的解决方案。通常分析这些方案的一般从技术可行性、经济可行性、管理可行性、法律可行性四方面展开,来分析本课题方案的具体可操作的可能性。3.1.2技术可行性药店管理系统采用Struts2,Spring,Hibernate等当今流行的开源框架等技术应用到模块制作当中,结合药店管理系统的特点,设计基于SSH开发框架的药店管理系统。其中:表现层使用HTML,jsp,JavaScript等,Struts2充当控制层,业务逻辑层则采用Spring,数据持久层采用Hibernate,尽量发挥出三大框架各自的特点充分协调工作。在划分模块及确定各模块所需实现的功能,各模块之间的功能的协调和信息沟通,模块在设计结束后的整合使系统的可扩张性更加强化,到达日后维护成本低的效果。9北京邮电大学毕业设计3.1.3经济可行性经济可行性研究是对组织的经济现状和投资能力进行分析,对系统建设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。由于本系统是为工作者提供方便快捷网络化办公内容,登陆本系统,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为人们节约大量的时间和精力。所带来的方便及效益远远大于系统软件的开发成本。在经济上完全可行。3.1.4管理可行性药店管理系统由若干个模块组成,开发运行后,平时的维护与管理简单快捷。同时,采用模块化编程,降低了错误产生次数,提高了开发效率。对于完成同样功能的进程,采用同一个程序启多个子进程的方式。配置文件采用标准格式文本文件进行配置,采用普通的标准格式文本文件简单,清楚,容易维护。3.1.5法律可行性1、所有技术资料都为合法。2、开发过程中不存在知识产权问题。3、未抄袭任何系统,不存在侵犯版权问题。4、开发过程中未涉及任何法律责任。3.2系统E-R图E-R图是一种概念模型。概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是显示世界到信息世界的第一层抽象,使数据库设计人员进行数据库设计的有利工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接的表达应该用众的各种语义知识,另一方面他还应该简单、清晰并且易于用户理解。下面是系统整体的E-R图如(图3-1)所示。10北京邮电大学毕业设计图3-1系统E-R图依据数据库设计的方法,可按照本系统数据特点设计相应的实体关系,分别如(图3-2)~(图3-5),它们之间的关系如下图所示:1.类别信息表tb-category的实体图图3-2类别信息实体图2.药品信息表tb-medicine实体图11tb-categoryidnamedescriptioncreatetime北京邮电大学毕业设计图3-3药品实体图3.销售详情信息表tb-selldetail实体图图3-4药品销售实体图12tb-medicinemedicinemedicinemedicinemedicineidcategoryIdphotoPathnamereqCountmedNofactoryAdddescriptionpricemedCounteselldetailuseridmedididsellTimesellNamesellPricesellCountSellTotal北京邮电大学毕业设计4.管理员信息表tb-user实体图图3-5管理员实体图3.3数据流程分析数据流程分析,即把数据在组织(或原系统)内部的流动情况抽象地独立出来,舍去了具体组织机构、信息载体、处理工作、物资、材料等,单从数据流动过程来考查实际业务的数据处理模式。数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。数据流图由四种基本的元素组成:数据流(DataFlow)、处理(Process)、数据存储和数据源(数据终点)。(1)数据流(DataFlow):为具有名称且有流向的数据,用标有名称的箭头表示。一个数据流可以是记录、组合项或基本项。(2)处理(Process):表示对数据多进行的加工和变换,在图中用圆形表示。指向处理的数据流为该处理的输入数据,离开处理的数据流为该处理的输出数据.(3)数据存储:表示用文件方式或数据库形式所存储的数据,对其进行的存取分别以指向或离开数据存储的箭头表示。(4)数据源及数据终点:表示数据的来源或数据的去向,可以是一个组织或人员,它处于系统范围之外,所以又称它为外部实体,它是与系统有关的外部事物或外部环境。其图形符号用平行四边形表示。数据流程图符号说明:13UseridcreateTimepasswordusernameee北京邮电大学毕业设计表示外部实体;表示数据的处理过程;表示数据存储;表示数据流的方向根据上面的分析我们可以对系统画出如(图3-6)所示的顶层数据流图。图3-6系统顶层数据流图第1层数据流图是在顶层上的细分,从整体考虑数据流动及流向,如(图3-7)所示。图3-7系统第1层数据流图3.4数据字典系统数据流程的分析完成后,接下来用数据字典描述数据流图中一些主要的数据14管理员0管理系统药品信息管理员更新药品信息更新管理员信息生成销售信息显示信息管理员信息存储药品信息存储购买、销售处理购买信息管理员信息药品信息信息的更新数据药品信息管理员信息处理信息信息存储处理后的购买信息北京邮电大学毕业设计元素条目、数据流、处理过程、数据存储和外部实体。数据元素条目如下所示:数据元素条目名称:管理员编号说明:药店管理员的编号数据值类型:离散长度:20有关数据结构:管理员信息表有关编码说明:LiXXX编号管理员代号数据结构条目如下所示:15北京邮电大学毕业设计数据结构条目名称:管理员信息说明:创建管理员信息记录的数据结构:用户名Id密码建立时间有关数据流、数据存储:管理员信息数据结构条目名称:药品信息说明:创建药品信息记录的数据结构:药品编号药品名称类别编号价格库存厂址描述药品图片有关数据流、数据存储:药品信息数据流条目如下所示:数据流条目数据流名称:药品信息维护简述:管理员对药品信息维护数据来源:药品信息数据流向:药品信息的维护结果包含的数据结构:药品信息表数据流条目数据流名称:进货信息管理简述:管理员对进货信息管理数据来源:填写进货信息数据流向:药品的进货管理结果16北京邮电大学毕业设计数据流条目数据流名称:药品销售管理简述:管理员对药品销售情况管理数据来源:药品销售信息数据流向:药品销售信息的管理结果数据流条目数据流名称:药品库存管理简述:管理员对药品库存情况管理数据来源:药品库存信息数据流向:药品库存信息的查询结果数据存储条目如下所示:数据存储条目名称:管理员信息说明:存储管理员的相关信息结构:用户名密码Id建立时间有关的数据流:管理员信息请求管理→管理员信息管理数据存储条目名称:药品信息说明:存储药品的相关信息结构:药品编号药品名称类别编号价格库存厂址有关的数据流:药品信息管理请求→药品信息管理处理功能条目如下所示:17北京邮电大学毕业设计处理功能条目名称:药品信息维护输入数据::药品信息表中各字段输出数据:是否添加,删除,修改成功,正确传送处理逻辑:1.是否有漏填2.数据要求是否匹配处理功能条目名称:进货登记输入数据:进货表中各字段输出数据:是否登记成功,进货药品正确传送处理逻辑:1.是否有漏填2.数据要求是否匹配包含的数据结构:管理员信息处理功能条目名称:库存查询输入数据:药品编号,药品名称输出数据:查询的药品库存信息正确显示处理逻辑:库存报警包含的数据结构:用户信息表包含的数据结构:管理员信息处理功能条目名称:销售登记输入数据:销售表中各字段输出数据:是否登记成功,进货药品正确传送处理逻辑:1.是否有漏填2.数据要求是否匹配包含的数据结构:药品信息表外部实体条目如下所示:18北京邮电大学毕业设计外部实体条目名称:管理员说明:管理员输入数据流:管理员账号,密码输出数据流:系统管理员管理个数:1个3.5系统用例图药店管理系统的管理员对本系统的操作包括登录系统、药品管理、添加药品、添加类别、销售管理、进货/需求管理、系统管理等功能。从管理员角度描述系统功能,并指出管理员的权限,其用例图如(图3-8)所示。图3-8管理员用例图3.6数据库表管理员信息表:存放管理员信息的表,管理员的用户名和密码。药品信息表:用来存储药品相关信息,包括药品编号,药品名称,产地,药品类型等。销售信息表:用来存储药品销售相关信息,包括药品编号,药品名称,药品价格,药品数量,药品销售时间,操作人员,药品总额。库存信息表:用来存储库存相关信息,包括库存编号,库存量,库存审核,库存时间等。进货信息表:存放进货相关信息,包括进货编号,进货量,进货审核,进货时间19北京邮电大学毕业设计等。现将数据库表结构介绍如下:1.药品类别表:图3-9药品类别表2.药品信息表:图3-10药品信息表3.销售信息表:图3-11销售信息表4.管理员信息表:图3-12管理员信息表20北京邮电大学毕业设计21北京邮电大学毕业设计第四章系统设计与实现4.1系统功能设计详细设计阶段的根本目的是确定应该怎样设定系统,就是到了真正模块分块设计的阶段,本阶段应该得到系统的精确描述和逻辑流程,下面是系统功能模块图、各个模块流程图及处理过程。图4-1系统功能模块图管理员主要是对药店管理系统进行管理:(1)系统用户管理:管理药店的管理员信息,可以添加、修改、删除用户信息。(2)药品类别管理:管理药店的药品类别信息,可以进行添加、修改和删除操作。(3)药品信息管理:管理药店在药品类别下不同药品的药品信息,进行添加、修改和删除操作。(4)购买药品管理:管理选购药品信息,进行购买,当购买一种药品后会有继续购买、清除、结账的功能操作。(5)进货信息查询:输入查询号,即可以查看到货物,然后选择是否完成进货。(6)销售信息管理:可以查看所有药品的销售信息,今日明细,也可以按照日期查询。(7)药品进货管理:进行日常的药品进货登记,可以添加所需进货药品数量。(8)库存信息浏览:此页面显示所有的库存药品信息,可以按照条件进行查询。4.2系统功能界面介绍通过以上的分析与设计,才能构成一个完整的药店管理系统,下面介绍一下本系统的功能界面。22北京邮电大学毕业设计4.2.1系统登录页面本系统的登录页面如(图4-2)所示。图4-2系统登录页面用户在输入正确的用户名和密码可以进入本系统,完成各项操作。登录的流程图如(图4-3)所示。图4-3系统的登录流程图23开始结束接收登录信息查询数据库数据是否正确否是登录失败登录成功北京邮电大学毕业设计4.2.2系统首页页面进入系统后,可以看到左面的各个功能模块的导航,具体界面如(图4-4)所示。图4-4系统管理界面4.2.3药品管理页面(1)添加药品,管理员可以在此输入药品的编号,从而进行下一步更详细的药品信息的添加,如果输入编号之后已经存在药品,还可以修改原有药品信息,如(图4-5)所示。24北京邮电大学毕业设计图4-5添加药品页面图4-6添加药品结束模块流程图如(图4-7)所示。25北京邮电大学毕业设计图4-7添加药品流程图(2)查看药品,可以输入药品名称的关键字进行模糊查询,查询后药品信息以列表形式展示出来,在此处可以对药品进行进货、修改、购买的操作。如(图4-8)所示。图4-8药品查询页面(3)查看库存,输入大于、等于、小于可以进行库存查询,如(图4-9)所示。26开始结束添加信息将信息更新到数据库中更新是否成功否是添加失败添加成功北京邮电大学毕业设计图4-9库存查询页面4.2.4类别管理页面在此添加药品的类别和描述,即可以完成药品类别的添加,如(图4-10)所示。图4-10类别添加页面在添加药品类别之后,可以查看药品类别,并且显示类别的具体信息,如(图4-11)所示。27北京邮电大学毕业设计图4-11查看药品类别4.2.5药品购买页面1.选购药品,在药品类别后面有购买的按钮,点击按钮可以跳转到填写购买信息的页面,确认信息后可以继续购物也可以结账完成购买,如(图4-12)所示。图4-12选购药品页面28北京邮电大学毕业设计该页面可以浏览药品具体信息,确认是否购买,若选择购买则跳转到购买药品页面,如(图4-13)所示。图4-13查看药品信息点击购买药品之后,将转到购买药品页面,确定购买药品的数量等信息,选择提交按钮,如(图4-14)所示。图4-14购买药品页面2.查看选购,在查看选购处可以继续购买,清除购买或是结账,如(图4-15)所示。29北京邮电大学毕业设计图4-15查看选购页面该功能模块的流程图如(图4-16)所示。图4-16选购药品流程图30北京邮电大学毕业设计4.2.6销售管理页面在此处可以查看所有的销售明细,今日明细,也可以按照日期来查询,如(图4-17)所示。图4-17销售明细查看页面4.2.7进货/需求管理页面1.添加进货,在此处可以添加进货,并可以修改进货,如图(4-18)所示。图4-18添加进货页面2.查看进货,在进货后可以查看具体进货信息,从而决定是否完成进货,如(图4-19)所示。31北京邮电大学毕业设计图4-19查看进货页面4.2.8系统设置页面1.管理员添加,输入用户名、密码、确认密码就可以完成管理员的添加,如(图4-20)所示。图4-20管理员添加页面2.查看管理员,添加后可以查看管理员信息,还可以进行删除操作,如(图4-21)所示。图4-21查看管理员页面32北京邮电大学毕业设计第五章系统测试5.1系统测试原理及测试原则在完成某一功能模块后,都要进行一下系统测试。检验所完成的这一模块是否能实现预计的功能。其目的是方便整个系统的实现。5.1.1测试的原理测试主要依据是被试系统的研制任务书和技术规格书,是对软件雄体功能和性能的综合测试与评估。测试原理是软件测试活动的理论基础,测试方法是铡试原理的实际应用和获得测试数据的手段。基于软件的共性,对于软件的测试要遵循一般软件的测试原理和方法。同时,针对软件的特性,必须找到合适的测试方法。测试用例的合理性对于软件的测试与评估具有关键作用,而如何使设计的用例、合理并且典型有效并不容易。所以应该与软件的研制人员以及最终用户一起,有针对性地研究实际操作环境并加以描述,形成合理的测试用例集。另一方面,软件运行环境的复杂程度对软件评估具有重要作用,所以应产生尽量逼真的运行背景以便于研究。软件测试的周期如(图5-1)所示。图5-1软件测试周期示意图33需求分析系统设计编制程序单元测试集成测试系统测试确认测试使用维护测试阶段开发阶段北京邮电大学毕业设计5.1.2系统测试原则程序员应避免测试自己编写的程序;测试用例的设计必须包括预期的输出结果;测试用例应包括有效的和期望的输入情况,也要包括无效的和不期望的输入情况;所有的测试都应追溯到用户需求,所有测试活动都应该是有计划的,并且计划能够得到保障。只检查程序是否做了它应该做的事这仅完成了测试工作的一半,另一半则是要检查程序是否做了它不该做的事;一段程序中存在错误的概率与在这段程序中已发现的错误数成比例;测试上作必须有明确的目标;尽早地和不断地进行软件测试;穷举测试是不可能的,充分覆盖程序逻辑是有可能的。5.2系统测试的方法软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。(1)黑盒测试黑盒测试也称功能测试或数据驱动测试或基于规范的测试,它是在己知产品所应具有的功能的前提下,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者对程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等。“黑盒”法着眼于程序外部结构,不考虑内部逻辑结构,只是针对软件的界面和软件需求规格说明中规定的功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。(2)白盒测试白盒测试也称结构测试或逻辑驱动测试或基于实现的测试,它是知道产品内部工作过程。可通过测试来检测产品内部动作是否按照规格说明书的规定止常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试的主要方法有程序逻辑驱动测试、基本路径测试和数据流测试等。“白盒”法需要全面了解程序的内部逻辑结构、对所有逻辑路径进行测试。因此,白盒”法是穷举路径测试。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。5.3测试项目说明表5.1登陆药店管理系统测试用例测试项目名称登录测试34北京邮电大学毕业设计测试内容是否能成功登录执行者栗茜续表5.1测试用例输入:用户名:liqian密码:liqian输出:成功登录,进入管理页面错误输入1:用户名或者密码为空错误输出:没有提示,直接跳转回原界面错误输入2:输入的用户名和密码不存在错误输出:没有提示,跳转回原界面步骤及操作:1.进入登录的页面2.输入用户名和密码3.点击登录按钮4.系统直接跳转管理页面允许偏差没有进入管理页面条件用户名和密码需要提前录入数据库表5.2药品添加测试用例测试项目名称药品添加测试测试内容是否能正确添加药品执行者栗茜测试用例输入:药品编码:012药品名称:甘草片单价:2元库存数量:20出厂地址:哈药六厂描述:止咳清热输出:添加成功,并把添加的药品信息添加到原有药品中.错误输入:有空未填写35北京邮电大学毕业设计错误输出:请完成输入操作错误输入:续表5.2药品编码输入字符错误输出:请输入整数错误输入:药品名称输入123请输入正确药品名称错误输入:价格输入一百元错误输出:请输入数字步骤及操作:1.进入添加药品的页面2.输入各空项3.确定添加4.添加成功,转到查看药品页面表5.3药品类别管理测试用例测试项目名称药品类别测试测试内容测试药品类别是否能够正确添加执行者栗茜输入:药品类别:保健药类别表述:保健身体输出:进入查看药品类别页面步骤及操作:1.进入类别管理的主页面2.在药品类别内输入需要新加入的类别名称3.在类别描述中输入描述信息4.点击确认5.进入类别查看页面6.添加成功表5.4购买药品测试用例测试项目名购买药品测试36北京邮电大学毕业设计称测试内容购买药品功能是否能够正确执行执行者栗茜测试用例续表5.4输入:修改数量中的内容,输入3输出:进入已选购药品页面,并显示应付总金额步骤及操作:1.进入购买药品的主页面2.选择要购买的药品3.点击购买按钮4.输入要买药品的数量5.点击提交6.进入已购买药品页面,并显示应付总金额表5.5销售管理测试用例测试项目名称销售管理测试测试内容查看销售明细是否能正确执行执行者栗茜测试用例输入:点击查看明细输出:显示销售明细页面,内容是所有销售信息,并且显示具体药品内容。步骤及操作:1.进入销售管理的主页面2.显示具体药品销售信息表5.6进货/需求管理测试用例测试项目名称进货/需求管理测试测试内容添加进货,查看进货功能能否正确执行执行者栗茜测试用例输入:在药品编码中输入003输出:37北京邮电大学毕业设计跳转到更新需求页面输入:在数量中输入需要的药品数40输出:显示药品进货/需求信息续表5.6输入:数量中不输入任何内容错误输入:数量不能为空步骤及操作:1.进入进货/需求管理页面2.输入进货数量3.点击提交按钮4.显示进货药品5.在药品信息的需求一栏中显示需求数量表5.7系统管理测试用例测试项目名称系统管理测试测试内容各项功能能否正确执行执行者栗茜测试用例输入:在名称中输入admin在密码中输入admin在确认密码中输入admin输出:跳转到所有用户管理界面,显示新添加的用户信息输入:在登录界面中输入刚添加的用户名和密码输出:进入药店管理界面步骤及操作:1.进入添加管理员主页面2.在用户名,密码,确认密码中输入信息3.点击提交4.跳转到所有用户界面,并显示新添加的用户信息38北京邮电大学毕业设计结论药店管理系统的开发,使系统的管理员,可以更加方便地使用药店管理系统来管理药品的基本信息,药品销售,药品库存和进货等几个非常重要的操作。这样就提高了在WEB领域下的办公自动化的信息管理,使药店的管理员可以更加方便地在WEB领域中对药品的各种信息,库存药品信息,以及各种药品的进货发货价格进行管理,使药店的管理员,更加方便地查看药店内的进货产品,发货产品,库存产品,以及各种产品的价格,通过这些价格进行简单的统计计算。提高了药店管理员的工作效率,这样使药店管理系统变得更加有意义。通过这次本科毕业设计,使我对web开发有了更为深刻的理解,积累了一定的网站开发经验。在这次毕业设计中,通过实际调查研究与编写程序,使自己理论与实践相结合,熟悉了编程环境,掌握了一些社会经验和编程经验,对自己今后的工作和学习有着良好的促进作用。在开发过程中遇到了许多不可预知的困难,但最终在老师和同学的帮助下一一解决了,同时学到了许多技术知识和开发技巧。当然,由于时间有限,个人能力的不足以及开发经验的缺乏,本系统还有许多需要改进的地方,如商品的查询功能比较简单,我们可以充分的利用SQL语句来开发功能更为强大的查询系统。此外,在以后系统运行的过程中,可能还会遇到些问题,将会在以后有可能的情况下进一步改进系统功能。在本次毕业设计中,通过调研阶段的系统学习和在设计过程中对细枝末节的补充和对技巧的掌握对我受益匪浅,同时实践能力得到了进一步提高。我在本次毕业设计中培养了严肃认真和实事求是的科学态度,也发现在IT行业里,技术日新月异,为了在这个行业里立足,必须领会最新的思想,学习最新的知识,掌握最新的技术,迎合最新趋势,通过不断的学习充实自己。39北京邮电大学毕业设计致谢光阴似箭,转眼间大学生活已接近尾声。在大学的最后阶段,毕业论文是我的重中之重,在论文完成的过程中,除了我自己的努力之外,也凝聚了很多人的心血。所以我要对帮助我完成论文的所有人表示感谢。首先,我要对我的指导老师,表示诚挚的感谢。感谢我的老师,他放下神圣的师道尊严,以朋友的身份告诉我怎样完成这篇论文,怎样搜集资料。他在忙碌的工作中挤出时间来审查、修改我的论文,严格把关,循循善诱,在此我表示衷心感谢。其次,我的同学也给予了热情的帮助,感谢他们为我提出有益的意见和建议,感谢他们对我无私的帮助。最后,我要感谢我的父母,他们一直是我努力和学习的动力,感谢他们为我所付出的一切。在写论文的过程中,尽管我付出了很大的心血,但由于知识和经验的不足,不当之处恳请各位老师给予指正。40北京邮电大学毕业设计参考文献[1]沈娟.药店综合管理系统的设计与实现[D].电子科技大学,2012.[2]苏剑波.基于JAVA的网站内容管理系统的设计与实现[J].上海交通大学,2010.[3]张建英.基于分布式数据库C/S的连锁药店管理系统设计与实现[J].微机发展,2002.[4]耿壮.基于JavaEE的信息管理系统设计与实现[D].电脑知识与技术,2012.[5]商宇,李丽.基于WebService的连锁药店管理系统的研究与设计[J].云南民族大学报,2005.[6]孙明磊.WEB数据库—基于JSP技术实现电子商务网站的设计.吉林大学,2009.[7]崔尚森,张白.Web应用开发技术[M].西安:西安电子科技大学出版社,2007,34.[8]杨瑞龙.JavaEEWeb程序设计(Eclipse平台)[M].北京:机械工业出版社,2008,134.[9]林信良.Spring[M].北京:电子工业出版社,2006,166.[10]Chien-HuangLiu.DataflowanalysisandtestingofJSP-basedWebapplication.DepartmentofComputerScienceandInformationEngineering,2006[11]JuFengJuan.TheApplicationofServletandJavabeanIntheDesignofBlog.Deptofcomputerscience,JiangxiBlueskyUniversity,Nanchang,China,2011[12]Krill,Paul.ApachereadiesTomcatJavaservletcontainerupdate.InfoWorld.com,2009[13]Anonymous.J9TechnologiesDebugsJDBCProtocolAdd-inSolutionforHPLoadRunner.WirelessNews,200941北京邮电大学毕业设计外文原文(出处:MalcolmDavis.Struts--anopen-sourceMVCimplementation[J].IBMSystemsJournal,2006,44(2):33-37.)Struts——anopen-sourceMVCimplementationMalcolmDavisThisarticleintroducesStruts,aModel-View-ControllerimplementationthatusesservletsandJavaServerPages(JSP)technology.StrutscanhelpyoucontrolchangeinyourWebprojectandpromotespecialization.EvenifyouneverimplementasystemwithStruts,youmaygetsomeideasforyourfutureservletsandJSPpageimplementation.IntroductionKidsingradeschoolputHTMLpagesontheInternet.However,thereisamonumentaldifferencebetweenagradeschoolpageandaprofessionallydevelopedWebsite.Thepagedesigner(orHTMLdeveloper)mustunderstandcolors,thecustomer,productflow,pagelayout,browsercompatibility,imagecreation,JavaScript,andmore.Puttingagreatlookingsitetogethertakesalotofwork,andmostJavadevelopersaremoreinterestedincreatingagreatlookingobjectinterfacethanauserinterface.JavaServerPages(JSP)technologyprovidesthegluebetweenthepagedesignerandtheJavadeveloper.Ifyouhaveworkedonalarge-scaleWebapplication,youunderstandthetermchange.Model-View-Controller(MVC)isadesignpatternputtogethertohelpcontrolchange.MVCdecouplesinterfacefrombusinesslogicanddata.StrutsisanMVCimplementationthatusesServlets2.2andJSP1.1tags,fromtheJ2EEspecifications,aspartoftheimplementation.YoumayneverimplementasystemwithStruts,butlookingatStrutsmaygiveyousomeideasonyourfutureServletsandJSPimplementations.Model-View-Controller(MVC)JSPtagssolvedonlypartofourproblem.Westillhaveissueswithvalidation,flowcontrol,andupdatingthestateoftheapplication.ThisiswhereMVCcomestotherescue.MVChelpsresolvesomeoftheissueswiththesinglemoduleapproachbydividingtheproblemintothreecategories:\uf0b7ModelThemodelcontainsthecoreoftheapplication\'sfunctionality.Themodelencapsulatesthestateoftheapplication.Sometimestheonlyfunctionalityitcontainsisstate.Itknowsnothingaboutthevieworcontroller.\uf0b7ViewTheviewprovidesthepresentationofthemodel.Itisthelookoftheapplication.Theviewcanaccessthemodelgetters,butithasnoknowledgeofthesetters.Inaddition,itknowsnothingaboutthecontroller.Theviewshouldbenotifiedwhenchangestothemodeloccur.42北京邮电大学毕业设计\uf0b7ControllerThecontrollerreactstotheuserinput.Itcreatesandsetsthemodel.MVCModel2TheWebbroughtsomeuniquechallengestosoftwaredevelopers,mostnotablythestatelessconnectionbetweentheclientandtheserver.Thisstatelessbehaviormadeitdifficultforthemodeltonotifytheviewofchanges.OntheWeb,thebrowserhastore-querytheservertodiscovermodificationtothestateoftheapplication.Anothernoticeablechangeisthattheviewusesdifferenttechnologyforimplementationthanthemodelorcontroller.Ofcourse,wecoulduseJava(orPERL,C/C++orwhatever)codetogenerateHTML.Thereareseveraldisadvantagestothatapproach:\uf0b7Javaprogrammersshoulddevelopservices,notHTML.\uf0b7Changestolayoutwouldrequirechangestocode.\uf0b7Customersoftheserviceshouldbeabletocreatepagestomeettheirspecificneeds.\uf0b7Thepagedesignerisn\'tabletohavedirectinvolvementinpagedevelopment.\uf0b7HTMLembeddedintocodeisugly.FortheWeb,theclassicalformofMVCneededtochange.Figure4displaystheWebadaptationofMVC,alsocommonlyknownasMVCModel2orMVC2.StrutsdetailsDisplayedinFigure6isastripped-downUMLdiagramoftheorg.apache.struts.actionpackage.Figure6showstheminimalrelationshipsamongActionServlet(Controller),ActionForm(FormState),andAction(ModelWrapper).Figure6.UMLdiagramoftherelationshipoftheCommand(ActionServlet)totheModel(Action&ActionForm)TheActionServletclassDoyourememberthedaysoffunctionmappings?Youwouldmapsomeinputeventtoapointertoafunction.Ifyouwhereslick,youwouldplacetheconfigurationinformationinto43北京邮电大学毕业设计afileandloadthefileatruntime.FunctionpointerarrayswerethegoodolddaysofstructuredprogramminginC.LifeisbetternowthatwehaveJavatechnology,XML,J2EE,andallthat.TheStrutsControllerisaservletthatmapsevents(aneventgenerallybeinganHTTPpost)toclasses.Andguesswhat--theControllerusesaconfigurationfilesoyoudon_thavetohard-codethevalues.Lifechanges,butstaysthesame.ActionServletistheCommandpartoftheMVCimplementationandisthecoreoftheFramework.ActionServlet(Command)createsandusesAction,anActionForm,andActionForward.Asmentionedearlier,thestruts-config.xmlfileconfigurestheCommand.DuringthecreationoftheWebproject,ActionandActionFormareextendedtosolvethespecificproblemspace.Thefilestruts-config.xmlinstructsActionServletonhowtousetheextendedclasses.Thereareseveraladvantagestothisapproach:\uf0b7Theentirelogicalflowoftheapplicationisinahierarchicaltextfile.Thismakesiteasiertoviewandunderstand,especiallywithlargeapplications.\uf0b7ThepagedesignerdoesnothavetowadethroughJavacodetounderstandtheflowoftheapplication.\uf0b7TheJavadeveloperdoesnotneedtorecompilecodewhenmakingflowchanges.CommandfunctionalitycanbeaddedbyextendingActionServlet.TheActionFormclassActionFormmaintainsthesessionstatefortheWebapplication.ActionFormisanabstractclassthatissub-classedforeachinputformmodel.WhenIsayinputformmodel,IamsayingActionFormrepresentsageneralconceptofdatathatissetorupdatedbyaHTMLform.Forinstance,youmayhaveaUserActionFormthatissetbyanHTMLForm.TheStrutsframeworkwill:\uf0b7ChecktoseeifaUserActionFormexists;ifnot,itwillcreateaninstanceoftheclass.\uf0b7StrutswillsetthestateoftheUserActionFormusingcorrespondingfieldsfromtheHttpServletRequest.Nomoredreadfulrequest.getParameter()calls.Forinstance,theStrutsframeworkwilltakefnamefromrequeststreamandcallUserActionForm.setFname().\uf0b7TheStrutsframeworkupdatesthestateoftheUserActionFormbeforepassingittothebusinesswrapperUserAction.\uf0b7BeforepassingittotheActionclass,Strutswillalsoconductformstatevalidationbycallingthevalidation()methodonUserActionForm.Note:Thisisnotalwayswisetodo.TheremightbewaysofusingUserActionForminotherpagesorbusinessobjects,wherethevalidationmightbedifferent.ValidationofthestatemightbebetterintheUserActionclass.\uf0b7TheUserActionFormcanbemaintainedatasessionlevel.Notes:\uf0b7Thestruts-config.xmlfilecontrolswhichHTMLformrequestmapstowhichActionForm.\uf0b7MultiplerequestscanbemappedUserActionForm.44北京邮电大学毕业设计\uf0b7UserActionFormcanbemappedovermultiplepagesforthingssuchaswizards.TheActionclassTheActionclassisawrapperaroundthebusinesslogic.ThepurposeofActionclassistotranslatetheHttpServletRequesttothebusinesslogic.TouseAction,subclassandoverwritetheprocess()method.TheActionServlet(Command)passestheparameterizedclassestoActionFormusingtheperform()method.Again,nomoredreadfulrequest.getParameter()calls.Bythetimetheeventgetshere,theinputformdata(orHTMLformdata)hasalreadybeentranslatedoutoftherequeststreamandintoanActionFormclass.Figure4.MVCModel2Struts,anMVC2implementationStrutsisasetofcooperatingclasses,servlets,andJSPtagsthatmakeupareusableMVC2design.ThisdefinitionimpliesthatStrutsisaframework,ratherthanalibrary,butStrutsalsocontainsanextensivetaglibraryandutilityclassesthatworkindependentlyoftheframework.Figure5displaysanoverviewofStruts.Figure5.StrutsoverviewStrutsoverview45北京邮电大学毕业设计\uf0b7ClientbrowserAnHTTPrequestfromtheclientbrowsercreatesanevent.TheWebcontainerwillrespondwithanHTTPresponse.\uf0b7ControllerTheControllerreceivestherequestfromthebrowser,andmakesthedecisionwheretosendtherequest.WithStruts,theControllerisacommanddesignpatternimplementedasaservlet.Thestruts-config.xmlfileconfigurestheController.\uf0b7BusinesslogicThebusinesslogicupdatesthestateofthemodelandhelpscontroltheflowoftheapplication.WithStrutsthisisdonewithanActionclassasathinwrappertotheactualbusinesslogic.\uf0b7ModelstateThemodelrepresentsthestateoftheapplication.Thebusinessobjectsupdatetheapplicationstate.ActionFormbeanrepresentstheModelstateatasessionorrequestlevel,andnotatapersistentlevel.TheJSPfilereadsinformationfromtheActionFormbeanusingJSPtags.\uf0b7ViewTheviewissimplyaJSPfile.Thereisnoflowlogic,nobusinesslogic,andnomodelinformation--justtags.TagsareoneofthethingsthatmakeStrutsuniquecomparedtootherframeworkslikeVelocity.Note:"Thinkthin"whenextendingtheActionclass.TheActionclassshouldcontroltheflowandnotthelogicoftheapplication.ByplacingthebusinesslogicinaseparatepackageorEJB,weallowflexibilityandreuse.AnotherwayofthinkingaboutActionclassisastheAdapterdesignpattern.ThepurposeoftheActionisto"Converttheinterfaceofaclassintoanotherinterfacetheclientsexpect.Adapterletsclassesworktogetherthatcouldn_totherwisebecauseofincompatibilityinterface"(fromDesignPatterns-ElementsofReusableOOSoftwarebyGof).TheclientinthisinstanceistheActionServletthatknowsnothingaboutourspecificbusinessclassinterface.Therefore,Strutsprovidesabusinessinterfaceitdoesunderstand,Action.ByextendingtheAction,wemakeourbusinessinterfacecompatiblewithStrutsbusinessinterface.(AninterestingobservationisthatActionisaclassandnotaninterface.Actionstartedasaninterfaceandchangedintoaclassovertime.Nothing\'sperfect.)TheErrorclassesTheUMLdiagram(Figure6)alsoincludedActionErrorandActionErrors.ActionErrorencapsulatesanindividualerrormessage.ActionErrorsisacontainerofActionErrorclassesthattheViewcanaccessusingtags.ActionErrorsisStrutswayofkeepingupwithalistoferrors.Figure7.UMLdiagramoftherelationshipoftheCommand(ActionServlet)tothe46北京邮电大学毕业设计Model(Action)TheActionMappingclassAnincomingeventisnormallyintheformofanHTTPrequest,whichtheservletContainerturnsintoanHttpServletRequest.TheControllerlooksattheincomingeventanddispatchestherequesttoanActionclass.Thestruts-config.xmldetermineswhatActionclasstheControllercalls.Thestruts-config.xmlconfigurationinformationistranslatedintoasetofActionMapping,whichareputintocontainerofActionMappings.(Ifyouhavenotnoticedit,classesthatendwithsarecontainers)TheActionMappingcontainstheknowledgeofhowaspecificeventmapstospecificActions.TheActionServlet(Command)passestheActionMappingtotheActionclassviatheperform()method.ThisallowsActiontoaccesstheinformationtocontrolflow.ActionMappingsActionMappingsisacollectionofActionMappingobjects.Strutspros\uf0b7UseofJSPtagmechanismThetagfeaturepromotesreusablecodeandabstractsJavacodefromtheJSPfile.ThisfeatureallowsniceintegrationintoJSP-baseddevelopmenttoolsthatallowauthoringwithtags.\uf0b7TaglibraryWhyre-inventthewheel,orataglibrary?Ifyoucannotfindsomethingyouneedinthelibrary,contribute.Inaddition,StrutsprovidesastartingpointifyouarelearningJSPtagtechnology.\uf0b7OpensourceYouhavealltheadvantagesofopensource,suchasbeingabletoseethecodeandhavingeveryoneelseusingthelibraryreviewingthecode.Manyeyesmakeforgreatcodereview.\uf0b7SampleMVCimplementationStrutsofferssomeinsightifyouwanttocreateyourownMVCimplementation.47北京邮电大学毕业设计\uf0b7ManagetheproblemspaceDivideandconquerisanicewayofsolvingtheproblemandmakingtheproblemmanageable.Ofcourse,theswordcutsbothways.Theproblemismorecomplexandneedsmoremanagement.Strutscons\uf0b7YouthStrutsdevelopmentisstillinpreliminaryform.Theyareworkingtowardreleasingaversion1.0,butaswithany1.0version,itdoesnotprovideallthebellsandwhistles.\uf0b7ChangeTheframeworkisundergoingarapidamountofchange.AgreatdealofchangehasoccurredbetweenStruts0.5and1.0.YoumaywanttodownloadthemostcurrentStrutsnightlydistributions,toavoiddeprecatedmethods.Inthelast6months,IhaveseentheStrutslibrarygrowfrom90Ktoover270K.IhadtomodifymyexamplesseveraltimesbecauseofchangesinStruts,andIamnotgoingtoguaranteemyexampleswillworkwiththeversionofStrutsyoudownload.\uf0b7CorrectlevelofabstractionDoesStrutsprovidethecorrectlevelofabstraction?Whatistheproperlevelofabstractionforthepagedesigner?Thatisthe$64Kquestion.ShouldweallowapagedesigneraccesstoJavacodeinpagedevelopment?SomeframeworkslikeVelocitysayno,andprovideyetanotherlanguagetolearnforWebdevelopment.ThereissomevaliditytolimitingJavacodeaccessinUIdevelopment.Mostimportantly,giveapagedesigneralittlebitofJava,andhewillusealotofJava.IsawthishappenallthetimeinMicrosoftASPdevelopment.InASPdevelopment,youweresupposedtocreateCOMobjectsandthenwritealittleASPscripttoglueitalltogether.Instead,theASPdeveloperswouldgocrazywithASPscript.Iwouldhear"WhywaitforaCOMdevelopertocreateitwhenIcanprogramitdirectlywithVBScript?"StrutshelpslimittheamountofJavacoderequiredinaJSPfileviataglibraries.OnesuchlibraryistheLogicTag,whichmanagesconditionalgenerationofoutput,butthisdoesnotpreventtheUIdeveloperfromgoingnutswithJavacode.Whatevertypeofframeworkyoudecidetouse,youshouldunderstandtheenvironmentinwhichyouaredeployingandmaintainingtheframework.Ofcourse,thistaskiseasiersaidthandone.\uf0b7LimitedscopeStrutsisaWeb-basedMVCsolutionthatismeantbeimplementedwithHTML,JSPfiles,andservlets.\uf0b7J2EEapplicationsupportStrutsrequiresaservletcontainerthatsupportsJSP1.1andServlet2.2specifications.Thisalonewillnotsolveallyourinstallissues,unlessyouareusingTomcat3.2.IhavehadagreatdealofproblemsinstallingthelibrarywithNetscapeiPlanet6.0,whichissupposedlythefirstJ2EE-compliantapplicationserver.IrecommendvisitingtheStrutsUserMailingListarchive(seeResources)whenyourunintoproblems.48北京邮电大学毕业设计\uf0b7ComplexitySeparatingtheproblemintopartsintroducescomplexity.ThereisnoquestionthatsomeeducationwillhavetogoontounderstandStruts.Withtheconstantchangesoccurring,thiscanbefrustratingattimes.WelcometotheWeb.\uf0b7Whereis...Icouldpointoutotherissues,forinstance,wherearetheclientsidevalidations,adaptableworkflow,anddynamicstrategypatternforthecontroller?However,atthispoint,itistooeasytobeacritic,andsomeoftheissuesareinsignificant,orarereasonablefora1.0release.ThewaytheStrutsteamgoesatit,Strutsmighthavethesefeaturesbythetimeyoureadthisarticle,orsoonafter.FutureofStrutsThingschangerapidlyinthisnewageofsoftwaredevelopment.Inlessthan5years,Ihaveseenthingsgofromcgi/perl,toISAPI/NSAPI,toASPwithVB,andnowJavaandJ2EE.SunisworkinghardtoadaptchangestotheJSP/servletarchitecture,justastheyhaveinthepastwiththeJavalanguageandAPI.YoucanobtaindraftsofthenewJSP1.2andServlet2.3specificationsfromtheSunWebsite.Additionally,astandardtaglibraryforJSPfilesisappearing.49北京邮电大学毕业设计外文译文(译自:MalcolmDavis.Struts--anopen-sourceMVCimplementation[J].IBMSystemsJournal,2006,44(2):33-37.)Struts——MVC的一种开放源码实现MalcolmDavis本文介绍Struts,它是使用servlet和JavaServerPages技术的一种Model-View-Controller实现。Struts可帮助您控制Web项目中的变化并提高专业化水平。尽管您可能永远不会用Struts实现一个系统,但您可以将其中的一些思想用于您以后的servlet和JSP网页的实现中。简介小学生也可以在因特网上发布HTML网页。但是,小学生的网页和专业开发的网站有质的区别。网页设计人员(或者HTML开发人员)必须理解颜色、用户、生产流程、网页布局、浏览器兼容性、图像创建和JavaScript等等。设计漂亮的网站需要做大量的工作,大多数Java开发人员更注重创建优美的对象接口,而不是用户界面。JavaServerPages(JSP)技术为网页设计人员和Java开发人员提供了一种联系钮带。如果您开发过大型Web应用程序,您就理解变化这个词的含义。“模型-视图-控制器”(MVC)就是用来帮助您控制变化的一种设计模式。MVC减弱了业务逻辑接口和数据接口之间的耦合。Struts是一种MVC实现,它将Servlet2.2和JSP1.1标记(属于J2EE规范)用作实现的一部分。尽管您可能永远不会用Struts实现一个系统,但了解一下Struts或许使您能将其中的一些思想用于您以后的Servlet的JSP实现中。模型-视图-控制器(MVC)JSP标记只解决了部分问题。我们还得处理验证、流程控制和更新应用程序的状态等问题。这正是MVC发挥作用的地方。MVC通过将问题分为三个类别来帮助解决单一模块方法所遇到的某些问题:\uf0b7Model(模型)模型包含应用程序的核心功能。模型封装了应用程序的状态。有时它包含的唯一功能就是状态。它对视图或控制器一无所知。\uf0b7View(视图)视图提供模型的表示。它是应用程序的外观。视图可以访问模型的读方法,但不能访问写方法。此外,它对控制器一无所知。当更改模型时,视图应得到通知\uf0b7Controller(控制器)控制器对用户的输入作出反应。它创建并设置模型。MVCModel250北京邮电大学毕业设计Web向软件开发人员提出了一些特有的挑战,最明显的就是客户机和服务器的无状态连接。这种无状态行为使得模型很难将更改通知视图。在Web上,为了发现对应用程序状态的修改,浏览器必须重新查询服务器。另一个重大变化是实现视图所用的技术与实现模型或控制器的技术不同。当然,我们可以使用Java(或者PERL、C/C++或别的语言)代码生成HTML。这种方法有几个缺点:\uf0b7Java程序员应该开发服务,而不是HTML。\uf0b7更改布局时需要更改代码。\uf0b7服务的用户应该能够创建网页来满足它们的特定需要。\uf0b7网页设计人员不能直接参与网页开发。\uf0b7嵌在代码中的HTML很难看。对于Web,需要修改标准的MVC形式。图4显示了MVC的Web改写版,通常也称为MVCModel2或MVC2。图4.MVCModel2Struts,MVC2的一种实现Struts是一组相互协作的类、servlet和JSP标记,它们组成一个可重用的MVC2设计。这个定义表示Struts是一个框架,而不是一个库,但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类。图5显示了Struts的一个概览。图5.Struts概览Struts概览51北京邮电大学毕业设计\uf0b7Clientbrowser(客户浏览器)来自客户浏览器的每个HTTP请求创建一个事件。Web容器将用一个HTTP响应作出响应。\uf0b7Controller(控制器)控制器接收来自浏览器的请求,并决定将这个请求发往何处。就Struts而言,控制器是以servlet实现的一个命令设计模式。struts-config.xml文件配置控制器。\uf0b7业务逻辑业务逻辑更新模型的状态,并帮助控制应用程序的流程。就Struts而言,这是通过作为实际业务逻辑“瘦”包装的Action类完成的。\uf0b7Model(模型)的状态模型表示应用程序的状态。业务对象更新应用程序的状态。ActionFormbean在会话级或请求级表示模型的状态,而不是在持久级。JSP文件使用JSP标记读取来自ActionFormbean的信息。\uf0b7View(视图)视图就是一个JSP文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息--只有标记。标记是使Struts有别于其他框架(如Velocity)的因素之一。详细分析Struts图6显示的是org.apache.struts.action包的一个最简UML图。图6显示了ActionServlet(Controller)、ActionForm(FormState)和Action(ModelWrapper)之间的最简关系。图6.Command(ActionServlet)与Model(Action&ActionForm)之间的关系的UML图ActionServlet类您还记得函数映射的日子吗?在那时,您会将某些输入事件映射到一个函数指针上。如果您对此比较熟悉,您会将配置信息放入一个文件,并在运行时加载这个文件。函数指针数组曾经是用C语言进行结构化编程的很好方法。现在好多了,我们有了Java技术、XML、J2EE,等等。Struts的控制器是将事件(事件通常是HTTPpost)映射到类的一个servlet。正如您所料--控制器使用配置文件以使您不必对这些值进行硬编码。时代变了,但方法依旧。52北京邮电大学毕业设计ActionServlet是该MVC实现的Command部分,它是这一框架的核心。ActionServlet(Command)创建并使用Action、ActionForm和ActionForward。如前所述,struts-config.xml文件配置该Command。在创建Web项目时,您将扩展Action和ActionForm来解决特定的问题。文件struts-config.xml指示ActionServlet如何使用这些扩展的类。这种方法有几个优点:\uf0b7应用程序的整个逻辑流程都存储在一个分层的文本文件中。这使得人们更容易查看和理解它,尤其是对于大型应用程序而言。\uf0b7网页设计人员不必费力地阅读Java代码来理解应用程序的流程。\uf0b7Java开发人员也不必在更改流程以后重新编译代码。可以通过扩展ActionServlet来添加Command功能。ActionForm类ActionForm维护Web应用程序的会话状态。ActionForm是一个抽象类,必须为每个输入表单模型创建该类的子类。当我说输入表单模型时,是指ActionForm表示的是由HTML表单设置或更新的一般意义上的数据。例如,您可能有一个由HTML表单设置的UserActionForm。Struts框架将执行以下操作:\uf0b7检查UserActionForm是否存在;如果不存在,它将创建该类的一个实例。\uf0b7Struts将使用HttpServletRequest中相应的域设置UserActionForm的状态。没有太多讨厌的request.getParameter()调用。例如,Struts框架将从请求流中提取fname,并调用UserActionForm.setFname()。\uf0b7Struts框架在将UserActionForm传递给业务包装UserAction之前将更新它的状态。\uf0b7在将它传递给Action类之前,Struts还会对UserActionForm调用validation()方法进行表单状态验证。注:这并不总是明智之举。别的网页或业务可能使用UserActionForm,在这些地方,验证可能有所不同。在UserAction类中进行状态验证可能更好。\uf0b7可在会话级维护UserActionForm。注:\uf0b7struts-config.xml文件控制HTML表单请求与ActionForm之间的映射关系。\uf0b7可将多个请求映射到UserActionForm。\uf0b7UserActionForm可跨多页进行映射,以执行诸如向导之类的操作。Action类Action类是业务逻辑的一个包装。Action类的用途是将HttpServletRequest转换为业务逻辑。要使用Action,请创建它的子类并覆盖process()方法。ActionServlet(Command)使用perform()方法将参数化的类传递给ActionForm。仍然没有太多讨厌的request.getParameter()调用。当事件进展到这一步时,输入表单数据(或HTML表单数据)已被从请求流中提取出来并转移到ActionForm类中。53北京邮电大学毕业设计注:扩展Action类时请注意简洁。Action类应该控制应用程序的流程,而不应该控制应用程序的逻辑。通过将业务逻辑放在单独的包或EJB中,我们就可以提供更大的灵活性和可重用性。考虑Action类的另一种方式是Adapter设计模式。Action的用途是“将类的接口转换为客户机所需的另一个接口。Adapter使类能够协同工作,如果没有Adapter,则这些类会因为不兼容的接口而无法协同工作。”(摘自Gof所著的DesignPatterns-ElementsofReusableOOSoftware)。本例中的客户机是ActionServlet,它对我们的具体业务类接口一无所知。因此,Struts提供了它能够理解的一个业务接口,即Action。通过扩展Action,我们使得我们的业务接口与Struts业务接口保持兼容。(一个有趣的发现是,Action是类而不是接口)。Action开始为一个接口,后来却变成了一个类。真是金无足赤。)Error类UML图(图6)还包括ActionError和ActionErrors。ActionError封装了单个错误消息。ActionErrors是ActionError类的容器,View可以使用标记访问这些类。ActionError是Struts保持错误列表的方式。图7.Command(ActionServlet)与Model(Action)之间的关系的UML图ActionMapping类输入事件通常是在HTTP请求表单中发生的,servlet容器将HTTP请求转换为HttpServletRequest。控制器查看输入事件并将请求分派给某个Action类。struts-config.xml确定Controller调用哪个Action类。struts-config.xml配置信息被转换为一组ActionMapping,而后者又被放入ActionMappings容器中。(您可能尚未注意到这一点,以s结尾的类就是容器)ActionMapping包含有关特定事件如何映射到特定Action的信息。ActionServlet(Command)通过perform()方法将ActionMapping传递给Action类。这样就使Action可访问用于控制流程的信息。ActionMappingsActionMappings是ActionMapping对象的一个集合。Struts的优点54北京邮电大学毕业设计\uf0b7JSP标记机制的使用标记特性从JSP文件获得可重用代码和抽象Java代码。这个特性能很好地集成到基于JSP的开发工具中,这些工具允许用标记编写代码。\uf0b7标记库为什么要另发明一种轮子,或标记库呢?如果您在库中找不到您所要的标记,那就自己定义吧。此外,如果您正在学习JSP标记技术,则Struts为您提供了一个起点。\uf0b7开放源码您可以获得开放源码的全部优点,比如可以查看代码并让使用库的每个人检查代码。许多人都可以进行很好的代码检查。\uf0b7MVC实现样例如果您希望创建您自己的MVC实现,则Struts可增加您的见识。\uf0b7管理问题空间分治是解决问题并使问题可管理的极好方法。当然,这是一把双刃剑。问题越来越复杂,并且需要越来越多的管理。Struts的缺点\uf0b7仍处于发展初期Struts开发仍处于初级阶段。他们正在向着发行版本1.0而努力,但与任何1.0版本一样,它不可能尽善尽美。\uf0b7仍在变化中这个框架仍在快速变化。Struts1.0与Struts0.5相比变化极大。为了避免使用不赞成使用的方法,您可能隔一天就需要下载最新的Struts。在过去的6个月中,我目睹Struts库从90K增大到270K以上。由于Struts中的变化,我不得不数次修改我的示例,但我不保证我的示例能与您下载的Struts协同工作。\uf0b7正确的抽象级别Struts是否提供了正确的抽象级别?对于网页设计人员而言,什么是正确的抽象级别呢?这是一个用$64K的文字才能解释清楚的问题。在开发网页的过程中,我们是否应该让网页设计人员访问Java代码?某些框架(如Velocity)说不应该,但它提供了另一种Web开发语言让我们学习。在UI开发中限制访问Java有一定的合理性。最重要的是,如果让网页设计人员使用一点Java,他将使用大量的Java。在MicrosoftASP的开发中,我总是看到这样的情况。在ASP开发中,您应该创建COM对象,然后编写少量的ASP脚本将这些COM对象联系起来。但是,ASP开发人员会疯狂地使用ASP脚本。我会听到这样的话,“既然我可以用VBScript直接编写COM对象,为什么还要等COM开发人员来创建它呢?”通过使用标记库,Struts有助于限制JSP文件中所需的Java代码的数量。LogicTag就是这样的一种库,它对有条件地生成输出进行管理,但这并不能阻止UI开发人员对Java代码的狂热。无论您决定使用哪种类型的框架,您都应该了解您要在其中部署和维护该框架的环境。当然,这项任务真是说起来容易做起来难。55北京邮电大学毕业设计\uf0b7有限的适用范围Struts是一种基于Web的MVC解决方案,所以必须用HTML、JSP文件和servlet来实现它。\uf0b7J2EE应用程序支持Struts需要支持JSP1.1和Servlet2.2规范的servlet容器。仅凭这一点远不能解决您的全部安装问题,除非使用Tomcat3.2。我用NetscapeiPlanet6.0安装这个库时遇到一大堆问题,按理说它是第一种符合J2EE的应用程序服务器。我建议您在遇到问题时访问Struts用户邮件列表的归档资料(请参阅参考资源)。\uf0b7复杂性在将问题分为几个部分的同时也引入了复杂性。毫无疑问,要理解Struts必须接受一定的培训。随着变化的不断加入,这有时会令人很沮丧。欢迎访问本网站。Struts的前景在这个软件开发的新时代,一切都变得很快。在不到5年的时间内,我已经目睹了从cgi/perl到ISAPI/NSAPI、再到使用VB的ASP、一直到现在的Java和J2EE的变迁。Sun正在尽力将新的变化反映到JSP/servlet体系结构中,正如他们对Java语言和API所作的更改一样。您可以从Sun的网站获得新的JSP1.2和Servlet2.3规范的草案。此外,一个标准JSP标记库即将出现。目录第一章总论........................................................................................11.1项目概况........................................................................11.2研究依据及范围..............................................................21.3结论..............................................................................31.4建议..............................................................................4第二章项目建设的背景和必要性............................................................52.1项目建设的背景..............................................................62.2项目建设的必要性...........................................................7第三章项目服务需求分析.....................................................................9第四章项目选址与建设条件................................................................114.1选址原则......................................................................114.2项目选址......................................................................1156北京邮电大学毕业设计4.3建设条件......................................................................12第五章建设方案与设计......................................................................125.1建设规模与内容............................................................125.2总体规划设计...............................................................135.3结构方案......................................................................185.4主要配套设备...............................................................195.5给水工程......................................................................205.6排水工程......................................................................225.7电气设计......................................................................235.8节能设计......................................................................26第六章项目实施进度和招投标管理.......................................................296.1项目实施进度...............................................................296.2招投标管理..................................................................31第七章环境影响分析.........................................................................317.1项目主要污染源分析.......................................................327.2环境保护措施及治理效果...............................................35第八章消防、安全与卫生防护.............................................................378.1消防..........................................................................378.2劳动安全....................................................................388.3卫生防护....................................................................39第九章组织机构、运作方式与项目实施进度...........................................399.1项目建设组织机构.........................................................399.2项目运营组织机构.........................................................419.3劳动定员......................................................................4257北京邮电大学毕业设计第十章投资估算和资金筹措.................................................................4210.1投资估算....................................................................4310.2项目所需流动资金.......................................................4910.3资金筹措....................................................................49第十一章经济和社会效益评价............................................................5011.1经济效益评价.............................................................5011.2社会效益评价............................................................50第十二章结论..................................................................................5012.1主要结论...............................................................................5012.2建议....................................................................................51附录:1、发改局《关于迁建工程项目建议书的批复》2、村镇建设管理所《迁建项目用地红线》58',)


  • 编号:1700827159
  • 分类:标准规范
  • 软件: wps,office word
  • 大小:62页
  • 格式:docx
  • 风格:商务
  • PPT页数:4598824 KB
  • 标签:

广告位推荐

相关标准规范更多>