# 健康饮食数据分析可视化推荐系统 **Repository Path**: guangduan/Healthy-Diet-Data-Analysis-and-Visualization-Recommendation-System ## Basic Information - **Project Name**: 健康饮食数据分析可视化推荐系统 - **Description**: 基于Hadoop的健康饮食数据分析可视化推荐系统采用Java 技术Spring Boot框架和Hadoop,spark,hive,Scrapy爬虫,MySQL数据库,B/S 结构,Vue.js 技术,基于用户收藏的协同算法向用户推荐健康饮食。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-19 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 健康饮食推荐系统, SpringBoot, MySQL, Vue, Hadoop-spark-hive ## README ## 基于Hadoop的健康饮食推荐系统的设计与实现 ## 前言介绍 本文基于Hadoop的健康饮食推荐系统采用Spring Boot、Vue.js、MySQL、Element UI、Spring Data JPA,Hadoop,Spark,hive等技术,构建了一个功能全面的Web应用。该系统实现了用户注册与登录、用户个人信息管理、用户饮食记录等功能模块,为用户提供个性化的饮食推荐服务。管理员可以通过系统进行用户信息管理和饮食记录审核。此外,Python爬虫技术用于采集最新的饮食数据,确保推荐内容的时效性和准确性。 系统通过整合前后端技术,提供了高效的数据处理和用户体验。Hadoop集群负责存储和处理大规模饮食数据。系统的模块化设计使得各功能相互独立又紧密协作,提升了系统的可扩展性和维护性。用户能够方便地浏览和选择适合自己健康需求的菜单,管理员则可以灵活地管理用户信息和审核饮食记录,确保系统的正常运行。 ## 01开发环境 1.1Java 技术 1.2Spring Boot 框架 1.3Hadoop,spark,hive 1.4Scrapy爬虫 1.5MySQL数据库 1.6B/S 结构 1.7Vue.js 技术 1.8基于用户收藏的协同算法 ## 02系统功能模块 亮点(爬虫【食品安全网站】、协同算法推荐、数据预测、Echarts可视化) 1、数据管理:爬虫信息列表展示。 2、数据存储:mysql数据库。 3、可视化分析:各种数据分析统计后图表大屏展示。 4、数据分析:根据hadoop大数据技术进行数据分析 ## 03图片展示 ![输入图片说明](01.png) ![输入图片说明](02.png) ![输入图片说明](03.png) ![输入图片说明](04.png) ![输入图片说明](05.png) ![输入图片说明](06.png) ![输入图片说明](08.png) ![输入图片说明](08-1.png) ![输入图片说明](09.png) ![输入图片说明](010.png) ![输入图片说明](011.png) ## 04代码展示 ``` /** * 交流学习vx18484646674 * 协同算法(基于用户收藏的协同算法) */ @RequestMapping("/autoSort2") public R autoSort2(@RequestParam Map params,CaipinxinxiEntity caipinxinxi, HttpServletRequest request){ String userId = request.getSession().getAttribute("userId").toString(); Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString()); List storeups = storeupService.selectList(new EntityWrapper().eq("type", 1).eq("tablename", "caipinxinxi")); // 创建协同过滤对象 UserBasedCollaborativeFiltering filter = new UserBasedCollaborativeFiltering(); // 为指定用户推荐物品 String targetUser = userId; int numRecommendations = limit; List recommendations = filter.recommendItems(storeups, "userid", "refid", userId, numRecommendations); // 输出推荐结果 System.out.println("Recommendations for " + targetUser + ":"); for (String item : recommendations) { System.out.println(item); } EntityWrapper ew = new EntityWrapper(); ew.in("id", String.join(",", recommendations)); if(recommendations!=null && recommendations.size()>0 && recommendations.size()>0) { ew.last("order by FIELD(id, "+"'"+String.join("','", recommendations)+"'"+")"); } // 根据协同结果查询结果并返回 PageUtils page = caipinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caipinxinxi), params), params));; List pageList = (List)page.getList(); if(recommendations!=null && recommendations.size()>0 && pageList.size()(); ew.notIn("id", recommendations); ew.orderBy("id", false); ew.last("limit "+toAddNum); pageList.addAll(caipinxinxiService.selectList(ew)); } else if(pageList.size()>limit) { pageList = pageList.subList(0, limit); } page.setList(pageList); return R.ok().put("data", page); } ```