基于SSM的美食分享平台开发说明书

摘要

在平时的生活当中我们想要分享吃过的美食,探讨美食的制作方法,分享我们的菜谱大多数都是通过小红书、微信、抖音、哔哩哔哩等分享平台或者视频平台,这类平台大多都是综合性的,涉及内容广泛不够专一。因此开发一款专门针对于美食分享的在线平台能更好的帮助美食爱好者,或者是厨师去分享美食、去制作美食。
本系统采用JAVAEE技术完成编码的实现,采用目前比较主流且成熟的技术简化系统B/S模式五层架构的开发,本系统采用的框架有包括:Springboot、SpringMVC以及持久层Mybatis;为了减轻服务器负担,更加轻松的进行页面的布局,使得用户获得更加流畅的体验,我们采用了Bootstrap和templates web引擎。
本文通过对现有美食分享平台的研究,对美食分享过程进行详细分析,在此基础上进行了功能模块的设计。本系统的功能包括:每日精选菜谱、菜谱收藏、笔记分享、饮食咨询四个板块,在上述分析设计的基础上,对数据库进行了详细的设计。最后进行统一整合构成该分享平台。

第一章 绪论

1.1 研究背景及意义

中国美食文化源远流长,鲁、川、粤、苏、浙、湘、徽、闽八大菜系给人们带来味觉和视觉上的盛宴,我们希望开发一款美食分享平台,主要是为了:
1、美食文化的推广:美食是人们的基本需求之一,也是各个国家和地区文化的重要组成部分。通过开发美食分享平台,可以让更多的人了解和传播各地的美食文化,推广美食文化。
2、互联网技术的发展:随着互联网技术的不断发展,人们的生活方式和消费习惯也在不断变化。通过开发美食分享平台,可以将传统的美食文化与现代的互联网技术相结合,提供更方便、更快捷的美食分享和交流平台。
3、社交化的需求:现在的年轻人越来越注重社交化,通过美食分享平台,可以让用户分享自己的美食经验和感受,与其他用户互动交流,增加社交化的体验。
4、商业化的潜力:美食分享平台还具有一定的商业化潜力,通过平台可以向用户推荐美食相关的产品和服务,从中获取商业收益。
开发美食分享平台具有重要的研究背景和意义,可以促进美食文化的传播和推广加强国民的文化自信,结合互联网技术和社交化需求,具有商业化潜力,可以为用户提供更好的美食体验。

1.2 研究现状分析

在平时的生活当中我们想要分享吃过的美食,探讨美食的制作方法,共享我们的菜谱大多数都是通过小红书、微信、抖音、哔哩哔哩等分享平台或者视频平台,这类平台大多都是综合性的,涉及内容广泛不够专一。因此开发一款专门针对于美食分享的在线平台能更好的帮助美食爱好者,或者是厨师去分享美食、去制作美食。

1.3 市场需求分析

在线美食分享平台是一个涵盖美食文化、互联网技术和社交化需求的平台,市场前景广阔。随着人们生活水平的提高,越来越多的人开始注重美食文化,同时互联网技术的快速发展也为美食分享平台提供了广阔的市场需求。
竞争情况:目前市场上已经有一些美食分享平台,例如美食杰、下厨房等。这些平台在美食分享、美食推荐、互动社交等方面都有一定的优势和用户基础。
用户特点:在线美食分享平台主要面向美食爱好者,年龄跨度较大,包括年轻人、家庭主妇、老年人等,用户具有一定的社交化需求和消费能力。
发展趋势:未来在线美食分享平台的发展趋势将更加注重个性化推荐、社交化互动、智能化服务等方面,同时也需要注重安全性和隐私保护,提升用户体验和用户满意度。

1.4 研究方法

本系统通过Javaweb技术,采用前后端分离的架构思想,前端采用前端采用Bootstrap+Vue来对美食分享页面进行制作渲染,以及采用ElementUI对后台管理员页面进行制作。后端则采用SpringMVC+Springboot+Mybatis来进行开发,结合redis技术实现数据的高速、高效的存取。

1.5 论文结构

本文以美食分享平台的设计与实现作为重点,第一章为本文的绪论部分,主要介绍平台设计的意义,发展现状,需求概述以及研究方法,第二章为美食分享平台需求分析,第三章为美食分享平台系统的设计部分,第四章为美食分享平台的实现与展示部分,第五章为系统的测试部分,最后是本文的总结。

第二章 美食分享平台需求分析

2.1 平台需求概述

在生活当中我们想要分享吃过的美食,探讨美食的制作方法,分享我们的菜谱大多数都是通过小红书、微信、抖音、哔哩哔哩等分享平台或者视频平台,这类平台大多都是综合性的,涉及内容广泛不够专一。因此开发一款专门针对于美食分享的在线平台能更好的帮助美食爱好者,或者是厨师去分享美食、去制作美食。

图2-1 平台结构图

2.2 用户需求分析

本平台主要包含三类用户,游客、普通用户、管理员。游客仅限于浏览平台内的信息。普通用户除了基本信息浏览外能够点赞收藏喜爱的美食,同时上传自己的美食制作笔记,在经过管理员审核过后发布在平台上。管理员主要负责系统用户管理、系统流量查看、每日精选菜谱的更新、菜谱导航栏设置、美食笔记审批这类管理操作。

图2-2 组织结构图

2.3 平台功能需求分析

由上节对系统目标用户的分析,可以看出本系统的主要参与有:游客、普通用户、管理员3个角色。
用例是从用户的观点对系统行为的一个描述,它能够帮助系统分析员理解系统的预期行为,因而它是一个强有力的工具。用例建模的主要功能是用来表达系统的功能性需求或者行为,更加直观地反映用户对目标系统的需求。通过上面分析可以建立用例模型来描述系统功能。下面就系统功能模型做详细分析。
根据三个角色能够将平台划分为3个子系统,分别是:
游客系统:访问浏览分享平台的信息。
用户系统:浏览平台信息,点赞收藏美食,上传美食笔记,修改用户信息。
管理员系统:系统用户管理、系统流量查看、每日精选菜谱的更新、菜谱导航栏设置、美食笔记评审。

图2-3 用户角色用例图
表2-1 用户点赞收藏美食用例图

用例名称点赞收藏美食
参与者普通用户
前置条件用户已经注册登录
后置条件
用例概述用户浏览到自己喜爱的美食对其进行点赞或者收藏的操作
基本时间流1、用户注册登录系统
2、浏览页面信息
3、点赞或收藏喜爱美食
4、在收藏页面对其进行查看
备选事件流
备注

表2-2 个人信息修改用例图

用例名称个人信息修改
参与者普通用户、管理员
前置条件用户已经注册登录
后置条件
用例概述用户根据自己的个人信息对平台内的个人信息进行修改
基本时间流1、用户注册登录系统
2、个人信息查看
3、根据自己信息对个人信息进行修改
备选事件流
备注

表2-2 美食笔记上传用例图

用例名称美食笔记上传
参与者普通用户、管理员
前置条件用户编写上传美食笔记
后置条件管理员对笔记进行审批,通过
用例概述用户编写自己的制作美食的笔记上传系统
基本时间流1、用户注册登录系统
2、编写美食笔记
3、上传美食笔记
4、等待管理员审批
备选事件流
备注

2.4 平台数据模型

为了把用户的数据要求清楚、准确地表述出来,通常需要建立一个概念模型。概念模型是面向问题地数据模型,是按照用户地观点地数据建立模型。将需求分析得到地用户需求抽象为信息结构即概念模型地过程也叫概念结构设计。它是整个数据库设计地关键。通常描述数据概念结构地方法是E-R图。它描述了从用户地角度看到地数据,反映了用户地现实环境,而在软件系统中的实现方法无关。
菜谱数据是美食分享平台的重要数据,下图2-4展示了菜谱数据的E-R图:
classify_info菜谱种类信息,一个菜谱能够对应多个菜谱小类;
sub_classify_info菜谱小类信息,一个菜谱小类中能包含多个菜谱信息;
foods_menu_info菜谱信息,菜谱信息包含,编号、菜谱名称、菜谱描述、标签、小类编号(所属小类)、文件编号、文件名,上传者、权限归属、下载权限。

图2-4 菜谱数据E-R图

2.5 数据安全需求

数据安全在系统中有着非常重要的地位,一般可以分为两类:一类是传输过程中的数据安全,第二类是数据在处理以及存储过程中的安全。
在进行系统性安全需求分析时,我们进行了以下防范:
一、传输过程中对数据进行了加密,同时设置了数据缓存区,以保证数据在传输过程中的安全性。
二、对页面的访问进行了拦截处理,避免用户暴力破解。
三、设置Druid数据访问日志,定期查看异常数据访问。
四、权限设计,对各用户分配不同的角色权限,防止不同权限的用户对系统进行越界操作。
五、定期对数据进行备份,保证系统在数据出问题的时能及时进行修复。

第三章 美食分享平台系统设计

3.1 平台设计目标

美食分享平台主要分为三大块:
游客:进入平台浏览平台公开数据。
普通用户:除浏览数据之外能够评论收藏点赞喜欢菜谱美食、能够编写美食笔记分享在平台上。
后台管理:对用户信息,平台数据,菜谱推荐等平台信息进行管理。

3.2 平台架构设计

B/S:Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端选用浏览器(Browse)运行软件。B/S结构的重要特征就是分布性强、维护方便、开发简单并且共享性强、总体拥有费用低。
JavaEE:Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等。企业版本帮助开发和部署可移植、健壮、可伸缩切安全的服务端Java应用。Java EE是在JavaSE的基础上构建的他提供Web 服务、组建模型、管理和通信API。可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和web2.0应用程序。
Redis:Redis 是一个开源的使用 ANSI C 语言编写,可使用网络、也使用内存亦可持久化 的日志型、键值对数据库。并提供多种语言的 API [11]。 本系统中使用 Redis 作为前后台交流的服务器存储 Session,以完成前后台的通 信,其中 Redis 安装在 Ubuntu 的 Docker 容器中。Redis 是基于内存存储,因此,若 排除网络因素,Redis 可达到很快的响应速度。
基于以上分析,本系统采用基于JavaEE的MVC架构的B/S模式进行开发,我们选用的框架为SSM框架。SSM框架是Spring MVC ,SpringBoot和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为View层,Controller层,Service层,DAO层,VO层五层,使用Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。

3.3 平台功能设计

通过对平台的分析,我们将平台划分为了三个模块分别是游客,普通用户和管理员。每个模块分别对应着它的功能。
平台整体功能图如图3-1所示:

图3-1 整体功能模块

3.4 普通用户模块

3.4.1 笔记上传功能

用户在平台注册完成后登录账号能够进行美食笔记的编写、上传,上传过后经过管理员的审批能够发布在分享平台的笔记区当中。
笔记编写流程如图3-2所示:

图3-2 笔记编写流程图

3.3.2 个人信息修改功能

用户在注册登录系统后能够根据自身信息对个人信息进行修改。
个人信息修改流程如图3-3所示:

图3-3 个人信息修改流程图

3.3.3 点赞评论收藏功能

用户登录系统后能够对自己喜欢的美食进行点赞评论收藏的操作。
点赞评论收藏流程如图3-4所示:

图3-4 点赞评论收藏流程图

3.5 管理员模块

管理员主要负责平台的后台管理,对用户信息修改、美食笔记审批、平台访问数据、菜谱导航设置。

3.5.1 用户管理

系统用户管理模块包括了修改用户权限,添加新用户,修改用户信息三个主要的功能。

图3-5 用户管理功能结构图

3.5.2 笔记审批

管理员对用户提交上来的笔记进行审批通过,通过后上传至平台分享。
笔记审批流程如图3-6所示:

图3-6 笔记审批流程图

3.5.3 菜谱上传

管理员根据收集到的菜谱上传至平台,菜谱内容包括菜品名称、简述、标签、类别、图片这类基本内容。
菜谱上传流程如图3-7所示:

图3-7 菜谱上传流程图

3.6 平台数据库设计

3.6.1 数据库逻辑设计

设计与使用数据库系统的过程是把现实世界的数据经过人为的加工和计算机的处理,又为现实世界提供信息的过程,在给定的DBMS(数据库管理系统)、操作系统和硬件环境下,表达用户的需求,并将其转换为有效的数据结构,构成较好的数据库模式,这个过程称为数据库设计。数据库设计是建立数据库及其应用系统的技术,是信息开发和建设中的核心技术,具体说,数据库设计是对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户地应用需求。
根据以上地分析,本平台一共构建以下几个部分的数据表:

序号表名描述
1admin_info管理员信息表
2advertiser_info系统公告信息表
3classify_info菜谱大类信息表
4collect_info菜品收集信息表
5foods_menu_info菜品信息表
6message_info留言信息表
7news_info饮食咨询信息表
8notes_info美食笔记信息表
9nx_system_file_info系统图片收集表
10praise_info菜品归类信息表
11sub_classify_info菜谱小类信息表
12user_info用户信息表

表3-1 美食分享平台相关数据表
下面介绍主要业务处理相关数据表及结构:
表3-2 管理员信息表(admin_info)

字段名数据类型长度字段中文描述
idint11主键,编号
namevarchar255名字
passwordvarchar255密码
nicNamevarchar255昵称
sexvarchar255性别
ageint11年龄
birthdayvarchar255生日
phonevarchar255电话
addressvarchar255住址
codevarchar255编号
emailvarchar255邮箱
cardIdvarchar255身份证号码
levelint11权限等级

表3-3 用户信息表(user_info)

字段名数据类型长度字段中文描述
idint11主键,编号
namevarchar255名字
passwordvarchar255密码
nicNamevarchar255昵称
sexvarchar255性别
ageint11年龄
birthdayvarchar255生日
phonevarchar255电话
addressvarchar255住址
codevarchar255编号
emailvarchar255邮箱
cardIdvarchar255身份证号码
levelint11权限等级

表3-4 菜品信息表(foods_menu_info)

字段名数据类型长度字段中文描述
idint11主键,编号
namevarchar255菜品名称
descriptionvarchar255描述
tipsvarchar255标签
subIdbigint11菜谱小类id
fileIdbigint11图片文件id
fileNamevarchar255图片文件名
userNamevarchar255上传者
levelint11权限
uploadUserIdbigint11上传者编号

表3-5 美食笔记信息表(notes_info)

字段名数据类型长度字段中文描述
idint11主键,编号
namevarchar255笔记名称
timevarchar255上传时间
userIdbigint11用户id
contentlongtext255笔记内容
statusint11审核状态

3.6.2 存储过程设计

本系统在业务处理时调用了存储过程。由于本系统采用的时SSM框架进行开发,采用的开发语言为Java面向对象,考虑到可移植性等方面的因素,因此在数据库调用设计时没有把所以业务逻辑全部设计成存储过程。

3.7 平台页面设计

用户访问本系统的设备不一,同时市场上,设备的屏幕的规格不一,要满足不 同用户的正常访问,使得系统有更好的视觉效果,使得用户有更好的体验。本系统 在页面设计上,借鉴了 Bootstrap 的设计模式,使用响应式布局。使用 Jquey 与 Bootstrap 前端框架,使得页面能够自适应不同的设备。当用户访问本系统时,系统 将会判断用户使用何种设备访问,获取设备屏幕尺寸,然后调整系统页面,展示给用户。同时本系统中,添加了用户行为判断,当用户执行某些敏感动作时,系统将会给与用户提示。

第四章 美食分享平台的实现

本系统为了减低代码的耦合度,采用 MVC 模式设计,将前端和后台代码分离开, 便于日后系统的扩展和维护。MVC 模式分为:模型(Model),视图(View)和控制 (Controller),本系统使用 SpringBoot 快速开发,微服务开发,多个 SpringBoot 可组成 一个集群,使前后台分离,并使用 Redis 共享 Session 使前后台保持通信。其中前端 使用了 Freemarker 和 Jsrender 技术渲染前端页面,前端页面无需等待数据全部获取 才能显示页面,而是先加载静态页面,再异步获取数据,这种方式使系统有更好的 用户体验。

4.1 Springboot微服务架构

本平台中的 SpringBoot 主要与 Mybatis 相结合,SpringBoot 管理 MVC 架构中的 Controller(控制)而 Mybatis 管理 Model(模型),系统中使用了 SpringBoot 注释自 动实例 Mybatis 工厂类,并注入到 Controller 类中,使得项目只需集中关注业务逻辑 的实现,而 Mybtais 也具备了注解编写 SQL,本系统正是使用了该方法,抛弃传统 XML 编写,使得项目更加轻便,SQL 管理更加容易,也为了日后系统的扩充提供了条件。 而 SpringBoot 作为 Controller( 控制),主要处理用户请求,在本系统中,使用 SpringBoot 的注解将用户请求映射到具体方法中,使得业务的实现更加便捷。SpringBoot+Mybatis 架构如图 4-1所示:
image.png
图4-1 SpringBoot+Mybatis 架构

4.2 平台功能实现

4.2.1 平台结构划分

image.png
图4-2 平台结构图

4.2.2 持久层的实现

本系统是使用 MVC 分层模式并结合 SpringBoot 与 Mybatis 框架开发,结构清晰, 而且将参数封装成进entity包,使得系统的参数请求有了规范和清晰的逻辑,以下展示的是菜谱上传功能,本系统中大部分类图与之大同小异。菜谱上传类图展示了将菜谱信息封装成一个简单的entity类对其进行实例化,然后在FoodsMenuInfoDao中调用该类,执行FoodsMenuInfoDao接口上在FoodsMenuInfoMapper.xml中通过注解编写好的SQL语句,然后在Controller控制类中调用接口上的方法最终实现增删改等具体操作。FoodMenuInfoVo则主要作用是用于解耦数据传输和数据逻辑,使得各层的功能和职责更加清晰和明确。

图4-3 菜谱上传类图
Mybatis配置文件如图4-3所示:
image.png
图4-4 mybatis配置文件

4.2.2 表示层实现

表示层通过SpringMVC进行实现。在没有使用SpringMVC之前我们都是使用Servlet在做Web开发。但是使用Servlet开发在接收请求参数,数据共享,页面跳转等操作相对比较复杂。servlet是java进行web开发的标准,既然springMVC是对servlet的封装,那么很显然SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装。
SpringMVC配置文件如图4-4所示:
image.png
图4-5 SpringMVC配置文件

4.2.3 笔记功能实现

通过调用quill插件实现富文本编辑,实现了笔记输入的功能。

image.png
图4-6 文本编辑器
image.png
图4-7 文件编辑实现JavaScript

4.3 功能展示

4.3.1 用户功能

用户功能主要包括页面浏览、菜品点赞评论收藏、笔记编写这三大功能。
IMG_0390.jpeg
图4-8 系统首页
IMG_0391.PNG
图4-9 系统公告
IMG_0393.PNG
图4-10 菜谱页面
IMG_0397.PNG
图4-11 笔记页面
IMG_0392.jpeg
图4-12 笔记详细
IMG_0395.PNG
图4-13 饮食资讯

4.3.2 管理员功能

后台管理:对用户信息,平台数据,菜谱推荐等平台信息进行管理。
IMG_0399.PNG
图4-14 后台登陆页面
IMG_0398.PNG
图4-15 后台管理首页
IMG_0401.PNG
图4-16 用户信息
IMG_0400.PNG
图4-17 菜谱信息

第五章 系统测试

5.1 性能测试

用户在网站的响应超过 3 秒时就会选择其他网站,因此网站的性能测试以及调 优是必不可少的,本系统的性能测试主要以浏览器访问为主。

5.2 兼容性测试

本系统兼容性测试主要是测试系统对当前各主流浏览器的兼容性,测试的浏览 器如下:IE9.0、IE11.0、谷歌,火狐,傲游,360 浏览器。
测试结果分析表如表5-1所示:

测试结果
浏览器
后台登录页面后台主页面系统首页健康上报
Firefox正常正常正常正常
IE9.0正常正常正常正常
IE10.0正常正常正常正常
IE11.0正常正常正常正常
GoogleChrome正常正常正常正常
360浏览器正常正常正常正常

表5-1 兼容性测试结果表
通过以上测试数据可以发现,本系统对当前主流的浏览器包括 I IE9.0、IE11.0、 谷歌,火狐,360 浏览器等兼容性良好,没有发现不兼容的情况。

5.3 功能性测试

本系统中由于系统功能众多,因此选择部分功能进行功能测试,选择用户注册、菜品评论、编写笔记这三大功能进行测试。
用户注册测试用例为黑盒测试,功能描述如下:

  1. 输入信息注册新用户;
  2. 输入已注册信息注册。
功能描述用户注册测试用例
用例目的测试用户注册是否能成功
前提条件用户输入本系统地址
用例描述输入/动作期望输出/响应测试结果
用户是否能够成功注册a、输出新的信息进行注册;
b、输入已注册用户信息进行注册。
a、用户注册成功
b、用户已存在
正常

表5-2 用户注册测试用例表
菜品品论测试用例为黑盒测试,功能描述如下:

  1. 用户登录系统;
  2. 选择喜爱菜品,在评论区进行评论。
功能描述菜品评论测试用例
用例目的测试用户是否能进行菜品评论
前提条件1、用户注册系统;
2、选择喜爱菜品。
用例描述输入/动作期望输出/响应测试结果
用户是否能对喜爱菜品进行评论选择喜爱菜品进行评论评论成功正常

表5-3 菜品评论测试用例表
编写笔记测试用例为黑盒测试,功能描述如下:

  1. 用户登录系统;
  2. 打开后台管理系统,选择笔记编写,然后进行编写上传。
功能描述笔记编写测试用例
用例目的测试用户是否能进行笔记编写
前提条件1、用户注册系统;
2、进入后台管理系统。
用例描述输入/动期望输出/响应测试结果
用户是否能进行笔记编写输入自己编写的笔记笔记提交成功等待管理员审核正常

表5-3 菜品评论测试用例表

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值