目 录
摘要 I
ABSTRACT II
第一章 绪论 1
1.1 研究背景 1
1.1.1 国内研究现状 1
1.1.2 国外研究现状 2
1.2 研究目的和意义 3
1.3 相关技术介绍 3
1.3.1 核心语言Java 3
1.3.2 核心框架SpringBoot 3
1.3.3 SSM框架 4
1.3.4 响应式框架Bootstrap 4
1.4 系统解决的主要问题及论文结构 4
1.4.1 系统解决的主要问题 4
1.4.2 论文结构 5
第二章 需求分析 6
2.1 可行性分析 6
2.1.1 美食菜谱分享平台技术可行性 6
2.1.2 美食菜谱分享平台操作可行性 6
2.1.3 美食菜谱分享平台经济可行性 6
2.2 需求分析 6
2.2.1 美食菜谱分享平台参与者需求模型 6
2.2.2 美食菜谱分享平台用例图 7
2.2.3 美食菜谱分享平台用例描述 8
2.3 本章小结 12
第三章 系统设计 13
3.1 功能设计 13
3.1.1 美食菜谱分享平台总体功能设计 13
3.1.2 美食菜谱分享平台各功能模块设计 13
3.2 数据库设计 15
3.2.1 美食菜谱分享平台数据库概念设计 15
3.2.2 美食菜谱分享平台数据库详细设计 19
3.3 本章小结 21
第四章 系统实现 22
4.1 美食菜谱发布模块 22
4.2美食菜谱收藏模块 24
4.3美食爱好者管理模块 25
4.4美食类别管理模块 27
4.5系统信息管理模块 29
4.6 本章小结 30
第五章 系统测试 31
5.1 系统测试的方法 31
5.2 系统功能的测试 31
5.2.1 美食菜谱发布模块测试用例 31
5.2.2 美食爱好者管理模块测试用例 32
5.2.3 美食类别管理模块测试用例 33
5.3 本章小结 33
第六章 结论 34
参考文献 35
致谢 37
第一章 绪 论
美食菜谱分享平台的绪论部分解绍研发背景以及美食菜谱分享平台在国内和国外不同国家的目前现状以及优势与劣势,从而确定美食菜谱分享平台的研发意义。最后,介绍美食菜谱分享平台的核心技术。
1.1 研究背景
美食文化是一种广视野、深层次、多角度、高品位的悠久区域文化,是人民在长久的生产和生活实践中,在食源开发、食具研制、食品调理、营养保健和饮食审美等方面创造、积累并影响周边国家和世界的物质财富及精神财富。中国饮食文化源远流长,普遍承认的有八大菜系鲁菜、川菜、粤菜和苏菜,闽菜、浙菜、湘菜、徽菜。我国的菜系,是指在一定区域内,由于气候、地理、历史、物产及饮食风俗的不同,经过漫长历史演变而形成的一整套自成体系的烹饪技艺和风味,并被全国各地所承认的地方菜肴。菜肴在烹饪中有许多流派。清代的时候,中国饮食分为京式、苏式和广式。民国开始,中国各地的文化有了相当大的发展,民国时分为华北、江浙、华南和西南四种流派。后来华北流派分出鲁菜,成为八大菜系之首,江浙菜系分为苏菜、浙菜和徽菜,华南流派分为粤菜、闽菜,西南流派分为川菜和湘菜。后来形成最有影响和代表性的也为社会所公认的有:鲁、川、苏、粤、闽、浙、湘、徽等菜系,即被人们常说的中国“八大菜系”。中国美食文化在世界享有盛誉,随着历史的进步和社会文明的发展,中国的“吃”已经超越了它的字面意义,逐渐成长为人类历史和文明中的一颗璀璨明珠,并有其独特的地位[1]。
而美食又是人们每日生活的重要组成部分,随着计算机技术的融入,各类型的美食分享平台跃入大众的视野,在提供分享美食菜谱、检索美食菜谱和学习美食菜谱知识等便民功能的同时,也因为质量与可靠性等问题给人们带来了一些不便。
1.1.1 国内研究现状
近年计算机技术在中国的发展飞快,这也促使原本需要厨师之间手口相传的厨艺被搬到了美食菜谱平台这一更广阔的舞台上[2]。我国的美食菜谱分享平台从性质上可以分成大众类美食菜谱平台、生鲜类美食菜谱平台、社交类美食菜谱平台和专业类美食菜谱平台四种。大众类美食菜谱平台比较著名的包括下厨房、美食天下等,是专于美食菜谱分享的平台。而生鲜类美食菜谱平台更多的属性集中在电商方面,每一道美食菜谱实际上都是为了推销平台的商品。社交类美食菜谱平台的侧重点是用户之间的交互性,目的是通过社交提升用户对美食菜谱平台的黏性。从八大菜系到地方特色、从方便速食到健康餐饮、从经典美味到潮流尝鲜,承载着中国人丰富情感的美食已不再只是满足口腹之欲,更多是慰藉心灵之用。无论是吃播、教学、故事,还是创意料理类的美食短视频,都能让受众在短时间内最直观地感受美食的魅力[3]。与本次开发从本质上同类型的是大众类美食菜谱平台,这些平台存在着许多问题,是本次研究的解决目标。在不限制分享餐饮美食平台发展的情况下,通过鼓励、支持、管理和监督分享餐饮美食平台,为分享餐饮美食平台提供更公平、规范、制度化的发展环境[4],随着以用户为中心的web2.0的发展,特别是大众点评、美团网等美食点评网站的飞速发展,为人们打造了一个良好的发表自己的观点和想法的环境,由此产生了大量的用户对于某一对象的评论[5]。若不解决的话则会为美食菜谱分享平台的用户带来了使用时的不便,容易被内容误导产生食品安全等相关问题,无法管控的评论区也会出现敏感话题等违反社会良俗的问题。缺少数据统计与可视化让美食菜谱分享平台的运营者无法准确掌握用户动态和平台的内容效果,因此急需一款能够解决上述问题的美食菜谱分享平台来实现服务优化[6]。
1.1.2 国外研究现状
在英国、日本和美国等发达国家中,美食菜谱分享平台同样得到了广泛的接受和大力的追捧。Allrecipes、Food Network、Epicurious是美国最著名的美食菜谱分享平台,拥有大量的用户群体和海量的菜谱资源,这些平台除了提供基础的菜谱分享和检索服务外,还提供美食博客、美食食品等方式吸引厨艺达人入驻,值得本次设计所借鉴[7]。Cooking Light、Serious Eats、Bon Appetit等平台是美国的专业美食菜谱分享平台,为专业厨师提供了社区空间[8]。英国的BBC Good Food、Jamie Oliver也同样聚集了大量的美食爱好者,并且衍生出了针对私人定制的美食菜谱定制平台,诸如Veganuary、Gluten-Free Heaven等[9]。将目光放在同为亚洲国家的日本,Cookpad是最为著名的日本民众美食菜谱分享平台。这个平台还额外拓展了一些关于美食历史和美食文化的模块[10]。纵使各个国家的国情不同,但这些美食菜谱分享平台也存在与我国相似的问题,例如菜谱中的制作方法不够详细,甚至存在错误,为初学者带来不正确的引导;用户交互体验不够良好,界面不够美观等[11]。
1.2 研究目的和意义
开发美食菜谱分享平台的目的和意义在于为用户提供更完美的体验,由于用户拍摄的食材图片场景是复杂多样的,厨房背景、光照条件不同或者是手机滤镜等多个因素的影响,可能会导致食材的颜色等特征与真实存在明显差距[12]。于是特地增加了菜谱的多样性和质量把控,促进美食文化相互之间的交流和学习,营造一个供人们分享美食和菜谱的平台,大家可以在这个网站上看到来自世界各地的特色美食,还能在网站上分享各式各样的美食菜谱以及精美的美食图片[13]。利用严苛的审核机制将存在问题的美食菜谱剔除,保证平台质量。研发评论管控功能,维护美食菜谱分享平台良好的社区氛围,对美食菜谱分享平台中设计敏感话题的评论加以控制[14]。利用可视化与数据统计功能,帮助美食菜谱分享平台的运营者更好地了解用户动向以及美食菜谱的接受程度,方便平台运营者实现对平台决策的制定[15]。
1.3 相关技术介绍
1.3.1 核心语言Java
Java是目前使用最为广泛的编程语言之一,其无关性成为了最亮眼的优点。操作系统的变化对于其他编程语言是一道难关,而且极有可能导致程序出错或者无法运行,但是对于Java来说做到了一次写成,处处运行。
Java适用于开发大型的、高并发的Web系统,而美食菜谱分享平台的目标群体是五湖四海热爱美食的群众用户,随时可能发生并发的问题,所以利用Java的高并发处理机制能够轻易应对并解决问题。同时由Java所开发出的高性能框架十分丰富,选择Java开发美食菜谱分享平台能够更轻松地接入这些高性能框架,为功能扩展和系统稳定保驾护航[16]。
1.3.2 核心框架SpringBoot
美食菜谱分享平台的开发周期有限,因此需要一款能够提供快速开发的同时还能保证系统性能的高效框架,SpringBoot是不二的选择。因为SpringBoot是一个依靠大量注解实现自动化配置的全新框架。在搭建Spring项目时,我们只需要在其中添加相应的场景依赖,而且不需要额外手动添加配置,这样一来减少了开发人员的工作量,并且顺便提高了工作效率。另外SpringBoot框架内部已经实现了与常用三方库的整合,所以基本上不需要额外生成配置代码和XML配置文件。如果需要自定义配置的话,则可选用Java config替换传统的配置文件,极大提高了管理和查看的方便性。
况且SpringBoot本身就是使用Java语言研发的,所以可以和核心开发语言默契协作,并且因为开箱即用的设定,能够快速构建美食菜谱分享平台的Web模块、缓存模块和数据持久层模块。而其自身自动带有Tomcat服务器,为美食菜谱分享平台的环境搭建节省了时间和精力成本[17]。
1.3.3 SSM框架
因为使用了SpringBoot框架,所以在Web模块、缓存模块和数据持久层模块上的选择SSM框架是最为适合的。选择Spring的目的是注重其内存和缓存空间的管控能力,为运营人员和美食爱好者提供充足的数据运营空间;选择SpringMVC是注重其轻量级的框架结构和高效率的用户请求应答能力,能够在短时间为用户请求实现响应,提升用户对美食菜谱分享平台的体验感;选择Mybatis是注重其在数据管控方面的安全可靠性,同时Mybatis也是高效的,能够做到对数据的检索和存储十分迅速,同样能降低服务器响应用户请求的应答时间,带来体验感的提升[18]。
1.3.4 响应式框架Bootstrap
Bootstrap库里自带许多现成的代码片段,利用Bootstrap的开发者将不必再花大量时间和精力来编码,只需要找到合适正确的代码,插入到适当位置即可。此外Bootstrap提供了很多实用性的JQuery插件,使得开发者能够更方便地实现各种常规特效。
目前响应式的页面效果是各类大型网站都在推崇的UI模式,美食菜谱分享平台作为一款需要与时俱进的产品,自然也要实现响应式UI的开发。在众多响应式界面开发框架中Bootstrap以其独到的栅格系统是最为热门的选择,利用栅格系统可以帮助美食菜谱分享平台能够做到自动适应移动端和PC端,这也为使用美食菜谱分享平台的用户提供了良好的体验感[19]。
1.4 系统解决的主要问题及论文结构
1.4.1 系统解决的主要问题
美食菜谱分享平台主要有两个角色,分别是用户和管理员。解决的主要问题在于实现用户和管理员的功能:用户主要有个人信息管理功能、个人菜谱管理功能、个人美食作者关注功能、美食菜谱预览功能、美食菜谱评论功能。管理员主要有美食评论管理功能、平台会员管理功能、管理员信息管理功能、美食笔记管理功能、美食类别管理功能、统计分析功能[20]。
1.4.2 论文结构
美食菜谱分享平台的论文结构如下:
第一章,绪论:介绍平台的背景、现状和开发意义;
第二章,需求分析:介绍可行性与用例分析;
第三章,系统设计:介绍美食菜谱分享平台的功能和数据库;
第四章,系统实现:介绍美食菜谱分享平台最为关键的功能如何实现;
第五章,系统测试:选取具有代表性的功能模块介绍测试用例的编写情况和编写结果。
第二章 需求分析
本章利用多角度多维度的方式分析美食菜谱分享平台的研发可行性,在确定可以研发后分析参与者角色,并针对不同参与者的需求进行初步设计,绘制用例图和添加用例描述。
2.1 可行性分析
2.1.1 美食菜谱分享平台技术可行性
美食菜谱分享平台选择了目前开发领域中最成熟最流行的多款技术,集视图层、数据层和控制层最优秀的多款框架于一体,能够保证技术在符合当前时代潮流要求的同时还具备一定的领先性,并且能够随时集成新的框架技术提升美食菜谱分享平台的功能,所以技术可行。
2.1.2 美食菜谱分享平台操作可行性
美食菜谱分享平台在操作角度利用按钮、超链接等方式触发服务,使用者不必掌握过于专业的操作技术,不用为使用系统付出额外的学习成本,并且平台使用流程简洁易上手,所以操作可行。
2.1.3 美食菜谱分享平台经济可行性
美食菜谱分享平台的开发技术和开发软件大部分都是免费的,因此开发成本低;而使用者在使用美食菜谱分享平台的过程中也不需要额外的购买特殊设备,自己拥有的手机、平板或者个人电脑都可以作为使用设备,节省了在设备采购方面的支出,因此经济可行。
2.2 需求分析
2.2.1 美食菜谱分享平台参与者需求模型
美食菜谱分享平台的参与者包括美食爱好者和平台运营人员两种,美食爱好者负责在平台分享菜谱,收藏菜谱以及关注菜谱制作人,而平台运营者负责管理整个平台的数据,调整菜谱制作人的登录权限等等。针对美食菜谱分享平台参与者的具体说明如表2-1所示。
表2-1美食菜谱分享平台参与者说明表
序号 词汇 同义词 描述
1 美食爱好者 会员、用户 美食爱好者可以利用美食菜谱分享平台分享自己的菜谱、收藏他人菜谱或直接收藏美食作者,并且可以针对菜谱发表自己的评论等
2 平台运营人员 管理员、管理人员 平台运营人员可以利用美食菜谱分享平台管理Banner轮播图数据、美食菜谱数据、美食爱好者数据、评论数据等,调整菜谱制作人的的登录权限等,维护美食菜谱分享平台的氛围
2.2.2 美食菜谱分享平台用例图
作为美食菜谱平台的运营人员可以使用美食评论管理功能、平台会员管理功能、管理员信息管理功能、美食笔记管理功能、美食类别管理功能等。美食菜谱分享平台的运营人员用例图如图2-1所示。
图2-1 美食菜谱分享平台运营人员用例图
作为用户可以使用的功能包括美食爱好者登录功能、美食爱好者注册功能、个人信息管理功能、个人菜谱管理功能、个人收藏管理功能、个人关注管理功能、退出系统功能、美食菜谱预览功能、关注美食作者功能、收藏美食菜谱功能、评论美食菜谱功能美食菜谱分享平台的用户用例图如图2-2所示。
图2-2 美食菜谱分享平台用例图
2.2.3 美食菜谱分享平台用例描述
美食菜谱分享平台登录模块用例描述如表2-2所示。
表2-2 美食菜谱分享平台登录模块描述表
用例条目 描述
用例名称 登录模块
主要参与者 平台运营人员/美食爱好者
其他参与者 此模块未注册的游客需要先注册成为美食爱好者才能使用
描述 美食菜谱分享平台为美食爱好者和平台运营人员提供了不同的登录页面便于进入各自的操作管理中心,页面不同但是登录模块的处理修成是相同的
前置条件 平台运营人员/美食爱好者拥有美食菜谱分享平台的账号和密码
后置条件 平台运营人员/美食爱好者输入了正确的账号和密码
基本流程 1.平台运营人员/美食爱好者跳转到美食菜谱分享平台提供的登录页面
2.平台运营人员/美食爱好者录入独属于自己的账号和密码
3.平台运营人员/美食爱好者提交对于登录的客户端请求
4.美食菜谱分享平台根据平台运营人员/美食爱好者输入的账号和密码给出登录结果
结束 平台运营人员/美食爱好者登录成功或者登录失败或者放弃登录
表2-2(续)
用例条目 描述
实现约束和说明 1.平台运营人员/美食爱好者必须完整输入自己的账号密码,其中任何一个缺失都无法进入美食菜谱分享平台
2.只有当平台运营人员/美食爱好者的账号和密码全部正确时才能登录成功,任何一个错误都将无法登录到美食菜谱分享平台
其他事件流 平台运营人员登录成功后跳转到管理中心,美食爱好者登录成功后跳转到个人中心
美食菜谱分享平台注册模块用例描述如表2-3所示。
表2-3 美食菜谱分享平台注册模块描述表
用例条目 描述
用例名称 注册模块
主要参与者 美食爱好者
其他参与者 此模块平台运营人员无法使用
描述 美食菜谱分享平台为美食爱好者提供了注册页面便于获取分享美食菜谱的权限,美食爱好者需要严格按照页面提示输入个人信息
前置条件 美食爱好者未曾注册过美食菜谱分享平台
后置条件 美食爱好者输入了符合美食菜谱分享平台注册要求的个人信息
基本流程 1.美食爱好者跳转到美食菜谱分享平台提供的注册页面
2.美食爱好者按照美食菜谱分享平台的数据规范要求录入独属于自己的个人信息
3.美食爱好者提交对于注册功能的客户端请求
4.美食菜谱分享平台根据美食爱好者输入的信息给出注册结果
结束 美食爱好者注册成功或者注册失败或者放弃注册
实现约束和说明 1.美食爱好者必须完整输入自己的完整的个人注册信息,其中任何一个信息缺失都会导致无法注册成功且不能获取美食菜谱分享平台的使用权限
2.只有当美食爱好者的个人信息全部符合美食菜谱分享平台的要求时才能注册成功,任何一个错误都将无法注册美食菜谱分享平台
其他事件流 美食爱好者注册成功后跳转到登录页面
美食菜谱分享平台发布美食菜谱模块用例描述如表2-4所示。
表2-4 美食菜谱分享平台发布美食菜谱模块描述表
用例条目 描述
用例名称 发布美食菜谱模块
主要参与者 美食爱好者
其他参与者 此模块平台运营人员无法使用
描述 美食菜谱分享平台为美食爱好者提供了发布美食菜谱页面便于美食爱好者分享个人的美食菜谱,美食爱好者需要严格按照页面提示输入美食菜谱信息
前置条件 美食爱好者已经获取美食菜谱分享平台的使用权限
表2-4(续)
用例条目 描述
后置条件 美食爱好者输入了个人正确的账号密码登录进入了美食菜谱分享平台
基本流程 1.美食爱好者跳转到美食菜谱分享平台提供的美食菜谱发布页面
2.美食爱好者按照美食菜谱分享平台的数据规范要求录入自己的个人的美食菜谱信息,并上传图片、视频和电子资料
3.美食爱好者提交对于发布美食菜谱的客户端请求
4.美食菜谱分享平台根据美食爱好者输入的美食菜谱信息给出发布结果并跳转到个人美食菜谱管理界面
结束 美食爱好者发布成功或者发布失败或者放弃发布
实现约束和说明 1.美食爱好者必须完整输入自己的菜谱信息,其中任何一个缺失都无法注册成功发布美食菜谱信息,包括视频、图片和电子资料
2.只有当美食爱好者的菜谱信息全部符合美食菜谱分享平台的要求时才能发布成功,任何一个错误都将无法发布美食菜谱信息
其他事件流 美食爱好者成功发布菜谱后跳转到个人菜谱管理页面
美食菜谱分享平台编辑美食菜谱模块用例描述如表2-5所示。
表2-5 美食菜谱分享平台编辑美食菜谱模块描述表
用例条目 描述
用例名称 编辑美食菜谱模块
主要参与者 美食爱好者
其他参与者 此模块平台运营人员无法使用
描述 美食菜谱分享平台为美食爱好者提供了编辑美食菜谱页面便于美食爱好者改动个人的美食菜谱,美食爱好者需要严格按照页面提示输入美食菜谱信息
前置条件 美食爱好者已经获取美食菜谱分享平台的使用权限
后置条件 美食爱好者输入了个人正确的账号密码登录进入了美食菜谱分享平台
基本流程 1.美食爱好者跳转到美食菜谱分享平台提供的美食菜谱编辑页面
2.美食爱好者按照美食菜谱分享平台的数据规范要求录入自己的个人的美食菜谱信息,并上传图片、视频和电子资料
3.美食爱好者提交对于编辑美食菜谱的客户端请求
4.美食菜谱分享平台根据美食爱好者输入的美食菜谱信息给出编辑结果并跳转到个人美食菜谱管理界面
结束 美食爱好者编辑成功或者编辑失败或者放弃编辑
实现约束和说明 1.美食爱好者必须完整输入自己的菜谱信息,其中任何一个缺失都无法注册成功编辑美食菜谱信息,包括视频、图片和电子资料
2.只有当美食爱好者的菜谱信息全部符合美食菜谱分享平台的要求时才能编辑成功,任何一个错误都将无法编辑美食菜谱信息
其他事件流 美食爱好者成功编辑菜谱后跳转到个人菜谱管理页面
美食菜谱分享平台收藏美食菜谱模块用例描述如表2-6所示。
表2-6 美食菜谱分享平台收藏美食菜谱模块描述表
用例条目 描述
用例名称 收藏美食菜谱模块
主要参与者 美食爱好者
其他参与者 此模块平台运营人员无法使用
描述 美食菜谱分享平台为美食爱好者提供了收藏美食菜谱功能便于美食爱好者快速找到自己感兴趣的美食菜谱,美食爱好者需要确保自己是已登录的状态才能收藏美食菜谱
前置条件 美食爱好者已经获取美食菜谱分享平台的使用权限
后置条件 美食爱好者输入了个人正确的账号密码登录进入了美食菜谱分享平台
基本流程 1.美食爱好者跳转到美食菜谱分享平台提供的美食菜谱详情页面
2.美食爱好者点击菜谱上方的收藏美食菜谱按钮发起对美食菜谱的收藏请求
3.美食菜谱分享平台检索美食爱好者的收藏记录
4.美食菜谱分享平台根据美食爱好者的收藏情况给出收藏结果
结束 美食爱好者接收到平台给出的收藏结果或者放弃收藏
实现约束和说明 1.美食爱好者针对同一菜谱只会生成一条收藏数据
2.美食爱好者可以删除个人的美食菜谱收藏数据
其他事件流 美食爱好者点击收藏按钮后会发送Ajax异步收藏请求
美食菜谱分享平台收藏美食菜谱作者模块用例描述如表2-7所示。
表2-7 美食菜谱分享平台收藏美食菜谱作者模块描述表
用例条目 描述
用例名称 收藏美食菜谱作者模块
主要参与者 美食爱好者
其他参与者 此模块平台运营人员无法使用
描述 美食菜谱分享平台为美食爱好者提供了收藏美食菜谱作者功能便于美食爱好者快速找到自己感兴趣的美食菜谱,美食爱好者需要确保自己是已登录的状态才能收藏美食菜谱作者
前置条件 美食爱好者已经获取美食菜谱分享平台的使用权限
后置条件 美食爱好者输入了个人正确的账号密码登录进入了美食菜谱分享平台
基本流程 1.美食爱好者跳转到美食菜谱分享平台提供的美食菜谱详情页面
2.美食爱好者点击菜谱上方的收藏美食菜谱作者按钮发起对美食菜谱作者的收藏请求
3.美食菜谱分享平台检索美食爱好者的作者收藏记录
4.美食菜谱分享平台根据美食爱好者的作者收藏情况给出收藏结果
结束 美食爱好者接收到平台给出的作者收藏结果或者放弃收藏作者
实现约束和说明 1.美食爱好者针对同一作者只会生成一条收藏数据
2.美食爱好者可以删除个人的美食菜谱作者收藏数据
其他事件流 美食爱好者点击作者收藏按钮后会发送Ajax异步收藏请求
美食菜谱分享平台美食评论模块用例描述如表2-8所示。
表2-8 美食菜谱分享平台美食评论模块描述表
用例条目 描述
用例名称 美食评论模块
主要参与者 美食爱好者
其他参与者 此模块平台运营人员无法使用
描述 美食菜谱分享平台为美食爱好者提供了评论美食菜谱的功能便于美食爱好者分享自己对于菜谱的简介,美食爱好者需要确保自己是已登录的状态才能发表针对菜谱的评论
前置条件 美食爱好者已经获取美食菜谱分享平台的使用权限
后置条件 美食爱好者输入了个人正确的账号密码登录进入了美食菜谱分享平台
基本流程 1.美食爱好者跳转到美食菜谱分享平台提供的美食菜谱详情页面
2.美食爱好者点击详情页面下方的评论输入框输入自己的评论内容并针对美食菜谱打分
3.美食菜谱分享平台接收美食爱好者的评论数据并存储
4.美食菜谱分享平台给出美食爱好者评论结果
结束 美食爱好者接收到平台给出的美食评论结果或者放弃对菜谱发布个人的评论信息
实现约束和说明 1.美食爱好者针对同一菜谱可以发表多次评论并打分,每次打分都将影响美食菜谱的平均得分
2.美食爱好者无法删除个人针对美食菜谱发表过的评论数据
其他事件流 美食爱好者发表评论成功后,该评论会立即显示在美食菜谱之中
2.3 本章小结
本章从三个角度对该系统的可行性进行了详细的描述和分析,分别是技术角度、操作角度和经济角度。并且通过引用图和表格的方式对系统的功能需求进行解释说明。
第三章 系统设计
本章节负责将美食菜谱分享平台关于功能和数据库两个方面的设计加以说明,在功能介绍上包括功能总体说明、功能详细说明和功能模块图。在数据库介绍上包括表结构、实体对应情况、实体属性和ER图。
3.1 功能设计
3.1.1 美食菜谱分享平台总体功能设计
基于SpringBoot的美食菜谱分享平台所包含的主要功能由会员登录功能、会员注册功能、个人信息管理功能、个人菜谱管理功能、个人收藏管理功能、个人关注管理功能、退出系统功能、系统首页预览功能、美食菜谱专栏功能、美食笔记推荐功能、关注美食作者功能、收藏美食菜谱功能、评论美食菜谱功能、美食评论管理功能、平台会员管理功能、管理员信息管理功能、美食笔记管理功能、美食类别管理功能等,将美食菜谱分享平台的功能整理汇总画出美食菜谱分享平台的功能模块图,如图3-1所示。
图3-1 美食菜谱分享平台功能模块图
3.1.2 美食菜谱分享平台各功能模块设计
美食菜谱分享平台的前端模块设计如下:
(1)个人信息管理模块:此模块包括两个子功能,分别是基本信息管理功能和密码修改功能。用户可以通过基本信息管理功能对自己的个人信息进行查看并编辑。用户可以通过密码修改功能完成对个人密码的修改,修改后立即生效。
(2)个人菜谱管理模块:用户可以通过个人菜谱管理模块发布个人菜谱数据,发布菜谱时可以选择上传图片以提供更好的用户体验。同时用户还可以对个人菜谱数据进行维护。
(3)美食作者关注模块:此模块包含关注美食作者和个人关注管理两个子功能。用户可以通过关注美食作者功能将美食作者信息添加至自己的关注列表,并可以通过关注的作者直接查看其发布的每一篇美食菜谱信息。用户可以通过个人关注管理功能移除对于美食作者的关注,关注被移除后,会影响美食菜谱作者的粉丝数量。
(4)美食菜谱预览模块:对于美食菜谱信息,系统首先呈现美食菜谱的热度、菜谱配图、作者、标题和发布时间作为简要信息展示给用户。如果用户对菜谱感兴趣,可以通过点击标题的方式查看美食菜谱的详情信息,此处会显示美食菜谱的详细制作过程。
(5)美食菜谱评论模块:用户可以通过美食菜谱评论模块对美食菜谱发表自己的评价,与其他用户产生交互。对于美食菜谱的评价数据独立存储在美食菜谱评价表中,以美食菜谱的id作为关联,同时美食菜谱的评论数据会影响美食菜谱的热度。
(6)收藏美食菜谱模块:此模块包含收藏美食功能和个人收藏管理两个子功能。用户可以通过收藏美食菜谱功能将菜谱信息添加至自己的收藏列表。此操作用户不会成为美食作者的粉丝,但可以通过收藏列表直接访问该篇美食菜谱的详情信息。用户可以通过个人收藏管理功能移除对于美食菜谱的收藏,收藏被移除后,会更改美食菜谱的收藏数量,从而影响美食菜谱的热度。
美食菜谱分享平台的后端模块设计如下:
(1)美食评论管理模块:管理人员可以通过美食评论管理模块查看用户发布的关于美食的评论信息,此模块设置全部评论查看和根据美食菜谱ID查看两种查看方式。若管理人员选择根据美食菜谱ID查看,则只会显示单一菜谱的评论信息。管理人员可以对内容不妥的评论进行移除操作,从而维护评论区的良好风气。
(2)平台会员管理模块:管理人员可以通过平台会员管理功能对已注册系统的会员信息进行维护,包括查看会员信息,编辑会员信息,和删除会员信息。同时管理人员也具备录入会员的权限,但此权限仅在会员不方便进行注册时由管理人员代为录入。
(3)管理员信息管理模块:管理员可以为系统录入新的管理员信息,从而扩大管理队伍,为新管理员提供账号。新管理员账号在录入系统后即时生效,可以通过账号密码登入系统展开管理工作。同时管理员可以通过此功能维护个人信息,从而实现对于个人那信息查看与调整。
(4)美食笔记管理模块:管理人员可以通过此功能查看用户发布的美食笔记信息。对于存在问题或质量较差的美食菜谱,管理人员可以通过调整权限的方式禁止此篇美食笔记显示在用户视野中,待发布者调整完笔记内容后可以对其重新上架,另外也可以将美食菜谱直接移出系统。
(5)美食类别管理模块:管理员可以通过此模块新增美食类别信息,方便美食作者能够有更多的菜谱分类可选,以增加系统美食菜谱分类的多样化。同时还可以对已有的美食分类数据进行维护。
(6)统计分析模块:此模块包含美食类别热度分析和最受欢迎的美食菜谱分析两个子功能。系统会对各类别的美食菜谱数据进行统计,通过计算美食菜谱的评论量和收藏量计算每篇美食菜谱的热度情况,结合同类型美食菜谱的数量统计每类别美食菜谱的热度数据,并将统计结果通过饼图和柱状图报表的可视化方式呈现给管理员用户以方便其及时掌握用户对美食的偏好,通过可视化效报表的方式能够使得数据更加直观。
3.2 数据库设计
美食菜谱分享平台的数据库包含了多张数据库表,分别是tb_banners轮播图表、tb_categorys美食分类表、tb_admins平台运营人员表、tb_knowledges美食菜谱表、tb_likes美食作者收藏表、tb_marks美食菜谱收藏表、tb_replys美食评论表、tb_scores美食打分表、tb_users美食爱好者表。这九张表对应的九个实体类如下:Banner轮播图类、Category美食分类、Admin平台运营人员类、Knowledge美食菜谱类、Like美食作者收藏类、Mark美食菜谱收藏类、Reply美食评论类、Score美食大分类和User美食爱好者类。根据美食菜谱分享平台的实体关系选择其中存在关联部分实体绘制美食菜谱分享平台ER图如数据库概念设计所示。
3.2.1 美食菜谱分享平台数据库概念设计
美食菜谱分享平台ER图具体如3-2所示。
图3-2 美食菜谱分享平台ER图
(1)运营人员实体属性如图3-3所示。
图3-3 运营人员实体属性图
(2)美食类别实体属性如图3-4所示。
图3-4 美食类别实体属性图
(3)美食菜谱实体属性如图3-5所示。
图3-5 美食菜谱实体属性图
(4)美食作者收藏实体属性图如图3-6所示。
图3-6 美食作者收藏实体属性图
(5)美食爱好者实体属性图如图3-7所示。
图3-7 美食爱好者实体属性图
(6)美食菜谱收藏实体属性如图3-8所示。
图3-8 美食菜谱收藏实体属性图
(7)美食菜谱评论属性图如图3-9所示。
图3-9美食菜谱评论实体属性图
(8)分数实体属性如图3-10所示。
图3-10 分数实体属性图
3.2.2 美食菜谱分享平台数据库详细设计
(1)tb_knowledges表结构如表3-1所示。
表3-1 tb_knowledges美食菜谱表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
title int 11 否 美食菜谱标题
keywords int 11 否 美食菜谱关键字
content varchar 255 否 美食菜谱内容
image varchar 255 否 美食菜谱图片
video varchar 255 否 美食菜谱视频
file varchar 255 否 美食菜谱电子资料
uid int 11 否 美食菜谱作者主键
uname varchar 255 否 美食菜谱作者名称
createtime varchar 255 否 美食菜谱发布时间
status varchar 255 否 美食菜谱状态
sid int 11 否 美食类别主键
markcount varchar 255 否 美食菜谱收藏数量
replycount varchar 255 否 美食菜谱回复数量
usubject varchar 255 否 美食菜谱分类
aisubject varchar 255 否 系统推荐分类
score int 11 否 美食菜谱得分
(2)tb_users表结构如表3-2所示。
表3-2 tb_users美食爱好者表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
nickname varchar 255 否 美食爱好者姓名
tel varchar 255 否 美食爱好者账号
password varchar 255 否 美食爱好者密码
age int 11 否 美食爱好者年龄
gender varchar 255 否 美食爱好者性别
power varchar 255 否 美食爱好者权限
status varchar 255 否 美食爱好者状态
department varchar 255 否 美食爱好者来源
(3)tb_replys表结构如表3-3所示。
表3-3 tb_replys美食菜谱评论表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
kid int 11 否 美食菜谱主键
ktitle varchar 1000 否 美食菜谱标题
表3-3(续)
列名 数据类型 长度 是否主键 说明
uid int 11 否 美食菜谱作者主键
uname varchar 255 否 美食菜谱作者姓名
rtime varchar 255 否 美食菜谱评论时间
content varchar 255 否 美食菜谱评论内容
score int 11 否 美食菜谱评论分数
(4)tb_categorys表结构如表3-4所示。
表3-4 tb_categorys美食类型表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
name varchar 255 否 美食类别名称
image varchar 255 否 美食类别图示
(5)tb_marks表结构如表3-5所示。
表3-5 tb_marks美食菜谱收藏表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
uid int 11 否 美食爱好者主键
kid int 11 否 美食菜谱主键
ktitle varchar 255 否 美食菜谱标题
(6)tb_likes表结构如表3-6所示。
表3-6 tb_likes美食作者收藏表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
uid int 11 否 美食爱好者主键
kid int 11 否 美食作者主键
ktitle varchar 255 否 美食作者名称
(7)tb_admins表结构如表3-7所示。
表3-7 tb_admins运营人员表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
nickname varchar 255 否 运营人员姓名
tel varchar 255 否 运营人员账号
password varchar 255 否 运营人员密码
age int 11 否 运营人员年龄
gender varchar 255 否 运营人员性别
power varchar 255 否 运营人员权限
status varchar 255 否 运营人员状态
表3-7(续)
列名 数据类型 长度 是否主键 说明
department varchar 255 否 运营人员部门
(8)tb_scores表结构如表3-8所示。
表3-8 tb_scores美食菜谱得分表
列名 数据类型 长度 是否主键 说明
id int 11 是 主键
uid int 11 否 美食爱好者主键
kid int 11 否 美食菜谱主键
socre int 11 否 美食菜谱得分
3.3 本章小结
本章通过系统的总体结构、系统的功能模块设计和系统的数据库设计来反映了美食菜谱分享平台的功能需求。前端使用了Bootstrap实现了响应式的UI界面开发,后端使用了SpringBoot框架来搭建,数据库使用了MySQL来存储其中的数据。
第四章 系统实现
美食菜谱分享平台的系统实现部分主要围绕着重点功能展开,包括美食菜谱发布模块、系统信息管理模块、美食爱好者管理模块、美食类目管理模块和美食菜谱收藏模块。
4.1 美食菜谱发布模块
美食菜谱发布模块是独属于美食爱好者的功能模块,当美食爱好者登录系统后可以利用导航栏提供的发布菜谱按钮进入到菜谱发布页面,此页面要求美食爱好者选择美食分类、上传美食制作视频、美食图片和美食菜谱的电子说明资料,通过详细的教程帮助其他人来完成美食的制作。当美食爱好者点击发布按钮后,会自动校验数据的完整性,当数据完整时可以提交发布请求,初始状态默认为通过状态,美食爱好者可以对美食菜谱执行编辑和删除操作,而运营人员可以对美食菜谱执行下架和上架操作,以美食菜谱的质量作为衡量标准。
美食菜谱发布模块实现效果如图4-1所示。
图4-1美食菜谱发布模块效果图