目 录
1 绪论................................................................................................................................... 1
1.1 研究的目的和意义...................................................................................................... 1
1.2 研究现状...................................................................................................................... 1
1.3 研究的主要内容.......................................................................................................... 1
2 系统相关知识和技术................................................................................................... 3
2.1 B/S架构简介............................................................................................................... 3
2.2 开发语言Java简介.................................................................................................... 3
2.3 MySQL数据库简介.................................................................................................... 3
2.4 Spring框架简介.......................................................................................................... 3
2.5 SpringMVC框架简介................................................................................................. 3
2.6 MyBatis-Plus框架简介............................................................................................... 3
2.7 SpringBoot框架简介................................................................................................... 3
2.8 运行环境..................................................................................................................... 4
3 系统的需求分析............................................................................................................ 5
3.1 需求概述...................................................................................................................... 5
3.2 可行性分析.................................................................................................................. 5
3.2.1技术可行性......................................................................................................... 5
3.2.2运行环境可行性................................................................................................. 6
3.2.3经济可行性......................................................................................................... 6
3.2.4操作可行性......................................................................................................... 6
3.3 业务流程分析.............................................................................................................. 6
3.4 系统流程分析.............................................................................................................. 7
4 系统的总体设计......................................................................................................... 10
4.1 系统功能结构图设计................................................................................................ 10
4.2 数据库设计................................................................................................................ 10
4.2.1数据库的概念结构设计................................................................................... 11
4.2.2数据库E-R图................................................................................................... 11
4.2.3数据库的连接实现........................................................................................... 15
4.2.4数据库表的设计............................................................................................... 15
5 系统主要功能模块的实现....................................................................................... 22
5.1 用户功能模块............................................................................................................ 22
5.1.1用户系统主页的设计....................................................................................... 22
5.1.2用户注册功能的实现....................................................................................... 23
5.1.3用户登录功能的实现....................................................................................... 24
5.1.4菜品信息查看功能的实现............................................................................... 25
5.1.5购物车功能的实现........................................................................................... 26
5.1.6下单功能的实现............................................................................................... 27
5.2 管理员功能模块........................................................................................................ 28
5.2.1管理员菜品信息功能的实现........................................................................... 28
5.2.2管理员用户管理功能的实现........................................................................... 28
5.2.3管理员供应商管理功能的实现....................................................................... 29
5.2.4 管理员入库功能的实现.................................................................................. 29
5.2.5管理员出库功能的实现................................................................................... 30
5.2.6管理员订单管理功能的实现........................................................................... 30
6 系统运行与调试............................................................................................................ 31
6.1系统测试方案............................................................................................................ 31
6.2测试结果分析与调试................................................................................................ 31
7结论与展望...................................................................................................................... 35
致 谢................................................................................................................................... 36
参考文献.............................................................................................................................. 36
1 绪论
1.1 研究的目的和意义
长久以来,餐饮行业管理都是传统手工操作,对于外卖数据等管理都是由人工完成,容易造成失误和遗漏,管理效率比较低,特别是需求比较多的时候,传统的外卖方式已经基本不能满足要求,对于发展新用户、留住旧用户非常不利。 用上信息化管理以后这些问题都基本已解决,餐饮行业问题的关键在于怎样固定一批稳定的用户群体。求新求变是目前餐饮行业的发展方向。留住了用户就等于占有了市场,就等于拥有一批稳定的用户群体。
基于spring boot的阳光外卖系统是一套专门为餐饮行业定做的智能程序,极大地提高外卖的效率,节约经费,把阳光外卖管理与餐饮行业管理工作结合起来,形成了一套完整独到的阳光外卖系统。该系统能迅速提高餐饮行业管理水平,增加经济效益,同时用户可随时访问网站了解最新餐饮行业情况对自己何时阳光外卖做出参考。
1.2 研究现状
餐饮行业信息网上查询,就是供用户查阅相关餐饮行业信息,不限定用户阳光外卖的时间,由于是在网络上,用户就可以网上阳光外卖,提高了阳光外卖的效率,阳光外卖完成后,用户可以随时查看已经完成的阳光外卖信息。
随着国内经济的不断发展,餐饮行业条件的发展呈现出无法比拟的优势:提高阳光外卖的效率,节约阳光外卖成本,增强阳光外卖的安全性、时效性、高增值性等。目前类似的阳光外卖系统并不能按要求检索,还需要用户自己在返回的信息中去比对和选择,而返回的信息可能是海量的。尤其是在餐饮行业领域,网络阳光外卖成为必然的今天,人们对餐饮行业信息的需求更快、更新。而网站由于本身所具有的信息量大、传递快速,没有地域、时间、空间限制等特点恰好满足这种要求。
1.3 研究的主要内容
本系统在认真研究国内外同类程序的基础上,博取众家之长,并在多年从事餐饮行业专家的指导下开发而成,该系统适合餐饮行业的阳光外卖需求。 基于spring boot的阳光外卖系统从根本上解决了餐饮行业用户有关阳光外卖的烦恼,它不仅让餐饮行业能够方便的录入餐饮行业的基本信息,还能够方便查询、了解阳光外卖信息;从工作原理入手,介绍JAVA;并且介绍了Spring Boot框架的概念、特点;用软件工程的方法分析阳光外卖系统,对整个阳光外卖系统进行了需求分析、功能模块划分,并通过ER图对数据库进行概念设计;对阳光外卖系统的具体设计,描述了查询、录入菜品信息、菜品入库、菜品出库、购物车、订单、在线客服、菜品资讯模块的实现过程。最后,在结束语的总结部分指出了系统的不足之处,简单介绍了自己开发过程中的体会与心得:在摸索中实践,在实践中摸索。
2 系统相关知识和技术
B/S架构也称为客户端浏览器/服务器架构。主要特点是基于浏览器访问网站等应用,服务器完成所有的业务逻辑,客户端浏览器只做页面的渲染和数据交换。最大优点是只研发服务器端,还能跨平台,可移植性强,主要缺点是其安全性低,用户体验感受较差。常见的B/S架构产品有淘宝网站,京东网站。
Java作为一种面向对象、高效、跨平台的计算机编程语言,可以广泛应用于系统的开发。Java具有简单、面向对象和分布式的特点。
MySQL是一个使用结构化查询语言的关系型数据库管理系统。具有执行时间较短、占用内存小、可靠的优点,有一部分网站为了降低开发成本选用MySQL作为数据库。
Spring 框架用来解决软件开发过程复杂的问题。使用JavaBean 来完成之前复杂的企业级开发。Spring 解决了业务对象和功能模块之间的耦合,也是一个轻量级控制反转(IoC)和面向切面(AOP)的容器。
Spring MVC是基于Spring的一个框架,它为 Spring 框架提供了构建 Web 应用程序的能力。Spring MVC 也是 Spring 框架的一部分,完美和 Spring 框架集成。性能方面具有很大的优势,是当今业界最主流的 Web 开发框架。
-
- MyBatis-Plus框架简介
MyBatis能够直接在xml或注解中借助SQL语句操作数据库。不过各种操作都需要借助SQL语句进行,需要写大量的xml文件或者注解,很不方便。MyBatis-Plus就非常好的解决了这个难题。MyBatis-Plus是一个 MyBatis的强化版本,在 MyBatis 的基础上只做强化不做修改,简化了开发的步骤提高了生产力。
-
- SpringBoot框架简介
Spring Boot用来简化 Spring 应用程序创建和开发的中间过程,完完全全简化了xml的配置操作。采用 Spring Boot框架可以短时间内开发出 Spring 框架的程序,它让编码、配置和部署都越来越简单。因此广泛应用于各种软件的开发。
软件环境:
- 开发语言:Java语言;
- 开发平台:IDEA、WebStorm;
- 数据库:MySQL数据库;
- 运行环境:JDK1.8;
- 操作系统:Windows 10;
硬件环境:
- CPU:Intel(R) Core(TM) i5-8300H CPU;
- 显卡:Nvidia GeForce GTX 1050 独立显卡;
- 内存:20G;
- 主频:2.5GHz;
- 硬盘:512G固态;
3 系统的需求分析
3.1 需求概述
我国外卖市场经过数十年的发展,外卖产业规模不断增加,随着渗透率的不断提升,增速不断下降,但仍然维持近40%的增长速度。2019年中国餐饮外卖产业规模为6536亿元,相比2018年增长39%。与此同时,外卖产业的渗透率也继续提升。2019年全年外卖产业渗透率达到14.0%,相比2018年的11.0%提升了3个百分点。
本项目结合餐饮行业实际情况,开发设计一款基于spring boot的阳光外卖系统,主要适用于餐饮行业的用户、员工人员的使用。该软件系统包括用户浏览的前台和管理人员进行数据操作的后台。
- 用户可以以游客的身份进入系统浏览菜品,但是不能进行操作。
- 用户在阳光外卖系统进行注册和登录以及退出。
- 登录用户能够查看自己的个人资料,以及修改个人,订单,地址等信息。
- 能够查看一些关于本店铺的通知公告。
- 根据菜品的分类和名称搜索菜品的详细信息。
- 能够对已下单菜品进行评论。
- 能够在线联系客服。
- 能够加入购物车对菜品进行收藏。
- 管理员根据特定账号登录后台系统。
- 商家能够查看用户的信息并进行操作。
- 商家能够对菜品进行增删改查操作。
- 商家能够对用户提交的申请进行处理。
- 商家能够管理菜品的入库和出库。
- 商家能够对订单进行管理。
3.2 可行性分析
3.2.1技术可行性
阳光外卖系统开发主要运用了spring boot框架,数据库采用了my sql.这些知识一部分是通过课堂学习,另外一部分是通过上网自学,所以具有一定的可行性。
Spring Boot不但能创建传统的 war 包应用,还能创建独立的不依赖于任何外部容器(如:tomcat)的独立应用,使用 java -jar 命令就能启动。同时,Spring Boot也提供了一个命令行工具来执行 Spring 的脚本。总之,Spring Boot 是值得我们任何一个 Java 开发者尝试摸索的。
3.2.2运行环境可行性
本系统后端运用IDEA开发平台进行开发,相对于其他开发平台更加的智能。IDEA平台主要进行Java语言的开发,还提供很多强大的插件,如Git和Maven。
本系统前端系统设计基于Web,采用Eclipse工具和Vue.js技术。 vue可以简单写单个页面,也可以写一个大的前端系统。vue上手速度快,功能强大,且提供了非常好用的脚手架vue-cli,很简单就可以构建并让自己的项目跑起来。
本系统运用MySQL数据库进行数据的存储和操作。MySQL是一个经过互联网大厂检验过的生产级别的成熟数据库,在使用过程中注意以下几点,效率会更好:
1、SQL的查询一定要基于索引来进行数据扫描
2、避免索引列上使用函数或者运算符,这样会导致索引失效
3、where查询条件的like %号尽量放置在右边
4、使用索引扫描,联合索引中的列从左往右,命中越多越好
5、尽可能使用SQL语句用到的索引完成排序,避免使用文件的排序方式
3.2.3经济可行性
餐饮行业引入外卖订餐系统的初期投资比较大,但盈利能力很强,投资资金可在一年内收回。虽然餐厅会因为过度依赖信息系统而增加人们的敏感度,但是在加强维护的情况下,系统的抗过敏能力可以在一定程度上得到保证。
从以上两个方面的分析可以看出,餐饮业加入外卖订餐系统后,可以帮助管理者大大降低经营成本,同时也可以帮助餐厅评估员工和绩效绩效。它是餐厅经营的管理。餐饮外卖订餐系统的可行性分析报告表明,该系统的开发是有益的。
3.2.4操作可行性
操作可行性主要体现在开发出来的系统有没有用户使用,用户和系统的交互性是否良好。本系统的界面美观,操作简单,上手操作难度小。
因此,操作方面是完全可行的。
3.3 业务流程分析
业务流程图用于描述用户在操作程序时的具体流程,不同的角色登录后所操作的内容也不相同。通过矩形、菱形、箭头等符号来表示业务执行过程,这样就可以让读者直接观察到整个业务的过程。
阳光外卖系统的业务流程图介绍了游客、用户和管理员进入系统后如何操作系统。
阳光外卖系统的业务流程如图3-1所示:
图3-1阳光外卖系统业务流程图
3.4 系统流程分析
基于spring boot的阳光外卖系统系统集成模块化编程的有效方法,不仅便于用户管理系统相关功能的组合和部分修改,而且有利于今后对于程序的补充和维护,即使是未参与之前开发的技术人员。在分析系统的各种功能后考虑JAVA编程的各种因素,得到如下所示的系统核心功能流程图3-2
图3-2系统核心功能流图
基于spring boot的阳光外卖系统的数据流图如下:
图3-3 0层数据流图
根据登录者输入的账号、密码的数据来匹配数据库中的相应的记录值,由系统自动判断登录者的权限,然后根据用户权限来打开相对应的功能界面。
图3-4 1层数据流图
在1层数据流中,用户、员工、管理员可以作为数据的实体。
用户流程处理包含管理用户的资料、对购物车表、订单表、在线客服表的配置资料的查询;
员工流程处理包含管理员工的资料、对菜品入库表、菜品出库表的配置资料的查询;
管理员用户数据流程包括对菜品信息、菜品入库、菜品出库、购物车、订单、在线客服、菜品资讯模块的编辑、管理等;
用户数据流包含了一种或多种信息的增加、删除和修改;数据表包含了购物车表、订单表、在线客服表的内容。
员工数据流包含了一种或多种信息的增加、删除和修改;数据表包含了菜品入库表、菜品出库表的内容。
4 系统的总体设计
4.1 系统功能结构图设计
阳光外卖系统能够为一些餐饮公司和点外卖的用户提供一个平台。实现下单菜品、查看菜品信息、供应商管理、菜品收藏、公告通知等功能,让用户足不出户,不用排队等待,就能随时随地下单,给忙碌的人们带来便捷。该软件系统主要包括前台后台操作模块。
阳光外卖系统的功能模块如图4-1所示:
图4-1阳光外卖系统功能模块图
买家端模块:
- 买家信息模块:注册账号,用户信息修改。
- 菜品模块:菜品搜索,分类栏查看菜品,查看菜品详情,购买菜品 。
- 订单模块:订单查看,订单删除。
- 菜品收藏:新增收藏的菜品,删除收藏的菜品。
卖家端模块:
- 菜品资讯管理:资讯信息查询,资讯信息删除、资讯信息修改、咨询信息新增。
- 用户信息管理:用户信息查询,用户信息删除、修改、新增等。
- 卖家信息管理:卖家注册,卖家信息删除、修改、新增等。
- 菜品信息管理:菜品信息查询,菜品信息删除、修改、新增等。
- 订单管理:订单发货信息查看,订单信息删除、修改等。
- 类目信息管理:对菜品的编号、名称、价格进行修改、新增等。
- 菜品入库管理:员工可以添加菜品入库信息,管理员可以对菜品入库进行管理
- 菜品出库管理:员工可以添加菜品出库信息,管理员可以对菜品出库进行管理
- 供应商管理:管理员可增删改查供应商信息,可以进行添加,修改,删除,员工可以查看供应商信息
- 通知公告管理:管理员后可增删改查通知公告信息,员工可以查看通知公告
4.2 数据库设计
数据库将根据系统的需求进行规划设计,根据设计创建系统数据库,用来满足系统对数据存储的要求,保证系统的顺利运行。
4.2.1数据库的概念结构设计
数据库的设计分为六个阶段:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护。首先分析阳光外卖系统的功能需求,根据需求进一步分析,确定实体对象。然后将概念转换成一个数据模型,创建阳光外卖系统的数据库。最后,经过调试在没有问题的情况下就可以正常的使用数据库。
在本次设计的数据库实体有:管理员、用户、菜品信息、菜品入库、菜品出库、购物车、在线客服、菜品资讯。
4.2.2数据库E-R图
E-R图也被称实体-联系图,用来描述现实世界的概念模型。系统实现餐饮行业管理功能,阳光外卖是餐饮行业的重中之重,设置一个权限能够有权利调配相关资源,对其系统进行信息的查询,所以提炼出以下几个实体:菜品信息、菜品入库、菜品出库、购物车、订单、在线客服、菜品资讯。
阳光外卖系统的E-R图如图4-2所示:
图4-2阳光外卖系统E-R图
菜品信息E-R图包含了菜品编号、菜品名称、菜品分类、口味、图片、上架日期、菜品介绍、单限、库存、赞、踩、最近点击时间、点击次数、价格等数据项,如图4-3
图4-3菜品信息E-R图
菜品入库E-R图包含了入库单号、菜品编号、菜品名称、库存、供应商、入库日期、备注、工号、姓名等数据项,如图4-3所示
图4-4菜品入库E-R图
菜品出库E-R图包含了出库单号、菜品编号、菜品名称、库存、出库日期、备注、工号、姓名等数据项,如图4-4所示
图4-5菜品出库E-R图
购物车E-R图包含了商品表名、用户id、商品id、商品名称、图片、购买数量、单价、会员价等数据项,如图4-6所示
图4-6购物车E-R图
订单E-R图包含了订单编号、商品表名、用户id、商品id、商品名称、商品图片、购买数量、价格、折扣价格、总价格、折扣总价格、支付类型、状态、地址、电话、收货人、备注、物流等数据项,如图4-7所示
图4-7订单E-R图
在线客服E-R图包含了用户id、管理员id、提问、回复、是否回复等数据项,如图4-8所示
图4-8在线客服E-R图
菜品资讯E-R图包含了标题、简介、发布时间、封面、内容、赞、踩、最近点击时间、点击次数等数据项,如图4-9所示
图4-9菜品资讯E-R图
4.2.3数据库的连接实现
阳光外卖系统采用的数据库为MySQL8.8。
- 设置MySQL的连接驱动
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
- 设置MySQL的连接地址,localhost:3306代表本地3306端口pet-adoption代表连接的数据库名称为“pet-adoption”
url: jdbc:mysql://127.0.0.1:3306/springbootdxlnm?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
- 设置连接的数据库名称“root”
username: root
- 设置连接的数据库密码“root”
password: 123456
4.2.4数据库表的设计
阳光外卖系统数据库使用MySQL关系型数据库,主要设计了以下几个表:菜品咨询评论表(discusscaipinzixun),供应商表(gongyingshang),菜品信息评论表(discusscaipinxinxi),在线客服表(chat),员工表(yuangong),购物车表(cart),用户表(user),收藏表(storeup),订单表(orders),地址表(address)。
菜品资讯评论表如表4-1所示:
表4-1菜品咨询评论表(discusscaipinzixun)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
refid | bigint | 20 | 关联表id | 否 | 空 |
userid | bigint | 20 | 用户id | 否 | 空 |
avatarurl | longtext | 255 | 头像 | 否 | 空 |
nickname | varchar | 200 | 用户名 | 否 | 空 |
content | longtext | 255 | 评论内容 | 否 | 空 |
reply | longtext | 255 | 回复内容 | 否 | 空 |
供应商表如表4-2所示:
表4-2供应商表(gongyingshang)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
bianhao | varchar | 200 | 编号 | 否 | 空 |
mingcheng | varchar | 200 | 名称 | 否 | 空 |
fuzeren | varchar | 200 | 负责人 | 否 | 空 |
xingbie | varchar | 200 | 性别 | 否 | 空 |
lianxidianhua | varchar | 200 | 联系电话 | 否 | 空 |
dizhi | varchar | 200 | 地址 | 否 | 空 |
dengjiriqi | date | 20 | 登记日期 | 否 | 空 |
beizhu | varchar | 200 | 备注 | 否 | 空 |
菜品信息评论表如表4-3所示:
表4-3菜品信息表(discusscaipinxinxi)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
refid | bigint | 20 | 关联表id | 否 | 空 |
userid | bigint | 20 | 用户id | 否 | 空 |
avatarurl | longtext | 255 | 头像 | 否 | 空 |
nickname | varchar | 200 | 用户名 | 否 | 空 |
content | longtext | 255 | 评论内容 | 否 | 空 |
reply | longtext | 255 | 回复内容 | 否 | 空 |
在线客服如表4-4所示:
表4-4在线客服表(chat)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
userid | bigint | 20 | 用户id | 否 | 空 |
adminid | bigint | 20 | 管理员id | 否 | 空 |
ask | longtext | 255 | 提问 | 否 | 空 |
reply | longtext | 255 | 回复 | 否 | 空 |
isreply | int | 255 | 是否回复 | 否 | 空 |
员工如表4-5所示:
表4-5员工表(yuangong)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
gonghao | varchar | 200 | 工号 | 否 | 空 |
mima | varchar | 200 | 密码 | 否 | 空 |
xingming | varchar | 200 | 姓名 | 否 | 空 |
xingbie | varchar | 200 | 性别 | 否 | 空 |
nianling | varchar | 200 | 年龄 | 否 | 空 |
shouji | varchar | 200 | 手机 | 否 | 空 |
touxiang | longtext | 255 | 头像 | 否 | 空 |
money | float | 20 | 余额 | 否 | 0 |
购物车如表4-6所示:
表4-6购物车表(cart)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
tablename | varchar | 200 | 商品表名 | 否 | caipinxinxi |
userid | bigint | 20 | 用户id | 否 | 空 |
goodid | bigint | 20 | 商品id | 否 | 空 |
goodname | varchar | 200 | 商品名称 | 否 | 空 |
picture | longtext | 255 | 图片 | 否 | 空 |
buynumber | int | 20 | 购买数量 | 否 | 空 |
price | float | 20 | 单价 | 否 | 空 |
discountprice | float | 20 | 会员价 | 否 | 空 |
用户如表4-7所示:
表4-7用户表(user)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
username | varchar | 100 | 用户名 | 否 | 空 |
password | varchar | 100 | 密码 | 否 | 空 |
role | varchar | 100 | 角色 | 否 | 管理员 |
addtime | timestamp | 255 | 新增时间 | 否 | CURRENT_TIMESTAMP |
收藏表如表4-8所示:
表4-8收藏表(storeup)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
userid | bigint | 20 | 用户id | 否 | 空 |
refid | bigint | 20 | 商品id | 否 | 空 |
tablename | varchar | 200 | 表名 | 否 | 空 |
name | varchar | 200 | 名称 | 否 | 空 |
picture | longtext | 255 | 图片 | 否 | 空 |
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) | 否 | 1 |
inteltype | varchar | 200 | 推荐类型 | 否 | 空 |
remark | varchar | 200 | 备注 | 否 | 空 |
订单表如表4-9所示:
表4-9订单表(orders)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
orderid | varchar | 200 | 订单编号 | 否 | 空 |
tablename | varchar | 200 | 商品表名 | 否 | caipinxinxi |
userid | bigint | 20 | 用户id | 否 | 空 |
goodid | bigint | 20 | 商品id | 否 | 空 |
goodname | varchar | 200 | 商品名称 | 否 | 空 |
picture | longtext | 255 | 商品图片 | 否 | 空 |
buynumber | int | 20 | 购买数量 | 否 | 空 |
price | float | 20 | 价格 | 否 | 0 |
discountprice | float | 20 | 折扣价格 | 否 | 0 |
total | float | 20 | 总价格 | 否 | 0 |
discounttotal | float | 20 | 折扣总价格 | 否 | 0 |
type | int | 20 | 支付类型 | 否 | 1 |
status | varchar | 200 | 状态 | 否 | |
address | varchar | 200 | 地址 | 否 | |
tel | varchar | 200 | 电话 | 否 | |
consignee | varchar | 200 | 收货人 | 否 | |
remark | varchar | 200 | 备注 | 否 | |
logistics | longtext | 255 | 物流 | 否 |
订单表如表4-10所示:
表4-10地址表(address)
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 20 | 主键 | 主键 | |
addtime | timestamp | 255 | 创建时间 | 否 | CURRENT_TIMESTAMP |
userid | bigint | 20 | 用户id | 否 | 0 |
address | varchar | 200 | 地址 | 否 | 空 |
name | varchar | 200 | 收货人 | 否 | 空 |
phone | varchar | 200 | 电话 | 否 | 空 |
isdefault | varchar | 200 | 是否默认地址[是/否] | 否 | 空 |
5 系统主要功能模块的实现
5.1 用户功能模块
用户的主要功能包括用户注册,用户登录,个人信息修改,菜品信息主页面,购物车功能,订单信息修改功能等,这些功能基本满足了用户的基本需求,以下便是对系统的详细介绍。
5.1.1用户系统主页的设计
通过主页可以明白和了解本系统的主要功能和信息,主页最上方是订餐导航菜单,可以退出切换账号、首页、菜品信息、菜品资讯、通知公告,在线客服,购物车,个人中心。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将只能浏览菜品信息,查看菜品分类,查看通知公告等信息,如果点击在线客服,加入购物车等操作,将被连接到“用户登录页面”。
菜品信息界面可以查看菜品的轮播图,编号,口味,类别,价格以及用户的评价等详细信息,并且可以通过菜品分类,名称,口味进行搜索,用户还可以对自己下单的菜品进行‘赞’和‘踩’操作。
最右侧是用户个人中心,成功登陆后的用户可以修改自己的年龄,头像,姓名,性别,点餐地址等信息,并将喜欢的菜品加入到自己的收藏页面,还可以修改,提交自己的订单。
在线客服功能用户可以与商家进行沟通,资讯菜品情况和订单等信息。
购物车功能用户可以把想吃的菜品添加到购物车,即订购,删除购物车中已订购的菜品,修改购物车中某一个菜的订购数量,清空购物车,显示购物车中的菜品清单及数量、价格;
在餐品分类这个功能中,后台的管理人员通过,管理员账号和密码可以登录后台控制,添加新的菜品到菜品分类里面。通过后台添加的菜品可以显示到前台的滚动界面,更方便顾客选择自己喜欢的餐品。
在通知公告的窗口,可以插播一些餐品的打折信息,便于顾客浏览,而餐品打折信息的添加也是通过后台管理员操作。
该系统为方便订餐客户与餐饮企业在线交流,增设留言功能,发表个人见解的同时,其他用户也可以看到对餐品的评论,让客户可以对餐品有更好的了解。根据客户对餐品的评论,我们可以及时了解客户对某种餐品的回馈信息,这样我们可以调整进货原料,更好的把握客户的喜好,从而进一步增加营业额。
用户主页如图5-1所示
图5-1用户界面
5.1.2用户注册功能的实现
在用户注册页面主要致力于为注册用户提供服务,同时能收集顾客的消费信息,方便进一步提高业务,又为了兼顾到非注册用户,这里主要使用拦截器addResourceHandlers
我们在他的下面添加我们要拦截的网站,只有是合法的用户才会通过正式的请求进入我们的首页,游客在未登录的情况下没有权限访问除了主页登录页面的其他的页面。主要是通过session技术来实现,每一个用户登录以后都会有一个session令牌,通过比较只有合法的用户才会通过我们的拦截本网站也可以游客浏览菜品信息,拓宽消费群体。具体的资料填写方式如图5-1所示
用户注册功能的主要代码如下:
-
- 获取注册信息,进行校验,如图5-2
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody YonghuEntity yonghu){
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("zhanghao", yonghu.getZhanghao()));
if(u!=null) {
return R.error("注册用户已存在");
}
Long uId = new Date().getTime();
yonghu.setId(uId);
yonghuService.insert(yonghu);
return R.ok();
}
- 获取注册信息,进行校验,如图5-2
图 5-2 用户注册代码
用户注册界面如图5-3所示:
图5-3用户注册界面
5.1.3用户登录功能的实现
在登录时,看到用户名输入框,输入用户名,看到密码输入框,则输入密码,若没输入完整,则系统提示需要输入完整的登录信息;若对输入信息匹配不到数据,则系统提示输入错误,若输入正确,没有错误发生,则跳转到主页界面,现在在大的互联网时代我们的用户安全更为重要,我们用户在前端输入了密码以后在原始的时候我们是通过数据库查询看用户是否存在才走,这样我们的用户密码不安全,所以这里token令牌实现登录。我们的密码直接通过token进行加密以作客户端进行请求的一个“令牌”。当用户第一次使用账号密码成功进行登录后,服务器便生成一个Token及Token失效时间并将此返回给客户端,若成功登陆,以后客户端只需在有效时间内带上这个Token前来请求数据即可,无需再次带上用户名和密码。
用户登录功能的主要代码如下:如图5-4
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("zhanghao", username));
if(u==null || !u.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(u.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
图5-4 用户登录代码
用户登录界面如图5-5所示:
图5-5用户登录界面
5.1.4菜品信息查看功能的实现
菜品信息查看功能的主要代码如图5-6:
图5-6 菜品信息查看功能代码
菜品信息查看界面如图5-7所示:
图5-7菜品信息功能界面
5.1.5购物车功能的实现
在图5-5购物车功能页面,顾客可以随时修改数量,继续订餐,结账,通用购物车流程,让顾客尽可能满意的点餐,增加顾客满意度,提升本店的竞争力。我们的购物车主要构成用户的id,商品的id,用户的名字,价钱之类的。我们这样操作的主要目的是,管理员在后台查询的时候我们可以直接通过用户的id,可以直接寻找到用户的数据,这里主要设计主键,外键的交涉。然后通过mybaties plus baseMape.selectListView(wrapper); 查询出当前自己的购物车表。
购物车功能的主要代码如图5-8:
图5-8购物车功能代码
购物车功能如图5-9所示:
图5-9购物车功能界面
5.1.6下单功能的实现
在图5-11订单页面的设计中,加入商品名称、价格、应付款项、送餐地址、送货费用计算方式、电话号码、送货地址、以及对订单的特殊要求。比如要求厨师在某几个菜品中多放辣椒,或者注明忌口,带几套餐具等等。订单表主要就是我们下单时间,用户的id,地址,收货人,电话等。我们通过baseMapper.selectListView(wrapper);查询出自己的当前的所有订单等。
图5-10
图5-11下单功能界面
5.2 管理员功能模块
店长需要登录到该系统的后台,并且可以修改自己的用户名和密码,登录页面可以切换店长和员工的账号。店长账号的主要功能有用户管理,员工管理,供应商管理,菜品分类管理,菜品信息管理,菜品入库管理,菜品出库管理,系统管理以及订单管理。员工的账号主要功能有菜品信息管理,供应商管理,菜品入库管理,菜品出库管理,系统管理。
5.2.1管理员菜品信息功能的实现
管理员菜品信息管理主要功能如下:
(1)显示菜品信息列表代码如图5-12所示:
图5-12 菜品信息列表
图5-13 显示菜品详情
(3)新增菜品信息:管理员点击新增按钮跳转到新增页面,输入菜品信息,若输入信息不完整则给出相应的提示,输入完成,点击提交。前端将管理员输入的信息传给后端,后端接收到输入的菜品信息调用service中的insert(),将信息保存到数据库,主要代码如图 5-14 所示:
4)修改菜品信息
图5-15 修改菜品信息
图5-16 删除菜品信息
5.2.2管理员用户管理功能的实现
管理员用户管理功能主要体现在对用户的信息进行删除,增加,修改,查询等。主要都是通过Mybatiesplus为我们提供的方法updateById(),deleteBatchIds()。主要代码实现。如图5-17
如图5-17
图5-18管理员用户管理界面
5.2.3管理员供应商管理功能的信息进行删除,增加,修改,查询等。
gongyingshangService.updateById(gongyingshang),gongyingshangService.deleteBatchIds(Arrays.asList(ids));代码
如图5.19
图5.19
管理员管理供应商界面如图所示:5.20
图5-20管理员管理供应商界面
5.2.4 管理员入库功能的实现
为使员工、店长能够顺利地执行菜品入库的相关功能,应当将菜品入库这个模块添加到系统中,以便于员工、店长预先准备一些数据,从而提高菜品入库模块的工作效率。菜品入库中的入库单号、菜品编号、菜品名称、库存、供应商、入库日期、备注、工号、姓名数据项都有增加、删除、修改、查找等功能。
代码如图5-21
如图5-21
管理员入库功能5-22所示:
图5-22管理员入库界面
5.2.5管理员出库功能的实现
为使员工、店长能够顺利地执行菜品出库的相关功能,应当将菜品出库这个模块添加到系统中,以便于员工、店长预先准备一些数据,从而提高菜品出库模块的工作效率。菜品出库中的出库单号、菜品编号、菜品名称、库存、出库日期、备注、工号、姓名数据项都有增加、删除、修改、查找等功能如图5-23。
如图5.23
图5-24管理员出库界面
5.2.6管理员订单管理功能的实现
订单中的订单编号、商品表名、用户id、商品id、商品名称、商品图片、购买数量、价格、折扣价格、总价格、折扣总价格、支付类型、状态、地址、电话、收货人、备注、物流数据项都有增加、删除、修改、查找等功能。如图5-25
如图5-25
图5-26管理员出库界面
6 系统运行与调试
6.1系统测试方案
本程序在Windows 8操作系统下,使用Eclipse/Myeclipse/Idea软件作为开发工具,利用Tomcat7中提供的服务器环境进行运行的,代码也是在这个开发环境中编译的,并在此环境中进行系统测试的。
设计测试的是同在一个环境中,先将所有需要用到的软件打开来,将程序布局进去,运行出来,确认界面是否都运行正常,测试传参是否都没有乱码,测试核心功能是否正常运行,测试一些输入框数据填写完整提交后的反应速度,确保程序整个运行下来是否都正常,在此过程中,可以进行记录,测试完成,再给出解决方案。
6.2测试结果分析与调试
核心功能测试如下:
表6.1管理员登录测试表
测试说明 | 管理员登录测试 |
测试目的 | 测试登录是否正常 |
测试方法 | 1输入管理员用户名:例如输入admin 与数据库数据相比较 2输入管理员密码:例如输入000 与数据库数据相比较 3选择管理员权限一项 |
测试结果 | 输入信息与数据库数据相比较,正确则进入管理主页 输入信息与数据库数据相比较错误: 1用户名错误或密码输入错误,跳回到登录页面,系统提示:输入错误,请重新输入 2用户名,密码为空,系统提示:用户名,密码不能为空,请输入 |
表6.2 用户、员工登录测试表
测试说明 | 用户、员工用户登录测试 |
测试目的 | 测试登录是否正常 |
测试方法 | 1输入用户、员工用户名:例如输入2110 与数据库数据相比较 2输入用户、员工密码:例如输入111 与数据库数据相比较 3选择用户、员工权限 |
测试结果 | 输入信息与数据库数据相比较,正确则进入系统主页,浏览并进行阳光外卖 输入信息与数据库数据相比较错误: 1用户名错误,密码输入错误,跳回到登录页面,系统提示:输入错误,请重新输入 2用户名,密码为空,系统提示:用户名,密码不能为空,请输入 |
表6.3 菜品信息测试表
测试说明 | 菜品信息测试 |
测试目的 | 测试菜品信息是否冲突 |
测试方法 | 1输入菜品编号:例如输入菜品编号1与数据库数据相比较 2输入菜品名称:例如输入菜品名称1与数据库数据相比较 3输入菜品分类:例如输入菜品分类1与数据库数据相比较 4输入口味:例如输入口味1与数据库数据相比较 5输入图片:例如输入图片1与数据库数据相比较 6输入上架日期:例如输入上架日期1与数据库数据相比较 7输入菜品介绍:例如输入菜品介绍1与数据库数据相比较 8输入单限:例如输入单限1与数据库数据相比较 9输入库存:例如输入库存1与数据库数据相比较 10输入赞:例如输入赞1与数据库数据相比较 11输入踩:例如输入踩1与数据库数据相比较 12输入最近点击时间:例如输入最近点击时间1与数据库数据相比较 13输入点击次数:例如输入点击次数1与数据库数据相比较 14输入价格:例如输入价格1与数据库数据相比较 |
测试结果 | 输入信息与数据库数据相比较,没有冲突则进行添加,修改等功能 输入信息与数据库数据相比较出现冲突: 系统提示:与数据库数据相冲突,请重新输入菜品信息 |
表6.4 菜品入库测试表
测试说明 | 菜品入库测试 |
测试目的 | 测试菜品入库是否冲突 |
测试方法 | 1输入入库单号:例如输入入库单号1与数据库数据相比较 2输入菜品编号:例如输入菜品编号1与数据库数据相比较 3输入菜品名称:例如输入菜品名称1与数据库数据相比较 4输入库存:例如输入库存1与数据库数据相比较 5输入供应商:例如输入供应商1与数据库数据相比较 6输入入库日期:例如输入入库日期1与数据库数据相比较 7输入备注:例如输入备注1与数据库数据相比较 8输入工号:例如输入工号1与数据库数据相比较 9输入姓名:例如输入姓名1与数据库数据相比较 |
测试结果 | 输入信息与数据库数据相比较,没有冲突则进行添加,修改等功能 输入信息与数据库数据相比较出现冲突: 系统提示:与数据库数据相冲突,请重新输入菜品入库 |
表6.5 菜品出库测试表
测试说明 | 菜品出库测试 |
测试目的 | 测试菜品出库是否冲突 |
测试方法 | 1输入出库单号:例如输入出库单号1与数据库数据相比较 2输入菜品编号:例如输入菜品编号1与数据库数据相比较 3输入菜品名称:例如输入菜品名称1与数据库数据相比较 4输入库存:例如输入库存1与数据库数据相比较 5输入出库日期:例如输入出库日期1与数据库数据相比较 6输入备注:例如输入备注1与数据库数据相比较 7输入工号:例如输入工号1与数据库数据相比较 8输入姓名:例如输入姓名1与数据库数据相比较 |
测试结果 | 输入信息与数据库数据相比较,没有冲突则进行添加,修改等功能 输入信息与数据库数据相比较出现冲突: 系统提示:与数据库数据相冲突,请重新输入菜品出库 |
7结论与展望
经过了四个多月的学习和工作,我终于完成了基于spring boot的阳光外卖系统,能够主要实现菜品信息、菜品入库、菜品出库、购物车、订单、在线客服、菜品资讯模块。力求避免资源冲突。
整个系统已基本完成,但是由于时间不够充分,还有许多方面不够完善,如有些功能不能运行,功能不齐全等等。
1)页面中内容显得有些单簿,在后期工作中还会有所补充。
2)图片处理得不够美观,而且图片少,在以后会添加。
3)整个版面不是很整齐,以后改进。
4)代码书写不够规范,功能实现逻辑不够细致。
由于时间关系,系统存在很多不足,通过以后的继续学习研究,将对系统做进一步完善处理。
致 谢
历经多个月的努力,在老师的悉心指导下,我们终于顺利完成了毕业设计。这次毕业设计是对我们大学学习成果的考验和总结,是我们实现理想之前的一次实战,一次磨练,一次提高。从而让我们对自己有了一个更加准确的认识,对专业知识有了一个更加融会贯通的理解,更为下一阶段的学习打下了一个重要的基础。
正是因为有很多人的帮助,使我遇到的一些意想不到的难题和疑惑被一个个的攻破,使我的课题得以顺利地完全地达到了预期的目标,并使论文最终得以顺利地完成,在此一并感谢!
参考文献
- 基于Vue和Spring Boot的校园记录管理Web App的设计与实现[J]. 肖文娟;王加胜.计算机应用与软件,2020(04)
- 基于Spring Boot的网上在线教育系统的设计与实现[J]. 马英瑞;陈廉元;李娟;邹红;王冬梅.电脑知识与技术,2021(13)
- 基于Vue和Spring Boot的校园记录管理Web App的设计与实现[J]. 肖文娟;王加胜.计算机应用与软件,2020(04)
- 基于SSM框架的学生信息管理系统的开发与应用[J]. 孙善毅;朱宁.电子技术与软件工程,2021(04)
- 基于Java的购物网站设计与开发[J]. 陈猛.农家参谋,2020(08)
- 互联网时代下餐饮行业的管理与改革探索[J]. 杭坚.中国市场,2021(27)
- 互联网+明厨亮灶让食品安全可视化[J]. 金涛.中外企业家,2020(09)
- 基于Spring Boot技术的微信平台校园食堂智能点餐系统设计[J]. 刘琤;赵桓鑫;王先勇.无线互联科技,2019(15)
- 李迎正,孙岩,宋保,于复兴.基于Spring MVC及My Batis的地图定位实现[J].电脑编程技巧与维护,2019(4):144-145.
- 王金虎,金子琪,王美民,黄琴,冯爽,陈炜柔,陈浩.基于JAVA与MATLAB混编技术的毫米波测云雷达回波衰减订正仿真软件设计[J].计算技术与自动化,2019,38(04):133-138.
- 张振超,吴杰,陈序蓬.浅谈Java中My SQL数据库的连接与操作[J].信息记录材料,2020,21(02):144-145.
- 李有三.基于Spring Boot的智能推荐点餐系统研究与设计.2019.南昌大学,MA thesis.
- 弓宁.计算机软件开发中JAVA编程语言的应用[J].计算机产品与流通,2020(01):23.
- Design and Development of Backend Application for Public Complaint Systems Using Microservice Spring Boot[J]. Hatma Suryotrisongko;;Dedy Puji Jayanto;;Aris Tjahyanto.Procedia Computer Science,2017
- Personalized Micro-Service Recommendation System for Online News[J]. Marchela Asenova;;Christos Chrysoulas.Procedia Computer Science,2019(C)