学科分类号____________
昆明城市学院
本科毕业论文(设计)
开题报告书
题 目基于springboot的美食推荐管理系统
姓 名
学 号
学 院
专 业
指导教师
年 月 日
论文(设计题) | 基于springboot的美食推荐管理系统 |
课题的根据:1)说明本课题的理论、实际意义 2)综述国内外有关本课题的研究动态和自己的见解 1.本课题的理论意义 对于美食商家,通过网站可以向世界展示自己的风采,让更多人了解自己,提升公众知名度。而且在互联网上,信息的沟通非常方便、廉价,内容却更加丰富。商家再也用不着将大量的产品介绍、产品信息邮寄给远方那些仅仅对此有意向的客户,直接将产品陈列在相关网站上供人们浏览即可,其及时性更无可比拟。 2.本课题的实际意义 美食信息化在国外发展已经相当成熟,而我国美食信息化正处于蓬勃发展阶段。在实现计算机技术与管理理念、营销手段相结合的内容方面,结合较为成熟的网络开发技术,充分借鉴和利用已有成功开发经验,发挥我们后发优势,加速美食企业信息化建设的步伐,这是推动我国传统中华餐饮业与国际接轨,与时代同行的重要内容,势必也是未来信息产业与传统产业相结合的发展趋势。 3.国内外研究动态 ShaneCond(20110)设计了一套将餐饮点餐与餐饮收款相融合的餐饮支付系统,通过该系统用户可以完成网上订餐下单,订单付款等功能,能够将餐饮企业收款机像PC机一样实现订餐支付即时到账,取消了餐饮企业收取现金的流程,提高餐饮企业工作效率. 王聪等(2015)设计开发融合情境的移动美食推荐系统,改系统基于Android平台为用户提供针对于不同时令的情景美食推荐,在不同节日中,以节日主题为特色的美食搭配大大提高的用户对美食的渴望诉求,让餐饮企业进入主题时代。 周建亮(2015)对基于无线终端设备点餐系统的设计与实现方面将传统餐馆点餐流程以APP方式引入到客户手机端,实现用户与餐饮企业之间无缝衔接,提高用户用餐效率,增加餐饮企业销售收入. 4.自己的见解 本课题来源于生产实际,本系统基于美团外卖店铺自营的商业模式,并且在校期间有做过类似于基于Hadoop大数据平台下的用户喜好推荐分析而进行课题研究,美食推荐系统解决的是消费者选择到自己合意的商品,同时扩大了外卖店铺的知名度和提高外卖销量,被更多的用户所选择,而不仅仅局限于以往的大海捞针。 | |
课题的主要内容: 近年来,我国的美食行业发展较为迅速,我国正迎来一个美食大发展的关键时期,市场潜力巨大,前景非常可观。美食行业必须依据自己条件和环境因素等条件,看清美食市场的发展前景与趋势,选择适当的经营方法,才有可能在激烈的市场竞争中获得成功。在目前,有各种各样美食网站,形形色色的,例如:团购网、饿了么等相关网站,多数都是关于吃的,美食天下、美食杰、下厨房、豆果网、好豆网、贝太厨房美、食博客心食谱、天天美食、家常菜大全、中国菜谱网、39健康饮食、百度糯米、大众点评、POCO美食、饮食男女等都是美食网站,团购网可以在你想吃饭的周围搜素你要吃的食物,搜素商家等。美食网站的发展对自己美食商品店起到积极的推动作用。所以建立一个美食推荐网站对人们具有很大的帮助,美食网站的美食销售模式增强自己美食商品实际效益,又方便了美食消费者对美食商品的选择。所以发开款一款美食推荐系统,很有必要。 本系统按照《软件工程导论》为指导思想,采用敏捷开发的模式逐层迭代项目。后端采用Java框架组合springboot++MyBatis,这种架构符合三层架构的设计思想,可以做到控制层、业务层、持久层解耦。由于springboot框架具有粘合剂的作用,可以很快整合其他开源技术,对于开发人员来说减少了框架整合的烦恼。数据层框架mybatis比较轻量级,可以使用MBG逆向工程生成通用的CRUD代码,对于一些特殊的sql我们可以手写然后注册Mapper接口来使用,当数据库遇到瓶颈后我们可以通过优化mybatis的sql语句来提升性能,因此来说本系统采用mybatis符合业务需求。 系统使用Java框架springboot技术完成功能开发,使用MySQL数据库存储数据,完成美食推荐网站的设计。系统主要具有以下功能: 1、数据爬虫端:数据爬取、数据清洗、数据集入库mysql 2、前端用户功能: 用户可以对美食智能搜索,提供各种搜索条件;查看美食详情,添加至购物车,可以在线支付,能查询我的订单;最后对美食评价; 3、管理员后端功能: 管理员可以对用户管理、评论管理、订单管理、美食管理、商家管理 | |
研究方法: 开发技术 前端:vue.js 后端:jdk1.8+maven+springboot+mybatis 数据库:mysql5.7 算法(机器学习、深度学习):Python实现协同过滤算法(基于用户、基于物品全部实现)、基于神经网络的混合CF推荐算法进行推荐、Python实现lstm情感分析(美食评论) 爬虫:python、requests、chrome_driver 实现思路 ①订单支付调用支付宝沙箱支付模式,可以在页面通过账号+密码的方式支付,也可以使用手机扫码支付; ②用户评论使用lstm情感分析机器学习算法进行数据分析,对情感倾向、准确率进行直观显示; ③基于协同过滤算法进行美食推荐,有基于物品的推荐实现,也有基于物品实现的推进;基于神经网络的混合CF推荐算法进行美食推荐; ④使用Python爬虫技术爬取美食数据,对数据进行清洗,存储到mysql为数据分析、可视化提供数据集; | |
完成期限和采取的主要措施: 第一阶段(2022年10月15日-2022年11月15日):确定论文题目和功能。 第二阶段(2022年11月16日-2023年01月07日):2022年12月20日前老师任务书下达。2023年01月07日前,根据老师下达的任务书,参考相关资料,撰写开题报告。 第三阶段(2023年01月08日-2023年03月01日):进行需求分析,对系统功能模块设计,编写相应系统代码并进行测试。 第四阶段(2023年03月02日-2023年04月27日):2023年04月10日前,撰写论文初稿。2023年04月17日前,对论文初稿进行修改,论文定稿并交由指导老师审核。2023年04月27日前,对论文成稿进行修改,确定论文终稿,连同查重证明交由答辩组审核。 第五阶段(2023年04月28日-2023年05月04日):准备答辩ppt,进行答辩。 | |
主要参考资料: [1] 王建芳,韩鹏飞,苗艳玲,司马海峰.一种基于用户兴趣联合相似度的协同过滤算[J].河南理工大学学报(自然科学版),2019,38(05):118-123. [2] 褚宏林.一种改进的协同过滤推荐算法及其并行算法研究[D].烟台大学,2021. [3] 张雨豪.基于协同过滤与启发式关联规则的混合推荐系统[D].南京邮电大学,2021. [4] 王佳斐,范伊红,宋永旗,王帅杰,付炳威.基于协同过滤算法的个性化影视推荐系统[J].电脑知识与技术,2022,18(23):12-13+18. [5] 葛林博.基于协同过滤的推荐算法研究与应用[D].西安电子科技大学,2021. [6] 何泽灵.基于协同过滤的推荐算法研究[D].重庆邮电大学,2020. [7] 薛亮,徐慧,冯尊磊,贾俊铖.一种改进的协同过滤的商品推荐方法[J].计算机技术与发展,2022,32(07):201-207. [8] 董立岩,修冠宇,马佳奇.基于权重调节和用户偏好的协同过滤算法[J].吉林大学学报(理学版),2020,58(03):599-604. [9]孙文心。社会化美食推荐系统研究与设计[D].大连:大连海事大学.2019(05):13—16 [10]王聪;刘启华;曹宇。融合情境的移动美食推荐系统研究[J].电脑知识与技术.2020(11):86-97 [11]王玉雯。中小餐饮企业智能服务系统设计与实现[D].成都:电子科技大学。2021(03):36-41 [12]周建亮.餐饮业智能点餐系统的设计与实现[D]。北京:北京邮电大学.2019(03):65—71 [13]陈婷婷.融合上下文和项目属性的美食商店信息推荐算法研究与实现[D]。北京:北京邮电大学。2019(03)11-17 [14] 张如云.基于大数据和搜索的关联推荐系统的设计与实现探析[J].办公自动化,2018,23(07):34-36. [15] 刘中林,郑凯东.基于大数据技术的购房推荐系统的设计与实现[J].信息与电脑(理论版),2022,34(07):190-193. [16] 朱本瑞.基于Spark的离线与实时的电影推荐系统设计与实现[D].南京信息工程大学,2022. [17] Zhao Junqing and Tie Pengfei. Design and Implementation of Energy-Saving Logistics Management System for Route Optimization[J].Wireless Communications and Mobile Computing, 2022. [18] Qi liang SUN. Design and Implementation of Personnel Management Information System Based on SSM[C].2021. | |
指导教师意见(研究的理论意义和应用价值、创新之处、研究方法可行性等): |
开题报告会纪要 | ||||||||||
时间 | 地点 | |||||||||
与 会 人 员 | 姓名 | 职务(职称) | 姓名 | 职务(职称) | 姓名 | 职务(职称) | ||||
会议记录摘要(学生阐述的主要内容,开题小组所提问题及学生的回答等): | ||||||||||
指导小组意见 | 负责人签名: 年 月 日 | 学院意见 | 负责人签名: 学院盖章: 年 月 日 |
package com.sql
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._
import org.junit.Test
import java.util.Properties
class MeituanSpark {
val spark = SparkSession.builder()
.master("local[6]")
.appName("美团Spark实时计算")
.getOrCreate()
val schema = StructType(
List(
StructField("shop_id", StringType),
StructField("shop_name", StringType),
StructField("total_score", FloatType),
StructField("goods",IntegerType),
StructField("mids", IntegerType),
StructField("bads", IntegerType),
StructField("imgs",IntegerType),
StructField("price", IntegerType),
StructField("reviewCount", IntegerType),
StructField("taste_score", FloatType),
StructField("env_score", FloatType),
StructField("serv_score", FloatType),
StructField("tese_tuan", StringType),
StructField("tese_cu", StringType)
)
)
//val df = spark.read.option("header", "true").schema(schema).csv("G://sparksqlnk02//dataset//lvyou.csv")
val df = spark.read.option("header", "true").schema(schema).csv("hdfs://192.168.227.166:9000/ods_shop_detail/shop_detail2023.csv")
//val df = spark.read.option("header", "true").schema(schema).
val df1 = df.na.drop()
@Test
def init(): Unit = {
df.show()
}
@Test
def head(): Unit = {
df1.show()
}
// ----剩余指标8 指标9走Spark实时计算
//
// ---服务得分最差的十个店铺
@Test
def tables08(): Unit = {
df.createOrReplaceTempView("ods_shop_detail")
val df2 = spark.sql(
"""
select shop_name,serv_score
from ods_shop_detail
order by serv_score asc
limit 10
""")
df2
// .show(50)
.coalesce(1)
.write
.mode("overwrite")
.option("driver", "com.mysql.cj.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.jdbc(
"jdbc:mysql://bigdata:3306/2408_meituan?useSSL=false",
"table08",
new Properties()
)
}
// ----剩余指标8 指标9走Spark实时计算
// ---好评、差评、中评、图片评论占比扇形图
@Test
def tables09(): Unit = {
df.createOrReplaceTempView("ods_shop_detail")
val df2 = spark.sql(
"""
select '好评' name,sum(goods) from ods_shop_detail
union
select '中评' name,sum(mids) from ods_shop_detail
union
select '差评' name,sum(bads) from ods_shop_detail
union
select '图片评' name,sum(imgs) from ods_shop_detail
""")
df2
// .show(50)
.coalesce(1)
.write
.mode("overwrite")
.option("driver", "com.mysql.cj.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.jdbc(
"jdbc:mysql://bigdata:3306/2408_meituan?useSSL=false",
"table09",
new Properties()
)
}
}