1. 项目概述
美食菜谱推荐App是一款基于Android平台的应用,旨在为用户提供菜谱浏览、搜索以及个性化推荐功能。用户可以通过该应用浏览菜谱、选择食材、查看推荐的菜谱,甚至上传自己的菜肴照片。
2. 项目结构
该项目分为两个主要部分:
- Android应用 (
cook_menu):
- 这是安卓端的核心部分,提供用户交互界面以及菜谱相关的功能。
- 主要文件目录:
- app:主要的安卓应用模块,包含应用的核心功能。
- common_util:存放应用中共用的工具类和函数。
- dimenslib:用于管理布局或尺寸的库。
- multi-image-selector:允许用户选择多张图片的库。
- picasso:图片加载库,用于高效加载和缓存图片。
- volley:用于网络请求和响应管理的库。
- Gradle配置:
- gradle.properties:包含环境相关的配置。
- build.gradle:Gradle构建脚本,定义了项目的构建过程和依赖。
- settings.gradle:设置项目结构和模块信息。
- Web版本 (
cook_menu_web):
- 这是应用的Web版,用户可以通过网页浏览菜谱。
- 目录结构:
- src:Web应用的源代码。
- WebRoot:包含HTML、CSS和JavaScript等静态资源。
- .settings, .classpath, .project:标准的Eclipse配置文件。
3. 核心功能模块
3.1 用户功能
- 用户登录与注册:用户可以创建账户并进行登录,支持账户信息管理(如更改密码、个人资料等)。
- 个性化推荐:系统根据用户的历史浏览数据和评分生成个性化的菜谱推荐。
- 食材管理:用户可以输入已有的食材,系统会根据这些食材推荐菜谱。
- 菜谱搜索与浏览:用户可以通过关键词、菜系、食材等筛选条件查找菜谱。
3.2 后端功能
- 网络请求:使用Volley库从服务器获取菜谱数据,通过JSON解析获取菜谱详情、图片等信息。
- 图片加载:使用Picasso库加载并缓存菜谱图片,提升加载速度。
- 数据存储:菜谱数据和用户数据存储在本地数据库中,并通过网络更新数据。
3.3 数据库设计
该系统主要采用SQLite数据库存储用户数据、菜谱信息及用户评分等。以下是数据库设计的详细结构:
3.3.1 数据库表设计
- 用户表 (
users):
id(INTEGER, Primary Key, Auto Increment):用户ID。username(TEXT, NOT NULL):用户名。password(TEXT, NOT NULL):用户密码(加密存储)。email(TEXT, UNIQUE):用户电子邮箱。profile_pic(TEXT):用户头像图片路径(可选)。
- 菜谱表 (
recipes):
id(INTEGER, Primary Key, Auto Increment):菜谱ID。name(TEXT, NOT NULL):菜谱名称。description(TEXT):菜谱描述。ingredients(TEXT):菜谱所需食材。steps(TEXT):制作步骤。image_url(TEXT):菜谱图片URL。category(TEXT):菜谱分类(如“主菜”、“甜点”)。created_at(TEXT):菜谱创建时间。
- 用户评分表 (
ratings):
id(INTEGER, Primary Key, Auto Increment):评分ID。user_id(INTEGER, Foreign Key):关联用户ID。recipe_id(INTEGER, Foreign Key):关联菜谱ID。rating(INTEGER, NOT NULL):用户评分(1-5)。comment(TEXT):用户评论(可选)。
3.3.2 数据库操作
- 增:插入新菜谱或用户数据。
INSERT INTO recipes (name, description, ingredients, steps, image_url, category) VALUES (?, ?, ?, ?, ?, ?)- 查:查询所有菜谱或根据条件查询菜谱。
SELECT * FROM recipes WHERE category = ?- 更新:更新菜谱信息。
UPDATE recipes SET description = ?, ingredients = ? WHERE id = ?- 删:删除菜谱或用户数据。
DELETE FROM recipes WHERE id = ?
3.4 用户交互
- 主界面:通过
MainActivity类,显示菜谱列表,用户可以通过点击菜谱查看详细信息。 - 菜谱详情:
RecipeActivity类用于展示菜谱的详细信息,包括制作步骤、所需食材等。 - 网络请求管理:通过
NetworkManager类,应用通过Volley库从服务器获取菜谱数据。 - 图片加载:Picasso用于异步加载菜谱图片。
4. 核心代码分析
4.1 网络请求代码
使用Volley库发起网络请求并解析响应:
RequestQueue queue = Volley.newRequestQueue(context);
String url = "https://example.com/api/recipes";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// 解析JSON并更新UI
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// 处理错误
}
});
queue.add(jsonObjectRequest);
4.2 图片加载代码
使用Picasso库加载图片:
Picasso.get().load(recipe.getImageUrl()).into(recipeImageView);
4.3 数据库操作代码
使用SQLite进行数据存储和查询:
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", recipe.getName());
values.put("description", recipe.getDescription());
long newRowId = db.insert("recipes", null, values);
5. 技术栈
- Android:使用Android Studio进行开发,使用Java或Kotlin编写移动端应用。
- Web:Web版使用传统的Java Web技术。
- 库:
- Picasso:用于图片的加载与缓存。
- Volley:用于管理网络请求。
- Multi-Image Selector:处理多张图片选择的库。
- Gradle:用于项目自动化构建、依赖管理等。
6. 环境设置与安装
Android应用:
- 克隆或下载项目文件。
- 使用Android Studio打开项目。
- 同步Gradle以解决所有依赖。
- 在Android模拟器或物理设备上运行应用。
Web应用:
- 将
cook_menu_web文件夹导入Eclipse或其他Java IDE。 - 设置本地服务器(如Tomcat)来运行Web应用。
- 打开
src目录,查看并修改Web代码。
7. 组件描述
Android应用组件:
- MainActivity.java:应用的入口点,管理用户界面和导航。
- RecipeActivity.java:显示选中的菜谱,展示其食材、步骤和图片。
- RecipeAdapter.java:适配器,用于在列表视图或网格视图中显示菜谱。
- NetworkManager.java:通过Volley管理网络操作,从服务器获取菜谱数据。
Web应用组件:
- WebRoot:包含Web资源,如HTML、CSS和JavaScript。
- src:Web应用的源代码,可能涉及后端或前端逻辑。
8. 总结
- 此文档详细介绍了美食菜谱推荐App的项目结构、核心功能、数据库设计和主要代码实现。通过结合Android应用和Web版本的功能,可以为用户提供完整的菜谱推荐和浏览体验。未来可以根据用户需求进行功能扩展和优化。
详细功能演示:
【计算机毕设之基于安卓美食菜谱推荐app(s2025014)】 https://www.bilibili.com/video/BV1bZ4y187oM/?sharesource=copyweb&vd_source=3d18b0a7b9486f50fe7f4dea4c24e2a4



272

被折叠的 条评论
为什么被折叠?



