摘 要
随着人们生活水平的提高,人们对美食的要求也越来越高,对各类美食信息需求越来越大。因此,结合计算机快速发展、普及,在此基础上制作一个页面简单、美观,功能实用的美食网站势在必行,满足用户分享美食的需求。
美食网站采用Java技术,Mysql数据库存储数据,基于Springboot框架开发。系统采用了模块化设计方法,根据用户的需求开发功能模块,方便了程序扩展维护,以便后期的更新。整个开发过程首先对系统进行需求分析,得出系统主要功能模块。接着对系统进行总体设计和详细设计。最后对系统进行了功能测试,并对测试结果进行了分析总结,得出系统的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为以后开发类似系统提供了借鉴和帮助。
本系统对美食从发布到展示进行科学化管理,实现了美食信息的最广泛共享,使美食信息可以通过计算机网络高效地完成发布,方便用户查询、发布美食食谱以及美食攻略,提高美食分享效率。
关键词:美食网站;Springboot框架;Mysql数据库
Design of Springboot food website
Abstract
With the improvement of people's living standards, people's demand for food is also higher and higher, and the demand for all kinds of food information is increasing. Therefore, combined with the rapid development and popularity of computers, it is imperative to create a simple, beautiful and functional food website based on this to meet the needs of users to share food.
The food website uses Java technology, MySQL database to store data, and is developed based on the Springboot framework. The system adopts a modular design method to develop functional modules according to users' needs, which facilitates program expansion and maintenance for later update. The whole development process starts with the requirement analysis of the system, and the main functional modules of the system are obtained. Then the overall design and detailed design of the system are carried out. Finally, the function test of the system is carried out, and the test results are analyzed and summarized, and the deficiencies of the system and the areas that need to be improved are obtained, which provides convenience for future system maintenance, and also provides reference and help for future development of similar systems.
The system scientifically manages the food from release to display, realizes the widest sharing of food information, enables the food information to be released efficiently through the computer network, facilitates users to query and release food recipes and food strategies, and improves the efficiency of food sharing.
Key Words:Food website; Springboot framework; MySQL database
第1章 绪论
1.1开发背景与意义
迅猛发展并日益成熟的网络已经彻底的影响了我们的方方面面。人们也确实真切的体会到了网络带给我们的便捷。本网站的设计理念在于作为一个美食网站,就是能够尽可能详细地展示、介绍各种美食信息,同时为广大美食爱好者提供一个良好的区域性美食主题网站。目的旨在涉及一种基于Springboot及数据库网站的设计及实现,方便广大美食家及美食爱好者浏览。近两年来,一大批网站正吸引着人们的眼球。然而,除了有很少数的网站受到了投资者的青睐并且实现了进一步的发展之外,有很大得一部分网站正处于摸索甚至是挣扎的状态。在餐饮这一个与老百姓息息相关的传统领域,各种各样的网站呈现出了不同的风格。
随着生活质量的提高,对于饮食消费理性化,经营特色化和市场细分化的特点日益突现出来。越来越的年轻人成为消费的主力军,包括70后等年代的人们,而他们的选择也越来越主体化,希望可以品尝到一些有特色美食,那么在区域性美食主题网站里面,人们可以看到各种不同的美食,以及对于这些美食的评论,是否值得去试一试,而商家也可以在这个网站上分享自己餐厅的推荐美食,可以更新餐厅的地址,价格。让更多的惇人们了解到一份美食的详细信息,做到信息共享,丰富人们的闲暇时光。
网络信息时代在21世纪到来了,现代社会传播信息都是利用快速高效率的Internet。而且传播的信息量非常大,也是非常迅速的,人们通过浏览器来浏览信息,这种方式是最常用的,所以在这种方式的需求下形成了电子商务。它是指利用快捷、低成本、简单的电子通讯方式,买卖双方不出面也可以进行各种各样的商贸活动。电子商务真正的发展将是建立在Internet技术上。
1.2开发现状
近年来,互联网技术飞速发展,我们通过互联网可以了解到很多的信息,真正做到了“秀才不出门,尽知天下事”。而现在,80后,90后是互联网的使用的主力军,他们通过网络获取自己想要的消息,查阅仔细需要的信息,是非常便捷的一项技术,现在有很多的网站用于发布自己了解到的消息,例如:堆糖,same等一些主题网站,用于发现生活中的美好事物。而且企业对信息进行网络化管理的条件已经日趋成熟,而传统的通过电话和传真来处理信息的传统方式已经越来越难以满足企业的需求。建立基于网络的管理和销售信息系统,成为企业提高效率、降低成本、完善服务的有力保证。现在有很多的网站都是广泛的,很少有针对某一方面的主题网站,而对于餐饮业,由于一个行业本身的特性,它的流通性是非常高的,人们越来越要求可以实时的了解到自己想要的信息,可以随时随地的分享美食,也可以随时随地的了解到其他人用户分享到的美食信息,对于吃货的我们来说是很便捷的,而且现在的年轻人讲究的快捷,不需要花费很多的时间和精力去查找自己想要的信息,只求一步到位,开发这个网站,真是满足很多人的需求,使更多的可以方便的去了解信息。所以更对企业的效率提出了更高的要求。
微软的NET平台作为新一代的互联网平台,提供了支持未来计算的高效的Web服务开发工具。利用NET平台进行管理系统的开发成为此类系统未来开发的趋势。随着社会的进步,人们对食物的要求越来越高,不仅仅局限于吃饱,越来越多人追求的是好吃、美味的美食。迅猛发展并日益成熟的网络已经彻底的影响了我们的生活。人们真切的体会到了网络带给我们的诸多方便。现在各种团购美食的网站层出不穷。开发这个网站,是想在详细的展示和介绍各地方的美食信息,为中国的美食爱好者提供一个很好交流平台,使中国的美食文化可以得到更好地推广。
1.3论文结构
第一章是论文的绪论部分,主要介绍了课题的研究背景以及研究目的和意义。
第二章研究了美食网站所采用的开发技术和开发工具。
第三章研究了美食网站的需求分析,根据系统的特点,分析系统采用的体系结构及开发方法,以及该系统的运行环境,并分析了业务流程,绘制了业务流程以及数据流程。
第四章是对系统的详细设计进行说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
第2章 主要技术和工具介绍
2.1J2EE技术
人可以掌握多门外语,而一个计算机科学家精通的大多是编程语言,它不是人类的自然语言,比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范,所以Sun公司推出J2EE,用这个标准来解决弊病。它提供了良好的机制,让每个层次允许与之相对的服务器、组件运行,使得系统的搭建稳定可用、开发高效、维护方便。
2.2 MySQL 数据库
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。因为其自身的功能相当强大,目前已成为最为流行的数据库软件之一]。
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2.3 B/S结构
系统计划采用BS模式,是因为比传统的C/S结构具有明显的优越性。B/S模式也就是浏览器/服务器模式,它的界面部分是在浏览器端展示,而主要工作是由服务器端进行实现的,用户的请求由浏览器端提交给服务器端进行处理,而服务器将处理结果反馈给浏览器端,在浏览器端界面描画给用户查看。采用B/S模式不仅可以避免用户必须安装专业软件才能开发系统或者访问系统的局限性,而且更加便利。
2.4Spring boot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
2.5 MVVM模式
MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。
视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
2.6 B/S体系工作原理
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
第3章 系统分析
3.1可行性分析
分析用户需求和数据需求,得到一个方案,然后设定系统的开发方案,为每个功能模块设计出物理设计方案,开发本系统的是否可行?本文从技术上、操作上和经济上对本系统的开发进行可行性分析。
3.1.1经济可行性
美食网站属于一个工具型的系统,它可以节省工作人员大量数据收集、方便快捷,能够极大地提高工作效率,最大限度的降低管理员的工作量,使管理尽量简便,同时促进电影管理的信息化、现代化,及时提供必要的信息统计。因为整个系统采用Springboot+MVVM+Mysql组合,这几个软件都是免费开源的,系统开发所需的费用是比较低的,由于系统并不复杂,其运行与培训费用也不会占用很多资金,可以预见系统完成后可以带来较大的经济效益。
3.1.2技术可行性
本系统采用Windows10作为操作平台。数据库开发平台选用MySQL,该数据库管理系统在Windows7和Windows8/10上都能运行,并提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作.
3.1.3操作可行性
本系统使用的是现流行的开发语言,即Springboot框架。同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统。系统布局较简单,功能操作不复杂,完全符合现代市场需求。
3.2需求分析
针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的影视推荐与交流系统。
本系统主要包含了用户管理、网站公告、美食文章、美食食谱、美食攻略、在线留言等多个功能模块。下面分别简单阐述一下这几个功能模块需求。
表3-1功能需求表
编号 | 功能名称 | 功能描述 |
| 用户登录 | 保证用户通过身份验证进入系统进行操作 |
| 用户注册 | 没有账号并想使用系统的用户可以使用用户注册,检测用户的注册内容,信息通过检测之后成为本系统的用户 |
| 美食搜索 | 用户可以通过各种各样的关键字模糊搜索美食信息 |
| 评论添加 | 普通用户选择要评论的信息进行添加评论 |
| 评论管理 | 管理员对用户的评论信息进行管理,包括删除、修改 |
| 修改个人信息 | 用户可以根据自己当前的情况修改个人的信息 |
| 后台登录 | 仅管理员能够登录后台 |
| 添加美食食谱 | 管理员添加美食食谱信息 |
| 编辑美食食谱 | 管理员修改美食食谱信息 |
| 发布美食攻略 | 管理员发布美食攻略 |
| 添加美食攻略 | 管理员添加美食攻略 |
| 编辑留言信息 | 用户编辑留言信息 |
| 删除留言信息 | 用户删除留言信息 |
| 网站公告 | 用户可以进行网站公告的浏览 |
3.3业务流程分析
经过对系统功能的分析,调查,研究,总结出美食网站主要实现的是对¥留言信息、用户信息等管理功能。这样,可以对该系统绘制业务流程图。
系统的业务流程如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/57071accb1f9ebfc0d614a298b7dc9e3.png)
图3-2系统业务流程图
3.4数据流程分析
根据上文所述的业务流程特点,首先对各个方面总的数据处理环节和外部实体进行了描述, 根据自顶向下原则,逐层分解功能,这个过程产生DFD图。
零层数据流程是流程中最抽象的一层,它包括了注册与登录管理、用户功能管理和检索维护管理等功能模块,在登录注册模块使用到的数据存储有用户账户信息文档、用户信息文档,用户功能管理模块需要的存储是用户动态信息文档、留言信息文档、电影信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。
系统的0层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d538dbf90fd6fc7c4f39fee238845896.png)
图3-4系统数据流图(0层)
一层数据流程图是对零层数据流程图的细化,将登录与注册细分为¥填制登录注册信息和完善信息,用户功能管理细分为用户基本功能管理和用户特色功能管理。
系统的1层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/f7744397a3c42b81c55e8bea115048df.png)
图3-5系统数据流图(1层)
二层数据流程是对一层数据流层图中填写登录注册信息、用户基本功能和用户特色功能的细化。即:填写登录注册信息细化为填制信息、后台审核,用户基本功能细化为美食食谱、在线留言、美食攻略、网站公告。
第4章 系统设计
4.1系统结构设计
本系统使用的角色主要有系统管理员、普通用户,本系统分为系统前台和系统后台,首先在系统前台,游客用户可以经过账号注册,管理员审核通过后,用账号密码登录系统前台,进行网站公告浏览、美食食谱、美食攻略查看、进行在线留言,在前台用户可以通过标题和类别进行前台信息的搜索,普通用户可以登录个人中心进行个人资料管等功能。
后台主要由管理员使用,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用用户管理、美食分类管理、公告管理、收藏评论管理、美食食谱管理、美食攻略管理、留言管理等功能操作。同时管理员可以通过关键字搜索可以搜索相应的信息,打印各种详细信息,导出各类信息列表至excel中。
系统的功能结构图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7e88820a59e25132fccd696b9bcda98e.png)
图4-1系统功能结构图
4.2主要功能模块设计
该模块包括普通用户管理和系统用户管理,系统用户主要是普通管理员,对用户信息进行管理,只有普通用户才可在该系统上进行相应的操作。用户对个人信息可进行修改;管理员可对自己的个人信息进行维护,同时可对用户的密码信息进行修改,也可删除系统中的用户
- 登录模块
根据用户输入的 Id 和密码到数据库中查找该用户,如果未能找到该用户则做出 提醒“用户名或密码错误”,如果找到该用户,则要判断用户的类别然后根据用户类别进入相应的页面。
- 注册模块
当新用户第一次登陆时,要求注册账号。在登陆页点击注册后进入用户注册界面,新用户需要填写本人的手机号、用户名、设置登录密码,之后单击注册,则完成了初步信息的填写
(1)美食文章添加:必须填写美食文章名称、美食文章类型、内容必须是唯一的, 提交后判断某一项是否为填写, 如果是则做出提醒, 填写符合规则后方可添加到数据库。
(2)美食文章查询:可以根据美食文章名称等信息对美食文章进行查询,查询结果可能有多个。
(3)美食文章修改:除了美食文章内容外,其他评论或者点赞信息均可以修改。
(4)美食文章删除:首先找到要删除的美食文章(一个或多个),然后删除即可。
(1)美食食谱添加:必须填写标题、内容,且名称必须是唯一的,各项都不能为空。
(2)美食食谱查询:该功能能够显示美食食谱的基本信息,可以根据美食食谱的名称等信息对美食食谱做出查询。
(3)美食食谱修改:如果美食食谱需要被修改,可修改的信息包括美食食谱内容等基本信息,但是名称是唯一、固定 的,不能被修改。
(4)美食食谱删除:首先找到要删除的美食食谱(一个或多个),然后删除即可。
- 留言信息管理模块
留言模块分为用户留言和管理员管理留言信息,用户登录系统后,选择想要留言的内容,添加留言,管理员查询该留言信息,并有权对其管理,包括删除。
4.3数据库设计
4.3.1数据库设计概述
为了实现系统的功能设计,就要有相应的数据库表设计。根据系统的功能设计要求为各个数据库表设计字段、数据类型、是否为空等的相关信息。在实际调研和需求分析的基础上,对该系统设计数据库。再有系统的需求分析可以看出,本系统有两个角色:普通用户和管理员,他们分别在系统的运行和使用中起着不同的作用。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。数据库中表的设计主要考虑两个方面:一是整个管理系统的所有表中的数据要共享性高、冗余度小、占用最可能小的存储空间。
4.3.2概念设计
概念设计是整个数据库设计的关键,在概念设计阶段,由需求分析得到了E-R模型。E-R图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的E-R图表示方法,从而避免过繁过细的E-R图表示影响规划的直观和可用性。是对现实世界的抽象和概括,是数据库设计人员进行数据可设计的有力工具,能够方便直接地表达应用中的各种语义知识,令一方面它简单、清晰、易于用户理解。
![](https://i-blog.csdnimg.cn/blog_migrate/dee98beb696dfd19be571bf81b5416bf.png)
图4-10系统总体ER图
4.3.3表设计
概念模型是独立于任何一种数据模型的信息结构。将概念模型转换成逻辑模型,转换的一般原则如下:
(1)一个实体性转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。
(2)一个1:1联系可以转化为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
(3)一个1:n联系可以转化为一个独立的关系模式,也可以与n端对应的关系模式合并。
(4)一个m:n联系转化为一个关系模式。
本系统设计如下多个表,包括美食攻略表、美食食谱表、留言表、美食文章表。
表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表food_recipe (美食食谱)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_recipe_id | int | 10 | 0 | N | Y | 美食食谱ID | |
2 | food_name | varchar | 64 | 0 | Y | N | 美食名称 | |
3 | share_users | int | 10 | 0 | Y | N | 0 | 分享用户 |
4 | recipe_category | varchar | 64 | 0 | Y | N | 食谱类别 | |
5 | photo | varchar | 255 | 0 | Y | N | 照片 | |
6 | cooking_time | varchar | 64 | 0 | Y | N | 烹饪用时 | |
7 | cooking_video | varchar | 255 | 0 | Y | N | 烹饪视频 | |
8 | food_ingredients | text | 65535 | 0 | Y | N | 食材 | |
9 | detailed_steps | longtext | 2147483647 | 0 | Y | N | 详情步骤 | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
13 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表food_strategy (美食攻略)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_strategy_id | int | 10 | 0 | N | Y | 美食攻略ID | |
2 | title | varchar | 64 | 0 | Y | N | 标题 | |
3 | place_of_departure | varchar | 64 | 0 | Y | N | 出发地 | |
4 | destination | varchar | 64 | 0 | Y | N | 终点地 | |
5 | share_users | int | 10 | 0 | Y | N | 0 | 分享用户 |
6 | trip_days | varchar | 64 | 0 | Y | N | 行程天数 | |
7 | cover | varchar | 255 | 0 | Y | N | 封面 | |
8 | traffic_strategy | text | 65535 | 0 | Y | N | 交通攻略 | |
9 | food_introduction | text | 65535 | 0 | Y | N | 美食攻略 | |
10 | details | longtext | 2147483647 | 0 | Y | N | 详情 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
14 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
15 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表online_message (在线留言)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | online_message_id | int | 10 | 0 | N | Y | 在线留言ID | |
2 | user | int | 10 | 0 | Y | N | 0 | 用户 |
3 | theme | varchar | 64 | 0 | Y | N | 主题 | |
4 | related_pictures | varchar | 255 | 0 | Y | N | 相关图片 | |
5 | contact_number | varchar | 64 | 0 | Y | N | 联系电话 | |
6 | content | text | 65535 | 0 | Y | N | 内容 | |
7 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
8 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表recipe_classification (食谱分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | recipe_classification_id | int | 10 | 0 | N | Y | 食谱分类ID | |
2 | recipe_category | varchar | 64 | 0 | Y | N | 食谱类别 | |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表registered_users (注册用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | gender | varchar | 64 | 0 | Y | N | 性别 | |
3 | age | varchar | 64 | 0 | Y | N | 年龄 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第5章 系统实现
5.1登录模块的实现
美食网站的平台入口就是用户登录功能,在浏览器输系统地址跳转至系统前台首页,系统前台的登录窗口在首页左面,包括用户名、密码、权限、验证码,除了权限框使用下拉列表,其他使用文本框,验证码下方为登录和重置两个按钮,用户点击登录按钮,则进行登录验证。
登录流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/12125db008ff6c7c3d7dcb15a3073d70.png)
图5-1登录流程图
系统登录界面如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/98458378337b0e04d993b44588376b50.png)
图5-2系统登录
登录关键代码如下。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
5.2用户子系统模块的实现
5.2.1用户首页的实现
在美食分享的用户首页,主要有用户登录页面,以及¥的展示等,在首页的导航栏中可看出,该系统主要有¥等主要模块。
如下图所示为系统的用户首页界面。
![](https://i-blog.csdnimg.cn/blog_migrate/4d75095494bf6bd832b1932b570314d2.png)
图5-3用户首页
5.2.2注册模块的实现
这块程序首先根据所取得的表单中的用户名查询数据库中是否有相同用户名的记录,如果数据库存在相同的用户名,则提示用户名已存在,否则,打开记录集并添加一条新的记录,然后系统默认要给用户发送注册成功的提醒。
用户注册流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8707e5927c857419de1de30e204153e7.png)
图5-4用户注册流程图
用户注册界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/c51229fa792ace0c8ba70c4f4fedd8bf.png)
图5-5用户注册
用户注册关键代码如下。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
5.2.3评论模块的实现
用户点击进入美食文章详细页,点击评论按钮进入评论页,提交评论信息,成功发布评论,管理员管理用户的评论信息。
用户评论流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/b933e3cecc8f5c6c9391bb518b336417.png)
图5-6用户评论流程图
用户评论界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/593e0314f13ed847ee254e46e0496ac5.png)
图5-6用户评论
5.3管理员子系统模块的实现
5.3.1用户管理模块的实现
系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。
系统用户管理界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/1a36dc5e8d0ed6993f2ff855e33cefe1.png)
图5-7系统用户管理
5.3.2密码修改模块的实现
密码修改是对当前登录用户的密码进行修改,在用户登录后右上方也能进行密码修改。
密码修改流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/64ae4bd8064ecd48ac895283ffec7317.png)
图5-8密码修改流程图
密码修改界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/e5490c2abdd6d43b5b838f598088ccd4.png)
图5-9修改密码
5.3.3食谱分类管理模块的实现
美食食谱添加功能主要指对其美食食谱名称、描述、类型、图片、内容等一些基本信息的添加、删除和修改。美食查询能根据美食id、名称、标题等多种条件对美食食谱进行查询。
食谱分类管理流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/82d633f5043e880dfac4862b32f861f9.png)
图5-10食谱分类管理流程图
食谱分类如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/27a7db19988f73b3bbdc117165df644f.png)
图5-11食谱分类
食谱分类管理关键代码如下所示。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
5.3.4美食攻略管理模块的实现
用户根据自己兴趣搜索美食攻略,前台显示美食攻略,。用户可以在线进行美食攻略查看,管理员对美食攻略进行发布管理等操作等。
美食攻略管理如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/9fad3ad3c53fc958d9735e5818f25189.png)
图5-12美食攻略管理
美食攻略管理关键代码如下所示。
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
第6章 系统测试
6.1软件测试
在设计系统的过程中,存在一些错误是不可避免的。For语句语法错误,运行的提示,并要求立即纠正,因此,容易发现和纠正错误等。但另一种类型的错误是程序执行时由于不正确的操作或对某些数据计算公式的逻辑错误导致错误的结果。这种错误的隐蔽性强,有时会出现,有时不出现,因此,这种误差动态屏幕耗时。
6.2功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项检测,检查产品是否达到用户要求的功能。下面列出的测试用例是基于需求分析阶段的用例描述而进行的设计。
下面将通过表格的形式介绍针对本系统每个功能模块所进行的功能测试。
1.注册模块功能测试,如下表所示。
表6-1注册测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 用户注册 | 用户打开注册界面 | 输入合适的用户名,密码为空 | 无法注册 | 提示密码不得为空,无法注册 | 正常 |
| 用户注册 | 用户打开注册界面 | 输入不合适的用户名、2次相同的密码 | 无法注册 | 提示用户注册失败 | 正常 |
| 用户注册 | 用户打开注册界面 | 输入合适的用户名,两次密码不一致 | 无法注册 | 提示用户名不得为空,无法注册 | 正常 |
| 用户注册 | 用户打开注册界面 | 输入的用户名为空 | 无法注册 | 提示用户名不能为空 | 正常 |
| 用户注册 | 用户打开注册界面 | 输入合适的用户名和两次相同的密码 | 正常注册 | 注册成功 | 正常 |
2.登录模块功能测试,如下表所示。
表6-2登录测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 登录系统 | 用户打开登录界面 | 输入正确的用户名,密码为空 | 无法登录 | 提示密码不得为空,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的用户名,输入错误密码 | 无法登录 | 提示密码不正确,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的密码,用户名为空 | 无法登录 | 提示用户名不得为空,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的密码,错误的用户名 | 无法登陆 | 提示用户名不正确,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 用户名及密码都为空 | 无法登录 | 提示用户名和密码不得为空,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 用户名及密码都输入错误 | 无法登录 | 提示用户名和密码正确,无法登录 | 正常 |
| 登录系统 | 用户打开登录界面 | 输入正确的用户名和密码 | 正常登录 | 进入主界面 | 正常 |
3.修改密码模块功能测试,如下表所示。
表6-3修改密码测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 修改密码 | 用户打开修改密码界面 | 输入正确初始密码和2次相同的新密码 | 密码修改成功 | 密码修改成功 | 正常 |
| 修改密码 | 用户打开修改密码界面 | 输入错误的原始密码 | 密码修改失败 | 密码修改失败 | 正常 |
| 修改密码 | 用户打开修改密码界面 | 输入正确初始密码和2次不相同的新密码 | 密码修改失败 | 密码修改失败 | 正常 |
4.评论功能测试,如下表所示。
表6-4评论测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 在线评论 | 用户已登录,打开评论界面 | 输入评论标题、内容等信息 | 评论成功 | 评论成功,新评论成功显示 | 正常 |
| 在线评论 | 用户已登录,打开评论界面 | 用户未输入评论标题和内容 | 评论失败 | 评论失败 | 正常 |
5.个人中心功能测试,如下表所示。
表6-5个人中心测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 用户信息修改 | 用户已登录,进入个人中心,且打开个人信息界面 | 输入内容不合法或必填项为空 | 修改失败 | 提示输入内容非法 | 正常 |
| 用户信息修改 | 用户已登录,进入个人中心,且打开个人信息界面 | 输入内容合法 | 修改成功 | 提示修改成功 | 正常 |
6.美食文章管理功能测试,如下表所示。
表6-6美食文章管理测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 美食文章信息添加 | 用户已登录,打开美食文章添加界面 | 输入美食文章标题、内容等信息 | 美食文章添加成功 | 美食文章添加成功,新美食文章成功显示 | 正常 |
| 美食文章信息添加 | 用户已登录,打开美食文章添加界面 | 用户未输入美食文章标题和内容 | 美食文章添加失败 | 美食文章添加失败 | 正常 |
7.食谱分类管理功能测试,如下表所示。
表6-7食谱分类管理测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 食谱分类信息添加 | 用户已登录,打开食谱分类添加界面 | 输入食谱分类标题、内容等信息 | 食谱分类添加成功 | 食谱分类添加成功,新食谱分类成功显示 | 正常 |
| 食谱分类信息添加 | 用户已登录,打开食谱分类添加界面 | 用户未输入食谱分类标题和内容 | 食谱分类添加失败 | 食谱分类添加失败 | 正常 |
7.美食点评功能测试,如下表所示。
表6-8美食点评测试
测试用例编号 | 测试用例描述 | 前提条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| 美食点评 | 用户已登录,打开美食点评界面 | 输入美食标题、内容等信息 | 美食点评成功 | 美食点评成功 | 正常 |
| 美食点评 | 用户已登录,打开美食点评界面 | 用户未输入美食标题和内容 | 美食点评失败 | 美食点评失败 | 正常 |
6.3测试结果
通过对美食分享整个系统功能的测试,发现了许多无法实现的功能并及时得到改正和实现,为美食推荐与交流系统的发布奠定了基础。此系统中各模块的功能都基本实现,不过还存在着许多不足,在以后的学习中通过测试还需加强和完善。
第7章 总结
本文主要研究了美食网站的设计与实现。本次论文主要研究的内容主要包括:
(1)分析研究了本课题的开发背景和课题的研究意义。
(2)对此次毕业设计进行了详尽的需求分析,并根据实际需求,分析了其数据字典。
(3)概要设计了系统的功能模块,详细设计了系统所使用的数据库表,并研究了该系统的ER图。
(4)详细介绍了该平台要实现的功能,构建了此系统。
从技术上来说,整个系统的基本实现环境是Win10操作系统,数据库的建立使用MySQL软件,系统开发使用Springboot框架,用Java语言进行系统的设计和开发,图片采用Photoshop CS6处理,使整个系统在视觉上和功能上尽量做到完整和美观。系统界面设计美观大方,功能较为完整,技术较先进且具有一定现实意义。
在摸索中前进。对MySQL数据库的使用,如何设计后台表结构,使得系统更加合理,健壮,是面临的又一个难题,通过查找相关资料,以及在充分的需求分析基础上,解决了以上问题。若条件允许,系统的功能模块能够更丰富,某些模块的功能也能更完善,用户之间权限的处理逻辑性也能更强。今后在改善客观条件的情况下,本系统还需要进一步进行研究开发。
致 谢
经历了几个月的毕业设计之旅,遭遇了无数难题与挑战,几经波折后,近乎要摧毁我当初选择这个题目的信心。好在我的导师一直坚持对我悉心支持,并对此套系统提出了诸多改善意见,解决了我所遇到的众多难题,电影点评平台也得以在这样的境况下圆满完成。老师给予了我正确的指导和极大的帮助,这不仅仅使我获得了足够多的开发经验,更使我在系统设计过程中少走了许多的弯路,巩固了以前所学的知识,提高了应用能力,这使我对以后的工作也信心满满。
敬业的工作态度都给予了我极大的鼓励与帮助。对于提出的问题和遇到的困难都给予细心的解答和真诚的帮助,再次表示衷心的感谢。我还要对学院及系里的各位领导、老师们表示谢意,在这次毕业论文期间给我们提供了良好的学习和生活环境,并给予软硬件的支持,使得我的系统设计工作及论文撰写工作更加顺畅、便利。最后我还要感谢所有为我的毕业设计提出指导意见的各位老师、同学。
参考文献
[1]姜广秀.中华美食是国际青年交流柔软且强大的力量[J].国际人才交流,2021(12):58-60.
[2]袁江琛.基于ASP.NET+三层架构的美食网站的设计与实现[J].信息与电脑(理论版),2021,33(18):164-166.
[3]依力·吐尔孙,艾孜尔古丽.基于Python的美食数据爬取及可视化研究[J].电脑知识与技术,2021,17(10):19-20+29.
[4]鲜易洲,杨蕊,吴蓉,巩培桢,吴丽丽.时食美食网站的设计与分析[J].电脑知识与技术,2021,17(09):85-87.
[5]吴晨,毛玉萃,张乐.一款基于SSM的中华美食网站的设计与实现[J].电脑知识与技术,2020,16(19):70-72.
[6]顾捷.舟山紫菜“海味”美食分享[J].农村百事通,2020(01):42-43.
[7]黄安.基于PHP+Mysql技术的网站设计与实现——以美食网站系统的设计为例[J].轻纺工业与技术,2019,48(07):168-170.
[8]Ma Yide,Peng Xue.Video Sharing Sites' Fault Identification in Indirect Copyright Infringements[J].Contemporary Social Sciences,2019(03):109-127.
[9]夏菁. 移动互联网时代青年的美食社交[D].安徽大学,2019.
[10]闫薇.美食网站的设计与实现[J].数码世界,2019(07):107-108.
[11]于文强. 面向B2C商业模式的美食推荐系统设计与实现[D].哈尔滨工业大学,2018.
[12]刘琼宇,刘擎业,宋易欣,朱磊,宋雪瑶.互联网美食平台发展现状及对策——以菜谱类美食应用为例[J].现代食品,2018(01):31-35.
[13]卢红霞,方晓亮.社会化顾客价值在美食网站的应用研究[J].物流工程与管理,2018,37(11):230-233.
[14]宗英健. 基于LBS应用的美食推荐类互联网产品设计[D].扬州大学,2018.
[15]李彤.基于PHP和MySQL的小型应用设计——以Android的美食和出行信息分享平台为例[J].计算机光盘软件与应用,2018,17(10):263+265.