食物数据分析系统vue+flask

食物数据分析系统

项目概述

食物数据分析系统是一个集食物营养成分查询、对比分析和数据可视化于一体的Web应用。系统采用前后端分离架构,为用户提供食物营养信息检索、食物对比和营养分析等功能,帮助用户了解食物的营养成分,做出更健康的饮食选择。

系统架构

总体架构

系统采用前后端分离的架构设计:

  • 前端:基于Vue.js框架,使用Element UI组件库,Echarts图表库实现数据可视化
  • 后端:基于Flask框架,提供RESTful API服务
  • 数据库:MySQL数据库存储食物和营养成分数据
  • 数据处理:Python脚本实现数据清洗和转换

技术栈

前端技术栈
  • Vue.js 2.x:前端MVVM框架
  • Vue Router:前端路由管理
  • Axios:HTTP客户端
  • Element UI:UI组件库
  • Echarts:数据可视化图表库
后端技术栈
  • Flask:Python Web框架
  • PyMySQL:MySQL数据库连接
  • SQLAlchemy:ORM框架
  • Pandas:数据分析和处理

数据流程

数据获取与处理

系统使用的食物数据经过以下流程处理:

  1. 数据抓取:通过foodSpider目录下的爬虫采集食物数据
  2. 数据转换 :使用data_conversion.py将JSON格式数据转换为CSV格式
  3. 数据清洗 :使用data_cleaning.py进行数据清洗,包括:
    • 删除空格和多余字符
    • 重命名属性(列)
    • 删除不需要的属性(列)和行
    • 去除重复项
    • 处理缺失值(填充为0)
  4. 数据导入:将处理后的CSV数据导入MySQL数据库

功能模块

前端模块

前端系统主要包含以下视图和功能:

  1. 食物搜索 (search_food.vue)

    • 根据食物名称搜索
    • 显示搜索结果列表
    • 查看详细营养信息
  2. 食物对比 (food_contrast.vue)

    • 选择两种食物进行对比
    • 以图表形式展示营养成分对比
    • 对比结果分析
  3. 营养分析 (food_power.vue)

    • 食物营养价值分析
    • 主要营养素含量查看
    • 营养素详情分析
  4. 营养详情 (nutrition_details.vue)

    • 展示特定营养素含量排名靠前的食物
    • 详细营养素数据展示

后端API接口

后端提供多个API接口,主要包括:

  1. 食物查询接口

    • /api/food/food_list:根据名称查询食物列表
    • /api/food/food_detailed:获取食物详细信息
  2. 营养成分接口

    • /api/food/nutrition_list:获取营养成分名称列表
    • /api/food/nutrition_style_list:获取营养类别列表
    • /api/food/nutrition_details:获取特定营养成分详情
  3. 分析接口

    • /api/food/main_nutrition:获取主要营养素信息
    • /api/food/nutrition_analysis:获取食物营养分析
    • /api/food/similar_foods:查找相似食物
    • /api/food/top_foods:获取某营养成分含量最高的食物

数据库设计

系统使用MySQL数据库,主要包含以下表:

  1. foodinfo表:存储食物基本信息和营养成分

    • id:食物ID
    • 食物名称:食物名称
    • 其他字段:各种营养成分含量
  2. nutritions_name表:存储营养素名称和分类信息

    • id:营养素ID
    • nurition_name:营养素名称
    • nurition_style_id:营养素分类ID
  3. style表:存储营养素分类

    • nurition_style_id:分类ID
    • nurition_style_name:分类名称

部署指南

环境要求

Mac系统环境
  • Python 3.6+
  • Node.js 10+
  • MySQL 5.7+
  • pip包管理工具
  • npm包管理工具
Windows系统环境
  • Python 3.6+
  • Node.js 10+
  • MySQL 5.7+
  • pip包管理工具
  • npm包管理工具

后端部署

  1. 数据库设置

    sql 复制代码
    CREATE DATABASE food_analysis;
    USE food_analysis;
    
    -- 根据food.sql导入数据
    SOURCE /path/to/food.sql;
  2. 后端环境设置

    bash 复制代码
    # 进入后端目录
    cd back_end
    
    # 安装依赖
    pip install -r requirements.txt
    
    # 修改配置
    # 编辑config.py文件,配置数据库连接信息
    
    # 启动服务器
    python run.py

前端部署

  1. 前端环境设置

    bash 复制代码
    # 进入前端目录
    cd front_end
    
    # 安装依赖
    npm install
    
    # 开发模式启动
    npm run serve
    
    # 生产环境构建
    npm run build
  2. 配置后端API地址

    • front_end/src/config.ts中设置API基础URL

完整启动流程

  1. 启动MySQL数据库服务
  2. 运行后端Flask应用 python back_end/run.py
  3. 运行前端Vue应用 cd front_end && npm run serve
  4. 访问 http://localhost:8080 打开应用

开发指南

添加新的食物数据

  1. 准备CSV格式的食物数据
  2. 使用data_cleaning.py进行数据清洗
  3. 导入MySQL数据库

添加新的API接口

  1. back_end/api/food.py中定义新的路由和处理函数
  2. back_end/app.py中登记新的路由端点

添加新的前端页面

  1. front_end/src/views目录下创建新的Vue组件
  2. front_end/src/router.js中添加新的路由配置
  3. 更新相关导航链接

常见问题与解决方案

数据编码问题

  • 确保CSV文件使用UTF-8或GBK编码
  • 在读取CSV文件时指定正确的编码格式
  • 数据库表使用utf8mb4字符集

数据库连接问题

  • 检查数据库服务是否启动
  • 验证用户名密码是否正确
  • 确认数据库名称是否正确
  • 检查防火墙设置

前端API调用问题

  • 确认后端服务是否正常运行
  • 检查API地址配置是否正确
  • 查看浏览器控制台的网络请求错误信息

联系方式

咸鱼 :万能程序员







视频:https://www.bilibili.com/video/BV1JPVxzXEnd/

相关推荐
若梦plus1 分钟前
Zustand 使用优化:深入探讨状态管理性能提升
前端·react.js
Cache技术分享5 分钟前
96. Java 数字和字符串 - 比较字符串和字符串的各个部分
前端·后端
架构个驾驾5 分钟前
Vue2 Router 深度解析与实战指南
前端·javascript·vue.js
独立开阀者_FwtCoder11 分钟前
如何 “正确” hook JS方法
前端·javascript·github
尖椒土豆sss11 分钟前
vite项目启动后访问报错:Cannot read properties of undefined (read ing getTokens")
前端·vue.js
独立开阀者_FwtCoder12 分钟前
JS调试技巧:避免控制台卡死的日志断点使用技巧
前端·javascript·vue.js
用户214118326360217 分钟前
59-dify案例分享-衡水体作文提分神器!Dify 工作流自动评分 + 详细批改,效率翻倍
前端·人工智能
江城开朗的豌豆19 分钟前
JavaScript篇:Cookie 小饼干🍪:前端存储的‘老古董’,你用对了吗?
前端·javascript·面试
光之国总统19 分钟前
Vue3+SpringBoot 实现大文件分片上传、断点续传、暂停上传、上传进度、速度、剩余时间显示(超详细~)
前端