本文以SpringBoot基于Android的美食小助手系统为研究对象,旨在利用现代化技术为用户提供一个方便实用的美食相关信息查询和推荐平台。鉴于当今社会对美食的热爱和对科技的依赖,开发这样一个系统既能满足用户方便获取美食信息的需求,也能充分利用现代化技术为用户提供个性化的美食推荐。
本文采用了Android开发平台作为前端展示界面,利用Android平台广泛的用户群体和良好的交互体验,为用户提供友好的界面和便捷的操作。通过与后端服务的结合,用户可以利用系统进行无缝的查询和推荐操作。在美食查询功能方面,用户可以根据关键词、地点和价格等条件进行查询,系统会快速给予相关的美食信息。在美食推荐功能方面,系统通过用户的历史查询记录和个人喜好进行分析,为用户推荐符合其口味和兴趣的美食。
系统后端采用了SpringBoot框架作为开发工具,通过其简洁高效的特性实现了后端服务的搭建和运行。利用SpringBoot的自动配置和约定优于配置的原则,开发者可以快速开发出高效稳定的后端服务。前端使用Android Studio作为开发 IDE,通过其完善的界面设计工具和强大的开发框架,实现了用户友好的界面展示和操作流程。该系统实现了快速高效的美食信息查询和个性化推荐功能,用户可以便捷地获取到满足自己需求的美食信息。这一研究对于满足用户对美食的需求,促进美食文化的传播和推广,具有一定的实际应用价值。
关键词:基于Android的美食小助手系统;Java语言;Spring Boot框架;MySQL数据库
ABSTRACT
This article takes SpringBoot's Android based food assistant system as the research object, aiming to provide users with a convenient and practical food related information query and recommendation platform using modern technology. Given the love for food and reliance on technology in today's society, developing such a system can not only meet the needs of users for convenient access to food information, but also fully utilize modern technology to provide personalized food recommendations for users.
This article adopts the Android development platform as the front-end display interface, utilizing the wide user base and good interactive experience of the Android platform to provide users with a friendly interface and convenient operations. By combining with backend services, users can utilize the system for seamless query and recommendation operations. In terms of food search function, users can search based on keywords, location, and price conditions, and the system will quickly provide relevant food information. In terms of food recommendation function, the system analyzes the user's historical query records and personal preferences to recommend food that meets their taste and interests.
The system backend uses the SpringBoot framework as a development tool, which achieves the construction and operation of backend services through its concise and efficient features. By utilizing SpringBoot's principles of automatic configuration and convention over configuration, developers can quickly develop efficient and stable backend services. The front-end uses Android Studio as the development IDE, and through its comprehensive interface design tools and powerful development framework, it achieves user-friendly interface display and operation process. The system implements fast and efficient food information query and personalized recommendation functions, allowing users to easily obtain food information that meets their needs. This study has certain practical application value in meeting the needs of users for food, promoting the dissemination and promotion of food culture.
Keywords: An Android based food assistant system; Java language; Spring Boot framework; MySQL database
第1章 绪论
1.1研究背景及意义
在当今社会,随着人们生活水平的提高和生活节奏的加快,美食已经成为人们生活中不可或缺的一部分。人们对于美食的需求不仅仅停留在基本的填饱肚子上,更多的是对于品质、口味、营养和健康等方面的追求。同时,随着智能手机的普及和移动互联网的发展,人们习惯于通过手机获取各种信息,包括美食信息。
在这样的背景下,基于Android平台的美食小助手系统应运而生。该系统通过整合各种美食相关的信息资源,为用户提供方便快捷的美食查询、推荐、分享等功能,满足了人们日常生活中对于美食的多样化需求,提升了用户的生活品质和体验。
传统的美食查询方式需要用户通过各种渠道收集信息,不仅费时费力,而且信息的真实性和准确性无法保证。基于Android的美食小助手系统整合了各种可靠的美食信息资源,用户可以通过手机轻松获取到所需信息,提升了美食信息的获取效率。美食小助手系统不仅提供基本的美食查询功能,还通过智能推荐算法为用户推荐符合其口味和偏好的美食,丰富了用户的美食选择,提升了用户的美食体验。美食小助手系统是移动互联网技术在美食领域的应用典范,通过研究该系统的设计与实现,可以推动移动互联网技术在其他领域的应用与发展,促进了移动互联网技术的创新与进步。
1.2国内外研究概况
在当今数字化时代,移动应用程序已经成为人们生活中不可或缺的一部分。随着智能手机的普及和移动互联网的发展,人们越来越依赖移动应用程序来解决日常生活中的各种需求,其中包括寻找美食的需求。美食文化作为人类文明的一部分,不仅仅是满足基本的营养需求,更是一种享受和体验生活的方式。因此,设计一款基于Android平台的美食小助手系统,能够满足用户对美食的多样化需求,提供个性化的推荐和服务,具有重要的现实意义和应用价值。
目前的移动美食应用市场已经是蓬勃发展的态势,国内外各类美食应用层出不穷,如国内的美团、饿了么和国外的OpenTable等。这些应用通过整合商家信息、用户评价和优惠活动等内容,为用户提供了便捷的美食搜索和预订服务。在移动美食应用中,用户往往面临着海量的美食选择,因此如何根据用户的偏好和口味进行个性化的推荐成为了研究的热点之一。国内外学者提出了各种基于内容过滤、协同过滤、深度学习等算法的美食推荐方法,取得了一定的成果。但是,现有算法在推荐准确性、实时性和用户体验方面仍然存在一定的局限性。
随着移动智能技术的不断发展,人工智能、大数据分析等技术在美食领域的应用也日益广泛。例如,基于语音识别的智能美食推荐系统、基于图像识别的美食拍照识别系统等,为用户提供了更加智能化、个性化的美食体验。美食小助手系统作为一款移动应用程序,其用户体验和交互设计对于用户的黏性和满意度至关重要。因此,国内外学者对于移动应用的用户界面设计、交互操作方式、信息呈现方式等方面进行了大量的研究和探索,为设计优秀的美食小助手系统提供了理论支持和实践经验。
综上所述,基于Android的美食小助手系统的研究已经成为了学术界和工业界的热点之一。通过对国内外研究现状的分析和总结,可以为后续的系统设计和算法优化提供借鉴和参考,推动移动美食应用领域的发展和创新。
1.3主要研究内容
本研究旨在开发一款基于Android平台的美食小助手系统,主要研究内容包括但不限于以下几个方面:
(1)用户需求分析: 通过用户调研和市场分析,了解用户在美食方面的需求和痛点,明确系统的功能和特点。
(2)系统设计与架构: 基于Android平台,设计系统的整体架构和模块划分,确定系统的核心功能和技术实现方案。
(3)美食推荐算法: 利用协同过滤和数据挖掘技术,开发智能推荐算法,根据用户的口味偏好、地理位置和时间等因素,为用户推荐合适的美食。
(4)菜品管理功能: 提供丰富的菜品信息资源,用户可以浏览、点评、收藏和分享自己喜欢的菜品信息,并支持用户评论评分。
(5)用户个性化服务: 根据用户的历史行为和偏好,为用户提供个性化的服务和推荐,提升用户体验。
第2章 相关技术简介
2.1开发环境与工具概述
本系统的开发环境包括硬件环境和软件环境两个部分。硬件环境包括开发人员电脑的硬件配置,包括中央处理器、内存、硬盘等硬件设备。软件环境包括操作系统、开发工具和开发库等软件配置。
硬件环境:1)CPU:Intel Core i5 以上;2)内存:8GB 以上;3)硬盘:256GB SSD 以上。
软件环境:1)操作系统:Windows 10;2)开发工具:Android Studio、SpringBoot、MySQL;3)开发库:JavaSE、Spring MVC、Spring Data JPA、MySQL Connector/J
开发工具介绍:
1)Android Studio:Android Studio是由Google公司推出的一个集成开发环境 (IDE),用于开发Android应用程序。它基于IntelliJ IDEA项目构建,具有强大的代码编辑器和调试工具,能够实现快速、高效的Android应用程序开发。
2)SpringBoot:Spring Boot是一种用来简化Spring应用程序开发的框架,它基于Spring框架,通过自动化配置和约定优于配置的原则,提供了一种快速搭建、快速开发的方式,使开发人员能够更加专注于业务逻辑的实现。
3)MySQL:MySQL是一个开源的关系型数据库管理系统,广泛应用于各类开发项目中。它具有高性能、高可靠性和良好的扩展性,同时也支持跨平台运行。
通过以上开发工具和环境的搭建,开发人员可以基于Android和SpringBoot框架进行系统的开发和调试工作,提高开发效率和质量。
2.2Android介绍
Android作为目前全球最主流的移动操作系统之一,其开放性和灵活性使其成为了众多移动应用开发者的首选平台。Android系统基于Linux内核,采用Java编程语言,通过Dalvik虚拟机运行应用程序。其生态系统庞大,拥有丰富的开发工具和资源,包括Android Studio集成开发环境、Android SDK、Google Play商店等。
Android应用程序采用MVC(Model-View-Controller)架构,通过Activity、Service、Content Provider、Broadcast Receiver等组件实现各种功能。而Android的UI设计主要依托于XML布局和Java代码相结合的方式,通过View、ViewGroup等控件实现用户界面的构建与交互。
在移动应用开发领域,Android技术的应用涵盖了各个领域,包括社交、娱乐、生活服务等。基于Android平台的应用具有跨平台性、用户量大、便于推广等优势,因此备受开发者和用户的青睐。
2.3MySQL数据库
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),其稳定性、可靠性和卓越性能使其成为众多应用程序的首选数据库。MySQL支持标准SQL语法,并提供丰富的功能和特性,如事务处理、触发器和存储过程等,以满足开发者对数据管理和操作的需求。MySQL具有良好的可扩展性,支持主从复制、分布式架构和集群部署,适用于各种规模和负载的应用场景。作为一个开源项目,MySQL拥有庞大的用户社区和活跃的开发者社区,为用户提供了丰富的文档、教程和支持资源。总之,MySQL是一款可靠、强大且灵活的关系型数据库管理系统,通过其卓越性能和可扩展性,帮助开发者高效地管理和操作数据,并得到了广大用户的认可和应用。
2.4B/S架构的介绍
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
2.5Java语言
Java编程语言是一种面向对象的高级编程语言,以其简单、可移植、安全和高性能等特点在软件开发领域广泛应用。通过支持类、对象、继承、多态等面向对象概念,Java提供了结构化的编程方式,使代码更易读、维护和重用。其可移植性得益于Java虚拟机(JVM),使得Java程序可以在不同平台上运行,只需编写一次代码。Java注重安全性,提供了字节码验证、异常处理和访问控制等安全机制,确保程序的稳定和安全。此外,Java还拥有丰富的类库和框架,覆盖了各个领域,如图形界面、数据库操作和企业级应用。总而言之,Java作为一门成熟且强大的编程语言,在软件开发中发挥着重要作用,帮助开发者轻松构建可靠、可移植和安全的应用程序。
2.6SpringBoot框架
Spring Boot是一个基于Spring boot的开源框架,旨在简化和加速Java应用程序的开发过程。它采用自动配置和约定优于配置的方式,减少了繁琐的手动配置和集成工作,使开发者能够快速构建独立、可扩展且具备生产级功能的应用程序。Spring Boot集成了许多常用的第三方库和组件,并提供了强大的开发工具和特性,如内嵌的Servlet容器、自动化依赖管理和可扩展的插件机制。它的可插拔配置选项和灵活的扩展机制使开发者能够根据实际需求进行个性化配置和定制,从而更好地满足项目要求。总之,Spring Boot通过简化和优化开发流程,提高了Java应用程序开发的效率和质量,成为广大开发者喜爱的框架之一。
第3章 系统需求分析
3.1系统可行性分析
3.1.1技术可行性分析
基于Android的美食小助手系统具有技术可行性,Java作为跨平台编程语言,具有良好的稳定性和可靠性,适合大型系统的开发;Spring Boot框架简化了系统搭建和配置过程,提高了开发效率;MySQL作为开源的关系型数据库,提供了稳定的数据存储和管理能力。这些技术的综合应用能够支持系统的功能实现和运行。
3.1.2经济可行性分析
本文提出了一种以开放源码为基础的基于Android的美食小助手系统,该系统在经济上是可行的。Java、Spring Boot和MySQL等技术都是免费开源的,减少了系统开发和维护的成本。同时,采用开源技术也降低了系统的运营成本。
3.1.3操作可行性分析
基于Android的美食小助手系统使用起来比较方便,只需登录就可以完成菜品和店铺信息的浏览,以及评分评论、分享等功能。同时,系统采用直观友好的界面设计,结合简单明了的操作流程,使用户能够轻松浏览、进行点评操作,降低了用户的学习成本和操作难度。
综合来看,基于Android的美食小助手系统在技术、经济和用户操作方面都具备较好的可行性,能够满足实际的开发和应用需求。
3.2系统需求分析
3.2.1功能需求分析
基于Android的美食小助手系统为普通用户提供首页、菜品信息、店铺信息、我的等功能,便于用户浏览、交流和用户点评。管理员则拥有后台首页、系统用户、菜品信息管理、评论评分管理、菜品分类管理、店铺信息管理、系统管理和系统公告管理等功能。该研究可以确保系统安全、信息质量和用户体验。具体功能需求分析如下:
首页:在用户登录之后,将会在系统中呈现出一个独特的页面,并提供相应的导航链接,使用户能够更快地找到自己需要的功能模块。
菜品信息:本小程序首页提供了菜品信息的快捷入口,方便用户快速查询菜品信息并进行点评分享。
店铺信息:小程序首页提供了店铺信息的快捷入口,方便用户快速查询店铺信息并进行评论、收藏和分享。
我的:用户个人信息管理的模块,展示用户的基本信息、收藏、评论评分信息。
后台首页:管理员登录后的系统管理界面,提供各项管理功能入口,包括用户管理、内容管理等。
系统用户:管理员可以管理系统用户账号信息,包括增删改查等操作。
菜品信息管理:管理员可以管理菜品信息,包括菜品信息的发布、删除,以及对用户违规评论的管控等,维护评论信息的合法合规。
评论评分管理:管理员可以管控用户提交的评论评分信息,及时处理点评内容,维护系统秩序。
菜品分类管理:管理员负责管理和编辑菜品信息的标签,方便用户分类查看和内容检索,提升用户的浏览体验。
店铺信息管理:管理员可以管理店铺信息,包括店铺信息的发布、删除,以及对用户违规评论的管控等,维护评论信息的合法合规。
系统公告管理:管理员可以对系统的通告进行发布和编辑,将重要的通知和信息传递给用户,保证用户能够在最短的时间内得到重要的资讯,提高用户的参与性。
3.2.2非功能需求分析
本项目拟从性能、可靠性、安全性、可维护性、易用性等多个角度对该平台进行评价,以保证该平台既能满足使用者的需要,又能保证系统的正常工作。具体如下:
表3-1 基于Android的美食小助手系统非功能需求表
非功能性要求 | 说明 |
该系统需要能支持多个用户的并发访问与处理,并具有快速的响应能力,并能维持稳定的运行,确保良好的用户体验。 | |
可靠性 | 该系统需要能支持多个用户的并发访问与处理,并具有快速的响应能力,并能维持稳定的运行,确保良好的用户体验。 |
安全性 | 对网络中的数据进行加密处理,保证用户的个人资料安全,并对系统设置权限管理与存取控制,以避免非法存取及信息外泄。 |
可维护性 | 评估系统的可扩充性与弹性,以满足更新扩展的需要。 |
用户友好性 | 界面设计简洁直观,操作流程清晰易懂,提供良好的用户体验。 |
3.3 系统用例分析
系统用例分析是对系统中各个功能模块的用户需求和行为进行分析,以识别和描述不同的用户用例,描述他们与系统之间的交互流程和功能需求,从而明确系统应该如何响应用户的操作和需求。基于Android的美食小助手系统中用户角色用例图如图3-1所示:
图3-1普通用户角色用例图
基于Android的美食小助手系统中管理员用例图如图3-2所示:
图3-2 管理员用例图
3.4系统流程分析
用户首先通过注册登录系统,进入系统主页。用户可以浏览小程序首页信息、菜品信息、店铺信息和系统公告,进行用户点评、评论互动和分享等。管理员则通过后台首页管理系统用户、菜品信息、评论评分、菜品分类、店铺信息、轮播图和系统公告等。用户在系统中的操作会触发相应的数据交互和处理流程,包括用户身份验证、数据存储、信息检索和展示等过程。
3.4.1增加数据流程
管理员增加数据的流程包括登录系统后选择相应的数据管理模块,填写或导入数据,进行数据校验和确认,最后提交数据以完成新增操作。流程图如下所示:
图3-4增加数据流程图
3.4.2修改数据流程
管理员登录系统后选择相应的数据管理模块,查询并选择需要修改的数据,进行数据修改并进行必要的校验,最后提交修改后的数据以完成修改操作。管理员需要对修改的数据进行谨慎处理,确保修改的准确性和完整性,以维护系统数据的一致性和有效性。流程图如下所示:
图3-5 修改数据流程图
3.4.3删除数据流程
管理员登录系统后选择相应的数据管理模块,查询并选择需要删除的数据,确认删除操作并进行必要的校验,最后提交删除操作以完成数据的删除。流程图如下所示:
图3-6 删除数据流程图
第4章 系统设计
4.1系统功能模块设计
整个功能模块的设计主要是对系统的功能进行划分与组织,明确各功能模块间的相互联系及互动过程,以保证系统符合使用者的要求。对各个模块的输入、输出、处理逻辑以及它们之间的联系进行了细致地界定,保证了各个模块间的配合与无缝连接,从而使整个系统的功能得以有效地运行。具体的功能模块图如图所示。
图4-1 基于Android的美食小助手系统功能模块图
4.2数据库设计
4.2.1 数据库概念结构设计
数据库概念结构设计是指定义数据库的逻辑结构,包括实体、属性和实体之间的关系,为数据库的物理实现提供基础,确保数据的存储和检索具有一致性和完整性。下面是整个系统的总E-R关系图。
图4-2 基于Android的美食小助手系统总E-R关系图
4.2.2 数据库逻辑结构设计
数据库概念结构设计是指定义数据库中的实体、属性和实体间的关系,以逻辑方式描述数据存储需求,为物理数据库设计提供基础,确保数据结构合理性和完整性。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
表categorization_of_dishes (菜品分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | categorization_of_dishes_id | int | 10 | 0 | N | Y | 菜品分类ID | |
2 | classification_name | varchar | 64 | 0 | Y | N | 分类名称 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_rating_id | int | 10 | 0 | N | Y | 评论评分ID | |
2 | user_account | int | 10 | 0 | Y | N | 0 | 用户账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | contact_information | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | dish_name | varchar | 64 | 0 | Y | N | 菜品名称 | |
6 | dish_number | varchar | 64 | 0 | Y | N | 菜品编号 | |
7 | user_rating | int | 10 | 0 | Y | N | 0 | 用户评分 |
8 | comment_details | text | 65535 | 0 | Y | N | 点评详情 | |
9 | comment_time | datetime | 19 | 0 | Y | N | 点评时间 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | dish_information_id | int | 10 | 0 | N | Y | 菜品信息ID | |
2 | dish_name | varchar | 64 | 0 | Y | N | 菜品名称 | |
3 | dish_number | varchar | 64 | 0 | Y | N | 菜品编号 | |
4 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
5 | categorization_of_dishes | varchar | 64 | 0 | Y | N | 菜品分类 | |
6 | introduction_to_dishes | longtext | 2147483647 | 0 | Y | N | 菜品介绍 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | contact_information | varchar | 16 | 0 | Y | N | 用户电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | store_information_id | int | 10 | 0 | N | Y | 店铺信息ID | |
2 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
3 | shop_photos | varchar | 255 | 0 | Y | N | 店铺照片 | |
4 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系电话 | |
5 | store_address | text | 65535 | 0 | Y | N | 店铺地址 | |
6 | store_features | text | 65535 | 0 | Y | N | 门店特色 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
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 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第5章 系统实现
5.1普通用户模块
5.1.1 用户注册
注册模块满足用户两部分,当用户想要进行相关信息的查询管理的时候,就必须进行登录,如果没有账号的话在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好注册信息,添加提交,注册的信息在数据库中就添加完成了。后续输入账号和密码即可进行登录。界面展示如下图所示。
图5-1 注册界面图
注册关键代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
5.1.2 用户登录
管理员、用户在登录界面输入账号+密码,完成验证,点击“登录”按钮,系统在用户数据库表中会对管理员用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息返回到登录的界面。界面展示如下图所示。
图5-2 登录界面图
登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, 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;
Map<String, 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);
Map<String, 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 (res==null){
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.1.3 前台首页
前台首页界面是用户访问系统的入口页面,它应该展示平台的主要功能和特色,并提供导航链接以便用户浏览和搜索信息。首页界面的设计应注重页面的美观性和用户体验,同时也需要考虑页面的加载速度和响应性能。界面展示如下图所示。
图5-3 前台首页界面图
5.1.4 菜品信息
菜品信息是基于Android的美食小助手系统的核心功能之一,用户可以查看系统发布的菜品信息,进行用户点评、评论、收藏和分享。通过用户点评功能,用户可以对菜品信息提交点评信息。菜品信息功能的实现丰富了系统的内容资源,提升了用户的参与度和交流互动,为用户创造了一个开放、分享的平台。界面如下图所示。
图5-5 菜品信息查看界面图
查询菜品信息关键代码如下所示。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
图5-6评论评分界面图
提交评论评分信息关键代码如下所示。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.1.5 店铺信息
店铺信息是美食小助手系统的核心功能之一,用户可以查看系统发布的店铺信息,包括店铺名称、店铺照片、联系电话、店铺地址、门店特色等,可以进行评论、收藏和分享。界面如下图所示。
查询店铺信息关键代码如下所示。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
图5-8 店铺信息分享界面图
5.1.6 我的
“我的”模块是前台用户独有的功能,进入到用户个人信息管理界面,可以对基本信息、收藏和评论评分进行管理。我的界面如下图所示。
5.2管理员模块
5.2.1 系统用户
系统用户管理功能包括注册、登录、权限设置、个人信息管理等,管理员可以审核注册请求、管理用户权限。该功能可以确保用户信息的准确性和完整性。界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/6cd743d7e7ea4ba69ed54d0cde62cd45.png)
图5-10 系统用户管理界面图
修改用户信息关键代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
5.2.2 菜品信息管理
管理员可以管理菜品信息,包括发布的菜品信息、评论和回复。菜品信息管理功能使管理员能够有效监控和管理系统中的内容,保障用户的权益和系统的稳定运行。通过菜品信息管理,管理员可以及时处理问题和纠正错误,提高系统的内容质量和用户体验,确保系统的良好运行和发展。菜品信息管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/e4de190ff4ec44f3af67b76ba5287562.png)
图5-11 菜品信息管理界面图
5.2.3 评论评分管理界面
管理员执行评论评分管理,点击“评论评分管理”会显示出所有用户的评论评分信息,可以通过用户电话、菜品名称或菜品编号进行查询。评论评分管理界面如下图5-12所示。
![](https://i-blog.csdnimg.cn/direct/88eb23183f774aa798713e35f4c94d54.png)
图5-12 评论评分管理界面图
5.2.4 菜品分类管理
管理员执行菜品分类管理,并可以操作相关内容,包括查询菜品分类、删除菜品分类和添加菜品分类等。通过菜品分类用户可以更加方便快捷的筛选出自己感兴趣的菜品信息。菜品分类添加界面如下图5-13所示。
![](https://i-blog.csdnimg.cn/direct/cba97865078a4a14a6837e939bb6a942.png)
图5-13菜品分类添加界面图
添加菜品分类关键代码如下所示。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.2.5店铺信息管理
管理员可以管理店铺信息,可以编辑、发布和删除店铺信息,还可以对用户提交的评论信息进行管控。通过店铺信息管理,管理员可以及时发现并处理系统中存在的不合规内容,促进用户之间的健康互动。店铺信息管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/b996e0bf9f55441487a4fdfffd408a18.png)
图5-14 店铺信息管理界面图
删除店铺信息关键代码如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
5.2.6系统管理
管理员执行对系统前台轮播图进行增删改查,方便用户进行查看。轮播图管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/51cc63869bf04b65ac00ff0f9e349f30.png)
图5-15 轮播图管理界面图
轮播图上传关键代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
第6章 系统测试
6.1测试的目的
测试的目的在于验证系统功能是否符合用户需求和规格要求,发现和解决潜在问题,评估系统性能和质量水平,确保系统稳定可靠,提升用户体验,保证系统按照预期目标运行。功能验证确保各项功能按设计要求运行;性能评估评估系统的响应时间和并发处理能力;安全检测确保系统的身份认证和数据传输安全;用户体验评估提升界面友好性和操作流程;兼容性测试确保系统在不同设备和浏览器上的兼容性。
6.2系统部分测试
系统测试包括:用户注册、用户登录、评论评分、发布菜品信息等,如表6-1、6-2、6-3、6-4所示:
表6-1 用户注册测试用例
测试内容 | 测试步骤和预期结果 | 测试结果 | |
6-1 | 用户注册 | 输入有效用户名、密码、邮箱,预期成功注册并跳转至登录页面。 | 通过 |
6-2 | 用户注册 | 输入已存在的用户名,点击注册,预期系统提示用户名已被注册。 | 通过 |
6-3 | 用户注册 | 当键入不符合规定的密码,然后按下注册键,预计会出现密码错误的提示。 | 通过 |
表6-2 用户登录测试用例
测试内容 | 测试步骤和预期结果 | 测试结果 | |
6-1 | 用户登录 | 输入正确用户名和密码,点击登录按钮,预期成功登录系统。 | 通过 |
6-2 | 用户登录 | 输入不正确的用户名称、正确的密码,然后按登录键,预计会出现登录失败的提示。 | 通过 |
6-3 | 用户登录 | 输入正确用户名,错误密码,点击登录按钮,预期系统提示登录失败。 | 通过 |
表6-3 评论评分测试用例
测试编号 | 测试内容 | 测试步骤和预期结果 | 测试结果 |
7-1 | 评论评分 | 查看菜品信息,点击评论评分,预期可以成功提交点评信息。 | 通过 |
7-2 | 评论评分 | 提交点评信息后,预期用户能够正确接收点评信息。 | 通过 |
7-3 | 评论评分 | 审核点评信息,预期用户可以审核点评信息并进行回复。 | 通过 |
表6-4 发布菜品信息测试用例
测试内容 | 测试步骤和预期结果 | 测试结果 | |
8-1 | 发布菜品信息 | 输入有效的菜品信息和名称,点击发布按钮,预期成功发布菜品信息并显示在列表中。 | 通过 |
8-2 | 发布菜品信息 | 在不填标题的情况下,填写内容后发表,预计系统会提示名称不能是空白。 | 通过 |
8-3 | 发布菜品信息 | 在不填写内容的情况下,按下发表键,预期系统将提示内容不能是空白。 | 通过 |
6.3系统测试的结果
经过多项功能的测试,全部测试结果均显示通过。用户注册功能能够成功注册新用户并跳转至登录页面,用户登录功能能够正确验证用户身份并跳转至用户首页,评论评分功能支持用户查看菜品信息并进行评论评分,发布菜品信息功能允许用户成功发布和编辑菜品信息。通过对该系统的测试,证明了该系统的各项功能均达到了预定的目的,为用户提供了一个稳定、安全、方便的美食小助手系统。
结 语
本论文成功实现了基于Android的美食小助手系统。通过系统化的规划、分析、设计和实现,系统包含了用户注册、登录、发布菜品信息、评论评分等多项功能。在实现过程中,遇到了性能优化和用户体验提升等问题。针对性能问题,进行了数据库查询优化、页面加载速度优化等措施;对于用户体验问题,优化了界面设计、交互流程等,提高了系统的易用性和稳定性。
通过本系统的实际应用,可以提升用户交流互动体验,通过评论评分和分享功能,促进用户之间的交流和互动,增强用户粘性和活跃度;其次可以增加用户参与度,用户可以点评菜品、发表评价内容,使用户参与感更强,提高用户忠诚度;最后是可以提高系统活跃度,通过评论评价功能处理违规内容,维护系统秩序,保障用户体验,使系统更具吸引力和竞争力。
在未来的实际应用中,可以为用户提供一个安全、便捷和丰富的基于Android的美食小助手系统,促进用户交流互动,促进内容分享和创作,增强用户参与感和系统活跃度,为用户和系统的发展带来新的机遇和挑战。
参考文献
[1]Fu X ,Jiang C ,Li C , et al.A hybrid approach for Android malware detection using improved multi-scale convolutional neural networks and residual networks[J].Expert Systems With Applications,2024,249(PB):123675-.
[2]Tang J ,Xu W ,Peng T , et al.Android malware detection based on a novel mixed bytecode image combined with attention mechanism[J].Journal of Information Security and Applications,2024,82103721-.
[3]Nie Y ,Chen Y ,Jiang Y , et al.A method of multidimensional software aging prediction based on ensemble learning: A case of Android OS[J].Information and Software Technology,2024,170107422-.
[4]Senanayake J ,Kalutarage H ,Petrovski A , et al.Defendroid: Real-time Android code vulnerability detection via blockchain federated neural network with XAI[J].Journal of Information Security and Applications,2024,82103741-.
[5]王斌,李峰,杨慧婷,等.Android应用程序漏洞检测方法和工具新进展[J].计算机技术与发展,2024,34(02):9-16.
[6]刘娜.数字美食的实践者分析框架:以大众点评App为考察点[J].新闻与写作,2024,(01):81-94.
[7]刘杰,梅昭容.基于Android移动端快速制图关键技术研究[J].测绘与空间地理信息,2023,46(09):157-159.
[8]周美玲,李彬彬,姜攀.基于Android的智慧养老系统App设计与实现[J].电脑编程技巧与维护,2023,(09):53-56+104.DOI:10.16184/j.cnki.comprg.2023.09.011.
[9]杨保山,杨智,陈性元,等.Android应用敏感行为与隐私政策一致性分析[J].计算机应用,2024,44(03):788-796.
[10]许朕瑀,白云飞,朱艳.基于Android平台的校园易书APP[J].电子制作,2023,31(17):57-61.DOI:10.16589/j.cnki.cn11-3571/tn.2023.17.029.
[11]吴莹莹,殷西祥.Android恶意软件检测方案探析[J].科技风,2023,(23):66-68.DOI:10.19392/j.cnki.1671-7341.202323022.
[12]王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
[13]魏明俊,杨庆.基于SpringBoot的评价预警系统设计与实现[J].电脑编程技巧与维护,2022,(02):12-14.DOI:10.16184/j.cnki.comprg.2022.02.003.
[14]朱珍珍,罗才军.菜谱里的中华年味儿——二下《中国美食》教学实录及点评[J].小学教学设计,2022,(Z1):75-80.
[15]邝计嘉.基于游客点评语料库的川菜形象构建与提升研究[J].当代旅游,2021,19(36):94-98.
[16]李绪远,陈云贵,何敏,等.智能烹饪小助手的设计与实现[J].电脑知识与技术,2021,17(32):81-83.DOI:10.14004/j.cnki.ckt.2021.3222.
[17]喻佳,吴丹新.基于SpringBoot的Web快速开发框架[J].电脑编程技巧与维护,2021,(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.
[18]Cheng F .Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J].Advances in Educational Technology and Psychology,2021,5(2):
[19]朱珍珍,丁明煜,柳景.基于Android的介绍河南特色APP的设计与实现[J].电脑编程技巧与维护,2020,(08):65-67.DOI:10.16184/j.cnki.comprg.2020.08.023.
[20]孙浩.基于Android的个性化美食推荐系统的研究与实现[D].辽宁大学,2020.DOI:10.27209/d.cnki.glniu.2020.000783.
致 谢
在Spring Boot基于Android的美食小助手系统过程中,我要衷心感谢导师和领导们的悉心指导与支持,他们的鼓励与信任是我不断前行的动力源泉。感谢家人和朋友们的支持与理解,是你们的陪伴让我在困难时刻感受到坚定的力量。每一个挑战都是成长的契机,让我更加坚强、勇敢,学会团结合作,共同面对未知的挑战。
未来的道路上,我将怀揣感恩之心,继续努力前行,为梦想不懈奋斗,书写更加精彩的人生篇章。保持对知识的渴望和对技术的热爱,不断探索创新、追求卓越。勇攀科技高峰,为实现更多梦想而努力奋斗,为社会进步、为科技发展贡献自己的力量。在这个奋进的时刻,回顾过去的努力和付出,感慨收获和成长。让我将这份感恩之心传递下去,激励自己和身边的人,不忘初心,继续前行。让我们共同努力,书写更加精彩的明天!感谢有你们,让我们一起向前奔跑!
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-