• 740.50 KB
  • 2022-04-22 13:50:35 发布

网上订餐管理系统毕业论文.doc

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'目录网上订餐管理系统毕业论文目录摘要IAbstractII第1章绪论11.1课题研究的背景11.2课题研究的意义11.3课题研究的目的21.4主要研究内容21.5论文结构2第2章系统的开发环境及技术简介32.1系统开发环境32.1.1MyEclipse32.1.2MySQL数据库32.1.3Tomcat42.2系统开发的思想与技术42.2.1JSP技术与MVC模式以及系统的基本框架42.2.2S.S.H框架的优点4第3章系统需求分析73.1可行性分析73.1.1经济可行性分析73.1.2技术能力分析83.1.3运行可行性分析83.1.4法律可行性分析83.2用户需求分析83.2.1功能分析83.2.2用例分析93.3系统设计目标分析113.4业务流程分析113.4.1管理员业务流程113.4.2会员业务流程11 目录3.5数据流图11第4章系统总体设计144.1系统流程概述144.2总体功能模块144.3管理员功能模块154.4用户功能模块15第5章系统详细设计与系统功能实现165.1系统和数据库设计165.2概念模型设计165.3数据库逻辑模型175.4数据库表设计175.5平台数据表的实现195.6系统功能实现的主要框架225.6.1SSH框架225.6.2Hibernate配置文件225.6.3Struts配置文件235.6.4Spring配置文件245.7系统功能实现的主要模块255.7.1网站主页面255.7.2管理员登陆页面275.7.3菜单分类管理主页面275.7.4菜单管理主页面295.7.5订单管理主页面305.7.6购物车主页面33第6章系统的调试与测试356.1软件测试的目的356.2软件测试的方法356.3主模块测试366.3.1登录/注册模块366.3.2订餐服务模块366.3.3订单处理模块376.3.4菜单管理模块376.3.5测试总结376.4测试环境38 目录6.5测试环境的配置386.5.1创建安装项目386.5.2添加项目输出386.5.3运行项目386.6系统维护38结论39参考文献40致谢41 第1章绪论第1章绪论1.1课题研究的背景贸易的全球化合internet网络的全球化特征使两者自然的走到了一起,形成了如今风靡全球的电子商务。电子商务是指应用电子信息技术和现代Internet网络技术在客户,厂商及其他交易主体之间进行的以信息为依托的商务活动,而购物网站正是这种活动的具体表现形式。随着时代的进步,上网的人数越来越多,网上订餐是人们的一大生活方式之一,网上订餐系统的完善合便捷将是现代社会必然的需求。本系统的设计目的是为了满足消费者只要通过互联网就可以足不出户的订购自己喜欢的菜品。改变传统商业交易,在互联网上进行交易,实现网上购买菜品。1.2课题研究的意义在我国,网上订餐最早出现在20世纪90年代末期,98年广州等大城市己出现网上订餐业务。2000年7月,北京丽华快餐公司为了探索餐饮业网络经营的道路,寻求新的经济增长点,也推出了网上订餐,成为探索网上订餐的先驱。目前网上订餐已逐渐普及,特别是在快餐业发达的东部地区。但目前网上订餐在我国并未成气候,很多大的餐饮公司网上订餐业务经营惨淡,很多网站每天只有几十份,经营较好的也只有几百份。如果单纯依靠网上订餐,公司根本无法生存。相反,一些小的个体饮食店老板巧妙地利用QQ、MSN等即时通信软件作为网上订餐工具,却取得了相当不错的效益。他们随着网上订餐业务的扩大,建立了自己的订餐网站,但最初单纯的网上订餐却发展成了网上送花,网上送票等的网上送货网站或者综合类的饮食网站,已经偏离了网上订餐的初衷。在美国,食品网是目前美国网上订餐行业中的先驱。设在三藩市的食品网,在99年已服务于全美一万三千间餐馆,有七十万的网上消费者。任何消费者只要轻松上网,输入邮区号码,就可以了解到在周围有哪些餐馆提供网上送餐服务,并可以浏览到这些餐馆的菜单,做出预订。仅在二分钟内,预订者就可以通过电子邮件得到确定。再过一会,就可以收到所订的美食了。食品网发言人说:在参加该公司网上联网销售的餐馆中,网上订餐的数量实际上比普通的电话订餐高出22%。此外,网上订餐中多功能性的服务还可以让消费者从容地上网浏览餐馆的菜单,或者进行价格上的比较,来选择所需要的美食佳肴。目前,通过上网提供外卖和送餐服务的餐厅多于独立餐馆经营者,外卖与送餐服务占餐饮生意额的一半以上。全美餐饮消费者越来越趋向于使用网上订餐的形式来购买外卖,特别是年轻一族的消费者。显而易见,网上订餐将成为餐馆业扩大生意的金矿源,有眼光的餐馆业主应该尽早考虑如何利用英特网上网销售。总的说来,单独的网上订餐还不足以支撑网站的经营。目前的状况是规模大的不盈利,小的有盈利。原因是规模大的范围广,运营成本高,规模小的由于运营成本低,客户群相对稳定,故有一定的利润空间。-41- 第1章绪论1.3课题研究的目的近几年类似于淘宝网这种大型的网上购物网站的飞速发展,网上购物已成为一种时尚。为了方便在校那些学习工作紧张的学生、老师饮食方便,提供新的一种便捷快速的订餐方式。本系统的设计目的是为了满足消费者只要通过互联网就可以足不出户的订购自己喜欢的菜品,改变传统商业交易,在互联网上进行交易,实现网上购买菜品。本论文主要涉及软件,数据库与网络技术等。涵盖知识面广,可有效地提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后进一步学习与工作奠定了良好的基础。1.4主要研究内容本文主要研究网上订餐系统的设计与实现,在整个过程中主要完成以下工作:1.分析网上订餐系统的现状和发展趋势,探讨、选择系统开发技术和开发平台。2.研究系统开发所涉及的相关技术和理论,采用软件工程的指导思想,分析系统的功能需求、性能需求和安全需求,进行系统的总体设计。3.根据需求分析与总体设计,实现基于Java的网上订餐系统,应用JavaSwing技术解决开发过程中所面临的各种技术问题。4.对系统进行部署与测试,根据测试结果,继续完善系统。1.5论文结构论文共分为六章,各章主要内容如下:第一章:绪论。提出项目背景、项目意义、项目目的,介绍本文的主要工作和组织结构。第二章:系统的开发环境及技术简介。主要介绍了本系统使用的编程语言是Java,服务器软件为Tomcat,系统开发工具为MyEclipse,动态网页技术JSP,数据库软件MySQL。第三章:系统需求分析。对将要实施的项目进行可行性分析,确定项目是否值得进行。第四章:系统总体设计。将系统的各个模块进行系统的概要设计。第五章:系统详细设计与功能实现。系统前台、后台的主要页面的设计与实现。第六章:系统的调试与测试。主要介绍了系统的运行和测试。-41- 第2章系统的开发环境及技术简介第2章系统的开发环境及技术简介2.1系统开发环境在摘要中已经提到,本系统使用的编程语言是Java,服务器软件为Tomcat,系统开发工具为MyEclipse,动态网页技术JSP,数据库软件MySQL,下面分别给予简单介绍。2.1.1MyEclipse在开发本平台中所用到的开发工具就是知名的java项目开发工具MyEclipse。MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的一种扩展,利用MyEclipse,我们可以在数据库和J2EE的开发、发布,以及在应用程序服务器的整合当中极大地提高系统的工作效率。MyEclipse是一个功能非常丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,JavaScript,SQL,Hibernate。在结构上,MyEclipse的特征可以被分为7类:J2EE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,J2EE项目部署服务,数据库服务,MyEclipse整合帮助。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。2.1.2MySQL数据库数据库使用的是MySQL开源数据库。MySQL是一个出色的开源数据库,在易用性和性能方面都有相当不错的表现。MySQL的特性:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。支持AIX、FreeBSD、HP-UX、MacOS、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统。为多种编程语言提供API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多线程充分利用CPU资源。优化的SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。可以处理拥有上千万条记录的大型数据库。-41- 第2章系统的开发环境及技术简介MySQL的应用:与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体成本。2.1.3TomcatTomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。2.2系统开发的思想与技术2.2.1JSP技术与MVC模式以及系统的基本框架本系统采用JSP技术,基于MVC模式开发,使用SSH框架(struts2、spring、hibernate)来增加系统的开发速度。所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。程序就是用struts2和hibernate这两个框架来实现模型层和控制器这两层,JSP实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,JSP页面请求先到action,再到dao,再回到action,回到JSP页面,action主要处理来自页面的请求,dao主要是和数据库的交互,struts2主要用在action,处理来自页面的请求,处理完请求后跳转回页面。Hibernate主要用在dao,包括对数据库的增、删、改、查的操作,spring控制程序的流程。2.2.2S.S.H框架的优点S.S.H框架是J2EE应用中struts2+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念及模式应用。比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。而spring属于应用程序框架,其核心是IOC容器以及AOP,-41- 第2章系统的开发环境及技术简介Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等。它由以下3个框架构成:1.Struts2框架Struts2是Apache组织的一个开放源码项目。Struts2是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Customtaglibrary。其基本构成如图2-1所示:图2-1Struts框架工作流程2.Spring框架Spring框架由以下7个部分组成,如图2-2所示:图2-2Spring框架构成Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVCWeb框架的实现,并对一些常用的企业服务API(ApplicationInterface)提供一致的模型封装,是一个全方位的应用程序框架(Application-41- 第2章系统的开发环境及技术简介framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们相整合的方案。3.Hibernate框架Hibernate是一个开放源码的ORM持久层框架。作为优秀的持久层框架实现,Hibernate框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。如图2-3所示:图2-3Hibernate框架-41- 第3章系统需求分析第3章系统需求分析3.1可行性分析在实施一个项目之前,首先要对将要实施的项目进行可行性分析,确定项目是否值得进行。并不是所有的问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模之内解决。如果问题没有可行解的话,那么花费在这项工程上的任何时间、资源、人力和经费都是浪费的。随着经济的快速发展,B2C电子商务越来越受到人们的关注。订餐类网站,已如雨后春笋般的出现在了个大城市。特别是在公司,企业内部,团体订餐已经成为趋势。同时,随着全国人民的物质、精神和文化生活的高度提高,人们已经不再仅仅停留在吃饱的程度,而是不但要吃饱,还要吃好,并且越来越挑刺,正因为如此网上订餐业务的出现,正迎合了这些人的口味,他们不但省去了自己做饭的麻烦,而且也能寻找和发现新的菜种,品尝不同风格和不同种类的菜品,网上订餐业务在中国有着极大的发展空间和良好的发展前景。当代大学生与白领工作人士作为社会中的重要群体,他们对饮食的要求都在不断提高,饮食在他们生活中起着重要作用。因此,面向大学生与都市白领人士的网上订餐系统的设计有着良好的现实意义。下面分别从技术可行性、经济可行性、操作可行性等方面进行分析和研究。3.1.1经济可行性分析新系统的经济可行性分析的含义是,估计新系统开发和运行所需的费用,以及新系统的效益,将投资和效益进行比较,说明在经济上是合算的。本系统投资低,只需配置一台稍好的电脑及相关的应用软件,此外本系统能够提高数据处理的及时性和准确性;降低了管理人员的劳动强度,提高了劳动效率;使用信息更加方便,从而使决策更及时、准确;取得了其他经济和社会效益。本环节通过分析新系统的成本效益,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用以及新系统将获得的效益,估算开发成本是否高于项目预期的全部经费。下面具体列出了成本和效益的分析:1.支出现在电脑的应用已经得到了普及是基础的信息化设施,目前使用计算机进行软件开发,网络环境和基础设施能满足本系统的实施要求,所以无须另外的资金投入。其它一次性支出如下:由于本系统的开发是作为课程实践来进行的,无须资金投入,而且本系统所用到的软件成本投入也不高。因此软件设计和开发费可以承受。经常性支出如下:-41- 第3章系统需求分析系统运行后的日常维护费用少。仅需简单的管理中心,该中心的工作人员可以负责本系统的维护工作。2.效益本系统的效益可以从经济效益和社会效益两方面考虑。其社会效益包括系统运行后可以使管理实现科学化、规范化,增强用户对知识信息的管理能力,从而提高工作效率,从长远来看,也是信息化的必经之路。由此可见系统的建设还是非常有发展前景的。3.1.2技术能力分析根据本系统的功能需求,采用Java与开源的MySQL数据库引擎进行开发。Java是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到Java的web应用中。Java同时也是语言独立化(language-independent)的,所以,可以选择一种最适合自己的语言来编写程序,或者用很多种语言来编写程序,现在已经支持的有C#(C++和Java的结合体),Java,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向Java。因此在技术层面上,是完全可行的。3.1.3运行可行性分析本系统的客户端采用的是图形界面方式,由于业务人员日常所使用的操作系统都是Windows系统,所以经过简单的培训就可以胜任新系统的操作工作。新系统的目标就是帮助用户实现资料的管理,并且新系统的运行不会对组织机构和管理方式产生大的影响,所以不会受到任何阻碍。系统的设计上需要注重安全性和用户操作的流畅性。因此要在对用户的管理和资格审核环节做出限定,只有经过审核确认的用户才有权使用,而且需要对管理员进行不同的权限分配。3.1.4法律可行性分析法律可行性主要是指待开发的软件是否存在知识产权等与法律有关的问题,如有这类问题,该软件即使开发成功,也难以成为产品销售。开发该系统的所有软件都使用正版,且属于自主设计,无剽窃他人设计行为。因此,开发本系统在法律上是可行的。3.2用户需求分析3.2.1功能分析作为一个网上订餐系统。首先为了保证客户能够很方便的进行餐品订购,系统应该具有分类查看餐品,系统应该实现“购物车”的功能,用户可以把选中的商品放入“购物订单”-41- 第3章系统需求分析中,在选购完毕后再一起结帐。在系统的后台,管理员能够查看客户购买菜品的订单,发布新菜品,管理各类用户等。因此可分析出本系统所实现的功能包括前台和后台两部分,前台为系统功能的主要部分。前台主要以会员身份登录后的页面为主,功能如表3-1所示:表3-1前台功能例表功能模块说明首页餐馆和餐品部分信息的简单介绍订餐流程实现对用户订餐流程的说明餐品展示实现本餐馆餐品的分类展示及查询某餐品的具体信息会员中心会员信息的查看与修改网上订餐订单的填写以及发送后台登陆通过相关验证,管理员登陆后台实现对用户、餐品以及订单的管理后台功能如表3-2所示:表3-2后台功能例表功能模块说明用户管理对会员、管理员两类用户的管理餐品管理实现对餐品信息的增删改以及查询等操作订单管理对用户的订单进行管理通过调查及需求分析可以了解网上订餐管理系统的基本功能。3.2.2用例分析用例图是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模,用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。本系统业务用例图如图3-1所示:图3-1系统业务图-41- 第3章系统需求分析本系统分管理员和用户2个权限。管理员主要功能:菜系管理、菜单管理、订单管理、用户管理、密码管理。用户主要功能是浏览菜单、搜索菜单、购物车功能、订单管理、登陆注册。用户在浏览菜单后,选定菜品后加入购物车,这样确认后生成订单,在后台即可显示订单信息,管理员在后台登录可查询用户订单,并且对其做出相应处理。本系统主要的角色(Actor)包括数据库、管理员、游客、会员;下面介绍应用程序中的主要用例(usercase)如表3-3所示。表3-3管理员用例描述用例名称:管理参与者:管理员前置条件:管理员成功登录系统后台用例功能:订单、用户、餐品、信息的管理事件流:当管理员成功登录系统后台,弹出后台界面异常事件流:当管理员未登录或输入不合法的数据后置条件:系统无改变游客注册用例描述如表3-4所示:表3-4游客注册用例描述用例名称:游客注册参与者:普通用户前置条件:游客未登录系统用例功能:主要用于游客注册个人信息,成为系统会员事件流:当游客进入注册页面异常事件流:当用户输入不合法的数据或该会员号已存在后置条件:系统无改变会员订餐用例描述如表3-5所示:表3-5会员订餐用例描述用例名称:会员参与者:普通用户前置条件:会员成功登录系统用例功能:会员通过网上订餐模块进行订餐事件流:当会员登录系统后选择网上订餐模块异常事件流:当会员未登录或输入不合法的数据后置条件:系统无改变-41- 第3章系统需求分析3.3系统设计目标分析开发的系统是简易的网上订餐系统,以各种用户为主要服务对象。提供良好的用户界面,实现与用户的交流,方便会员订餐是本系统设计的目标。该系统能够实现用户的注册,餐品查看,购物车式的餐品订购等功能,在系统的后台,管理员可以处理用户订单并配送获取,并可以对餐品信息等实现集中管理。初步预想使用Java,MySQL等技术来完成本网上订餐系统。系统需要提供的主要功能如下:1.用户能够随意浏览餐品,并能获取餐品的详细信息,如餐品图片预览、餐品简介等。2.系统能够向用户提供一些浏览信息,让用户能够快速的了解系统出售餐品的信息,如特色餐品等。3.系统能够提供菜品信息,让用户快速了解系统的菜品信息。4.用户可以注册成为本系统的会员,能随时修改自己的信息。5.系统有不同权限的用户,如会员、系统管理员。6.系统可以管理餐品(添加、删除、修改、查询),订单等等。3.4业务流程分析该系统应该主要的用户有两大类,一是卖家,在使用系统时为管理员身份;而是买家,在使用时是会员身份。下面分别就这两类用户介绍具体的业务流程。3.4.1管理员业务流程1.输入网址,进入网站主页面。2.进入管理员登录页面,输入用户名和密码并登录。3.登录成功后即可对网站内储存的各种信息,包括已注册的用户信息,菜品类别,菜品信息,已提交的订单信息,进行相应的适当操作,以维护网站的正常运行。4.注销登录,退出网站。3.4.2会员业务流程1.输入网址,进入网站主页面。2.若是已经注册用户,可以直接登录。若不是,则先注册,再登录。3.登录成功后即可以使用网站的相关功能,包括下订单等。会员业务流程如图3-2所示:3.5数据流图本系统中的数据流程图是结构化系统分析的工具。它既可以表达数据在系统内部的逻辑流向及存储,又可以表达系统的逻辑功能和数据的逻辑变换。数据流程图既能表达现行人工系统的数据流程和逻辑处理功能,也能表达自动化系统的数据流程和逻辑处理功能。数据流图是结构化分析方法-41- 第3章系统需求分析中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。图3-2会员业务流程数据流图英文缩写DFD(DataFlowDiagram)它是描绘信息流和数据从输入移动到输出的过程中所经受的变换。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。网上订餐管理系统的数据流程图包括:1.指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体,如本系统中的会员表,管理员表等;2.指明对数据执行的处理符号,这些符号也可指明该处理所用到的机器功能-41- 第3章系统需求分析,如本系统中的付款,查询等;3.指明几个处理和(或)数据媒体之间的数据流的流线符号,如本系统中的订单,类别等;4.便于读、写数据流程图的特殊符号。在处理符号的前后都应是数据符号。数据流程图以数据符号开始和结束。数据流图有两种典型结构,一是变换型结构,它所描述的工作可表示为输入、主处理和输出,呈线性状态。另一种是事务型结构,这种数据流图呈束状,即一束数据流平行流入或流出,可能同时有几个事务要求处理。本系统主要的数据流图如图3-3所示:图3-3系统主要数据流图-41- 第4章系统总体设计第4章系统总体设计系统总体设计主要目标是将系统分析阶段所提出的反映了信息需求的系统逻辑方案转换成可以实施的基于计算机运行环境的具体方案,进行系统的概要设计,为下一阶段系统详细设计提供必要的技术资料。4.1系统流程概述用户在浏览网站时首先看到的就是网站首页。在首页用户可以了解本餐馆的餐品的信息。用户如果想要订餐时直接填写收货人的信息或者注册成为会员,在用户查看完商品的信息后,可以把自己想要购买的商品加入购物车中,也可以随时修改,删除订单里的商品,如果用户对订单里的商品都很满意,就可以直接下订单。这时相关的程序模块会将用户所提交的所有信息都记录在数据库里以便系统的管理人员可以核对信息并准备餐品,专门送餐人员给用户配送餐品并收取现金,此时整个订餐的过程便结束。在网络订餐的后台管理方面还需要添加、修改、删除餐品,同时各类用户信息的管理和订单的处理等都需要系统的管理人员来操作。4.2总体功能模块本系统分用户和管理员两个模块。用户模块包括用户登陆、订单管理、购物车查询、搜索菜单、浏览菜单等功能。管理员模块主要对用户的功能进行管理,包括密码管理、用户管理、订单管理、菜单管理、菜系管理。总功能图如图4-1所示:图4-1系统功能需求分析-41- 第4章系统总体设计4.3管理员功能模块管理员主要功能:菜系管理、菜单管理、订单管理、用户管理、密码管理。管理员功能模块的功能图如图4-2所示:图4-2管理员功能图4.4用户功能模块用户主要功能是浏览菜单、搜索菜单、购物车功能、订单管理、登陆注册。用户的功能图如图4-3所示:图4-3用户的功能图-41- 第5章系统详细设计与系统功能实现第5章系统详细设计与系统功能实现5.1系统和数据库设计网上订餐管理系统按通用的B/S(浏览器、服务器)模式进行设计如图5-1:图5-1B/S结构数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。5.2概念模型设计概念模型设计的典型方法是用E-R图方法,E-R图也即实体-联系图(EntityRelationshipDiagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。网上订餐管理系统中构成E-R图的基本要素是实体型、属性和联系,其表示方法为: 实体型(Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名;比如本系统中的管理员和用户都是实体。如果是弱实体的话,在矩形外面再套实线矩形。  属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如本系统中用户的用户名,用户密码;订单的订单号,下单日期等都是属性。如果是多值属性的话,再椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。  联系(Relationship):联系也称关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n),如本系统中的管理,管理员可以管理菜单,管理员对菜单是1:n,用户可以管理订单,用户对菜单是1:n等。网上订餐管理系统E-R图如图5-2所示:-41- 第5章系统详细设计与系统功能实现图5-2E-R图5.3数据库逻辑模型依据软件工程数据设计规范和系统E-R图,网上订餐管理系统的数据逻辑模型如下,包含四个基本表:分类表(主键、是否删除标志、分类名)。用户表(主键、地址、注册时间、邮箱、密码、联系方式、QQ、用户权限、真实姓名、是否删除标志、用户名)。订单条目表(主键、单价、关联的菜单ID、菜单名、数量、关联的订单ID)。菜单表(主键、添加时间、图片路径、简介、菜单名、是否推荐、原价、热销价、商品否删除的标志、关联的分量ID)。5.4数据库表设计数据表是数据库中一个非常重要的对象,是其他对象的基础。没有数据表,关键字、主键、索引等也就无从谈起。在数据库画板中可以显示数据库中的所有数据表,创建数据表,修改表的定义等数据表是数据库中一个非常重要的对象,是其他对象的基础。-41- 第5章系统详细设计与系统功能实现根据系统功能设计的要求以及功能模块的划分,对于本系统信息数据库主要有分类表,如表5-1所示,用户表如表5-2所示,订单条目表如表5-3所示,订单表如表5-4所示,菜单表如表5-5所示:表5-1分类表名称类型空备注idBigint(20)no主键catelockInt(11)no是否删除标志,0表示未删除,1表示删除catenameVarchar(255)yes分类名表5-2用户表名称类型空备注idBigint(20)no主键addressVarchar(255)yes地址createtimedatetimeyes注册时间emailVarchar(255)yes邮箱passwordVarchar(255)yes密码phoneVarchar(255)yes联系方式qqVarchar(255)yesQQroleInt(11)no用户权限,role为1表示系统管理员,role为0表示用户truenameVarchar(255)yes真实姓名userlockInt(11)no是否删除标志,0表示未删除,1表示删除usernameVarchar(255)yes用户名表5-3订单条目表名称类型空备注idBigint(20)no主键pricedoubleyes单价productidInt(11)no关联的菜单ID,外键productnameVarchar(255)yes菜单名-41- 第5章系统详细设计与系统功能实现productnumInt(11)no数量orderidBigint(20)yes关联的订单ID,外键表5-4订单表名称类型空备注idBigint(20)no主键addressVarchar(255)yes送货地址createtimedatetimeyes添加时间orderidVarchar(255)yes订单号phoneVarchar(255)yes联系电话statusInt(11)no订单状态totalpricedoubleyes总价格usernameVarchar(255)yes订单的用户名useridBigint(20)yes关联的用户ID,外键表5-5菜单表名称类型空备注idBigint(20)no主键createtimedatetimeyes添加时间imgpathVarchar(255)yes图片路径Info5Varchar(255)yes简介nameVarchar(255)yes菜单名newstuijianInt(11)no是否推荐Price1doubleyes原价Price2doubleyes热销价productlockInt(11)no商品是否删除的标志,0表示未删除,1表示删除xiaoliangInt(11)no销量cateidBigint(20)yes关联的分类ID,外键5.5平台数据表的实现根据平台的需求分析和功能模块的划分,所涉及的实体有菜单,菜单,订单条目,分类用户。因此系统的定义数据库主要包含5张表:菜单表t_product如图5-3所示-41- 第5章系统详细设计与系统功能实现,订单表t_order如图5-4所示,订单条目表t_orderitem如图5-5所示:图5-3菜单表t_product建表的sql语句为:CREATETABLE`t_product`(`id`bigint(20)NOTNULLauto_increment,`createtime`datetimedefaultNULL,`imgpath`varchar(255)defaultNULL,`info5`varchar(255)defaultNULL,`name`varchar(255)defaultNULL,`newstuijian`int(11)NOTNULL,`price1`doubleNOTNULL,`price2`doubleNOTNULL,`productlock`int(11)NOTNULL,`xiaoliang`int(11)NOTNULL,`cateid`bigint(20)defaultNULL,PRIMARYKEY(`id`),KEY`FKA91FC024ED19CAFA`(`cateid`),CONSTRAINT`FKA91FC024ED19CAFA`FOREIGNKEY(`cateid`)REFERENCES`t_category`(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;图5-4订单表t_order建表的语句为:-41- 第5章系统详细设计与系统功能实现CREATETABLE`t_order`(`id`bigint(20)NOTNULLauto_increment,`address`varchar(255)defaultNULL,`createtime`datetimedefaultNULL,`orderid`varchar(255)defaultNULL,`phone`varchar(255)defaultNULL,`status`int(11)NOTNULL,`totalprice`doubleNOTNULL,`username`varchar(255)defaultNULL,`userid`bigint(20)defaultNULL,PRIMARYKEY(`id`),KEY`FKA0C0C3C31433B443`(`userid`),CONSTRAINT`FKA0C0C3C31433B443`FOREIGNKEY(`userid`)REFERENCES`t_user`(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;图5-5订单条目表t_orderitem建表的语句为:CREATETABLE`t_orderitem`(`id`bigint(20)NOTNULLauto_increment,`price`doubleNOTNULL,`productid`int(11)NOTNULL,`productname`varchar(255)defaultNULL,`productnum`int(11)NOTNULL,`orderid`bigint(20)defaultNULL,PRIMARYKEY(`id`),KEY`FK794A55632BFB425`(`orderid`),CONSTRAINT`FK794A55632BFB425`FOREIGNKEY(`orderid`)REFERENCES`t_order`(`id`)-41- 第5章系统详细设计与系统功能实现)ENGINE=InnoDBDEFAULTCHARSET=utf8;5.6系统功能实现的主要框架5.6.1SSH框架SSH框架就是Struts2,Spring,Hibernate的简称,运用3个框架的集成协作使用,可以有效的提高代码编写的效率,从而有效的降低程序开发的周期。5.6.2Hibernate配置文件trueDBPoolproxool.xmlorg.hibernate.connection.ProxoolConnectionProvidercom.mysql.jdbc.Driverfalsefalseorg.hibernate.dialect.MySQLDialectthreadupdate-41- 第5章系统详细设计与系统功能实现这是Hibernate的配置文件,在该文件中proxool.xml首先加载了连接池的一个配置,就是加载了数据库的连接信息,truetrue表示控制台打印SQL语句,并格式化SQL语句org.hibernate.dialect.MySQLDialect表示当前数据库的语言是MYSQL都表示当前数据库建立起来的表和类之间的映射关系,比如表示User类和t_user表之间的建立起来的对应关系,其他也都类似。5.6.3Struts配置文件index.jsp${url}${url}${url}${url}-41- 第5章系统详细设计与系统功能实现这是struts的配置文件,该文件的作用主要起到来自JSP的请求的跳转分配的作用.该struts配置文件是个总的配置文件。5.6.4Spring配置文件Spring在本项目中主要用到了IOC的功能,就是把对象实例化本段代码是把DAO实例化的代码,通过spring的IOC模式-41- 第5章系统详细设计与系统功能实现本段代码是把HoutaiAction和QiantaiAction实例化的代码,原理也是spring的IOC模式。5.7系统功能实现的主要模块5.7.1网站主页面网站的主界面,包括菜单,我的购物车,我的订单,用户注册,用户登录,管理后台等。用户可以点击用户登录按键进行登录,管理员可以点击管理后台按键来登录到后台,对用户,订单等进行管理。主页面的订餐搜索可以提供菜名的搜索,在输入栏中输入你想要的菜名,就会搜索到相应的菜品信息。网站主页面如图5-6所示:图5-6网站主页面代码://首页入口publicStringindex()throwsException{HttpServletRequestrequest=ServletActionContext.getRequest();Listcatelist=categoryDao.selectBeanList(0,9999,"wherecatelock=0");request.setAttribute("topcatelist",catelist);request.setAttribute("xiaoliangprolist",productDao.selectBeanList(0,15,"whereproductlock=0orderbyxiaoliangdesc"));-41- 第5章系统详细设计与系统功能实现intcurrentpage=1;intpagesize=5;if(request.getParameter("pagenum")!=null){currentpage=Integer.parseInt(request.getParameter("pagenum"));}Stringcid=request.getParameter("cid");Stringkeyword=request.getParameter("keyword");if(cid!=null){inttotal=productDao.selectBeanCount("whereproductlock=0andcate.id="+cid);request.setAttribute("hotprolist",productDao.selectBeanList((currentpage-1)*pagesize,pagesize,"wherecate.id="+cid+"andproductlock=0orderbyiddesc"));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"index?cid="+cid,"共有"+total+"条记录"));}elseif(keyword!=null&&!"".equals(keyword)){inttotal=productDao.selectBeanCount("whereproductlock=0andnamelike"%"+keyword+"%"");request.setAttribute("hotprolist",productDao.selectBeanList((currentpage-1)*pagesize,pagesize,"wherenamelike"%"+keyword+"%"andproductlock=0orderbyiddesc"));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"index","共有"+total+"条记录"));}else{inttotal=productDao.selectBeanCount("whereproductlock=0");request.setAttribute("hotprolist",productDao.selectBeanList((currentpage-1)*pagesize,pagesize,"whereproductlock=0orderbyiddesc"));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,".","共有"+total+"条记录"));}return"success";-41- 第5章系统详细设计与系统功能实现}本段代码是主页面代码,通过productDao.selectBeanList方法从数据库中取出各种菜单的信息,同时提供搜索菜单等功能,最后通过return"success";返回到struts.xml对应的JSP文件。5.7.2管理员登陆页面管理员通过表单提供用户名、密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别:连接数据库,打开数据表,检查提交的信息,以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。若密码和用户名都正确,则将用户导向系统后台的主页面,此时,该管理员即可进行相关的操作,包括修改管理员用户的密码,添加和删除管理员以及其他的操作。如果用户名不存在或密码不正确,则给出登录失败的提示框,并返回系统登录界面,此时用户可以重新登录。管理员登录界面如图5-7所示:图5-7管理员登录界面本段代码是程序的登陆代码,首先从获取从页面输入的用户名和密码,然后调用userDao.selectBean方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。5.7.3菜单分类管理主页面从图5-8菜单分类管理主页面可以看出,管理员可以对菜单分类进行管理。从该界面可以看出包括添加,更新和删除菜单分类信息。-41- 第5章系统详细设计与系统功能实现图5-8菜单分类管理主页面代码如下://菜单分类列表publicStringcatelist(){HttpServletRequestrequest=ServletActionContext.getRequest();intcurrentpage=1;intpagesize=10;if(request.getParameter("pagenum")!=null){currentpage=Integer.parseInt(request.getParameter("pagenum"));}Stringwhere="wherecatelock=0";inttotal=categoryDao.selectBeanCount(where);request.setAttribute("list",categoryDao.selectBeanList((currentpage-1)*pagesize,pagesize,where));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"houtaimethod!catelist","共有"+total+"条记录"));this.setUrl("product/catelist.jsp");returnSUCCESS;}-41- 第5章系统详细设计与系统功能实现通过categoryDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("product/catelist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该菜单分类列表页面定义了对菜单分类信息的增加,修改,删除等操作。5.7.4菜单管理主页面管理员可以对菜单信息进行管理。从该界面可以看出包括添加,更新和删除菜单信息。管理员可以对菜品名称,菜品所属类别,价格,图片,菜品介绍等具体属性信息操作。另外,管理员还可以根据实际情况设定特价菜。特价菜是用来吸引和回馈顾客的一个有效的途径。菜单管理主页面如图5-9所示:图5-9菜单管理主页面代码如下://菜单列表publicStringproductlist(){HttpServletRequestrequest=ServletActionContext.getRequest();intcurrentpage=1;intpagesize=10;if(request.getParameter("pagenum")!=null){currentpage=Integer.parseInt(request.getParameter("pagenum"));}Stringwhere="whereproductlock=0orderbyiddesc";Stringwhere2="whereproductlock=0";inttotal=productDao.selectBeanCount(where2);request.setAttribute("list",productDao.selectBeanList((currentpage-1)*pagesize,pagesize,where));-41- 第5章系统详细设计与系统功能实现request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"houtaimethod!productlist","共有"+total+"条记录"));this.setUrl("product/productlist.jsp");returnSUCCESS;}通过productDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("product/productlist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该菜单列表页面定义了对菜单信息的增加,修改,删除等操作。5.7.5订单管理主页面管理员可以对订单进行管理,包括查询订单明细,受理订单和删除订单。当有会员下单之后,就会生成订单并在后台显示。此时订单处于未受理状态。管理员在查看订单的详细信息(包括订单号,用户ID,联系方式,金额,下单日期等)并确认无误后就可以对订单进行相应的操作,可受理或删除订单。然后餐厅即会在指定的时间内将会员订购的菜品送达。订单管理主页面如图5-10所示:图5-10订单管理主页面代码如下://订单列表publicStringorderlist(){HttpServletRequestrequest=ServletActionContext.getRequest();Stringorderid=request.getParameter("orderid");Stringusername=request.getParameter("username");Stringstatus=request.getParameter("status");Stringtime1=request.getParameter("time1");Stringtime2=request.getParameter("time2");-41- 第5章系统详细设计与系统功能实现StringBuffersb=newStringBuffer();sb.append("where");StringBuffersb2=newStringBuffer();sb2.append("where");if(orderid!=null&&!"".equals(orderid)){sb.append("orderidlike"%"+orderid+"%"");sb.append("and");sb2.append("orderidlike"%"+orderid+"%"");sb2.append("and");request.setAttribute("orderid",orderid);}if(username!=null&&!"".equals(username)){sb.append("usernamelike"%"+username+"%"");sb.append("and");sb2.append("usernamelike"%"+username+"%"");sb2.append("and");request.setAttribute("username",username);}if(status!=null&&!"".equals(status)){if("未受理订单".equals(status)){sb.append("status=0");sb.append("and");sb2.append("status=0");sb2.append("and");}else{sb.append("status=1");sb.append("and");sb2.append("status=1");sb2.append("and");}request.setAttribute("status",status);}if(time1!=null&&!"".equals(time1)){sb.append("createtime>=""+time1+""");-41- 第5章系统详细设计与系统功能实现sb.append("and");sb2.append("createtime>=""+time1+""");sb2.append("and");request.setAttribute("time1",time1);}if(time2!=null&&!"".equals(time2)){sb.append("createtime<""+time2+""");sb.append("and");sb2.append("createtime<""+time2+""");sb2.append("and");request.setAttribute("time2",time2);}sb.append("1=1orderbyiddesc");Stringwhere=sb.toString();sb2.append("1=1");Stringwhere2=sb2.toString();intcurrentpage=1;intpagesize=20;if(request.getParameter("pageNum")!=null){currentpage=Integer.parseInt(request.getParameter("pageNum"));pagesize=Integer.parseInt(request.getParameter("numPerPage"));}inttotal=orderDao.selectBeanCount(where2);request.setAttribute("list",orderDao.selectBeanList((currentpage-1)*pagesize,pagesize,where));request.setAttribute("totalCount",total);request.setAttribute("ps",pagesize);request.setAttribute("pn",currentpage);this.setUrl("order/orderlist.jsp");returnSUCCESS;}首先通过Stringorderid=request.getParameter("orderid");-41- 第5章系统详细设计与系统功能实现Stringusername=request.getParameter("username");Stringstatus=request.getParameter("status");Stringtime1=request.getParameter("time1");Stringtime2=request.getParameter("time2");;这些句代码从页面获取查询的选项,然后通过if(orderid!=null&&!"".equals(orderid)){if(username!=null&&!"".equals(username)){if(status!=null&&!"".equals(status)){if(time1!=null&&!"".equals(time1)){if(time2!=null&&!"".equals(time2)){通过这些句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过orderDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("order/orderlist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该订单列表页面定义了对订单信息的查看,处理等操作。5.7.6购物车主页面用户在浏览菜单后,就可以根据跟人喜好,选择喜欢的要购买的菜品,加入购物车中。然后用户就可以点击我的购物车查看我选择的菜品,此时菜品已经加入到购物车中,用户还可以更改菜品的数量,删除菜品,还原已删除的菜品等,如果确定好要买的菜品了,就可以结算了。购物车主页面如图5-11所示:图5-11购物车主页面代码如下://购物车列表publicStringcart()throwsIOException{HttpServletRequestrequest=ServletActionContext.getRequest();-41- 第5章系统详细设计与系统功能实现HttpSessionsession=request.getSession();Useruser=(User)session.getAttribute("user");if(user==null){HttpServletResponseresponse=ServletActionContext.getResponse();response.setCharacterEncoding("gbk");response.getWriter().print("alert("请先登录");window.location.href="qiantaimethod!login";");returnnull;}request.setAttribute("cartItems",CartService.getItems());request.setAttribute("dropcartItems",CartService.getDropItems());request.setAttribute("price1",CartService.getPrice1());request.setAttribute("price2",CartService.getPrice2());request.setAttribute("price1-price2",CartService.getPrice1()-CartService.getPrice2());this.setUrl("cart.jsp");returnSUCCESS;}CartService模型是程序的购物车模型,在该模型中定义了对购物车操作的各种方法,通过调用该方法实现对购物车的各种操作,比如显示购物车商品列表操作的CartService.getItems()方法,获得购物车总价格的CartService.getPrice1()方法,获取购物车的各种方法后,在通过this.setUrl("cart.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该购物车页面定义了对购物车条目信息等操作。-41- 第6章系统的调试与测试第6章系统的调试与测试6.1软件测试的目的软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。软件质量是由几个方面来衡量的:一、在正确的时间用正确的方法把一个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。6.2软件测试的方法软件测试是用来发现系统和用户需求不符合的过程。测试方法分为:白盒测试和黑盒测试。白盒测试是对软件过程性细节做出细致的检查。这样的方法是把测试对象看做是一个打开的盒子,它允许测试人员利用程序内部的逻辑结构以及有关的信息,设计或者选择测试用例,对程序所有的逻辑路径进行测试。通过在不同的节点来检查程序的状态,确定实际状态是否与预期达成一致。因此,白盒测试又称为结构测试或者是逻辑测试。白盒测试主要是想对程序模块进行如下检查:1.对程序模块的所有独立的执行路径至少测试一遍。2.对所有的逻辑判定,取“真”或者取“假”的两种情况至少能测一遍。3.在循环的边界和运行的界限内执行循环体。4.测试内部数据结构的有效性。本次系统测试主要是选择黑盒测试,软件的黑盒测试意味着测试要在软件的接口处进行测试。这样的方法是把测试对象看成一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部属性,只是根据程序的需求规格说明书,检查程序的功能是否符合它的功能说明,因此黑盒测试又叫功能测试或者数据驱动测试。黑盒测试主要是为了发现以下几类错误:-41- 第6章系统的调试与测试1.是否有不正确或遗漏的功能。2.在接口上,输入是否正确的接受,能否输出正确的结果。3.是否有数据结构错误或外部信息(例如数据文件)访问错误。4.性能上是否能够满足要求。5.是否有初始化或者终止性错误。6.3主模块测试主模块测试采用黑盒测试,测试人员根据程序的需求规格说明,检查程序的功能是否符合它的功能说明。6.3.1登录/注册模块登录/注册模块测试项目有用户登录和用户注册,如表6-1所示:表6-1登陆/注册模块测试测试项目测试用例测试结果操作流程用户登录用户名:qiqi正确密码:123456输入密码:123456登陆成功在网站首页的登陆框上登陆用户登录用户名:zj正确密码:123456输入密码:123456错误提示:“登陆失败,或是尚未通过审核”在网站首页的登陆框上登陆用户注册输入相关注册信息注册成功在网站首页的登陆框上点击“没有注册”6.3.2订餐服务模块订餐服务模块的测试项目有菜品分类,搜索查询,加入购物车和提交订单,如表6-2所示:表6-2订餐服务模块测试测试项目测试用例测试结果操作流程菜品分类点击查询“意面”显示所有主食点击主页上的“意面”搜索查询在搜索框中选择“意面显示菜名中包含“意面”的所有菜在主页上的搜索框中选择,点击查询加入购物车点击加入购物车显示已加入购物车点击菜品后的加入购物车提交订单点击“订单确认”显示注册时预留的地址信息查看购物车页面,填写相关的送餐信息,点击“提交订单”-41- 第6章系统的调试与测试6.3.3订单处理模块订单处理了模块测试项目有登陆后台,查看订单管理,查看订单详情和受理订单,如表6-3所示:表6-3订单处理模块测试测试项目测试用例测试结果操作流程登陆后台用户名:admin正确密码:111111输入密码:111111转入后台管理首页进入后台登陆界面查看订单管理点击订单管理中“订单管理”转入订单列表页面在后台管理首页中,点击订单管理中“订单管理”查看订单详情点击“订单明细”转入订单明细页面在订单列表页对应得一行中点击“订单明细”受理订单点击“受理订单”订单表中的订单状态改变为“已受理”在订单详情中点击“受理订单”6.3.4菜单管理模块菜单管理模块测试项目有添加菜品信息,删除菜品信息和编辑现有菜单信息,如表6-4所示:表6-4菜单模块测试测试项目测试用例测试结果操作流程添加菜品信息输入相关信息添加成功,在菜品列表中在后台管理首页点击菜品管理中的“添加”删除菜单信息点击“删除”提示:“删除成功!”在菜品列表的相关操作中点击“删除”编辑现有菜单信息点击“编辑”编辑成功,转回列表页面在菜品列表的相关操作中点击“编辑”6.3.5测试总结此次测试采用黑盒测试方法。做了许多测试用例,但限于篇幅只写出了几个典型的测试用例。在测试的整个过程中,每个模块的功能都比较成功,但也发现了一些问题,如在数据库等多方面没有数据的时候出现异常等,发现后及时做了修改。目前系统还存在很多值得改进的地方,将会在今后使用和维护中不断完善此网上订餐系统。-41- 第6章系统的调试与测试6.4测试环境Apache提供的Web服务器Tomcat6.0使得用户可以在Windows2000以上操作系统下发布自己设计的动态网页。因此对论坛的调试工作主要是利用Tomcat6.0的强大功能在本机下完成的。为了在本机下浏览Web页面,首先在创建该系统的站点上(该系统使用的是Web的默认站点)将IP地址设定为127.0.0.1,它的缺省域名值为localhost。然后向IE浏览器输入本地动态网页的URL,Web服务器在收到浏览器传送的URL之后找到网页文件,并在服务器端执行该文件后将此文件以HTML文件的形式返回该浏览器。6.5测试环境的配置6.5.1创建安装项目要对一个应用程序进行打包部署,首先需要把tomcat服务器集成到MyEclipse开发工具:点击windowpreferences,弹出对话框,在文本框里输入tomcat,选择tomcat选项,选择tomcat6.X,并选择tomcat文件的路径,点击enable,使这个设置为有效的。最后点击确认完成tomcat服务器的添加。6.5.2添加项目输出选择部署按钮,弹出对话框,在project里选择需要部署的项目之后点击add按钮,弹出对话框,Server选择tomcat6X,最后点击finish完成部署。6.5.3运行项目首先点击server窗口,右键点击tomcat6.x,点击runserver,则开始运行tomcat服务器,当控制台不在有新的信息输出时说明部署成功。6.6系统维护系统维护是为保证系统的正常运行和安全保障等而采取的一系列措施,其中包括数据库维护、信息更新、版面更新、安全测试以及数据备份等操作过程;除此之外,如果要公开这个网站,则还包括服务器和域名空间等的维护。数据库维护和信息更新:该阶段主要是要求管理员要经常对数据库和过期的信息及时地进行更新和维护,以保证数据库的正常运行和信息的及时性,从而保证了访问者能够顺利地了解到最新的信息动态。版面的更新:该过程主要是要求对系统的首页和页面定期进行相应的调整或更新,从而使本系统经常以崭新的面貌出现在广大访问者的面前。安全测试和数据备份:该过程主要是从系统的安全方面考虑,由于目前整个网络体系的安全问题还存在着较大的隐患,所以如何加强系统的安全性能对于一个系统的正常运行具有非常重要的意义。所以,管理员要经常对系统进行诸如一些用户名、密码以及权限的更新或重新设置,从而保证系统的安全性。-41- 结论结论在这次毕业设计中,我独立开发了网上订餐管理系统。在这个系统中,采用的是开发语言是Java.以前对Java技术仅仅是很浅显的认识.通过这次毕业设计,使我对Java技术有了深刻的认识,对其组件、功能、语法都有了较大的提高.经过这段时间的系统学习,在Java技术方面有了很大的提高.由于没有WEB的开发经历,同时涉及到Java方面的内容,又对TOMCAT服务器不了解。在筹建时,耗费很多时间深入广泛的调查现有的网上订餐系统流程,但是,由于用户管理,菜品管理,订餐及订座管理在功能实现上大同小异,因此设计上没有花费太多时间,最终把精力放在了解Java技术中,重点解决乱码问题、数据库连接问题上.当调试出现问题是,先从细节上入手,看看自己在细节上有没有由于粗心而发生的错误,然后再进行整体上分析,有没有严重的语法错误。最终在自己的努力下,在老师和同学的帮助下解决了各种问题。这次毕业设计实验,积累了数据库编程和网站开发的基本经验和一些基本技巧。对大型系统开发有了实质性、操作性的认识,同时对运用Java技术有了很大的提高,对以前学到的书本知识也是个很好的巩固,同时这次设计让我意识到自己的许多的不足,锻炼了自己独立发现问题,思考问题,解决问题的能力,也掌握了一些编程的思想和技巧,使自己的编程能力也有了很大的提高。-41- 参考文献参考文献[1]冯燕奎,赵德奎.JSP实用案例教程[M].清华大学出版社,2004.70~100[2]王家华.软件工程[M].东北大学出版社,2001.265~303[3]王宜贵.软件工程[M].北京:机械工业出版社,2002.20~79[4]孙卫琴.精通struts[M].电子工业出版社,2004.50~70[5]孙卫琴.精通hibernate[M].电子工业出版社,2005.100~120[6]张洪斌.java2高级程序设计[M].中科多媒体出版社,2001.85~90[7]蔡剑,景楠.JavaWeb应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2004.107~166[8]林信良spring2.0技术手册[M].电子工业出版社,2006.50~100[9]耿祥义.JSP基础编程[M].清华大学出版社,2004.55~162[10]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185~193[11]孙鑫.JavaWeb开发详解[M].电子工业出版社,2006.189~274[12]林上杰,林康司.JSP2.0技术手册[M].电子工业出版社,2004.3~6[13]萨师煊,王珊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006.198~233[14]蔡剑,景楠.JavaWeb应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2004.78~98[15][美]HerbertSchild著.鄢爱兰,鹿江春等译.Java参看大全(J2SE5Edition).北京:清华大学出版社,2006.35~70-41- 致谢致谢大学四年的学习生活即将结束了,这篇毕业设计作为我学习的最后一份答卷,敬献给各位教师。在计算机科学与技术专业学习的四年中,我不仅学到了丰富的专业知识,更感受到了各位教师认真工作、爱岗敬业、为人师表的优良品质。这是我人生起点收获到的巨大财富。在本文的构思和写作过程中,得到了老师的细心指导和帮助,老师在百忙之中抽出时间为我指导论文。在本文的选题、拟定提纲、成文、修改及定稿的整个过程中,姜老师都倾注了大量的心血,提出了宝贵的意见和建议,使得本文终能定稿。在论文的字里行间体现出姜老师作为毕业论文导师所具有的深厚理论水平,超前的思维方式和严谨的治学态度,给我留下了深刻的印象,必将使我受益终生,激励我前行!在这里对老师给予我的细心帮助表示忠心的感谢!同时,感谢信息工程学院所有曾经关心我、培育我、鼓励我的各位老师,是你们使我在大学四年的学习和生活中不断的成长,学到了丰富的专业知识以及许多为人处事的道理;并且感谢我的学长、室友还有同学们,他们在我困难无助时帮我出谋划策,指点迷津。最后,由衷感谢评审本文并提出宝贵意见的各位专家教授。-41-'