基于Laravel-PHP框架的网上订餐管理系统

lonelyperson

发布日期: 2019-04-12 09:36:10 浏览量: 891
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

随着电子商务的发展,O2O电子商务模式越来越兴起。网上订餐系统就是这种商务模式的一种体现。目前在校园周边有许多提供外卖服务的餐厅,但是大部分餐厅还是采取电话订餐、人工手写记录等较为原始的方式。这些方式不仅麻烦费时,而且,由于外卖通常具有集中性,在午餐和晚餐这两个时段,会有很多人同时打来电话。面对这种情况,餐厅要么增加同时接线的数量,这样会增加成本;要么什么都不做,这样会失去原本能够赚取的利润。网上订餐系统可以很好的解决这个问题。本毕业设计网站使用国际上非常流行的Laravel框架进行开发,大大优化路由设置,同时,简便的登录验证系统,和完善的数据库迁移功能组合在一起,使得本系统能够得到更加快速和便捷的开发与完善。利用网上订餐系统,可以同时进行并发业务处理,从而避免了因为在同一时刻有多人打入电话无法接通而导致流失顾客的情况,而且,本毕业设计还具有短信通知功能,可以在用户下单订餐、餐厅送餐时自动发送短信提醒用户,具有十分现实的意义。

关键词:O2O;网上订餐;PHP;Laravel框架

Abstract

With the development of e-commerce, O2O growing rise of e-commerce model. Online reservation system is a manifestation of this business model. Now we have a lot of takeout around the campus, but most still take phone ordering, handwritten notes and other artificial methods. Online reservation system can solve this problem, the network can handle concurrent operations simultaneously, thus avoiding the situation because there are many people at the same time to enter the phone unable to connect and lead to the loss of customers. Website using very popular PHP framework — Laravel , can greatly optimize the routing settings, simple login authentication system, database migration evening, these powerful features are combined to develop faster and more convenient and improve the system.

Key words:O2O; online meal ordering; PHP; Laravel framework

1 绪论

1.1 课题的背景和意义

随着电子商务的发展,O2O电子商务模式逐渐兴起。网上订餐系统就是这种商务模式的一种体现。现在我们校园周边有好多外卖,但是大部分还是采取电话订餐、人工手写记录等方式。这种方式不仅麻烦费时,而且,由于外卖通常具有集中性,在午餐和晚餐这两个时段,会有很多人同时打来电话。面对这种情况,餐厅要么增加同时接线的数量,但是这样会增加成本;要么什么都不做,这样会失去原本能够赚取的利润。

网上订餐系统可以很好的解决这个问题,网络可以同时进行并发业务处理,从而避免了因为在同一时刻有多人打入电话无法接通而导致流失顾客的情况。同时,电子化的订餐方式也便于进行数据收集和分析。因此,本毕业设计可以实现网络同步订餐,用户只要在网上订餐,便与通过电话订餐方式一样可以获得送餐服务,而且更加方便快捷。

1.2 网站设计任务

一个网站的前端是非常重要的,它是用户直接面对的。一个优秀的前端设计,可以让用户体验提升不少。所以,在此次毕业设计里面,前端的设计占了很大部分,涉及到了很多方面的技术。

页面前端使用 HTML配合JavaScrip等技术来支持前端的运作,并使用Ajax技术向服务器Post数据,使得页面可以在不刷新的情况下,与服务器进行数据交互。
网站结构被设计成顾客可以在网站上注册后,直接在网页上订餐。餐厅可以在网站上注册后,可以在后台管理的自己餐厅的各项设置,包括餐厅名字、营业时间、餐厅的介绍、餐厅电话(手机号、座机)等信息,还可以定制自己的起送要求等。在定制过这些信息之后,餐厅用户就可以上传自己的食品信息了,上传食品信息之后,再上传食品图片,最后,在后台里再点击餐厅上线按钮,这样,餐厅里面的食品就可以正常发布了。对不同角色的用户权限进行了控制,使得所有商品信息可以及时的更新,所有的订单可以及时进行处理,真正实现了网上办公,减少工作成本、提高工作效率。

1.3 主要架构以及采用的技术介绍

此次毕业设计的开发环境是,Window 8.1 ,开发语言是 PHP ,数据库采用开源的 MySql,服务器使用的是著名的开源服务器 Apache。采用 Wamp 开发环境包安装的,这样在安装之后不需要单独配置PHP、Apache以及MySql的环境变量。Wamp集成PHP、Apache、MySql配置在一起,开发过程中可以非常方便的修改各个配置信息,并且,Wamp还附带phpMyAdmin工具,可以通过网页非常方便的对数据库进行各项操作。

在此次毕业设计的开发中并没有采用任何IDE(集成开发环境,Integrated Development Environment)来帮助开发,仅使用文本编辑器 Sublime Text 2 来写PHP、Mysql、HTML、Javascript代码,调试使用Chrome 34.0.1847.131 m 版本。因此开发也可以在Linux下进行,并且网站的服务器也是可以架设在Linux系统下的。

本次毕业设计使用了一个名为 Laravel 的PHP框架,这个框架是在PHP 版本5.3以后发布的,这说明它具有非常多的优势相对于别的PHP框架。

之所以采用PHP语言进行开发,是因为根据Alexa统计,在2013年,大约有40%的网站是采用PHP配合MySql数据库进行开发的,作为即将毕业的我很好奇,使用这么广泛的技术到底是什么样子的,希望能从本次毕业设计的开发中学习到很多知识。

1.3.1 基于 B/S 的体系结构

在 B/S 体系结构系统中,用户通过浏览器向分布在网络上的服务器发出请求,服务器对浏览器的请求进行处理,然后将用户所需信息返回到浏览器。B/S 结构简化了客户机的工作。服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。浏览器发出请求,而其余如数据请求、加工、结果的返回以及动态网页生成等工作全部由Web Server完成。实际上 B/S 体系结构是把两层 C/S 结构的事务处理逻辑模块从客户机的任务中分离出来,由 Web 服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷分配给了Web 服务器。

这种三层体系结构如图1-1所示。

1.3.2 PHP

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收了C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。PHP最初是由勒多夫在1995年开始开发的。而现在PHP的标准由PHP Group和开放源代码社区维护。PHP以PHP License作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容。PHP的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP可以在多数的服务器和操作系统上运行,而且使用PHP完全是免费的。根据2007年4月的统计数据,PHP已经被安装在超过2000万个网站和100万台服务器上。如图1-2所示。

1.3.3 Bootstrap 前端开发框架

页面使用最的 Bootstrap V3版本,它是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。

国内外有很多优秀的企业都是用了 Bootstrap 来作为网站的前端开发框架,Twitter自己的页面就是采用Bootstrap开发,国内的豆瓣的开发者后台也是采用Bootstrap写的。使用动态CSS语言Less开发的好处在于,可以像编程一下来书写CSS代码,使得开发效率大大提高。

1.3.4 JavaScript

JavaScript,一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。然而现在JavaScript也可被用于网络服务器,如Node.js。

在本次毕业设计中,使用了非常流行的jQuery库。jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。由John Resig在2006年1月的BarCamp NYC上发布第一个版本。目前是由 Dave Methvin 领导的开发团队进行开发。全球前10000个访问最高的网站中,有65%使用了jQuery,是目前最受欢迎的JavaScript库。

jQuery 是开源软件,使用MIT许可证授权。jQuery的语法设计使得许多操作变得容易,如操作文档对象(document)、选择DOM元素、创建动画效果、处理事件、以及开发Ajax程序。jQuery 也提供了给开发人员在其上创建插件的能力。这使开发人员可以对底层交互与动画、高级效果和高级主题化的组件进行抽象化。模块化的方式使 jQuery 函数库能够创建功能强大的动态网页以及网络应用程序。

本系统使用了两个版本的jQuery,前台用的是最新的2.1.0版本,后台用的是2.0.3版本,使用jQuery最大的好处在于,用考虑浏览器的兼容性问题,这样就不必在各种浏览器下面进行调试。

1.3.5 Ajax介绍

AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。Ajax的概念由Jesse James Garrett所提出。

传统的Web应用允许用户端填写表单(form),当提交表单时就向Web服务器发送一个请求。服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML码往往是相同的。由于每次应用的沟通都需要向服务器发送请求,应用的回应时间依赖于服务器的回应时间。这导致了用户界面的回应比本机应用慢得多。

与此不同,AJAX应用可以仅向服务器发送并取回必须的数据,并在客户端采用JavaScript处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少(大约只有原来的5%),服务器回应更快了。同时,很多的处理工作可以在发出请求的客户端机器上完成,因此Web服务器的负荷也减少了。

此次毕业设计中,Ajax库使用的是jQuery中的库,所有与服务器进行交互的数据一律都采用了json格式,避免出现格式不统一的情况发生。

1.3.6 Laravel——PHP框架

Laravel是一套web应用开发框架,它具有富于表达性且简洁的语法。Laravel的开发者们相信,开发过程应该是愉悦、创造性的体验。Laravel努力剔除开发过程中的痛苦,因此提供了验证(authentication)、路由(routing)、session和缓存(caching)等开发过程中经常用到的工具或功能。

在本次毕业设计的开发中,Laravel的学习成本最大,因为Laravel出现的比较晚,是在PHP5.3以后出现的。这是它的优势,也是它的劣势。

优势是Laravel没有其他PHP框架的那些包袱,很多框架因为出现的早,还必须支持PHP4.0,这使得框架本身变得非常臃肿。

劣势在于它太年轻了,而且,国内使用Laravel开发的并不多,以至于在开发过程中遇到问题的时候,只能去英文的stackflow.com上去寻找答案,Stack Overflow 是一个程序设计领域的问答网站。

Sitepoint网站做了一个小的调查,看看PHP开发者们最喜欢使用哪个PHP框架。调查结果显示,最流行的PHP框架前三甲为:Laravel、Phalcon、Symfony2。

1.3.7 PHP依赖管理包

Composer是PHP中的一个依赖管理工具. 它可以让你声明自己项目所依赖的库,然后它将会在项目中为你安装这些库。

2 需求分析

2.1 可行性分析

2.1.1 技术可行性分析

可行性分析是在系统开始实施之前,进行系统可行性的提前设想、估算以及研究的一种方法。在项目开始实施之前,进行可行性分析是非常有必要的。通过可行性分析可以提前了解整个项目成功实施的可能性,以及在项目实施期间可能遇到的阻力。当然,系统项目实施中,特别是作为第一次独立来完成这个订餐系统的我来说,可能会遇到各种各样的问题,更加需要一个长远的计划和在系统实施之前的可行性分析。

系统的实施架构是Wamp,即:Windows系统,Apache服务器,Mysql数据库,PHP语言。这是一套在Windows平台非常成熟的架构,对于硬件和网络的要求不是非常高,作为学生或者一般的网站创建者来说足够应付了。

2.1.2 经济可行性分析

从硬件角度上来分析,实际上此次毕业设计的实施,只需要一台服务器即可,也就是本人的电脑。

从版权保护角度上来分析,服务器使用的框架是开源的PHP框架——Laravel,它使用MIT许可协议。MIT是开源许可协议中非常宽松的一种。服务器使用Apache,Apache使用Apache 2.0许可协议。PHP使用PHP license许可证。Bootstrap前端开发框架是开源的,jQuery是使用的是MIT许可协议。所以,无需进行任何支付,即可使用上面的框架和库。

2.2 业务流程分析

未注册登录用户,可以在不注册、不登录的情况下,浏览主页和所有处于销售状态的食品。用户注册之后就可以进行更进一步的操作,比如在个人信息页面查看网站活动,修改个人信息等。餐厅用户在注册之后,可以进入属于自己的餐厅后台进行相应的操作,比如设置餐厅的名字、开始营业时间、结束营业时间、餐厅的描述等一系列的设置,并且可以上传食品信息,并上传食品对应的照片文件。

2.2.1 用户注册

在主页或者其他页面进行浏览不需要注册,但是一旦用户有更进步的操作时,就必须注册才可以进行。

每个页面的右上角都有注册和登录按钮,用户点击注册按钮之后,就会被引导至注册页面。

在注册页面,需要用户填写用户名、密码、电子邮箱、选择所在地区、生日、手机号、以及验证码等信息。

填写完毕,用户点击提交信息按钮后,页面会用Ajax向后台post数据,在后台Laravel会先验证用户提交的信息是否规范,比如:被要求输入的内容用户是否已经输入了,用户名在用户表中是否是唯一的,邮箱在用户表中是否是唯一的,用户名不能小于六位不可以大于十二位,密码以及确认密码的内容是否一致,密码是否大于六位小于十二位等各项验证。

Laravel已经封装好了各种正则表达式验证条件,所以本系统不用自己再重复去写相对应的正则表达式了,引用写好的验证规则后,直接提交给Laravel中的validator类去验证即可,如果验证失败,会自动返回错误信息。

当验证失败的时候,系统会返回用户注册的页面,附带着用户之前输入过的内容,以及错误信息。由于Laravel默认的语言包是英文的,所以,Laravel的错误信息默认也是英文的,本系统已经准备好了中文的语言包(app/lang下),并且在 app/config/app.php 中设置好了对应的语言包,这样,返回的错误信息就会是之前设定好的内容了。

当本系统设定的验证全部通过之后,才会进入到真正的注册步骤——写入数据库。

最后提示用户成功注册,并跳转到主页。如图2-1所示。

2.2.2 用户登录

用户可以在主页直接输入账号、密码、以及验证码,来实现登录。验证码的作用是为了避免用户信息被暴力破解。当用户访问别的需要登录验证的页面时,会被跳转到一个登录页面。当用户成功登录之后,主页以及食品页中本来显示用户登录的地方就会变成“欢迎回来,(用户名)”等字样。如图2-2所示。

2.2.3 用户邮箱验证以及用户请求再次发送邮箱验证信

在用户注册信息提交给服务器,服务器判断注册信息无误之后,用户成功注册,并且,系统会在数据库 confirmemail表里生成一个用户名对应验证码的一条数据,之后自动向用户注册时所填写的邮箱,发送一封带有唯一验证码的验证邮件,用户只有在点击这个验证之后,才完成邮箱的验证。

当用户因为某种原因没有成功接收到服务器发送的验证邮件,用户可以在后台再次请求发送验证邮件,这时候服务器会再次生成一个唯一验证码并且在confrimemail表中重写上一次生成的验证码,最后把验证邮件发送到用户的邮箱中,整个过程都是使用Ajax方式,用户不需要等待,只需要向服务器发送请求即可。

2.2.4 用户订餐流程

未登录的用户可以浏览主页的所有内容和食品页面的所有内容。当用户想要有更进一步操作的时候,就必须登录了。

在用户订餐的时候,如果用户未登录,订餐按钮会提示用户登录,并跳转到登录页面。未登录的用户可以选择登录或者注册一个账号。

当用户登录之后,可以选择先将想要购买的食品放在购物车中。用户放入购物车的食品会以Ajax方式提交给服务器,这样可以不必刷新页面。当用户已经选中足够的食品后,可以选择结算。

用户会被引导至结算页面,在这个页面如果用户之前有输入过订餐地址的话,会有订餐地址显示出来,如果没有的,则需要用户输入送餐地址,最后生成订单。

2.2.5 餐厅管理员登陆流程

未注册的餐厅管理员无法登录后台,想要加入的餐厅可以在后台登录页面直接进行初步注册,在注册信息都验证通过之后,就可以登录后台了。或者也可以在前台进行餐厅注册。

餐厅管理员在注册之后,就可以登录后台进行餐厅信息的设置和上传食品了。

2.2.6 用户评价流程

用户在一份订餐订单完成之后,就可以对该订单进行评价,未完成的订单无法进行评价。

2.2.7 订单管理流程

订餐的顾客可以在后台查看自己所有的订单,可以对订单进行评价或者在订餐未完成之前取消订单。

2.2.8 食品信息上传

只有登录的餐厅管理员可以对食品信息进行上传,修改和删除,同时,可以在图片上传页面上传食品对应的图片。所有的图片都会被无损处理成600PX*600PX样式,以此来使得图片在任何地方显示正常。

2.3 系统流程图分析

系统流程图的重要性在于,它是描述系统逻辑模型的主要手段。通过对整个订餐系统的了解,把系统分为几个重要的功能模块,明确各个模块之间相互协调,制作出数据的流程图。在绘制数据流程图的过程中,各个符号对应关系如下:

2.3.1 顶层数据流程图

顶层数据流程图包含网站服务的范围、页面信息的输入以及输出,充分阐释了网站所应该设定的边界,可以抽象出整个网站。网站的顶层数据流程图如下图所示。它包含的实体有,顾客,餐厅、网站管理员。主要的数据流有会员信息、餐厅信息、餐厅上传的食品信息,最后完成订餐,网站管理员进行全局的控制。

2.3.2 第 1 层数据流程图

在顶层数据流程图的下面是中层数据流程图,它是由若干个数据流程图组成的。它不但细化了顶层数据流程图的内容,同时又是使得下一层可以继续分解。此次毕业设计订餐网站在将顶层数据流程图分解之后,得到了三个一层数据流程图。分别是顾客信息、菜品信息、网站管理员。

第1层客户信息数据流程图

第1层菜品信息数据流程图

第1层管理员数据流程图

2.3.3 第 2 层数据流程图

将第 1 层顾客信息流程图分解得到了顾客的第2 层流程图,如图 2-10 所示。

将第 1层的菜品管理数据流程图分解得到了餐厅管理菜品的第2 层数据流程图,如图 2-11 所示。

将第 1 层网站管理员的数据流程图分解得到了管理员的第2层数据流程图,如图 2-12所示。

2.4 软硬件需求分析

因为开发没有使用任何IDE进行,所以仅仅使用文本编辑器就可以完成开发,不过为了提高效率,本系统使用的是Sublime Text 2,如果在Linux平台下可以是用Vim。

服务器使用的Apache for windows的版本,windows版本在XP以上都可以运行。

开发环境是直接使用网上非常有名的Wamp,W指windows环境,a指Apache服务器,m指Mysql,p指PHP,这个环境安装包会自动配置好Mysql和PHP的环境变量,以及Apache的服务器配置信息,而且,非常方便在开发中进行各项管理。

另外,为了在开发过程中便于调试,数据库与服务器在同一台电脑上。

  • 数据库及应用服务器
    • CPU:P4 以上 2M L2cache
    • 硬盘空间:>=10G
    • 内存:>=512M
    • 操作系统:windows2003 及以上版本或 Linux、Unix
    • 数据库:Mysql

3 系统设计

3.1系统功能图

网站的系统功能一共分为三个部分,第一部分是订餐顾客,第二部分是餐厅用户,第三部分是网站管理员。

具体功能描述如下:

  • 订餐顾客

    • 订餐顾客可以注册和登录网站,来进行订餐
    • 订餐顾客可以浏览的食品,同时也可以把希望要订餐的食品放入到购物车中
    • 订餐顾客可以登录自己的个人信息页面,查看和修改自己登录是填写的注册信息,并且可以查看自己所有的订单状况
  • 餐厅用户

    • 餐厅用户可以在网站上进行注册和登录,以此来在网站上发布食品
    • 餐厅用户可以在网站后台餐厅管理页面进行一系列的操作。查看以及修改餐厅的各项信息,餐厅的上线以及下线
    • 餐厅用户可以在后台上传食品信息以及食品的图片
    • 餐厅用户可以在后台查看所有的评论,并且可以对评论进行回复
  • 网站管理员

    • 网站管理员在登录之后,可以在后台进行会员信息的查看以及管理
    • 网站管理员在登录之后,可以在后台进行餐厅信息的查看以及管理
    • 网站管理员在登录之后,对主页的广告进行管理
    • 可以对餐厅或者用户发送站内信
    • 对于所有的菜品进行管理

3.2 系统结构设计

3.2.1 订餐顾客登录模块

订餐顾客在注册之后可以,进行登录。登录模块的作用是用户登录,用户在页面上填写个人账户与密码信息后,提交给服务器,服务器判断用户提交的信息,如果用户提交的信息正确,那么就成功登录系统,并被引导至主页。否则回到登陆页面,然后显示相应的错误信息。

3.2.2 菜品管理模块

餐厅用户和网站管理员登录成功后,即可进入属于各自的后台管理页面。在各自的后台管理页面,可以对菜品进行管理,增加、修改或者删除菜品,如下图所示:

3.2.3 会员管理

网站管理员进入后台后,可以对所有的会员信息进行浏览和管理。对于长期不上线或者不正常行为的会员进行禁止登录,使得该会员不能登录,只有管理员才可以解除登录限制。

如图所示:

3.2.4 网站后台管理模块

网站管理员在登录网站后台系统之后,可以对会员信息、餐厅信息、所有的订单信息、菜品信息、评论信息等进行查看、修改或者删除等操作。还可以对指定类型的用户(餐厅或者是订餐的顾客)发送站内信、发布网站活动信息等事项操作。还可以对网站主页的广告内容进行定制。

3.2.5 订单管理

当餐厅用户登录之后,可以查看订单信息,并且对已经进行配送完成的订单修改相应的订单状态。

对于因为意外而无法完成的订餐,取消掉订单。

如果所示:

3.2.6 评论管理

餐厅用户在登录餐厅后台之后,可以查看所有该餐厅食品的评论,并且对评论进行回复网站管理员在登录网站后台之后,查看到所有的评论,并且可以对评论进行删除操作。

如图所示:

3.2.7 网站活动模块

网站管理员在登录网站后台操作页面之后,可以发布、修改或者删除网站的活动。所有的用户在登录之后,进入个人信息页面都可以看到网站当前的活动信息。如图所示:

3.2.8 广告管理模块

网站管理员在登录网站后台管理页面之后,可以对网站主页显示的广告进行管理,修改网站主页广告的图片、或者链接。

4 数据库设计

4.1 数据流需求分析

根据之前设计的网站模块以及功能要求,在网站整体设计上建立数据库的逻辑结构,以及相互之间的关系。在实体数据库中就可以相应的实现了。

综上所述,网站所需要的基本表有:用户表,网站活动表,站内信表,确认邮箱表,餐厅表,顾客表,密码重置表,食品评论表,餐厅评论表,食品表,订单表,地址表,购物车表。共计13张表。

各模块需求数据库表的逻辑如下所示:

  • 会员模块:该模块涉及到用户表、顾客表、食品表、地址表、购物车表、订单表、食品评论表、餐厅评论表,等这八张表

  • 餐厅模块:该模块涉及到用户表、餐厅表、食品表、地址表、食品评论表、餐厅评论表等六张表

  • 网站管理员模块:该模块涉及到用户表、网站活动表、站内信表、餐厅表、顾客表、食品评论表、餐厅评论表、食品表、订单表、地址表等9张表

4.2 数据库E-R图

ER 图是用来描述某一组织的概念模型,提供了表示实体、属性和联系的方法。构成ER 图的基本要素是实体、属性和关系。实体是指客观存在并可相互区分的事物;属性是指实体所具有的每一个特性。本网站使用的E-R图如下所示:

站内信的E-R图,如图所示,包含了站内信自身的ID,站内信的发送者,站内信的接受者,站内信的标题,站内信的内容,站内信是否是可回复的。

如图所示。

会员个人信息的E-R图,如图所示,包含了会员的ID,用户名,性别,手机号,手机号验证状态,邮箱,邮箱验证状态,所在地区,生日,以及地址ID。

餐厅的E-R图,如下图所示,包含了餐厅ID,地址ID,名字,用户名,手机号,手机号验证状态,座机号码,送餐需求(起送数量或者起送金额的下限),邮箱,邮箱验证状态,开始营业时间,关门时间,所在地区,以及餐厅描述。

如图所示。

菜品的E-R图,如图所示,它包含了菜品的ID,属于的餐厅的用户名,菜品的名字,价格,库存数量,描述,图片名称,菜品的状态,菜品属于的类型,以及菜品图片保存的名字。

如图所示。

网站活动的E-R图,如上图所示,它包含了活动的ID,活动的标题,活动的内容,以及活动的图片所在的地址。

如图所示。

给餐厅的评论的E-R图,如下图所示,它包含了评论的ID,被评论的餐厅名,评论的内容,以及提交这份评论的用户名。

如图所示。

给菜品的评论的E-R图,如图所示,它包含了评论的ID,被评论的菜品名,评论的内容,以及提交这份评论的用户名。

订单的E-R图,如下图所示,它包含了订单的ID,购买菜品的ID,菜品名,购买数量,订单状态以及送餐地址。

如图所示。

4.3 数据库文件设计

根据之前的数据库需求分析,得出网站各个数据库表的设计,如下面的表所示:

表 4.1地址表 addresss

字段 类型 主键 注释
Id int(10) 自增,地址ID
username varchar(255) 属于的用户的用户名
address varchar(255) 地址信息
created_at timestamp 0000-00-00 00:00:00 创建时间
updated_at timestamp 0000-00-00 00:00:00 更新时间

表4.2 餐厅评论表cffs

字段 类型 主键 注释
id int(10) 自增,菜品评论ID
foodname varchar(255) 评论的菜品名
comment text 评论的内容
username varchar(255) 评论的用户ID
created_at timestamp 0000-00-00 00:00:00 评论的创建时间
updated_at timestamp 0000-00-00 00:00:00 评论的更新时间

表4.3 菜品评论表cfrs

字段 类型 主键 注释
id int(10) 自增,餐厅评论ID
restaurantname varchar(255) 餐厅名称
comment text 评论内容
username varchar(255) 评论的用户名
created_at timestamp 0000-00-00 00:00:00 评论的创建时间
updated_at timestamp 0000-00-00 00:00:00 评论的更新时间

表4.4 邮箱验证表confirm_emails

字段 类型 主键 注释
id int(10) 邮箱验证码的ID,自增
username varchar(255) 属于的用户名
confirm_code varchar(255) 验证码
created_at timestamp 0000-00-00 00:00:00 验证码的创建时间
updated_at timestamp 0000-00-00 00:00:00 验证码的更新时间

表4.5 手机验证表confirm_mobiles

字段 类型 主键 注释
id int(10) 手机验证码的ID,自增
username varchar(255) 验证码属于的用户名
confrim_code varchar(255) 生成的6位验证码
created_at timestamp 0000-00-00 00:00:00 验证码的创建时间
updated_at timestamp 0000-00-00 00:00:00 验证码的更新时间

表4.6 顾客信息表customers

字段 类型 主键 注释
id int(10) 顾客的ID
username varchar(255) 顾客使用的用户名
sex varchar(2) 性别
mobile varchar(255) 手机号
mobile_status varchar(255) 手机号验证状态
birthday date 生日
email varchar(255) 邮箱地址
email_status varchar(255) 邮箱的验证状态
status varchar(255) 账户的状态
district varchar(255) 所在地区
addressid varchar(255) 地址ID
created_at timestamp 0000-00-00 00:00:00 创建时间
updated_at timestamp 0000-00-00 00:00:00 更新时间

表4.7 网站活动表events

字段 类型 主键 注释
id int(10) 活动的ID,自增
title varchar(255) 活动的标题
content text 活动的内容
imgaddress varchar(255) 活动图片的地址
created_at timestamp 0000-00-00 00:00:00 活动创建时间
updated_at timestamp 0000-00-00 00:00:00 活动更新时间

表4.8菜品销量表foodcount

字段 类型 主键 注释
foodid varchar(255) 菜品的ID
foodname varchar(255) 彩屏的名字
sum(count) double NULL 菜品的销量

表4.9 菜品信息表foodinfos

字段 类型 主键 注释
id int(10) 菜品详细信息ID
belongto varchar(255) 菜品属于的餐厅用户名
name varchar(255) 菜品的名字
price varchar(255) 菜品的价格
stock varchar(255) 菜品的库存数量
note varchar(255) 菜品的描述
savename varchar(255) 菜品图片的存储名称
status varchar(255) 菜品的状态
restaurantname varchar(255) 菜品属于餐厅的名字
moring varchar(255) 餐厅开始营业时间
night varchar(255) 餐厅结束营业时间
demand varchar(255) 餐厅是是否有起送要求
typeofdemand varchar(255) 起送要求类型
demandfornum varchar(255) 起送要求数量
demandformoney varchar(255) 起送要求金额
addressid varchar(255) 餐厅地址
mobile varchar(255) 手机号
phone varchar(255) 座机号

表4.10菜品表foods

字段 类型 主键 注释
id int(10) 菜品的ID
belongto varchar(255) 菜品属于的餐厅用户名
name varchar(255) 菜品名
price varchar(255) 菜品价格
stock varchar(255) 菜品库存
note varchar(255) 菜品描述
foodimg varchar(255) 菜品图片名
status varchar(255) 菜品状态
savename varchar(255) 菜品图片保存名
type varchar(255) 菜品类型
created_at timestamp 0000-00-00 00:00:00 菜品创建日期
updated_at timestamp 0000-00-00 00:00:00 菜品更新日期

表4.11站内信表messages

字段 类型 主键 注释
id int(10) 站内信ID
sent varchar(255) 站内信发送者
receive varchar(255) 站内信接受者
title varchar(255) 站内信标题
content text 站内信内容
status varchar(255) 是否可以回复
created_at timestamp 0000-00-00 00:00:00 站内信创建日期
updated_at timestamp 0000-00-00 00:00:00 站内信修改日期

表4.12 数据迁移表migrations——Laravel数据迁移

字段 类型 主键 注释
migration varchar(255) 数据库表迁移的名字
batch int(11) 迁移的分支

表4.13 订单表orders

字段 类型 主键 注释
id int(10) 订单的ID
foodid varchar(255) 订单菜品的ID
foodname varchar(255) 菜品名字
count varchar(255) 购买的数量
addressid varchar(255) 送餐地址ID
status varchar(255) 订单状态
restaurantname varchar(255) 被订餐的餐厅名
created_at timestamp 0000-00-00 00:00:00 订单的创建日期
updated_at timestamp 0000-00-00 00:00:00 订单的修改日期

表4.14重置密码表resets

字段 类型 默认 注释
id int(10) 密码重置ID
username varchar(255) 用户名
email varchar(255) 邮箱
reset_code varchar(255) 重置码
created_at timestamp 0000-00-00 00:00:00 重置密码申请日期
updated_at timestamp 0000-00-00 00:00:00 重置密码更新日期

表4.15 餐厅详细信息表restaurantprofiles

字段 类型 主键 注释
username varchar(255) 餐厅用户名
email varchar(255) 邮箱
email_status varchar(255) 邮箱验证状态
restaurantname varchar(255) 餐厅名字
describe text 餐厅自我描述
moring varchar(255) 餐厅开始营业时间
night varchar(255) 餐厅结束营业时间
typeofdemand varchar(255) 起送要求类型
demandfornum varchar(255) 起送数量要求
demandformoney varchar(255) 起送金额要求
mobile varchar(255) 餐厅手机号
mobile_status varchar(255) 手机号状态
phone varchar(255) 座机号码
status varchar(255) 餐厅状态
address varchar(255) 餐厅地址

表4.16 用户表users

字段 类型 主键 注释
id int(10) 用户的ID
username varchar(32) 用户名
password varchar(64) 密码
role varchar(255) 身份
remember_token varchar(255) Laravel本次密码对应的token
created_at timestamp 0000-00-00 00:00:00 用户创建日期
updated_at timestamp 0000-00-00 00:00:00 用户修改日期

5 网站的功能实现

5.1 首页功能的实现

网上订餐系统的主页主要包括主打菜品的推荐、今日销量榜、月销量榜、季度销量榜、购物车和用户登录注册板块。主打菜品模块主要是销量最高的三个菜品显示成幻灯片形式在主页展示;然后在幻灯片的右边显示按照分类推荐的菜品;今日销量榜主要显示当日销量最好的菜品;月销量榜按照销量排布显示上个月菜品的销量;季度销量榜按照季度销量来显示菜品;用户可以将食品存入购物车内,统一结算,同样的,购物车内的菜品可以被修改和删掉;登录注册板块分别向已注册和未注册用户提供系统登录和会员注册功能, 如图所示:

5.2 会员注册模块

未注册的用户可以在会员注册页面进行注册。会员注册页面交互友好,可以向用户提供用户名、密码等信息的输入建议,并可提供相应的纠错功能,保证注册信息正确、合法。

如图所示。

5.3 会员模块

会员在成功注册完成之后,可以从主页或者其他页面进行登录,如图所示:

会员在成功登录之后,可以进入自己的个人信息页面查看自己的站内信,网站活动,订单,个人信息以及登出。

如图所示。

5.4 餐厅后台模块

想要加入到网站的餐厅可以去餐厅注册页面注册,注册页面如图所示,依旧是非常友好的tip提示方式。

在餐厅注册过之后,就可以登录后台了,餐厅后台登录页面如图所示:

在餐厅后台登录页面,为了用户体验的友好,同时还提供餐厅的注册和忘记密码的功能页面,它们都是在同一个页面上实现的。如图所示,是一个简单的餐厅注册页面,餐厅在这个页面注册之后,还需要在后台完善相应的信息,在此之后餐厅就可以正式上线了。

下图所示是餐厅后台登录页面的忘记密码功能,只需要提供注册时候使用的邮箱,就可以进行密码的重置了。服务器会向该邮箱发送一份密码重置信,在进入到邮箱查看到密码重置新之后,点击密码重置信上面的地址,就可以跳转到密码重置页面了。

如图所示。

当餐厅用户完成登录之后,就会被引导至餐厅后台主页界面。如下图所示:

因为本系统使用的电脑屏幕分辨率是1600*900,所以显示会比较松散一些,该页面采用了Bootstrap响应式布局,在IPAD等移动设备上也可以正常显示。

餐厅信息设置页面,如下图所示:

5.5 菜品管理模块

餐厅在登录后台之后,可以对菜品进行管理,首先是菜品总览,总揽页面如图所示:

在菜品管理模块之中的第二个是菜品的管理,包含了菜品信息的上传、修改、和删除。如下图所示:

该模块最后一个功能是上传菜品的图片,页面采用JavaScript控件完成,传输方式采用Ajax,该控件支持直接拖放式的图片上传,避免繁琐的文件查找操作。页面如图所示:

5.6 购物车模块

顾客可以在页面中选中菜品后,可以先把菜品放进购物车里面,继续浏览,最后再去购物车页面进行下单操作,也可以直接去下单。

在购物车页面还可以对选中的菜品数量进行修改,菜品数量的改变会自动修改单项菜品的总价以及订单的总价。同样的,删除操作也会有同样的效果。

购物车的设计是数据全部放进数据库中,所以需要用户必须登录之后才可以使用购物车。当用户退出之后,购物车里面的内容还会保留下来,直到用户下一次登录时查看。

如图所示:

5.7 订单模块

用户在选中菜品之后,可以从购物车里进行下单,也可以从页面中进行下单。但用户下单成功之后,会有短信通知到用户和对应的餐厅。餐厅就开始准备菜品。

当餐厅菜品准备完成,开始配送的时候,餐厅只需要在后台修改订单状态为配送状态,服务器会自动发送短信到该订单顾客的手机上,通知改顾客菜品已经开始配送,请准备好相应的零钱等信息。

一旦送餐完成,餐厅修改订单状态为送餐完成,这样订单就完成了。

在下单之前,顾客必须验证手机号才可以进行下单,验证手机号页面如图所示:

5.8 评价模块

在完成一项订单之后,顾客可以对此次的菜品以及菜品进行评价。

同时,当顾客评论完成之后,顾客的评论就会显示在菜品页面中。同时,餐厅也可以在后台查看到顾客给菜品的评价。

如图所示:

5.9 短信通知模块

当顾客注册、订餐下单、餐厅配送、订单完成等情况发生时,会自动有短信通知顾客。

当有餐厅用户注册、顾客订餐时,也会自动有短信通知到餐厅。

短信模块专门为了与顾客和餐厅进行短信通知使用。它包含以下功能:验证手机号,会发送6位验证码到注册的手机上,只有正确在网页上输入验证码才可以通过验证。通知顾客下单成功功能,当顾客成功下单之后,不仅在网页上会有提示,短息模块还可以发送下达订单成功短息,通知顾客下单成功,短信中还包含部分订单关键信息。通知餐厅有顾客下单功能,与通知顾客下单成功功能类似,用来通知餐厅的。开始配送通知功能,当餐厅准备好菜品开始配送的时候,会激发此功能,此功能会向顾客发送餐厅已经开始配送的短信,其中包含部分订单信息以便顾客了解。

如图5-20所示:

5.10 管理员模块

管理员可以对网站进行各项管理,查看所有的顾客和餐厅信息,并进行相应的操作。控制网站活动。

在管理员模块中,查看以及修改顾客信息,查看和修改餐厅信息。给某个用户发送站内信。增加、修改或者删除网站的活动。查看所有的评论。以及进行广告的控制。

6 总结与展望

Laravel作为2014年使用率最高的PHP框架,能够学习并使用Laravel开发此次系统,恐怕是本毕业设计最大的收获了。

其实,从一开始选择使用何种PHP框架来进行开发,我一直也犹豫过,像国内势头正旺的ThinkPHP或者Yii。ThinkPHP中文PHP框架,易学易用,完善的中文开发文档,遇到问题或者bug可以非常容易的在中文社区得到解答。但是我最后选择了外国人开发Laravel,不仅仅因为它广泛,而是我希望能够挑战自己。

6.1网站结构设计回顾

一开始,本人对于网站的结构是什么太多想法的,按照之前的设计做就好了。但是,实际上对于网站我还是有一个最初的想法,就是顾客——餐厅,这样的设计方式,一开始整体都是对于顾客来设计的,从注册、登录,当然,自始至终我都是非常关注显示效果的,不过后来因为时间有限,我必须加快进度,所以有些东西就必须有舍有得了。

网站结构第一保证顾客可以很容易的注册,和验证。每个注册的页面我都用JavaScript制作tooltip来弹出小提示用户。之后,顾客还可以非常方便的订餐,不需要考虑太多东西,就可以订餐,这是我希望做的。

第二个需要保证的就是餐厅的部分了,订餐网站没有了餐厅就不是订餐网站了。对于餐厅我找一个后台管理模板,对于这个模板修改了好几天,再加上后来信息的打入,jqGrid的配置使用、信息的传输、操作的响应,还有dropzone的使用,确实让我花费了一些时间。

这样做都是为了让餐厅的后台尽可能的好看,以及对于餐厅的管理员来说友好的使用,所有的功能更加的清晰和完善。

在对顾客友好的方面,本系统有一个设计,那个用户注册不光会有一封邮件确认信,还有一封站内信,让用户觉得你不是注册就完了,“欢迎来到这个大家庭中!”,希望顾客能够在这里有一个归属感,这里不仅仅只是一个订餐的地方。

参考文献

[1]王衍,姚建荣,管理信息系统教程,浙江科学技术出版社

[2]王珊,数据库系统概论,北京教育出版社

[3]孟宪虎、马雪英、邓绪斌,大型数据库系统管理、设计与实例分析,电子工业出版社

[4]卞文志,网上订餐将成为餐饮业利润第二落点[J].烹调知识.2007,(4):26~27

[5]田杰,乔东亮,秦必瑜,电子商务:模式系统及其运营,中国传媒大学出版社,2009-10-01

[6]李建忠,电子商务网站建设与管理,清华大学出版社,2012-01-01

[7]赵祖荫 主编,张瑜,张玮颖 等编著,电子商务网站建设实验指导(第二版),清华大学出版社,2008-3-1

[8]张波, O2O:移动互联网时代的商业革命, 机械工业出版社

[9]列旭松,陈文 著,PHP核心技术与最佳实践,机械工业出版社,2012-11-1

[10] Shawn McCool 著 ,Laravel Starter , Packt PublishingLimited

[11] (美)弗兰纳根 著,淘宝前端团队 译 ,avaScript权威指南(第6版) , 机械工业出版社,2012-4-1

[12] (美)凯西恩 著,陈升想 等译,ML 5应用开发实践指南,机械工业出版社,2013-4-1

[13] 高洛峰 编著,细说PHP(第2版),电子工业出版社,2012-10-1

[14] 单东林 张晓菲 魏然 编著,锋利的jQuery(第2版),人民邮电出版社,2012-7-1

[15] (澳)威利,(澳)汤姆森 著,武欣 等译, php和mysql web开发,机械工业出版社,2009-4-1

上传的附件 cloud_download 基于Laravel-PHP框架的网上订餐管理系统.zip ( 15.13mb, 17次下载 )
error_outline 下载需要16点积分

发送私信

曾经输掉的东西,只要你想,就一定可以再一点一点赢回来

15
文章数
25
评论数
最近文章
eject