# 家庭菜单管理系统 **Repository Path**: yui97i/menu_system ## Basic Information - **Project Name**: 家庭菜单管理系统 - **Description**: 这是一个专为家庭设计的简单、实用的菜单管理系统。它可以帮助家庭成员记录菜谱、快速下单,并解决"今天吃什么"的世纪难题。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-14 - **Last Updated**: 2026-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🏠 家庭菜单管理系统 (Home Menu System) 这是一个专为家庭设计的简单、实用的菜单管理系统。它可以帮助家庭成员记录菜谱、快速下单,并解决"今天吃什么"的世纪难题。 ## 🌟 核心功能 1. **角色系统**: * **干饭大王**:管理菜单、点菜下单、随机点餐、查看历史订单 * **做饭大王**:管理菜单、接收下单提醒、完成订单、随机点餐、查看历史订单 * 启动时自动跳转登录页选择角色身份 2. **菜单管理**:支持菜品的增加、删除、修改和查看。菜品分为五大类:**荤菜、素菜、主食、水果、减脂餐**。 3. **点菜下单**:直观展示所有菜品,勾选后即可一键生成今日菜单,并存入历史记录。 4. **历史订单**:查看所有历史下单记录,支持删除操作。做饭大王可以标记订单为"已完成"。 5. **智能随机点餐**: * **数量自定义**:支持设置每次随机抽取的菜品数量(1-10 道) * **全品类随机**:从每个分类中各随机抽取 n 个菜品(空分类自动跳过) * **单品类随机**:针对指定分类进行随机抽取 * **分类切换**:切换分类时自动清空之前的结果,重新开始随机 * **多选下单**:随机结果可多选,确认后再统一提交订单 6. **批量操作 (Excel)**: * **模版下载**:提供带下拉列表约束的 Excel 模版,确保分类录入准确 * **批量导入**:支持将整理好的 Excel 菜谱一键导入系统 * **数据导出**:支持将系统内的菜单导出为 Excel 文件,方便备份和查看 7. **数据持久化**:支持连接 MySQL 数据库,重启电脑或程序后数据不会丢失。 8. **新订单提醒**:做饭大王登录后,如有未处理订单,通知按钮会显示角标提示。 ## 🛠️ 技术栈与设计思路 ### 后端 (Java / Spring Boot) * **核心框架**:Spring Boot 3.2.3 * **数据存储**:MySQL (通过 `application.properties` 配置) * **持久层**:Spring Data JPA,通过 `@Entity` 和 `@Repository` 实现数据访问 * **Excel 处理**:Apache POI,用于生成和解析 `.xlsx` 文件 * **代码规范**:使用枚举类 `Category` 规范菜品分类,增强了代码的健壮性 ### 前端 (HTML / JavaScript) * **UI 框架**:Tailwind CSS (通过 CDN 引入),无需复杂的前端构建流程 * **架构**:原生 JavaScript 实现的单页面应用 (SPA),通过动态显示/隐藏不同板块实现页面切换 * **交互**:使用原生 Fetch API 与后端进行 RESTful 通信 * **权限控制**:基于 localStorage 的角色验证机制,确保页面访问权限 ## 📂 项目结构 ![输入图片说明](.vscode/image.png) ## 🚀 快速启动 ### 1. 环境准备 * 安装有 **Java 17** 或更高版本 * 安装有 **Maven** * 安装并运行 **MySQL** 数据库 ### 2. 配置数据库 * 在你的 MySQL 中创建一个名为 `menu_system` 的数据库 * 打开 `backend/src/main/resources/application.properties` 文件 * 修改 `spring.datasource.url`, `spring.datasource.username`, `spring.datasource.password` 以匹配你的数据库设置 ### 3. 运行后端 进入 `backend` 目录,执行以下命令:mvn spring-boot:run 程序启动后,后端 API 和静态页面都将托管在你配置的端口上(默认为 `8765`)。 ### 4. 访问系统 在浏览器地址栏输入:http://localhost:8765/ 系统会自动跳转到登录页,选择您的角色身份即可开始使用。 ## 📖 使用说明 ### 干饭大王(点菜者) 1. 登录时选择"干饭大王"角色 2. **菜单管理**:可以添加、编辑、删除菜品,支持 Excel 导入导出 3. **点菜下单**:勾选今日想吃的菜品,点击"确认下单" 4. **随机点餐**: * 设置随机数量(如 3 道) * 点击"全品类随机":每个分类各随机 3 个菜品 * 点击"随机荤菜":只从荤菜中随机 3 个(切换分类会自动清空结果) * 从随机结果中勾选想要的菜品,点击"确认下单选中菜品" 5. **历史订单**:查看自己下的所有订单 ### 做饭大王(厨师) 1. 登录时选择"做饭大王"角色 2. 如有新订单,通知按钮会显示角标 🔔 3. **菜单管理**:同干饭大王 4. **订单处理**:查看未处理的订单,点击"✅ 完成"按钮标记为已完成 5. **随机点餐**:功能同干饭大王 6. **历史订单**:查看所有订单及其完成状态 ## ⚙️ 配置说明 ### 端口配置 默认端口:`8765` 修改 `application.properties` 中的 `server.port` 可更改端口 ### 数据库配置 properties spring.datasource.url=jdbc:mysql://你的数据库地址:端口/menu_system?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=你的用户名 spring.datasource.password=你的密码 --- *祝您和家人用餐愉快!* 👨‍👩‍👧‍👦🍲