校园在线订餐网站的设计和实现.docx
《校园在线订餐网站的设计和实现.docx》由会员分享,可在线阅读,更多相关《校园在线订餐网站的设计和实现.docx(44页珍藏版)》请在冰豆网上搜索。
![校园在线订餐网站的设计和实现.docx](https://file1.bdocx.com/fileroot1/2023-5/15/a4d63c58-c5e6-44e0-b45b-be0302494b18/a4d63c58-c5e6-44e0-b45b-be0302494b181.gif)
校园在线订餐网站的设计和实现
南京邮电大学通达学院
毕业设计(论文)
题目:
校园在线订餐网站的设计和实现
专业:
软件工程
学生姓名:
班级学号:
12003227
指导教师:
指导单位:
计算机学院、软件学院__
日期:
2015年12月1日至2016年6月12日
本人郑重声明:
所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。
除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。
对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。
论文作者签名:
日期:
年月日
摘要
吃在人们生活中一直占据重要地位,俗话说“国以民为本,民以食为天”,餐饮行业在第三产业中一直占有重要地位,从国家统计局数据显示,餐饮行业市场体量巨大。
近年来,随着互联网日新月异的发展速度,B2C到O2O不仅仅改变的是行业的营销模式,还影响了一代人甚至几代人的消费习惯。
而餐饮作为高频的需求,与人们的生活息息相关。
在“互联网+”的深入发展下,人与食物的距离已经在外卖、生鲜电商和半成品食材电商所提供的解决方案下不断缩短。
本文详细论述了基于Java的校园点餐系统的设计开发过程。
系统采用的开发工具是MyEclipse,开发语言是JAVA,mysql作为数据库,实现了订餐,商品管理,账号管理等功能。
本系统也运用了丰富的前后端框架,如SpringMVC,iBATIS,jQuery,Bootstrap,EasyUI等,简化了开发困难,丰富了开发内容,同时也使代码变得更规范。
关键词:
餐饮行业;O2O;校园点餐;Java;SpringMVC
ABSTRACT
Eatingisthebigeventofpeople'slife,asthesayinggoes,Thecountryservingthecommunity,foodsecurityforthefirst,thefoodindustryinthetertiaryindustryhasalways beenoccupiesanimportantposition,accordingtothe National Bureau ofStatistics,foodindustrymarketsizeishuge.Recently,withtheadvancementoftheInternetwave,B2CtoO2Odoesnotjustchangethemarketingmodeoftheindustry,alsoaffectedthegenerationorevenseveralgenerationsofspendinghabits.Andrestaurantservesasthedemandofthehighfrequency,iscloselyrelatedtopeople'slife.Inthefurtherdevelopmentof"Internet+",Take-away,freshfoode-commerceandsemi-finished food material e-commerceprovidesolutionsmakethedistanceofthepeopleandthefoodmoreandmoreshort.
My paper discusses the developing and design process in detail of the campusonline-ordering-system based on Java.This system uses MyEclipse as a development platform,Java as the development of language, MySql as the database,to achievethefunctionoforderameal,commoditymanagement,accountmanagement,andsoon.Thesystemalsousedabundantsoftwareframework,suchasSpringMVC,iBATIS,jQuery,Bootstrap,EasyUI.Theseframeworkmakethedevelopmenteasier,thecontentmorerichandthecodemorespecification.
KeyWords:
Thefoodindustry;O2O;Campusorder;Java;SpringMVC
第一章绪论
1.1课题研究背景和意义
在这个信息科技快速发展的时代,互联网已经基本融入我们的生活当中。
信息科技的更新日新月异。
B2C模式过渡到O2O模式改变的不仅仅是行业内营销的模式,还影响了大多数人的消费使用习惯。
俗话说得好:
“民以食为天”,餐饮行业在我国一直占有着重要的地位。
李克强总理曾经提出的“互联网+”的发展概念就为O2O外卖行业的高速发展带来了新的春天。
根据CNNIC发布的第36次中国互联网络发展状况统计报告显示,截止至2015年6月,中国网民的数量高达6.68亿,互联网的普及率接近百分之五十,和2014年底相比上升了0.9%。
7月30日,“易观智库”发布的《中国互联网餐饮外卖市场2015上半年专题研究报告》显示,2015年上半年中国的互联网餐饮外卖市场的订单规模呈现了一种高速增长的趋势,成交金额超过了120亿元。
相对来说,餐饮外卖平台的用户多是80、90后年轻人,其中学生更是餐饮外卖的一个大的用户群体。
因此,校园在线订餐系统的开发成为了改变大学生校园快捷生活,为学生省下更多的时间学习的必要研究课题。
校园在线订餐系统应该充分利用互联网带来的优势,使传统餐饮流程以一个简洁、直观的方式展现到网页上,并且利用可视化界面使餐品的管理和购买流程变得方便、快捷,不仅要大大缩短传统餐饮的复杂过程,无需排队,购买便利,而且卖家管理起来也变得更方便,使学生的用餐效率能有所提高,也减轻了餐饮管理人员的负担。
这样一来,面对传统的流程以及杂乱的订单管理和人员安排,在线订餐系统的优势也显而易见,方便了学生也方便餐厅。
同时从接受能力强的大学方面入手,从而逐渐推广在线订餐到大众,这也是我们加速实现信息化、现代化和国际化的重要步骤之一。
1.2课题研究现状
在我国的一个大环境下,在线订餐的模式最早出现在20世纪90年代的末期。
早在1998年的时候,广州等以吃闻名的大城市已经出现了网上订餐业务。
2000年7月,北京丽华快餐公司为追求新模式的经济发张方式,选择了探索餐饮业在网络上经营的道路,然后就推出了网上订餐的模式,成为探索网上订餐的行业的探路者。
国内的外卖市场发展到了现在,基本上形成了这样的一个市场格局:
“饿了么”和“美团”遥遥领先,占领了第一阵营,位列第二梯队的“淘点点”和“XX外卖”也在开拓创新、不断赶超,剩下的外卖平台百花齐放,各有优势。
以第一梯队的和第二梯队的“饿了么”等公司现状来分析,目前这些平台各有优劣:
饿了么:
从国内卓越的互联网数据统计分析公司“易观国际”的分析结果来看,占据外卖市场第一位置的“饿了么”以30.58%的占比摇摇领先,它的先发优势是其它外卖平台不具备的,这个优势不单是进入到网上外卖行业的时间节点,还有用户心中先入为主的一个形象,所以“饿了么”成为了外卖行业的一个代名词。
“饿了么”在网络外卖行业中惯性了网络订餐的模式,让用户和商家都养成了一个线上下单、推销的习惯。
美团:
能力出众、身经百战的“美团”连续创业者王兴带领他的团队成员做出来的成果是我们有目共睹,出色的“地推”能力带来的不仅是品牌效应,同时在网络团购上面也坐实了国内的团购平台老大的地位,同时也给了他外卖上的业务带来了大量的客户资源和品牌口碑,但是它有一个比较其他外卖平台的更长的业务种类,这也是一个不可忽视的问题目前“美团”已经包含了了外卖、团购、电影、旅游、酒店等多个模块,在不同的业务中都有不同的竞争对手,同时还要面对新对手的加入,各行业虎视眈眈的情况下做到这样真是一个大成功。
淘点点:
第二梯队的淘点点虽然名声不是很响亮,但是他的靠山你肯定如雷贯耳,作为“阿里系”的一员从来不用担心资金和客户量的不足,更不用担心大服务平台的建设。
即便如此,如今“淘点点”拓展的城市也只有20多个,和“饿了么”和“美团”的200多个城市的规模相比就屈指可数了,因为他们主要打造的是服务性的平台,而且这也是他们擅长的地方,从自己的优势入手做成移动餐饮的生活服务性平台,最终造就一个餐饮界的淘宝也不是梦想。
XX外卖:
国际大品牌XX的涉及业务之广是众所周知的,根据“易观国际”数据的分析来看,XX外卖以非常迅速的扩张趋势来弥补它进入角逐的时间晚的劣势,到现在已经覆盖了八十多个城市。
根据XX的一贯作风,它总是可以另辟蹊径,在外卖平台上建立起了属于自己的物流团队:
“XX骑士”来保证送餐的速度,刚刚好满足了用户点外卖的初衷:
方便。
虽然国内外卖O2O百家争鸣外卖,但是也是从国外的多个平台借鉴而来的。
外卖O2O模式最早的发源地是欧美,并且由于时间的优势现在运作的已经非常的成熟。
欧美的外卖平台相比较中式的外卖平台差异很大,目前在欧美地区比如Yelp、JustEat、GrubHub等多家外卖公司都已经成功的上市:
YelpPlatform:
YelpPlatform是美国的公司也是大众点评的借鉴对象,也就是说它是一个可以点评、社交和移动一个平台,它的用户主要在平台上对商家进行点评和打分。
Yelp在2013年的时候开始用推广Platform平台的方式来尝试着经营订餐的业务。
主要的盈利方式是商业广告等,目前不仅成功上市,而且市值超过30亿美金。
JustEat:
21世纪初就在丹麦创办了,仅仅五年就扩展到了英国,从而奠定了它在英国的在线订餐网的领先地位,它主要靠收取加盟店的上架费用和每个订单的分成盈利,并且它还拥有一个线下流程向没有外卖业务的餐厅提供服务,而且以收购的方式快速的扩张,仅仅2013年一年,他的平台处理的订单数就达到了4000万份。
两年前JustEat就在伦敦证券交易所上市了,目前估值14.7亿英镑。
GrubHub:
GrubHub是美国首屈一指的外卖平台。
它的用户主要通过电脑或手机登录该平台查找所选择地区附近的加盟店,然后选择所选商家提供的商品后进行下单。
加盟店在第一时间就会收到提醒,然后配置餐品自行配送到目的地。
它的平台是供用户免费使用的,主要来靠它加盟商的收入分成盈利。
在2013年完成了和Seamless的正式合并以后成功上市,目前市值达到37亿美金。
国内外的订餐业务的区别也是很明显的:
国外的用户正常的餐品都是汉堡、披萨之类的一些快餐食品,制作和配送起来都比较方便。
国内送餐的服务标准和操作难度就上升了一个档次了,中国餐饮类食品种类丰富多样,每个地域都有很大的差别。
低门槛的表象需要用高标准的运营、执行能力来支撑,这就要求在外卖领域求生存的团队不仅要有高效的下运营团队和出色的线上服务能力,还要拥有充足的资本来扩张和支撑。
所以在客观环境下,中式在线订餐业务必须高举高打,快速的进行融资和扩张,迅速建立起市场第一的地位。
相比英美用户成熟的操作习惯,国内市场目前还处在参差不齐的一个发展阶段,尤其在二三线城市中,比如说“饿了么”,迅速的在多轮融资的支持下扩张到260多个城市,加盟的商家多达二十万,高峰期的日订单量达到200多万,因此有相当丰富的资源来建立起自己业内老大的领导地位。
虽然“美团网”在14年1月份才刚刚正式退出紫的外卖服务,但是在品牌效应下,也就是其他业务积累的资源的支持下也进行了非常的迅速扩张,目前已经覆盖了250多个城市。
这样的扩张速度在国外是无法想象的。
1.3论文的组织结构
本论文一共有五个章节,图1-1展示了下面几章的内容概要:
第一章的绪论主要介绍了本次校园在线点餐系统的课题的要求,目的和意义及论文的组织结构。
第二章主要描述了校园在线订餐系统的相关技术原理。
第三章主要介绍了本系统的开发目的、应用情景、相关需求以及总体设计。
第四章主要介绍校园在线订餐系统的设计与实现,包括界面的详细设计和各功能模块的实现情况。
第五章是对软件的实际运行情况的测试和展现。
结束语主要介绍开发设计完成之后,对开发设计的总结和未来展望,遇到问题怎样解决,以及后续工作。
图1-1论文组织结构
第二章技术介绍
2.1JavaWeb介绍
SunMicrosystems公司在20世纪九十年代中期正式推出了Java编程的技术,并且仅仅用了二十多年的时间就由一门小小的编程语言发展到在全球范围内通用的大开发平台。
因为在计算机行业中的主要公司接受了Java技术的使用,从而导致越来越多的国际技术标准化的组织也开始进行规范使用。
Java看中机会并迅速的推广了自己的三大平台:
JavaSE、JavaEE、Java ME,从而给这个世界带来了巨大的革新,由此也给Java开发的团队带来了巨大的商机,让他们有充足的资金再进一步。
为了解决关于web互联网领域的相关技术,Java推出了Javaweb来实现相关功能,Javaweb有广泛使用的web服务器和使用并不是很多的web客户端两个部分。
客户端上面的应用有javaapplet等,服务器端的应用有Servlet、JSP和许多第三方的框架等等。
Web领域的发展因为有Java技术加入散发出磅礴的生机,强大的动力也会使web更进一步。
2.1.1主要框架
因为Javaweb发展迅速而诞生了丰富的后台框架大大简化了开发人员的工作,但是它们的底层实现方式还是差不多的:
浏览器发送一个请求后,由对应的Servlet或者Filter来进行拦截,然后用MVC的设计模式来进行整体架构的一个设计,相关配置的联系和耦合则用Annotation、约定或XML配置文件来关联起来,浏览器发送的响应的流程和面向抽象的请求则由基础的Java面向对象的这个特点来实现,视图解析就由JSP、Velocity和FreeMarker等来支持。
如今已经淡出开发人员视线的Struts框架是以J2EE的MVC模式为底层,以Servlet和JSP的技术实现的老牌强大框架。
Struts的出现很快的由于它的简单快捷受到相当大的反响,不仅可以充分的满足开发人员最繁琐的应用开发的需求,而且使新开发人员可以快速上手。
编程本就是一个赶时间的工作,而且学习的内容繁多啰嗦,而Struts集成了自定义标签、信息资源、JSP、Servlet等一些常用功能,由此让程序员不用重复的去搭建完整的MVC模式,新的开发人员也可以先使用然后慢慢学习原理,不仅节省了大部分时间,还降低了开发门槛,这就是Struts被广泛应用的原因。
最近被众多公司广泛使用Struts2也是apache项目下的一个web框架。
虽然它看起来好像是Struts的2.0版本,但实际上是一个全新的完整框架。
Struts2是Struts社区和WebWork合作研发出来的第二代基于MVC开发的具有强大的扩展性的web应用框架。
让人们诧异的是Struts2的功能结构更接近之前WebWork而不是名称相近的Struts,但是研发人员声明它会和Struts相似,同时也会比后者更加的快捷方便。
JavaServerPages简称JSP,中文叫java服务器页面,从字面上理解就是把页面当作JAVA服务器来使用。
就像上面说的,它的底层实现也是同样的原理,即尽量的去使Servlet的实现简单快捷。
JSP的实现方式是在常用的HTML文件如.html、.htm中使用Java程序和自定义的标签文件,这样就形成了一个后缀名为.jsp的文件。
因为这样编写的Web程序具有很好的跨平台的特性,不只是window操作系统,在其它的诸如Linux之类的系统下也可以运行,由此使得以SunMicrosystems公司领头的诸多公司倡导把JSP打造成一种动态的网页技术标准。
由SpringMVC实现的MVC模型是最清晰的,所以它渐渐被众JavaWeb研发公司所接受。
它使用Controller连接请求和业务逻辑,而不是其它框架使用的Action。
控制器会根据接收到的请求参数执行相关操作然后返回对应的叫做ModelAndView的界面,即一个带有模型的视图,要注意的是模型是Map类型的而不是Object。
诸如Struts之类的框架的Action则直接返回视图的名称,相应的模型参数就要用另外的方式进行传递,如HttpServletRequest.setAttribute()、Action本身的属性数据或者是存为Context参数。
因为是现在主流框架,所以本次设计就是使用的此框架,下面会进行详细的讲解。
2.2系统框架介绍
本系统主要使用的Web框架是SpringMVC,与数据库的交互使用的是iBATIS,前端使用的是基于JavaScript的jQuery,UI方面前台使用的是Bootstrap,后台使用的是EasyUI,下面我们逐一介绍这5种主要的框架。
2.2.1SpringMVC
SpringMVC框架属于SpringFrameWork的后续产品,是一个基于Java实现Model-View-Controller模式的轻量级框架,它的主要功能是用MVC模式的思想来解除web层的耦合性,基于request-response模型帮助我们用来简化日常的web系统的一个开发。
SpringMVC框架是一种MVC框架。
它的主要使用核心控制器DispatcherServlet来操作流程的进行;应用控制器其实拆为处理器映射器(HandlerMapping)和视图解析器(ViewResolver),ViewResolver用来管理视图,HandlerMapping用来管理处理器;页面的跳转、请求的发送则到对应的Controller里面。
它提供了非常灵活的、数据验证和数据绑定机制,同时支持文件的上传、本地化的解析等,主要采用约定注释的方式而不是繁琐的配置进行编程,比查看复杂的配置文件更容易熟悉和上手。
SpringMVC框架也是一个基于驱动的MVC框架,完全遵循MVC模式的思想把Model、View和Controller进行了很好的分离。
SpringMVC主要通过核心控制器DispatcherServlet来调度工作和处理流程,DispatcherSerlvet接收到请求后根据配置映射规则分发给对应的Controller,然后通过开发人员自己配置的映射根据映射处理器Handlermappings来处理请求并返回对应的视图界面。
SpringMVC的一个完整的流程处理过程如图2-1所示。
图2-1SpringMVC流程图
图2-1只是SpringMVC比较粗浅的执行过程。
由图2-1可知,SpringMVC大致的执行流程如下:
1、首先用户在浏览器发送请求并且由前端控制器DispatcherServlet接收,然后前端控制器根据请求的内容和条件选择经过配置的对应控制器来处理并把收到的请求转发给它,即以前的业务逻辑控制器部分。
2、页面控制器接收到转发的请求之后会对功能进行处理和运行相关逻辑,首先需把请求的参数进行收集、绑定到一个在SpringMVC中的命令对象里面,同时对该对象进行验证,然后将这个对象传递到Service层(业务对象)进行处理;业务对象处理之后控制器将返回模型数据和逻辑视图名,即之前提到的ModelAndView;
3、DispatcherServlets接收数据进行控制,根据返回的逻辑视图名选择对应的视图并传入模型数据配合进行视图的渲染、加载资源从而完成界面的展示。
4、DispatcherServlets继续执行控制的权利把响应的内容返回到客户端浏览器,以此结束一个流程。
SpringMVC撇开如Struts2等框架繁琐的的配置,以更为直白快捷的注解的方式进行相关配置映射关系:
@Controller:
用来表明所在类是一个处理器;
@CookieValue:
把cookie类型的数据绑定到具体Controller中对应方法方法的参数上;
@ModelAttribute:
用于绑定请求的参数到对应的命令对象中;
@SessionAttributes:
写在处理器类的上方,主要用来标明这个存储的属性是session级别的,一般列出了对应的名称的模型属性,比如说如@ModelAttribute等,就会被透明的保存到Session当中;
@Autowired:
用来标注成员变量、方法和构造函数,来完成自动装配的工作;
@Qualifier("serviceImpl")@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用;在实现Service接口的ServiceImpl类开始加上@Service("serviceImpl")即可完成装配
@InitBinder:
解析请求的参数并通过datebind机制与handlermethod中的参数做绑定;
@RequestMapping:
用来映射请求到控制器或方法的规则;
@RequestParam:
接收请求参数并绑定到自定义参数上面,requried指参数是否必须要带,true为默认,必须带,false为可以不带;
@RequestHeader:
把接收的请求头中的数据绑定到Controller中对应方法方法的参数上;
@RequestBody:
绑定请求的body体的,用消息转换器(HttpMessageConverter)完成请求报文到对象的转换;
@ResponseBody:
标注该处理方法的返回值是响应体,不加的话返回值一般解析成跳转路径,返回的是数据时要加上,也是用消息转换器进行对象到响应报文的转换;
@ResponseStatus:
返回一个指定的httpresponse状态码以及原因。
;
@ExceptionHandler:
注解式声明异常处理器;
SpringMVC的优势如下:
1、对所有功能有一个直观的角色的划分:
DispatcherServlet(前/核心控制器)、HandlerAdapter(处理器适配器)、ViewResolver(视图解析器)、HandlerMapping(处理器映射)、Validator(验证器)、Controller(控制器/处理器)、FormObject(表单对象)、Command(命令对象)、。
2、可以很轻松的根据自己需要进行扩展,虽然基本上没有这个必要,而且有一个明确的分工,用起来也很有条理;
3、因为使用的命令对象根本就是POJO,所以没必要对框架特定的相关API进行集成,可以把命令对象直接当做业务对象来使用;
4、和Spring的其他框架无缝集成,是其它Web框架所不具备的;
5、具有强大的适配性,因为有HandlerAdapter支持,从而可以把任意的类当做处理器进行逻辑处理;
6、具有可定制性,可以对HandlerMapping、ViewResolver等相关的功能根据自己需求进行简单的定制;
7、提供如绑定机制、数据验证、格式化等强大的功能;
8、因为集成了Spring,所以可以使用其提供的Mock对象进行Web层的一个单元测试,并且操作起来非常的简单