🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。
作者完整代码目录供你选择:
⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目展示
摘 要
现如今,人们的生活节奏加快于是就对用餐的时间有了一定的要求。随着计算机网络技术的发展,结构目前手机的普及。在线订餐系统也就运营而出了,不仅可以解决用户的用餐问题同时还解决了餐厅的销量。通过对点餐系统的设计,改变了传统了点餐方式通过电子信息和信息化技术来实现不接触点餐,避免了人手不足造成的点餐取餐时间过长的问题。随着互联网技术的发展,点餐系统的开发技术逐渐成熟,开发成本也快速的下降。
本系统的开发和运行将会给人们的用餐带来巨大的便捷,使得用餐摆脱了时间和空间的限制。本系统内部后台采用Java开发,系统的总体划分为前端和后端。前端模块主要是用来展示现相关的订餐页面和餐点的数据渲染;后端则主要体用一些业务和逻辑上的处理服务。课题将运用电子商务系统规划设计与分析理论,项目管理理论,Push技术理论等。对中国点餐系统的运营模式发展的基础上,设计一套切实可行的点餐系统。
关键词:在线订餐;点餐系统;UML;软件开发;MySQL数据库
第一章 引言
1.1 研究背景
随着计算机科技的不断发展,人们的生活已经和网络科技息息相关了。计算机科学技术的应用已经接触到了我们生活的边边角角。在进行信息的处理交流当中也同时创造了大量的财富。为了使得餐饮的服务行业更得上时代发展的步伐,各种订餐系统也再开始如火如荼的研发当中。餐饮行业在电商的范围之内还处于一种萌芽之势,相比传统的线下售卖,网络的宣传和普及反倒是更加的方便和便捷。通过电子商务的平台结合餐饮行业的特征,最终可以形成类似于一种“互联网+”模式的订餐方式。慢慢的随着时代的发展,人们也广泛的接受了订餐这种模式,迅速订餐也成为了广大消费者最喜欢的供餐方式了。互联网的应用和发展,已经为广大人民提供了良好的基础条件。同时,在线订餐服务也拥有更加直观和高效的处理方式和服务。通过利用电子信息化的技术,存储和处理数据,使得数据可以高效的进行处理分配[1]。
1.2 选题意义
本次选题计划完成基于移动端的点餐系统的实现,通过本次课题的设计不仅可以巩固大学所学习到的旧知识同时也可以在开发的过程中学习到课题设计所需要的知识。除能够实现对专业知识的综合运用,实现理论应用于实践之外,还能促进我的动手能力和软件设计能力[2]。随着课题的完成使得我熟悉软件开发的基本步骤、数据库的逻辑设计、物理设计等,了解了基本的HTTP协议的基本状态码和服务器的各种异常的排查,为就业打下良好的代码基础[3]。
同时随着本次本科课题的完成,可以针对解决在线送餐的问题是实现线上和线下送餐的结合,提高餐饮业的订餐量和用户使用的便捷性[4]。订餐系统的实际需求就是通过送菜来完成系统内部的订单,在这个业务的处理过程中,商家和消费者都可以通过互联网来实时的跟踪订单的情况。随着订餐系统的不断细分加上市场差异化竞争将在未来的竞争中占主导地位选题意义[5]。
1.3 研究现状
1.3.1 国外研究现状
大中小城市中餐饮行业的发展可谓是蒸蒸日上,传统的手工作业方式已经不能满足餐饮经营者的需求了。顾客对食物的要求也越来越高了。所有商品信息,账目变得十分庞大,核算起来非常费时费力,当然也容易出错。同过计算机对这些信息的管理操作,可以解决以上问题,不仅能节约时间,节省人力,还能提高工作的效率,为广大餐饮行业的经营者带来了更多地利益,同时也让更多顾客对食品更加了解。对于餐饮这一行业,发达国家发展的速度比发展中国家的要求要高很多[6]。因为发达国家时间观念强,对服务的要求也高,这也促使着餐饮不断发展,更重要的是其餐饮业能充份利用计算机,利用计算机去管理,能更加好的提供各种服务。
CBEST(2022)在研究中指出[7],随着网络不断的发展,订餐系统也会越来越具有一定的开发意义,信息化的系统具有良好的操作性和可核对性等特点,受到了大量的餐饮店的关注和青睐,由于信息化的系统的可扩充性因此在系统功能开发之上可以进行二次的系统开发,有助于系统功能的不断完善。目前国内外的参订大多数都是手写点餐的方式,这样容易出现记错等问题。不方便结算和对账。
在国外,校园订餐系统已经得到广泛应用。美国加州理工学院、哈佛大学、剑桥大学等高校都建立了自己的校园订餐系统,为学生提供更加便捷的餐饮服务。在加州理工学院,学生可以通过手机App预订餐点,同时也可以在手机上查看餐厅的菜单、营业时间和排队情况等信息。该系统还可以提供根据学生饮食偏好进行推荐的功能,以及根据学生用餐记录和营养需求进行个性化营养规划的功能。在哈佛大学,校园订餐系统可以接受在线订餐、支付以及配送等服务。该系统还提供了餐厅的菜单、营业时间等信息,并可以根据学生的历史订单和评价为学生推荐菜品。在剑桥大学,校园订餐系统使用了智能手机应用程序和在线服务,提供预订、支付、排队和食品提取等功能。此外,该系统还可以定制营养计划、限制食品消耗和提高餐厅生产效率等。预订都是免费、即时的[3]。国外的校园订餐系统在服务范围、功能丰富程度、用户体验等方面都已经比较成熟,可以为国内的校园订餐系统的设计和优化提供借鉴和参考。
1.3.2 国内研究现状
目前我国的订餐行业已经发展到了一个成熟节点,例如国内的美团、饿了么等公司已经在该行业内部做到了标新立异,将该行业做到了国内的顶尖。此外国内的一些小型餐馆有一些是没有连接互联网,使得这些店家的生意有所下滑。
百度外卖发展相对较晚,在2014年4月才正式上线,2015年7月正式开始独立运营。百度外卖不同于其他网上订餐平台,它拥有自己的配送团队,而其他订餐平台大多是由餐厅自己配送。由于自己的配送团队更易管理,百度外卖在服务态度上,送餐速度上都有相对比较大的优势,因此百度外卖在市场份额上也成功地后来居上。在2016年元旦,百度外卖推出查询订单位置功能,这也是国内同行业第一个支持此功能的订餐平台。
赵敬宇(2022)在研究中指出[8],点餐程序可以满足用户的基本订单的用户需求,服务于大众餐厅。为消费者和商家通过了一个交流和订餐的平台,节约了商家的宣传和广告成本,也增加了餐厅的曝光度。同时用户也可以通过大众点评来查看商家的评价信息,满足用户的评分需求。
1.4 研究内容
本文主要进行了研究基于移动端的订餐系统的设计与实现,通过分析了目前的订餐系统的现状和发展趋势,选定了技术开发手段和平台。研究了系统开发技术的相关理论基础和技术特性,采用软件开发工程化的指导思想来分析系统内部的性能、功能等需求。同时分析在线订餐系统的优劣。在线订餐相比传统的线下就餐,更加多了几分色彩。在线订餐可通过各种图片样式,在对产品进行展示,以加强产品的宣传[9]。同时因为电子系统的存在也可以十分方便的对。商品信息进行管理和维护,并且只要在后台动动鼠标就可以完成。此外,本次系统的设计是采用B/S的架构模式,用户端无需安装其他第三方的软件,就可以进行网上订餐。同样在高峰期,用户也只需要进行提前预约即可完成订餐服务。此外,在线订餐也解决了,高峰期用餐的拥挤问题,可以为市场竞争更加轻松的环境。有利于执行错峰用餐的安排。对于商家,也同时有利于扩大整个市场占比份额。
1.5 论文结构
论文共分7章。
第1章简述了系统研究背景、研究意义、以及与课题相关的国内外现状信息和研究内容。
第2章简述了系统开发所采用的核心开发技术、软件环境和架构等。
第3章进行了同需求分析。主要从功能需求和非功能需求分析进行分析,此外对系统也进行了可行性分析。
第4章进行了系统总体结构的设计主要包含了系统架构设计、功能模块设计和数据库设计。
第5章是对系统实现效果的介绍和展示。
第6章是对系统进行软件测试,主要采用了黑盒测试。
第7章是总结。
第二章 相关理论概述
2.1 HTML简介
HTML是一块超文本标记语言,主要是用来进行网页架构的搭建和开发的,是目前在Web开发行业内普遍都遵守的行业开发标准。在HTML语言当中,开发者可以利用它内部提供的各式各样的标记语言、标签来进行页面的布局和排版。同时它也是一种即时编译的语言,不需要开发者去搭建或者是去配置额外的运行或者编译环境,开发者可以通过任何一种可以进行文本编辑的软件就可以进行Web界面的开发。HTML主要的特点就是可以在Web页面中很好的去显示数据结构和内容,同时随着技术的发展进步HTML语言的所支持的功能也在不断的扩充,目前HTML所支持的文件类型的MIME类型包含:JPG、PNG、MP4/3等格式各项的视频、图片类型,已经成为了一个标准化的开发语言[10]。
2.2 层叠样式表技术
CSS,也称为层叠样式表,在一般的情况下,该技术可以和HTML语言和JavaScript语言进行搭配使用,通过HTML语言,负责进行网页布局和排版,由CSS负责整体的样式渲染,通过JavaScript语言来实现整体页面的逻辑控制。随着版本的更新和时代的发展,CSS语言最主要的特点就是,改变了之前庞大的语法体系,将整体的模块进行细分化,在细分的过程当中,同时也添加了一些高可用性的模块,例如目前的盒子模型,超连接方式等等。
2.3 AJAX技术
AJAX技术是基于一种独立的外部服务器的脚本语言,它通过了内部的JavaScript语言特性实现了一步的参数化数据通信,在实际的数据传递过程中,通过对数据进行封装,目前大多数情况下采用的都是JSON的形式进行数据的转发。该系统的应用使得服务器的查询压力减少。他将一部分的查询压力分担给了底层的终端代理服务器,通过代理服务器和主服器进行并行查询,有助于提高整体系统查询的吞吐量和数据的查询速度。同时也有利于提高整体系统对用户的响应速度[11]。
2.4 MySQL数据库
MySQL是数据库管理系统,具有开源和关联式的特点,最初是瑞典的开发MySQL公司,这家公司于2008年被升阳微系统(Sun Microsystems)收购。在2009年,这家公司又被甲骨文公司(Oracle)公司收购[12],所以现在MySQL是Oracle旗下的一款产品。在互联网技术出现之前,是无法实现设备、网络、数据存储和运输以及电信存储等,因为所有日常活动都按照通常的传统方法进行,即必须执行或执行底层数据存储的活动,例如从一方或目的地发送消息到另一方、处理业务和服务、保存或共享信息片段以及在双方或多方之间进行通信。。目前数据库底层依然采用的是SQL语言进行维护和开发。这是的MySQL拥有的较小的存储体积,并且可以实现超快的数据查询效率。由于MySQL数据库是一个开源项目因此本次系统开发主要采用MySQL数据库作为数据存储服务器。
第三章 点餐平台系统分析
3.1 需求概述
随着社会的进步发展,传统餐饮行业也收到了互联网技术的冲击。传统线下都是开门待客或者是电话预约,每当在中午、下午等饭点时间就出现餐厅无法应付的场面,为了最大努力的满足用户的吃饭需求和餐厅老板的营业需求,特此设计一款在线订餐系统帮助用户实现远程点餐,同时为用户和餐厅都节省了时间成本。
3.2 功能需求分析
针对不同用户需求,本系统主要划分了两类用户用例,主要有用户和管理员组成,每一组不同的用例都包含了不同的系统模块和使用权限。
3.2.1 用户用例需求分析
(1) 系统遵循开放模式,注册用户可以按照自己的需要查看配件和账单结算;未注册用户也可以任意查看,但在生成订单时要求正式登陆系统。
(2) 菜品信息主要包括编码、名称、类型、活动、描述和图片等。
(3) 提供查询功能,可实现关键字模糊查询,按照类别和活动查询。
(4) 购物车中要清楚显示编码、名称、价格和数量,并显示总价格。
(5) 为了方便用户的操作,可以直接在购物车中删除配件,如果用户想继续购买,通过点击该连接可再次购买,更新数量。
(6) 用户在关闭浏览器之前,可随时查看自己的购物车,并可随时下订单。
(7) 用户可以查看自己的订单,并且可以更改订单状态。
用户用例图如图3-1所示。

图3-1 用户用例图
系统用户的功能用例分析下表3-1所示:
表3-1 用户信息表
|
项目 |
内容 |
|
用例名称 |
用户功能用例 |
|
用例描述 |
用户可以实现对系统内部登录、注册、个人信息、在线订餐等功能 |
|
参与者 |
用户 |
|
状态 |
使用系统内部的功能模块 |
|
前置条件 |
成功登录系统 |
|
后置条件 |
退出系统 |
|
基本操作流程 |
用户登录之后进入系统,然后就可以在系统内部进行商品浏览,然后可以选择商品进行在线订餐 |
|
可选操作流程 |
退出系统结束本次流程 |
|
假设 |
用户完成了系统内部的功能流程 |
3.2.2 管理员用例需求分析
(1) 管理员拥有最大权限,可以进入管理页面并配置系统信息。
(2) 管理员可以管理会员,对用户信息进行删除。
(3) 管理员可以随时更新菜品信息,上传新菜品,以及删除菜品。
(4) 管理员查看订单,并更新订单状态。
管理员用例图如图3-2所示。

图3-2 管理员用例图
系统管理员的功能用例分析下表3-2所示:
表3-2 用户信息表
|
项目 |
内容 |
|
用例名称 |
管理员功能用例 |
|
用例描述 |
管理员可以实现对系统内部登录之后就可以对系统内部的数据和业务信息进行管理 |
|
参与者 |
管理员 |
|
状态 |
使用系统内部的功能模块 |
|
前置条件 |
成功登录系统 |
|
后置条件 |
退出系统 |
|
基本操作流程 |
管理员登录之后进入系统,就可以在系统后台的商品管理模块、订单管理模块、资讯管理管理进行 |
|
可选操作流程 |
退出系统结束本次流程 |
|
假设 |
管理员完成了系统内部的功能流程 |
3.3 非功能需求分析
可以分为以下几种。
3.3.1 系统的健壮性
系统的运行需要保证良好的可用性,需要针对系统内部的异常中断等操作进行及时的处理和分析。遇到特殊情况需要代码内部有一定的适应性,即代码拥有一定的自我诊断或者故障处理的能力。
3.3.2 系统的可维护性
系统的扩展性和拓展性主要表现在系统在运行过程当中可以进行可以实现额外功能的添加,在开发中应该遵守一定的开发规则,避免出现,代码思路不清晰导致的隐患。同时当心从内部出现中断异常的时候,需要,管理者的介入并及时的恢复系统的正常运行[13]。
3.3.3 系统的响应速度
系统的响应服务应该满足用户基本的等待相应请求时间,一般来说,整体的系统响应时间应尽可能的小,最好保持在毫秒级以内,否则就会给用户带来一些不好的使用体验,从而造成用户的流失[14]。
3.4 可行性分析
3.4.1 技术可行性分析
本次系统设计采用HTML、Java等技术来实现整体系统的开发,根据Java语言的特性可以很容易的对Web进行开发和编辑,MySQL也具有一定的可用性,可以很快的上手。经过了系统需求分析之后,对比实际的应用需求结合技术的使用特性和应用场景,发现本系统具有技术方面的可行性[15]。
3.4.2 经济可行性分析
本次开发的系统的模块功能对服务器的硬件质量和设备要求都不是很高,开发技术的选择都是基于免费的开源社区版本,省去了一部分的开发经济费用,同时本系统在后期的运行过程中也是具有很好的可移植性和维护性的,总体来说本次系统开发在经济方面是具有一定的可行性的。
3.4.3 法律可行性分析
本系统在开发过程中对用户的基本个人信息等信息进行保护,不会将用户的个人信息进行泄露或者用于其他的商业活动,因此在系统的运行和使用过程当中不会出现违法的情况
第四章 系统的详细设计
4.1 系统架构
系统功能模块结构图反映了在线订餐系统的系统功能模块的划分,本系统的主要是实现了两个用例模块一个是用户端另一个是管理员端。
(1) 管理员端:
用户信息管理:实现了对系统内部用户信息的管理。
商品管理:实现了对系统内部商品信息的管理。
订单管理:实现了对系统内部用户的订单信息的管理。
登录功能:实现了管理员账号和密码的验证。
分类管理:实现了对系统内部商品菜品信息的分类管理。
(2) 用户端:
用户登录:验证了用户的账号和密码的匹配性并对用户进行分流。
用户注册:实现了游客用户的账号注册。
商品浏览:实现了对商品信息的浏览和查看。
购物车:实现了对商品信息的结算操作,添加至购物车等功能。
商品购买:实现了对商品信息的下单购买操作。
个人信息管理:实现了对个人信息的管理。
系统总体功能结构图,如图4-1所示,

图4-1 系统总体功能结构图
4.2 系统主要模块功能设计
4.2.1 登录模块分析
在系统内部进行若干的操作都需要是在登录状态下所操作的,因为只有用户在登录之后系统才可以获取到当前用户的基本信息并根据用户的基本信息来操作相关的业务流程。具体的登录流程图如图4-2所示。

图4-2 登录流程图
4.2.2 订餐模块分析
当用户完成登录操作之后进入到系统主界面就可以在系统内部进行点餐和查看,订餐模块的功能图如下图4-3所示。

图4-3 订餐流程图
4.3 数据库设计
4.3.1 逻辑设计
数据库的设计是针对系统内部用户的需求进行的,在某一个具体的应用场景之下与用户的需求进行动态的绑定。数据库作为整个项目的后备数据支柱,是整个软件的重要组成部分。由于数据库内部的复杂性,为了支持各种语言的开发特此使用Mybatis作为java语言和Mysql的对接桥梁。在进行数据库表的设计中是一个反复探索,不断迭代的过程。
管理员属性图如图4-4所示。

图4-4 管理员信息实体属性图
用户属性图如图4-5所示。

图4-5 用户信息实体属性图
评论信息实体属性图如图4-6所示。

图4-6 评论信息属性图
产品信息实体属性图如图4-7所示。

图4-7 产品信息实体属性图
专区信息实体属性图如图4-8所示。

图4-8 权限信息实体属性图
系统总体E-R图如图4-9所示。

图4-9 系统总体E-R图
4.3.2 物理设计
物理设计是确定数据库内部表格结构的大小,变量类型的以及存储的数据引擎。系统内部的数据信息表字段都是具有一定的现实意义,都代表这不同的数据含义,具体的数据表表格字段的设计如下所示。
用户信息表如表4-1所示。
表4-1 用户信息表
|
字段名 |
说 明 |
类 型 |
长 度 |
可否为空 |
主键 |
|
Id |
用户编号 |
varchar2 |
20 |
否 |
是 |
|
Name |
账号 |
varchar2 |
20 |
否 |
否 |
|
Password |
用户密码 |
varchar2 |
20 |
是 |
否 |
|
Status |
状态 |
varchar2 |
20 |
是 |
否 |
|
Address |
地址 |
varchar2 |
20 |
是 |
否 |
|
Phone |
手机 |
varchar2 |
11 |
否 |
否 |
权限信息表如表4-2所示。
表4-2 权限信息表
|
字段名 |
说 明 |
类 型 |
长 度 |
可否为空 |
主键 |
|
Id |
I |
varchar2 |
50 |
否 |
是 |
|
Name |
权限名 |
varchar2 |
20 |
否 |
否 |
|
Description |
描述 |
varchar2 |
50 |
否 |
否 |
产品信息表如表4-3所示。
表4-3 产品信息表
|
字段名 |
说 明 |
类 型 |
长 度 |
可否为空 |
主键 |
|
Id |
id |
varchar2 |
100 |
否 |
是 |
|
name |
名称 |
varchar2 |
99 |
否 |
否 |
|
Price |
价格 |
Double |
4000 |
否 |
否 |
|
Zan |
点赞数 |
Int |
100 |
否 |
否 |
|
Number |
库存 |
Int |
20 |
否 |
否 |
|
Image_url |
封面 |
varchar2 |
30 |
否 |
否 |
|
Description |
描述 |
Varchar2 |
100 |
否 |
否 |
管理员信息表如表4-4所示。
表4-4 管理员信息表
|
字段名 |
说 明 |
类 型 |
长 度 |
可否为空 |
主键 |
|
Id |
ID |
varchar2 |
20 |
否 |
是 |
|
Password |
管理员密码 |
varchar2 |
20 |
否 |
否 |
|
Name |
账号 |
Varchar2 |
20 |
否 |
否 |
评论信息表如表4-5所示。
表4-5评论信息表
|
字段名 |
说 明 |
类 型 |
长 度 |
可否为空 |
主键 |
|
Id |
评论id |
Varchar2 |
100 |
否 |
是 |
|
Content |
内容 |
Varchar2 |
1000 |
否 |
否 |
|
create_time |
发表时间 |
Datetime |
100 |
否 |
否 |
|
PubilishId |
发表人id |
Varchar2 |
99 |
否 |
否 |
点餐平台的实现
5.1 点餐平台前台实现
5.1.1 点餐平台登录界面
登录界面实现了用户的验证,在该模块要对所有的访问者进行身份验证,通过了验证才可以进入系统。如图5-1所示。

图5-1 登录界面
系统后台服务器通过/backLogin接口来处理和接受用户的基本请求,注册核心代码如下图5-2所示。

图5-2注册核心代码
5.1.2 点餐平台注册页面
注册页面的实现主要是在前端设置一个form表单,用户将个人信息进行填写然后点击注册按钮来进行注册。用户注册时系统后台会检查用户所填写的账号是否已经注册过了,如果已经注册过了,那么就会提醒用户该想用户已经注册过,需要重新进行填写。如图5-3所示。

图5-3 注册页面
系统内部的注册接口为:“/registerUser”,实现了对用户注册业务逻辑的判断。
如下图5-4所示。

图5-4用户注册业务逻辑判断核心代码
5.1.3 点餐平台主页
当用户登录成功之后就会进入到系统的主界面,订餐界面主要流程是用户在系统主页开始选择所要选择的食品、饮料然后加入购物车最后统一在购物车之内进行结算处理。如图5-5所示。

图5-5 系统主界面
5.1.4 点餐平台菜品搜索
用户进入系统可以在顶部的搜索框内输入具体的菜品信息或者输入模糊的查询关键字也可以。然后点击放大镜图标即可进行菜品的搜索。如图5-6所示。

图5-6 菜品搜索
菜品搜索主要是通过模糊查询进行搜索的,利用MySQL提供的concat函数、‘%’占位符和like关键字进行模糊匹配,将查询到的结果集合映射到productResultMap中,从而实现查询结果的结果集映射。核心代码如下图5-7所示。

图5-7查询结果核心代码
5.1.5 点餐平台菜品详情
用户点击要选择是商品之后进入商品的详情页面来进行查看商品的具体信息。其中包含了对该商品的介绍信息,评价,价格,库存等等。用户可以选择数量并进行加入购物车。之后再购物车中统一进行结账下单。如图5-8所示。

图5-8 菜品详情
菜品详情主要是通过ID来进行传值,利用select语句根据菜品的ID将其数据信息从MySQL数据库中查询而出,然后将结果赋值给Product类。
如下图5-9所示。

图5-9赋值核心代码
5.1.6 点餐平台购物车界面
用户将所有的商品都加入到购物车当中之后就可以对商品进行结账下单,并且在下单的时候需要填写用户的收货地址,收货人信息,手机号等。然后选择支付方式来进行支付,支付成功之后就会生成订单信息。如图5-10所示。

图5-10 购物车界面
购物车功能需要利用临时变量根据用户的ID去查询暂留在购物车之中的商品信息,通过合并查询可以快速的显示用户的购物车信息,通过POST方法请求服务器后台,并将数据结果通过视图信息转发到前台界面当中。如下图5-11所示。

图5-11转发核心代码
5.1.7 点餐平台订单界面
用户在下单之后就会自动生成关于订单的信息,然后可以在订单界面查看刚才的下单,此外还可以在这里查看到当前的订单送货情况以及个人的地址信息,如图5-12所示。

图5-12 个人订单
个人订单信息也是依照select语句根据用户ID来查询而出的,将List结果集中的数据信息打包传入到order实体当中,通过HTTP请求发送至前台界面进行渲染。如下图5-13所示。

图5-13前台界面渲染核心代码
5.2 点餐平台后台实现
5.2.1 点餐平台分类界面
分类界面包含了对系统内部餐品信息的管理和维护,如图5-14所示。

图5-14 系统前台主页面
5.2.2 点餐平台用户界面
用户管理界面实现了对用户的个人信息的管理。其中主要展示了系统内部的所有用户的基础信息(id,用户名,密码,地址,手机,等级)此外还提供了删除操作、改变用户等级操作。如图5-15所示。

图5-15 用户管理界面
通过select函数查询系统用户信息,然后利用JSON格式将其初始化在前台中,通过函数是实现对用户操作接口的渲染。如下图5-16所示。

图5-16对用户操作接口渲染核心代码
5.2.3 点餐平台菜品管理界面
管理员可以在后台对系统内部所有展示的菜品信息进行管理操作,后台系统提供了对菜品信息的添加、删除搜索等操作。如图5-17所示。

图5-17 菜品管理界面
菜品信息管理也是通过服务器的数据查询得到的。SQL语句执行完毕之后们可以查找到数据的结果集,然后利用JSON格式进行传递。如下图5-18所示。

图5-18查找数据后利用JSON传递核心代码
5.2.4 点餐平台订单管理界面
订单模块提供了对订单信息的查看、发货等操作,管理员可以在后台对订单的状态信息进行修改操作,如图5-19所示。

图5-19 订单管理界面
订单管理首先先将所有的订单信息查询出来,然后通过设置click触发时间,通过点击按钮来触发管理事件,以使用系统的功能。如下图5-20所示。

图5-20使用系统功能核心代码
第六章 点餐平台测试
6.1 系统测试目标
系统测试作为软件开发完毕的最后一个环节,也是检测本次软件开发质量的一个过程。功能模块的开发结束并不代表着软件开发的结束。在整个系统的功能模块开发当中,需要通过软件测试来实现,确保系统中功能的正确性。一个优秀的测试用例可以发现整体系统框架中最为致命的软件缺陷,在整体的软件开发的初始阶段中,我们就需要进行良好的前期分析和需求分析,这有助于减少后期软件测试维护的工作量。在软件开发的过程当中一定是会遇到一些大大小小的系统异常等问题出现。而软件开发测试的目的就是为了在早期阶段就发现这些细小问题并将他们加以解决,及时纠正系统内部出现的错误从而保证系统后续的运行稳定性和用户的使用体验感。在软件开发结束后进行编码测试是一项非常重要的工作,对于测试的结果中的漏洞进行改正可以有效提高系统运行的稳定性[16]。
6.2 测试方法
系统测试的方法有黑盒测试和白盒测试两种,黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。因此黑盒测试又叫功能测试或数据驱动测试。白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致[17]。
6.3 测试用例
6.3.1 登录功能测试
检测1:用户登录模块测试
目的:测试用户在登录的过程中可能发生的意外情况。
内容:验证用户名密码的合法性。
具体的测试用例如表6-1所示
表6-1 登录功能测试用例表
|
输入 |
输出 |
结论 |
|
|
账号 |
密码 |
||
|
Admin |
Admin |
密码正确 |
进入系统,跳转至主页 |
|
Admin |
Mima |
密码错误 |
提示密码错误 |
|
Qwer |
Admin |
账号不存在 |
提示账号不存在 |
|
空 |
Admin |
账号名不为空 |
提示账号名不为空 |
|
Admin |
空 |
密码不为空 |
提示密码不为空 |
6.3.2 购物车测试
检测2:购物车模块测试。
目的:测试用户在订餐的过程中可能发生的意外情况。
内容:测试用户在下订单时,能否向购物车内正常的添加菜品;是否可以从购物车内删除或清空购物车;购物车内商品价格计算是否正常;如表6-2所示。
表6-2 购物车测试用例表
|
操作 |
页面显示 |
|
添加菜品到购物车 |
提示添加成功 |
|
删除购物车中的菜品 |
提示删除成功 |
|
调整购物车中的菜品数量 |
系统自动计算修改后的总价格 |
|
再次添加菜品 |
购物车中菜品和价格信息更新 |
6.3.3 商品上传测试
检测3:商品图片上传功能测试。
目的:测试管理员在对商品图片上传的过程中可能发生的意外情况。
内容:测试管理员上传商品图片时,能否正常在系统中添加商品的信息和图片。测试用例如表6-3所示。
表6-3 商品上传测试用例表
|
操作 |
页面显示 |
|
管理员进入到商品管理模块点击添加按钮 |
系统弹出商品管理模块的界面 |
|
填好商品信息并选好商品图片进行上传 |
提示上传成功 |
|
查看商品信息并对商品进行修改 |
提示修改成功 |
|
查看商品信息 |
可以正常的浏览 |
测试结果如图6-1,6-2所示。

图6-1 商品图片上传成功

图6-2 商品图片修改成功
6.3.4 订单生成测试
具体的测试用例如表6-4所示。
表6-4 订单生成测试用例表
|
操作 |
页面显示 |
|
用户在前台进行下单 |
下单成功,存入数据库 |
|
管理员在后台查看用户的下单信息 |
显示用户的订单信息 |
|
查看订单信息并对订单进行修改 |
可以正常查看订单信息 |
|
订单结束之后,用户可以对订单信息进行评价操作 |
显示评价信息 |
6.4 测试结果
通过利用黑盒测试的方法对本系统功能模块和性能进行了测试,发现了整个系统中存在的一些很细小不容易发现的缺陷和漏洞并对其进行了改正。修改之后的系统在性能和功能方面都有了一个很大的提升,系统的安全性、可靠性、健壮性、可移植性等达到了极致。
第七章 总结
在设计本系统功能模块之初,一直在思考如何对功能模块进行设计才能够符合消费者的日常操作习惯,同时数据又能够安全无误地存储到数据库。通过自身不断地学习和实践,不仅捋顺了本系统的设计的思路,而且将开发模式进行了系统的分析,最终将本系统成功的开发了出来。
本文实现的系统虽然功能较为丰富,致力于满足更多学生的系统需求。但是在实现和实际使用的过程中仍有很多需要增加和改进的地方。如可以对日常数据进行数据挖掘使得系统更智能化;可以加入定位技术使用户可以自动识别自己的地址;还可以加入订单轨迹定位功能,使得用户可以时刻掌握自己的订单进行状态。这些工作都会在以后的研究中进一步实现和完善。
致 谢
时光匆匆,四年的大学时光擦肩而过。在大学学习期间遇到了很多老师和同学帮助和关怀。在论文即将完成之际,我想向所有在曾经帮助过我的人表示最真诚的致谢。
首先,我要对我的指导老师金志雄老师表示最真诚的感谢。从论文的选题、开题报告以及后来的论文修改指导,金老师都是耐心的帮我梳理论文内容结构。金老师严肃的治学态度和敬业精神在深深的影响着我。在金老师的帮助之下是我顺利完成了论文的修改,在此感谢金老师的关心和学业指导。
最后感谢母校的包容,给我们通了一个良好的学习环境和美丽的校园。在这里也是我结识了一群志同道合的朋友,我们一起学习一起共同奔赴未来。在论文和系统设计道中也多亏了他们的帮助使我走出困境、克服困难。感谢相遇。
希望母校越来越好,祝愿大家都能有一个美好且明媚的未来。
参考文献
[1] Yu Yang. Design and Implementation of Online Food Ordering System Based on Springcloud[J]. Information Systems and Economics,2022,3(4).
[2] CBEST: The Only Best Restaurant Online Ordering System in Canada[J]. M2 Presswire,2022.
[3] Pharmacists must be given access to PPE online ordering system, RPS says[J]. The Pharmaceutical Journal,2020.
[4] TRAY; TRAY Partners with Ordermark to Integrate Third Party Online Ordering Systems into Their POS System[J]. Journal of Engineering,2019.
[5] FSD Pharma Unveils Online Ordering System for Medicinal Cannabis Fulfillment[J]. Manufacturing Close – Up,2019.
[6] Hodge Products Inc.; Patent Issued for Online Ordering System And Method For Keyed Device (USPTO 10,115,144)[J]. Journal of Engineering,2018.
[7] 王旭坪,张珺,易彩玉.在线订餐生产配送联合调度模型及算法[J].系统管理学报,2020,29(01):159-167.
[8] 赵敬宇. 基于个性化推荐的医院住院部订餐系统[D].大连理工大学,2019.
[9] 邹珊珊. 基于微信公众平台的校园订餐系统设计与实现[D].扬州大学,2018.
[10] 刘丙为. 基于Spring MVC的公司订餐系统的研究与开发[D].新疆大学,2018.
[11] 王旭坪,张珺,易彩玉.在线订餐生产配送联合调度模型及算法[J].系统管理学报,2019,28(06):1105.
[12] 黄信洋. 网上餐饮信息服务平台设计与实现[D].电子科技大学,2019.
[13] 刘伟. 基于Android平台的手机订餐系统的设计与实现[D].扬州大学,2018.
[14] 李云. 味道和环境信息线索对消费者在线订餐行为的影响研究[D].合肥工业大学,2020.
[15] 钟鼎文. 基于人脸识别的智慧餐厅系统的设计与实现[D].南京大学,2020.
[16] 鲍耀翔. 基于ASP.NET的餐厅在线订餐系统的设计和实现[D].浙江工业大学,2017.
[17] 朱源. 分布式订餐系统重构关键点设计与实现[D].厦门大学,2018.
核心代码展示
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
项目推荐
【计算机毕业设计】各项技术选题汇总
【计算机毕业设计】基于Springboot的网上购物商城销售系统
【计算机毕业设计】开题报告模板2
【计算机毕业设计】任务书案例2
【网站项目】基于springboot的在线考试系统
【网站项目】基于springboot的4S店车辆管理系统
【软件设计】基于python的高校资产管理系统
【网站项目】python009基于推荐算法的电影推荐系统
【网站项目】基于Springcloud的分布式架构网上商城
⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡



