苏州市建设职业中心网站,北京网站优化方法,建站公司外包,网站404设置摘 要 随着人们生活水平的提高#xff0c;人们对美食的要求也越来越高#xff0c;对各类美食信息需求越来越大。因此#xff0c;结合计算机快速发展、普及#xff0c;在此基础上制作一个页面简单、美观,功能实用的美食网站势在必行#xff0c;满足用户分享美食的需求。 美… 摘 要 随着人们生活水平的提高人们对美食的要求也越来越高对各类美食信息需求越来越大。因此结合计算机快速发展、普及在此基础上制作一个页面简单、美观,功能实用的美食网站势在必行满足用户分享美食的需求。 美食网站采用Java技术Mysql数据库存储数据基于Springboot框架开发。系统采用了模块化设计方法根据用户的需求开发功能模块方便了程序扩展维护以便后期的更新。整个开发过程首先对系统进行需求分析得出系统主要功能模块。接着对系统进行总体设计和详细设计。最后对系统进行了功能测试并对测试结果进行了分析总结得出系统的不足及需要改进的地方为以后的系统维护提供了方便同时也为以后开发类似系统提供了借鉴和帮助。 本系统对美食从发布到展示进行科学化管理实现了美食信息的最广泛共享使美食信息可以通过计算机网络高效地完成发布方便用户查询、发布美食食谱以及美食攻略提高美食分享效率。 关键词美食网站Springboot框架Mysql数据库 Design of Springboot food website Abstract With the improvement of peoples living standards, peoples 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 目 录 摘 要 Abstract 目 录 第1章 绪论 1.1开发背景与意义 1.2开发现状 1.3论文结构 第2章 主要技术和工具介绍 2.1 J2EE技术 2.2 MySQL 数据库 2.3 B/S结构 2.4 Springboot框架 2.5 MVVM模式 2.6 B/S体系工作原理 第3章 系统分析 3.1可行性分析 3.1.1经济可行性 3.1.2技术可行性 3.1.3操作可行性 3.2需求分析 3.3业务流程分析 3.4数据流程分析 第4章 系统设计 4.1开发环境 4.2系统结构设计 4.3主要功能模块设计 4.4数据库设计 4.4.1数据库设计概述 4.4.2概念设计 4.4.3表设计 第5章 系统实现 5.1登录模块的实现 5.2用户子系统模块的实现 5.3管理员子系统模块的实现 第6章 系统测试 6.1软件测试 6.2功能测试 6.3测试结果 第7章 总结 致 谢 参考文献 第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应用中的频繁使用让它备受青睐以至于后来让它作为EJBEnterpriseJavaBeans模型的补充甚至是替补。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经济可行性 美食网站属于一个工具型的系统它可以节省工作人员大量数据收集、方便快捷能够极大地提高工作效率最大限度的降低管理员的工作量使管理尽量简便同时促进电影管理的信息化、现代化及时提供必要的信息统计。因为整个系统采用SpringbootMVVMMysql组合这几个软件都是免费开源的系统开发所需的费用是比较低的由于系统并不复杂其运行与培训费用也不会占用很多资金可以预见系统完成后可以带来较大的经济效益。 3.1.2技术可行性 本系统采用Windows10作为操作平台。数据库开发平台选用MySQL该数据库管理系统在Windows7和Windows8/10上都能运行并提供数据库之间的数据复制功能可代替现有系统单据数据的手工传递工作. 3.1.3操作可行性 本系统使用的是现流行的开发语言即Springboot框架。同时所有的信息都是以网页的形式展示系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统。系统布局较简单功能操作不复杂完全符合现代市场需求。 3.2需求分析 针对现存的问题和需要通过功能需求的分析特建立了数字化、信息化的影视推荐与交流系统。 本系统主要包含了用户管理、网站公告、美食文章、美食食谱、美食攻略、在线留言等多个功能模块。下面分别简单阐述一下这几个功能模块需求。 表3-1功能需求表 编号 功能名称 功能描述 用户登录 保证用户通过身份验证进入系统进行操作 用户注册 没有账号并想使用系统的用户可以使用用户注册检测用户的注册内容信息通过检测之后成为本系统的用户 美食搜索 用户可以通过各种各样的关键字模糊搜索美食信息 评论添加 普通用户选择要评论的信息进行添加评论 评论管理 管理员对用户的评论信息进行管理包括删除、修改 修改个人信息 用户可以根据自己当前的情况修改个人的信息 后台登录 仅管理员能够登录后台 添加美食食谱 管理员添加美食食谱信息 编辑美食食谱 管理员修改美食食谱信息 发布美食攻略 管理员发布美食攻略 添加美食攻略 管理员添加美食攻略 编辑留言信息 用户编辑留言信息 删除留言信息 用户删除留言信息 网站公告 用户可以进行网站公告的浏览 3.3业务流程分析 经过对系统功能的分析调查研究总结出美食网站主要实现的是对留言信息、用户信息等管理功能。这样可以对该系统绘制业务流程图。 系统的业务流程如下图所示。 图3-2系统业务流程图 3.4数据流程分析 根据上文所述的业务流程特点首先对各个方面总的数据处理环节和外部实体进行了描述, 根据自顶向下原则逐层分解功能这个过程产生DFD图。 零层数据流程是流程中最抽象的一层它包括了注册与登录管理、用户功能管理和检索维护管理等功能模块在登录注册模块使用到的数据存储有用户账户信息文档、用户信息文档用户功能管理模块需要的存储是用户动态信息文档、留言信息文档、电影信息文档检索维护是通过以上这些文档信息通过关键词进行搜索。 系统的0层数据流图如下图所示。 图3-4系统数据流图0层 一层数据流程图是对零层数据流程图的细化将登录与注册细分为填制登录注册信息和完善信息用户功能管理细分为用户基本功能管理和用户特色功能管理。 系统的1层数据流图如下图所示。 图3-5系统数据流图1层 二层数据流程是对一层数据流层图中填写登录注册信息、用户基本功能和用户特色功能的细化。即填写登录注册信息细化为填制信息、后台审核用户基本功能细化为美食食谱、在线留言、美食攻略、网站公告。 第4章 系统设计 4.1系统结构设计 本系统使用的角色主要有系统管理员、普通用户本系统分为系统前台和系统后台首先在系统前台游客用户可以经过账号注册管理员审核通过后用账号密码登录系统前台进行网站公告浏览、美食食谱、美食攻略查看、进行在线留言在前台用户可以通过标题和类别进行前台信息的搜索普通用户可以登录个人中心进行个人资料管等功能。 后台主要由管理员使用以管理员的身份在登录页面输入账号和密码经过数据库身份验证验证成功后登录系统主页可以使用用户管理、美食分类管理、公告管理、收藏评论管理、美食食谱管理、美食攻略管理、留言管理等功能操作。同时管理员可以通过关键字搜索可以搜索相应的信息打印各种详细信息导出各类信息列表至excel中。 系统的功能结构图如下图所示。 图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图表示影响规划的直观和可用性。是对现实世界的抽象和概括是数据库设计人员进行数据可设计的有力工具能够方便直接地表达应用中的各种语义知识令一方面它简单、清晰、易于用户理解。 系统总体ER图如下图所示。 图4-10系统总体ER图 4.3.3表设计 概念模型是独立于任何一种数据模型的信息结构。将概念模型转换成逻辑模型转换的一般原则如下 (1)一个实体性转换为一个关系模式。实体的属性就是关系的属性实体的码就是关系的码。 (2)一个1:1联系可以转化为一个独立的关系模式也可以与任意一端对应的关系模式合并。 (3)一个1n联系可以转化为一个独立的关系模式也可以与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登录模块的实现 美食网站的平台入口就是用户登录功能在浏览器输系统地址跳转至系统前台首页系统前台的登录窗口在首页左面包括用户名、密码、权限、验证码除了权限框使用下拉列表其他使用文本框验证码下方为登录和重置两个按钮用户点击登录按钮则进行登录验证。 登录流程图如下所示。 图5-1登录流程图 系统登录界面如下所示。 图5-2系统登录 登录关键代码如下。 /** * 登录 * param data * param httpServletRequest * return */ PostMapping(login) public MapString, Object login(RequestBody MapString, 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; MapString, 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); MapString, 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 (resnull){ 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用户首页的实现 在美食分享的用户首页主要有用户登录页面以及的展示等在首页的导航栏中可看出该系统主要有等主要模块。 如下图所示为系统的用户首页界面。 图5-3用户首页 5.2.2注册模块的实现 这块程序首先根据所取得的表单中的用户名查询数据库中是否有相同用户名的记录如果数据库存在相同的用户名则提示用户名已存在否则打开记录集并添加一条新的记录然后系统默认要给用户发送注册成功的提醒。 用户注册流程图如下所示。 图5-4用户注册流程图 用户注册界面如下图所示。 图5-5用户注册 用户注册关键代码如下。 /** * 注册 * param user * return */ PostMapping(register) public MapString, Object signUp(RequestBody User user) { // 查询用户 MapString, 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评论模块的实现 用户点击进入美食文章详细页点击评论按钮进入评论页提交评论信息成功发布评论管理员管理用户的评论信息。 用户评论流程图如下所示。 图5-6用户评论流程图 用户评论界面如图所示。 图5-6用户评论 5.3管理员子系统模块的实现 5.3.1用户管理模块的实现 系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除这个权限只有管理员具有。 系统用户管理界面如下图所示。 图5-7系统用户管理 5.3.2密码修改模块的实现 密码修改是对当前登录用户的密码进行修改在用户登录后右上方也能进行密码修改。 密码修改流程图如下所示。 图5-8密码修改流程图 密码修改界面如图所示。 图5-9修改密码 5.3.3食谱分类管理模块的实现 美食食谱添加功能主要指对其美食食谱名称、描述、类型、图片、内容等一些基本信息的添加、删除和修改。美食查询能根据美食id、名称、标题等多种条件对美食食谱进行查询。 食谱分类管理流程图如下所示。 图5-10食谱分类管理流程图 食谱分类如下图所示 图5-11食谱分类 食谱分类管理关键代码如下所示。 PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { service.insert(service.readBody(request.getReader())); return success(1); } Transactional public MapString, Object addMap(MapString,Object map){ service.insert(map); return success(1); } public MapString,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(MapString,Object body){ StringBuffer sql new StringBuffer(INSERT INTO ); sql.append().append(table).append().append( (); for (Map.EntryString,Object entry:body.entrySet()){ sql.append(humpToLine(entry.getKey())).append(,); } sql.deleteCharAt(sql.length()-1); sql.append() VALUES (); for (Map.EntryString,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美食攻略管理模块的实现 用户根据自己兴趣搜索美食攻略前台显示美食攻略。用户可以在线进行美食攻略查看管理员对美食攻略进行发布管理等操作等。 美食攻略管理如下图所示 图5-12美食攻略管理 美食攻略管理关键代码如下所示。 RequestMapping(/get_list) public MapString, Object getList(HttpServletRequest request) { MapString, 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-2029.
[4]鲜易洲,杨蕊,吴蓉,巩培桢,吴丽丽.时食美食网站的设计与分析[J].电脑知识与技术,2021,17(09):85-87.
[5]吴晨,毛玉萃,张乐.一款基于SSM的中华美食网站的设计与实现[J].电脑知识与技术,2020,16(19):70-72.
[6]顾捷.舟山紫菜“海味”美食分享[J].农村百事通,2020(01):42-43.
[7]黄安.基于PHPMysql技术的网站设计与实现——以美食网站系统的设计为例[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):263265. 免费领取项目源码请关注❤点赞收藏并私信博主谢谢-