外卖订餐系统的设计与实现论文_第1页
外卖订餐系统的设计与实现论文_第2页
外卖订餐系统的设计与实现论文_第3页
外卖订餐系统的设计与实现论文_第4页
外卖订餐系统的设计与实现论文_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、北京师范大学珠海分校本科生毕业论文论文题目:外卖订餐管理系统的设计与实现2010年4月30日北京师范大学珠海分校学位论文写作声明和使用授权说明学位论文写作声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中己经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。论文作者签名:日期:年月日学位论文使用授权说明本人完全了解北京师范大学珠海分校关于收集、保存、使用学位论文的规定,即:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论

2、文的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的的前提下,学校可以将学位论文编入有关数据库,提供网上服务。(保密论文在解密后遵守此规定)导师签名:论文作者签名:口期:北京师范大学珠海分校信息技术学院北京师范大学珠海分校信息技术学院 随着外卖订餐在高校越來越普及,传统的电话订餐给顾客跟外卖店带來不方便,如何使订餐更快速,更方便已成为众多高校学生关注的问题了。本外卖订餐管理系统是针对高校外卖店进行具体的需求分析,釆用00A(面向对象分析)和采用UML工具辅助开发分析,基于S2SH(Struts2+Spring+Hibernate)

3、架构进行设计和开发。论文主要描述外卖订餐管理系统的开发流程,分别从需求分析和系统设计、详细设计与系统实现这几个阶段进行描述。关键词:订餐管理系统S2SH00AABSTRACTWithmoreandmorepopularinuniversitiesordertake-out,duetothetraditionaltelephonereservationforcustomerstobringinconveniencetake-awaymeal,howtomakemorequickly,moreconvenienthasbecometheconcernofthestudents.Thetake-aw

4、aymealmanagementsystemincollegesanduniversitiesistheconcretetake-awaydemandanalysis,usingobject-orientedanalysis(00A)andusingUMLtoolstoassistinthedevelopment,usingStruts2Spring-Hibernateframeworktodesignanddevelopment.Thesismainlydescribestake-awaymealmanagementsystemprocess,separatelyfromthedemanda

5、nalysisandsystemdesign,detaileddesignandrealizationofthissystemaredescribedseveralstagesKeywords:mealmanagementsystemS2SH00A目录TOC o 1-5 h z HYPERLINK l bookmark10 一、绪论11.1背景1 HYPERLINK l bookmark12 1.2北师大珠海分校外卖订餐的现状分析1 HYPERLINK l bookmark14 1.3外卖订餐管理系统的可行性分析与作用1 HYPERLINK l bookmark16 1.4系统简介2 HYPE

6、RLINK l bookmark18 二、相关技术的介绍31STRUTS2技术介绍32.2Hibernate技术介绍43spring技术介绍52.4dwr技术介绍6三、系统需求81UML7 HYPERLINK l bookmark22 3.2需求分析8 HYPERLINK l bookmark24 3.3系统功能8四、系统设计11 HYPERLINK l bookmark28 1系统总体结构11 HYPERLINK l bookmark30 4.2系统架构方式113HIBERNATE自动建表11 HYPERLINK l bookmark42 4.4详细设计174.4.1类设计174.4.2流程

7、分析194.4.3时序图分析20 HYPERLINK l bookmark66 4.4主要界面设计26 HYPERLINK l bookmark104 五、系统实现30 HYPERLINK l bookmark106 开发工具与环境30 HYPERLINK l bookmark108 环境搭配30 HYPERLINK l bookmark110 编码实现323.1DA0层的编写335.3.2Service层的编写345.3.3WEB层的编写355.3.4DWR应用38结论42 HYPERLINK l bookmark172 参考文献43致谢44北京师范大学珠海分校信息技术学院北京师范大学珠海分

8、校信息技术学院第 页共44页第 页共44页一、绪论1.1背景进入21世纪以來,餐饮行业以年均20%的增长速度,成为国民经济中的发展最快的行业之一。随着人们生活水平的不断提高,人们其至想要不出门就能吃到可口的饭菜一一这就是外卖。在我国高校内餐饮行业外卖行业更是发展最快的一个行业,在北师大珠海分校每年都有儿间新的外卖店的产生。外卖订餐已经成为北师大珠海分校学生生活中不可缺的一部分,而订餐的方式也随着学生们的要求提高,不断的多样化和成熟化。12北师大珠海分校外卖订餐行业的现状分析依靠电话订餐是北师大目前最主要的订餐方式,如比较大的外卖店关东、喜苑、红梦缘都是使用电话订餐方式,此种订餐方式有不少的缺陷

9、,比如:时效问题、打电话的成本等等。目前北师大外卖订餐行业的现状分析如下:(1)外卖店数量众多,各店竞争较大。(2)外卖店多数实行人工方式订餐,即打电话订餐登记。这种订餐方式造成订餐很不方便特别在订餐高峰期,经常出现打电话打不通的现象。(3)外卖店多数没有实行市场分析,一些菜式在顶峰期出现缺菜现象,而一些菜式却出现积累现象,造成了资源的浪费和经济损失。(4)外卖店没有对外卖进行财务管理,造成对店内资金管理不明确和店员滥用资金的可能。(5)无法为店内管理层提供准确的决策信息,掌握及时的市场消息。通过分析北师大的外卖行业的现状,不难发现国内高校的外卖店大多数都是依靠手工的管理方式,没有实行外卖订餐

10、管理的信息化,所以造成了不少问题。1.3外卖订餐管理系统的可行性分析及其作用依靠传统的电话订餐实行外卖订餐不仅造成学生的方便,也对外卖店的经营产生了不良影响。实行电话订餐有以下几个缺点:一、在订餐高峰期,一架电话根本那么多的订餐顾客,有时候要多次拨打才能接通,这种情况下有时也造成双方语气匆忙,态度暴躁,给订餐带來极大的不便;二、点菜不方便,学生如果没有点菜单,很难点菜,另外外卖店得每栋宿舍每间地派传单,无疑乂是一笔不小的开资了;三、学生必须支付打电话的成本,虽然有些外卖店有校园短号但对于一些没开通校园短号的学生也不是很方便。通过上面分析,电话订餐己成为一种阻碍外卖行业发展的落后方式了,实行订餐

11、管理的信息化迫在眉睫,利用外卖订餐管理系统对外卖流程实行信息化,不仅给订餐顾客带來了方便更给外卖店带来了经济利益。外卖订餐管理给顾客和外卖店带来了双赢。对于顾客,不用再担心高峰期打电话订餐失败了,顾客可以在网站浏览相关菜式,添加喜欢的菜式,解决了以前的那种电话订餐造成订错菜式的现象。对于外卖店更是带來了长远的利益,减少外卖店的人力和财力,通过订餐管理系统使外卖店能够及时掌握市场信息,推销新菜式和实行更有效的经营策略。1-4系统简介本系统主要针对高校的外卖订餐流程和对订单处理实行信息化而构建出来的B/S平台,学生通过浏览器上网访问订餐网站可以实现网上浏览菜式和订餐功能,店员通过后台管理登陆实现对

12、订单的处理,通过信息化处理给学生订餐带來方便更给外卖店管理人员带來了长远利益。二、相关技术介绍本外卖订餐管理系统选取S2SH架构來设计和开发,S2SH是SSH升级版,以前的SSH架构中的用到的MVC框架是struts,而S2SH中的MVC框架用到的是struts2,struts2与struts有很大的区别,配置更灵活,开发更方便,利用其开发的插件与hibernate,spring能达到无缝集成,本系统采用三层架构,用struts2处理前端,hibernate封装对数据库的访问,spring对struts2、hibernate和业务逻辑层中进行对象的管理,三个框架各司其职,有利于项目开发的分工,

13、使项目开发达到更灵活性和可维护性。S2SH三层架构如图1所示:Spring图1:S2SH三层架构2.1struts2技术介绍Struts2是目前比较成熟的Web开发框架,Struts2框架是Struts1.X的替代版本,Struts2框架整合了Struts1.X框架和WebWork框架的优点。相对Struts1.X,Struts2已经有了非常大的改变,去掉了ActionForm,降低了框架组件之间的耦合性,Struts2的Action只是普通的Java类(POJO),给模块测试工作带來了极大的方便。Struts2提供了强大的整合能力,支持多种返回结果类型,改进了Struts1.X的标签库,引入

14、0GNL表达式和值栈的概念,给开发者带來了更好的体验工。从全局的角度來看,Struts2是一个pull(拉)类型的MVC(或者MVC2)框架,它与传统类型的MVC框架的不同之处就在于在Struts2中,Action担任的是模型的角色,而非控制器的角色,虽然它的角色仍然有些重叠。“pull”的动作由视图发起,它直接从Action里拉取所需的数据,而不是另外还需要一个单独的模型对象存在。匸9edsQsetXxx()execute()getXxx()图2:MVC/Struts2架构ActionModelController图2描述了Struts2架构中的模型、视图和控制器。控制器通过Struts2分

15、发Servlet滤器(也就是人们常说的拦截器)来实现,模型通过Action实现,视图则通过结果类型和结果组合实现。值栈和OGNL提供了公共的线程和链接,并使得不同组件可以相互集成。Struts2设计的精巧之处就是使用了Action代理,Action代理可以根据系统的配置,加载一系列的拦截器,由拦截器将HttpServletRequest参数解析出來,传入Actiono同样,Action处理的结果也是通过拦截器传入HttpServletResponse,然后由HttpServletRequest传给用户。其实,该处理过程是典型的A0P(面向切面编程)的方式,Struts2处理过程模型如图3所示:

16、用门请戎图3:Struts2处理过程模型2.2hibernate技术介绍Hibernate是一个优秀的ORM框架,通过使用Hibernate框架,允许开发人员使用面向对象的方式对数据库进行访问,避免釆用JDBC访问,造成面向对象编程与面向过程编程的冲突。在这种方式下,企业应用的面向对象分析、面向对象设计和面向对象编程一脉相承,让系统分析、设计更加简洁。Hibernate作为JavaEE持久化的标准方案,使用传统的POJO作为系统的持久化类,具有低侵入式设计,不会造成代码污染。系统的持久化类无需继承任何Hibernate基类,或者实现任何Hibernate接口,提供了极好的代码复用。Hibern

17、ate与数据库、应用程序关联关系如图4所示:应用程序(Application)PPO映射框架(PPOMappingFramework)Hibernate数二聒持久层Hibernate配宣文件XML映射(XIvILMapping)数据库层(Database)iiumsIriET.图4:Hibernate关联关系图虽然Hibernate这个框架问世的时间不长,但己经成为目前最流行的持久层解决方案,较之另一个持久层框架iBATIS,Hibernate更具有面向对象的特征;较之传统的EntityEJB的持久层解决方案,Hibernate则采用低侵入式的设计,即完全釆用普通的Java对象(POJO),而

18、不必继承Hibernate的某个超类或实现Hibernate的某个接口。Hibernate是面向对象的程序设计语言和关系数据库之间的桥梁,Hibernate允许程序开发者釆用面向对象的方式來操作数据库。2.3spring技术介绍Spring是一个优秀的Web开发框架。它是一个分层的架构,由7个模块组成,如图5所示。其中比较重要的是核心容器模块,其他模块构建在这个核心容器之上,核心容器定义创建、配置和管理Bean的方式,它提供Spring框架的基本功能。其主要组件是BeanFactory,它是工厂模式的实现。BeanFactory通过使用反转控制(I0C)模式,将应用程序的配置和依赖性规范与实际

19、的应用程序代码分开SpringAOPSource-levelmetadataAOPinfrastructureSpringORMHibernatesupportiBatssupportJDOsupportSpringWebWebA)pllcabonContextMutlpartresolverWebunitiesSpringDAOTransactioninfTasIructureJOBCsupportDAOsupportSpringContextApplicationcontextUlsupportWlkh伽JNDLEJBsupportandremodelingMailSpringWebMVC

20、WeOMVCFramewoirkWebViewsJSPA/elocityPDF,Exp城SpringCoreSupportinguUitiBSBeancortaine图5spring七大模块组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(I0C)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信

21、息。Spring上下文包括企业服务,例如JNDIEJB、电子邮件、国际化、校验和调度功能。SpringAOP:通过配置管理特性,SpringAOP模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何对象支持A0PoSpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。SpringDAO:JDBCDA0抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了

22、需要编写的异常代码数量(例如打开和关闭连接)。SpringDAO的面向JDBC的异常遵从通用的DA0异常层次结构。SpringORM:Spring框架插入了若干个0RM框架,从而提供了0RH的对象关系工具,其中包括JDO、Hibernate和iBatisSQLMapo所有这些都遵从Spring的通用事务和DA0异常层次结构。SpringWeb模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与JakartaStruts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。SpringMVC框架:MVC框架是一个

23、全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI。C5:2.4DWR技术介绍DWR是一种AJAX解决方案。DWR包括一个java库,以及一套javascript,使得我们可以用一种非常简单的方式,在页面上使用javascript直接调用后台的java对象。DWR的javascript库包括儿个部分:dwr的javascript引擎(即对AJAX调用的封装)、dwr提供的一些非常有用的辅助javascript函数库、以及dwr自动帮我们生成的专门用于调用后台JavaBea

24、n方法的javascript库。DWR在运行的时候,动态生成一个javascript库,这个库是对后台javabean调用的封装,我们可以直接使用这个库來实现直接调用JavaBean的目的6,其流程图6所示:图6:DWR调用过程本系统采用00A(面向对象分析)和UML(UnifiedModelingLanguage)工具为指导,本章主要对系统的需求以及系统功能进行分析描述。3.1UMLUML(UnifiedModelingLanguage)是一种用来创建程序模型的图形语言(即带有语意的一种图形记号)常用的UML图有类图、时序图、用例图、活动图和状态图。3.2需求分析本外卖订餐管理系统包括两个子

25、系统,前台订餐和后台管理,前台订餐是供用户浏览菜式和提交订单进行订餐;后台管理是供餐厅管理人员进行外卖订单管理、菜式管理、统计报表管理、系统管理。3.3系统功能本系统采用面向对象分析方法,下面是对本系统的两个子系统进行分析说明。(1)前台管理系统前台管理系统供用户浏览菜式,进行菜式添加到购菜车,用户可以对购菜车进行更新、清除,用户提交订单后可以在订单列表查看外卖状态,用例如图7所示:图7:用户用例图(2)后台管理系统后台管理系统有菜式管理、外卖订单管理、统计报表管理和系统管理四大模块。顶层用例:后台管理有两大角色即店长跟店员,店长拥有系统全部权限,店员只能操作菜式管理跟外卖订单管理两大模块。其

26、顶层用例如图8:菜式管理:店员店长图&:可以对菜式进行查看、添加、修改和删除。用例如图9所示。店员图9菜式管理用例图北京师范大学珠海分校信息技术学院北京师范大学珠海分校信息技术学院外卖订单管理:可以对外卖订单的状态进行查看,改变。用例如图10所示:店员图10外卖订单管理用例图(3)统计报表管理菜式统计报表:对每月的菜式进行统计,可以查看哪些菜式在本月份销量比较好。用户统计报表:对用户进行统计,可以对其经常订餐的用户实行优惠政策。(4)系统管理用户维护:可以查看所有己注册的用户,查看该用户的所有订单列表,和删除该用户。店员维护:可以对店员进行添加、删除、更新。修改密码:输入旧密码,如果旧密码输入

27、不正确会进行提示叫你重新输入,输入正确后再输入新密码和确认新密码可进行修改。用例图如图11所示:图门系统管理用例第10页共44页北京师范大学珠海分校信息技术学院北京师范大学珠海分校信息技术学院第 页共44页第 页共44页v系统设计本系统的设计采用00A(面向对象分析)和利用UML工具辅助开发设计。4.1系统总体结构通过前一章的需求分析跟功能分析可以得出本系统总体结构如图12所示:图12系统总体框架图4.2系统架构方式本系统采用三层架构模式,即展现层,业务逻辑层,数据访问层,各层之间都独立,展现层与业务逻辑层接口通信,业务逻辑层与数据访问层接口通信,数据访问层直接跟数据库打交道,这样具有很好的解

28、耦性,每一层逻辑改变不会影响到另一层,对项目以后的可维护性及团队开发具有很大的作用,三层架构流程如图13所示:图13三层架构4.3Hibernate自动建表传统的数据库设计都是先经过建立E-R图,然后通过E-R图生成数据表。而Hibernate开发团队提倡我们用另外一种开发模式,就是先建立实体类和编写实体类映射文件,然后通过实体类和映射文件自动生成数据表。这种开发模式也是体现出来00D思想,数据的持久化这些都是非常机械的,基本没有变动的,hibernate就是把这些行为抽取出來自动完成并在效率上做一优化等,让我们轻松实现数据库的移植。这样我们在开发中更关注于类中的设计而不必受到数据库的牵制,因

29、为数据库本身就跟面向对象存在阻抗。国内有位领域驱动设计(DDD)专家曾经发表了一遍文章数据库己死,在文章中他阐述了数据库成为了大多数企业应用的主要瓶颈,也成为了运行环境中最不具伸缩性的一层,他认为软件开发应集中在领域分析,数据库应该是为领域服务而不能让我们的领域层受牵制于数据库。本系统是釆用建立实体类和编写映射文件來生成数据表的开发模式。(1)实体类POJO设计类名功能说明User用户Admin管理员Item订单项Menu菜式Order订单实体类User屈性类型屈性说明idIntegerusernameSuing姓名passwordSuing密码ordersList订单列表实体类Admin屈性

30、类型屈性说明idIntegerusernameSuing姓名passwordSuing密码typeInteger管理员类型实体类Item屈性类型屈性说明idIntegeritemNameSuing订单项名称itemPiicedouble订单项价格itemNumberInteger订单项数呈itemTypeInteger订单项类型ltemhitroductionStrmg订单项描述orderOrder所屈订单实体类Menu屈性类型屈性说明idIntegernameStrmg菜式名称pricedouble菜式价格typeInteger菜式类型stateInteger菜式状态ltemhitroduc

31、tionStrmg菜式简介实体类Order屈性类型屈性说明idIntegerphoneStrmg电话号码addressStrmg宿舍地址totaldouble总价stateInteger订单状态dateDate订单日期barcodeOrder订单流水号userUser所屈用户itemsList所有订单项(2)hibernate映射文件编写User.hbm.xml!DOCTYPEhibernate-mappmgPUBLIC-/Hibernate/HibernateMappingDTD3.0/7ENnhttpV/liibernate.soiucefbrge.nevhibeniate-mapping

32、-S.O.dtdpropeiTyname=npasswordntype=Hjavaang.SuingJAdmin,hbm.xmlItenLhbm.xmlMenu.hbm.xmlOrder,hbm.xmlJJ4.4详细设计本节阐述了如何对本系统的对象类进行分析设计、系统流程分析以及如何用时序图对系统中的对象交互进行描述。4.4.1类设计(1)类关系通过面向对象分析得出在本系统中用户跟订单、订单项,订单跟订单项,购菜车跟订单项都是一对多关系,用户跟购菜车,订单跟购菜车都是一对一关系。其关联关系如图14所示:图14类关联(2)DAO与业务逻辑类设计AdminDao与AdminService类设计0I

33、terfaceAJminDaoIAdminSerMcelmpIadninD3O:AdminDaoGqtAdminDac():AdnirDaoOsetAdmnDac(inadmrDao:AdnirDao):vadaddftdmin():vadQcFeckLogin(iniserncme:9ring,inpassword:Stiing.in:rter)QgdAdmnById(inadminld:Irteger)lislAdmirvO;LbIGu43ateAdmir():voidQcFeclAdmnExi$t(inusemame:Sbing):bodean0cbQckAnothQrAdninExis

34、t(inkypo!Irt09Qrinu&amrna!Sbng)!bodcarUserDao与UserService类设计GUsrService4UserServicelmpluserDao:UserDaoOgetUserDoO:LkerDaoOsetUserDao(inuseiDao:UseiOao):void0addJseiO:vddGcheckUseiEnst(inuseiname:9ling):bodeanGcheckLogin(inusername:Stling,inpasswad:String)OupdateUsei():voidGgetUserByldAncPassvkord(in

35、userid:Integer,inpassword:String):bodeanlistUse15():ListMenuDao与MenuService类设计MenuDaoImpIMenuServicelmplGadcMeni/);vcidGdeleteMeru();voidGgetMeniByldtinmeruId;Integer)令lislMenus();List&upd-ateMenuO;vddOlistCriM&nusQ!ListOlistMenusByType(int!Irtegr)!ListmenuDao;MencDao0gelMencDao():MenuDaosetMencDaoC

36、innoencDo:fvbnuDao):vcid&adcMeni();void&deleteMenu();gidgetMenuById(inmnuld;Inieger)OlistMenus();ListupdateMnuO:voidQilistOnMenusQ!ListlistMenusByType(intypeInteger)ListOrderDaoImpI0addOi*dei(inorder!Oder)voidOrderServicelmpIOrderDao与OrderService类设计adeiDo!OiderDaoQgetQ-cbi8yldinorderld!Inter)!Oder.l

37、istOdeiO:ListQupdateOrdei(inorder:Oder):void&listQdeiByUserld(inuserid:Int电孚r):ListQlistQdBySate(instate:Inter):ListQg就Or&iDaoO!CrcteiQaoQsetOicfeiOao(inoi-derDo!Q-cfeiDao)!voidQadcfc*dGi(inorder!Oder)!voidQgetQdeiById(inorderld:Integer)!OnderQlistddeiO!ListQupdateOiderQnonderOlder)!voidQlistOdeiByL

38、fcerd(inuserfcl!Inter)!ListQlistOdei8ySlate(instate:Integer):List4.4.2流程分析1.前台用户订购外卖流程:2.后台管理员订单处理流程:4.4.3时序图分析用户登录用例实现A、时序图B、描述1)输入信息输入用户和密码,提交表单2)表单验证LoginUserAction会调用validate方法进行表单验证,女口果用户输入不合法就会转向login,jsp提示用户输入不合法3)进入业务方法LoginUserAction进入execute方法进行登录验证4)获取userService接口LoginiUserAction类获取UserS

39、ervice接口,以便调用UserServcie关于登录checkLogin的方法。5)登录调用userDao的checkLogin方法进行登录验证。6)返回结果如果用户需和密码输入正确进入系统主页面,否则提示用户名或密码输入错误。用户修改密码用例实现A、时序图1)输入信息输入原密码、新密码和确认新密码,都不能为空,新密码与确认新密码要一致。2)表单验证updatePasswordAction会调用validate方法进行表单验证,如果用户输入不合法就会转向updatePassword.jsp提示用户输入不合法,如果用户原密码输入错误或新密码与确认新密码不一致也会转向updatePasswor

40、d.jsp并进彳亍提示。3)进入业务方法UpdatePasswordAction调用业务方法execute()进彳亍修改密码。4)获取userService接口UpdatePasswordAction类获取UserService接口,以便调用UserServcie关于修改密码updateUser的方法。5)保存到数据库调用userDa。将用户数据更新到数据库。6)返回结果修改成功后,返回到系统主页面。注册用户用例实现A、时序图1)输入用户信息输入用户名,用户密码,确认密码。2)表单验证RegisterUserAction会调用validate方法进行表单验证,如果用户输入不合法就会转向regi

41、ster,jsp提示用户输入不合法,如果输入用户名已存在也会转向register,jsp并进行提示。3)进入业务方法RegisterUserAction调用业务方法execute()进行添加用户。4)获取userService接口RegisterUserAction类获取UserService接口,以便调用UserServcie关于修改密码addUser(User)的方法。5)保存到数据库调用userDa。的addUser方法将用户数据保存到数据库。6)返回结果注册成功后,返回到主页面。添加菜式到购菜车并提交订单用例实现A、时序图B、描述1)选择菜式选择要添加的菜式,可以多选。2)表单验证Co

42、mmonMenuAction会调用validate方法进行表单验证,如果用户没选择菜式或还没登陆就提交就会提示用户输入还没选择菜式或还没登陆。3)进入业务方法CommonMenuAction进入业务方法execute进行添加菜式到购菜车,在execute方法中调用showMenuCatr方法进行菜式添加到购物车。4)转向CommonMenuCartCommonMenuCart是一个通用的购菜车,将数据进行更新。5)返回到购菜车界面调用CommonMenuCart的execute方法将数据显示给用户。6)提交订单用户输入电话号码,宿舍地址进行提交订单。7)进入数据验证AddOrderAction

43、调用validate。方法进行验证,如果用户输入不合法会进行提示。8)获取OrderService接口调用OrderService的addOrder(Order)方法进彳亍订单的添加。9)添加到数据库调用OrderDao的addOrder(Order)方法将订单数据添加到数据库。10)返回结果返回到订单界面,供用户查看。管理人员处理订单用例实现A、时序图B、描述1)访问订单列表管理人员访问订单列表,对订单的状态进行改变2)进行业务方法ChangeStateActon会进入自己的业务方法execute()进彳亍状态的改变3)获取OrderService接口ChangeStateAction类获取

44、OrderService接口,以便调用OrderServcie关于更改订单状态的方法。更新到数据库调用OrderDao的update(Order)方法订单数据更新到数据库。返回结果更改状态后,返回到订单列表界面。4.4.4系统主要界面设计管理人员登陆界面:管理人员输入用户名、密码很选择管理员类型进行登录,如下图所示:址村http:/localhost:8080/order/Adjriin/logiaAdnirLjsp珠海外卖网序管理人员登陆用户名:密码:管理员类型:登陆S1添加菜式界面:管理人员输入菜式名、价钱、类型、状态和菜式简介进行添加菜式,如下图所示:t*毎hlip:/Iccalkc51

45、:80EO/dor/Or3r/proparcMaM.cct:r莱式名价钱类型添加菜式(价钱单位:元)炒饭类套锁类r而粉类c前台可见r前台不可见菜式简齐式简介不能趨过如个字符)珠海外卖网三状态提交用户注册界面:用户输入用户名、密码和确认密码进行注册,如下图所示:http:/Iocalhost:E080/order/Order/preRegisterVser.action用户注册用尸名用户名长皮必须至少为5)密码他码长度必须在&12之间)确认密码曾码长度必须在&12之间)提交前台订餐主界面:用户将要订购的菜式进行选中并点击放入到餐盒按钮,如下图所示:珠海外卖网我的餐盒妙饭类套省类面粉类菜式列表举加

46、序号莱式名徐价铁类理简介ftftL118.0套辔类好吃实惠查看n2蛋炒饭3.0炒饭类潸蛋好吃芟老3沼蛋又烧饭11.0会圾类潸蛋好吃芟老4牛肺直9.0而粉类牛肉好吃5生炒牛肉饭10.0炒饭类牛肉好吃612.0套糅类好吃实惠710.0好吃卖惠,t!查看你好,他“门订单列蔻更改密诃社瑟渥岀放入到钱盒重新选择餐盒界面:用户可以对外卖数量进行更改和删除,也可以清空餐盒,输入送餐电话跟宿舍地址提交订购账单就可以进行订餐,如下图所示:wa.26zhcc珠海外卖网餐盒列表活空省金荒式裘表眇饭裘廷奢尖面税类外卖订单界面:供用户查看订单详细信息,如下图所示:订单流水号20100424121711订单日期10-4-

47、24电话号含地址燕华7栋蕖式名称单价类型简介腿蛋面8.0套脣类好吃实惠1番费外送费合计80元1元9.0订单列表查看界面:供用户查看订单状态,如下图所示:珠海外卖网你好)feiren账单列表序号订单克水号订单日期电话号码宿舍地址订单总離订单状态12010042412171110-4-2412:17:11.00013798971893燕华了栋g.o外卖未派送查看22010042318123210-4-2318:12:32.00013798971893海华m47.0外卖订购成功查看我的轻盒茨式类表炒饭类套霜类面紛类注册订单列表退出五、系统实现采用S2SH架构最大益处就是就是

48、使我们的代码具良好的可维护性与可扩展性,项目中许多逻辑可以编写在配置文件中而不用硬编码在代码中。本章介绍了如何构建自己的S2SH环境以及如何编码实现功能。因为本文篇幅有限,下面以用户注册功能为例,描述T如何通过struts2+spring+hibernate实现出來,其它功能实现原理基本一样。5.1开发工具和环境本系统釆用MyEclipse6.5为开发工具,以JAVAEE5.0为开发平台,釆用MySQLS.0数据库,应用服务器釆用tomcat6.Oo5.2环境搭配在编码实现之前要先把S2SH环境先搭配好,搭配S2SH环境有以下儿个步骤:要将必须的jar包放在工程路径下WEB-INF/lib文件

49、夹下;编写web.xml,包括对struts2过滤器、spring监听器与字符过滤器配置,如下所示:contextConfigLocationclasspath:applicationContext.xiiilorg.sprmgfiamewoik.web.context.ContextLoaderListenerstmts2oig.apache.stmts2.dispatcher.FilterDispatcherstnits2/*encodmgFiltercom.order.util.EncodmgFilterencodingFilter/*(3)对app1icationContext配置文件

50、的编写,配置dbcp数据池、sessionFactory和hibernate实体映射文件的管理,女口下所示:Jlubernate.dialect=org.hibeniate.dialect.MySQLDialectliibernate.hbni2ddl.auto=updateliibemate.show_sql=tnielubernate.fbrmatsql=falseliibernate.cache.usesecondJeveLcachemelubernate.cache.use_query_cache=videi_class=org.liibeinate.cache.EhCacheProv

51、idercom/ordei7beaivMenu.hbm.xiiilcoin/ordei7beaii/Oider.hbm.xiiilcoin/oidebeaii/l2mhbmxmlcoin/oidebeaiiqjs:hbmxnilconi/ordei7bean/AdnmiJibm.xiiil(4)添加struts,xml到类路径下,放到项目的src文件夹下,如下所示:(5)启动tomcat服务器如果后台没有打印异常信息,就证明环境搭配正确,服务器启动完毕后通过hibernate的自动建表方式能自动给我们生成数据表。5.3编码实现本系统代码的编写顺序是先编写持久层(DA0),再编写业务逻辑层(Se

52、rvice),最后编写表现层(Web)o持久层包括实体类的编写、DA0的编写与配置文件的编写;业务逻辑层包括业务接口与业务实现类的编写,配置文件的编写;web层包括Action的编写,jsp的编写,配置文件的编写。本系统的代码分配情况如下图所示:-匚戈order!白甥沁let田曲com.order,action,admin由曲order,action,rriercu.II宙曲com.order,action,order由田cmrdern.userO田com.order,bean国田com.rderdao(+)5。阮order,dao.impl(1com.order,iriterceptor斗田

53、comorder,service(1田com.order,serviceimplgjfflcom.order,utilapplicationContext.xmlgLob=1)return(User)ul.get(O);returnnull;/根据输入的用户名查询用户publicbooleangetUserByUseniame(Stringusername)Listul=tliis.getHibernateTemplateQ.fiiid(nfiomUseruserwhereuser.username=?,newStriiigfusername);if(null!=ul&ul.size()=1)

54、returntine;elsereturnfalse;更新用户publicvoidupdateUser(Useruser)this.getHibernateTemplateQ.update(user);/根据userid查询用户publicUsergetUseiBvId(Iiitegeiuserid)return(User)this.getHibeniateTemplate().get(User.class,userid);/得到用户列表publicListlistUsersQreturn(List)tliis.getHibernateTemplate().find(HfiomUseruser

55、orderbyuser.iddescM);编写完毕后在applicationContext.Xml进行配置,利用spring的ioc注入sessionFactory实例,配置如下所示:beanid=nuserDaoMclass=Hcom.oidecdao.impl.UseiDaoImpl”5.3.2Service层的编写前面业务逻辑接口方法已经设计好,下面是对UserServicelmpl类进行编写,其关键代码说明如下:publicclassUserServicelmplimplementsUserServiceprivateUserDaouserDao;publicUserDaogetUse

56、rDao()returnuserDao;/利用spring的ioc功能注入userDao实例publicvoidsetUserDao(UserDaouserDao)thisuserDao=userDao;注册用户方法publicvoidaddUser(Useruser)thisuserDaoaddUser(user);查看用户是否己经存在publicbooleancheckUserExist(Stringusername)returnthisuserDaogetUserByUsername(username);进行用户登录验证publicUsercheckLogin(Stringusernam

57、e,Stringpassword)returnthisuserDaocheckLogin(username,password);对用户进行更新信息publicvoidupdateUser(Useruser)thisuserDao.updateUser(user);publicbooleangetUserByIdAndPassword(Integeruserid,Stringpassword)Useruser=thisuserDao.getUserByld(userid);if(passwordequals(usergetPassword()returntrue;returnfalse;编写完毕

58、后,在applicationContext.xml进行配置,利用spring的ioc注入userDao实例,具体配置女口下所示:5.3.3Web层的编写(1)注册页面registerUser.jsp页面的编写,其关键代码如下:用户名(用户名长度必须至少为5)bgcolor=K#E6ECF9Mwidth=”20$”密码Ctdbgcolor=H#E6ECF9M(密码长/变,必须在612之间)/spanbgcolor=K#E6ECF9Mwidth=”20$”确认密码Ctdbgcolor=H#E6ECF9M(密码长/变,必须在612之间)/span其页面效果如下图所示:止)actionwae26zhe

59、cn珠海外卖网用户注册用户名(用户名検度必须至少为5)密码能码长度亦须在6-1及间确认密码能码长度亦须在6-1及间重置(2)RegisterUserAction的编写,其关键代码与说明如下:publieclassRegisterUserActionextendsActionSupportprivateStringusername;privateStringpassword;privateStringpassword?;privateUserServiceuserService;privateStringflag;/.以卜省略相应的setXxx0/getXxx()方法;/action的业务方法O

60、verridepublicStringexecute()throwsExceptionAutionContextcontext=ActionContextgetContext();Mapsession=(Map)context.get(session);Useruser=newUser();usersetUsername(username);usersetPassword(password);thisuserServiueaddUser(user);/注HO新用户user=thisuserServicecheckLogin(username,password);session.put(user

温馨提示

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

评论

0/150

提交评论