重庆地区外卖店铺分析系统的设计与实现

发布于:2022-11-29 ⋅ 阅读:(578) ⋅ 点赞:(0)

目 录
摘 要 I
ABSTRACT II
1 绪论 1
1.1选题背景及目的意义 1
1.1.1课题研究背景 1
1.1.2课题研究的目的和意义 1
1.2研究现状 2
1.2.1国内研究现状 2
1.2.2 国外研究现状 3
1.2.3发展趋势 4
1.3 研究主要内容 5
2 系统相关技术介绍 7
2.1 hadoop系统架构 7
2.2 数据导入导出工具sqoop和日志收集工具flume 8
3 需求分析 10
3.1 美团外卖店铺需求分析 10
3.1.1 功能性需求分析 10
3.1.2 非功能性需求分析 10
3.2 系统需求分析 11
4 系统设计 12
4.1 系统架构流程设计说明 12
4.2 日志收集模块设计 14
4.2.1 点击流概念 14
4.2.2 日志数据内容详述 15
4.3.原始数据存储模块 15
4.3.1数据存储模块简介 15
4.3.1 数据存储模块表结构 16
4.4 美团外卖店铺用户行为指标介绍 18
4.4.1 获取采集到的原始数据信息如下图 18
4.4.2 最后计算出来的数据指标设计 18
4.5 前端展示模块设计 19
4.5.1 前端展示模块设计说明 19
4.5.2 前端模块功能介绍 19
5 美团外卖店铺用户行为分析系统实现过程 21
5.1 日志收集模块的实现 21
5.2 数据存储模块实现 21
5.3 数据清洗模块设计实现 23
5.3.1 模块设计说明 23
5.3.2原始数据清洗出原始表数据核心数据值与计算逻辑 24
5.3.3 用weblogbean表计算出pageviews表的数据核心数据值与计算逻辑 25
5.3.4 用pageviews表计算出views表的数据核心数据值 26
5.4 前端模块功能以及实现流程 28
6 系统测试 32
6.1日志收集模块测试 32
6.2 数据存储模块测试以及数据的导入导出mysql测试 32
6.3 前端模块测试加上数据清洗模块测试 35
7 总结 37
参考文献 38
致 谢 39
1.3 研究主要内容
按照软件工程开发规范进行课题的设计、实现、测试和部署发布,编写对应的设计和测试文档、创建课题的运行环境,完成课题所需的数据库创建和源代码编写。
①项目前期阶段
美团外卖作为现阶段外卖市场的龙头老大,其数据也具有普遍代表意义。确定数据来源为美团外卖重庆地区店铺、美团外卖店铺评价、美团外卖店铺好评率、商品销量、商品种类、数据。
②数据采集阶段
通过python的scrapy框架对美团重庆地区店铺、美团外卖店铺评价、评论等数据的爬取,考虑到所爬取数据内容复杂且数据为json格式,初始阶段爬取到的数据采用MongoDB数据库进行存储。
③数据清洗阶段
对所采集的大量数据进行数据清洗、集成、规约等处理,通过填补遗漏数据、消除异常数据、平滑噪声数据,以及纠正不一致数据,去掉数据中的噪音、填充空值、丢失值和处理不一致数据,确保数据的完整性、唯一性、权威性、合法性、一致性,经过预处理之后的、具有一定价值的数据训着存储在MySQL数据库中。
④数据分析阶段
1.基于Numpy、Pands函数库使用统计学分析方法,分析并展示重庆地区美团外卖店铺外卖种类喜好分布、商家销量排名。本文转载自http://www.biyezuopin.vip/onews.asp?id=14166以及时间和空间维度上的外卖销量数据。
2.基于C4.5算法的消费者选择模型构建。以商家销售量和消费者好评率为指标,将K-means聚类结果划分为两类。推荐商家、不推荐商家将其作为分类属性基于C4.5算法建立决策树模型得到配送费、店铺评分和好评率是影响是否推荐消费者选择商家的主要因素然后从决策树中提取分类规则。
3.基于K-means聚类的店铺分类模型构建。初步选取影响店铺分类的主要指标使用主成分分析将其降维然后使用K-means聚类算法得到外卖商家分类。并使用ROC曲线、查准率、精准率方法对算法模型进行评估。
⑤数据展示阶段
基于Django搭建网站框架,图形化展示美团外卖店铺的特点以及美团外卖店铺的喜好情况。

1.首先看一下maven用到的框架版本如下:
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <spring.version>4.3.20.RELEASE</spring.version>
        <aspectj.version>1.8.9</aspectj.version>
        <mybatis.version>3.4.6</mybatis.version>
        <log4j.version>1.2.17</log4j.version>
        <slf4j.version>1.7.21</slf4j.version>
        <mybatis.spring.version>1.3.2</mybatis.spring.version>
        <commons.dbcp.version>1.4</commons.dbcp.version>
        <jstl.version>1.2</jstl.version>
        <mysql.version>5.1.46</mysql.version>
        <commons.lang3.version>3.4</commons.lang3.version>
        <commons.fileupload.version>1.3.1</commons.fileupload.version>
</properties>

2.然后是mybatis连接数据库的对象映射关系给一个表的示例代码如下(其他表都差不多):
public interface PageviewsMapper {
    public List<Pageviews> getAllPageviews() throws Exception;
    public Pageviews getOnePageviews(String session) throws Exception;
    public void insertPageviews(Pageviews pageviews) throws Exception;
    public void updatePageviews(Pageviews pageviews) throws Exception;
    public void deletePageviews(String session) throws Exception;
    public List<Pageviews> getAllPageviewsWhere(Pageviews pageviews) throws Exception;
}
Mapper层的Xml文件内容主要是写sql操作数据库的主要功能如下还有部分没有贴出来:
    <!-- 查询所有记录, 返回的是一个List<Student> -->
    <select id="getAllPageviews" resultType="Pageviews">select * from pageviews</select>
    <!-- 查询一个外卖用户 -->
    <select id="getOnePageviews" parameterType="String" resultType="Pageviews">
		select * from pageviews where session = #{session}
	</select>
    <!-- 插入一个外卖用户记录 -->
    <insert id="insertPageviews" parameterType="Pageviews">
		insert into pageviews
		(session, key1, remote_addr, timestr,tequest,step,staylong,referal,useragent,bytes_send,status)
		 values (#{session}, #{key1}, #{remote_addr},#{timestr},#{tequest},#{step},#{staylong},
		 #{referal},#{useragent},#{bytes_send},#{status})
	</insert>
    <!-- 修改一个外卖用户记录 -->
    <update id="updatePageviews" parameterType="Pageviews">
		update pageviews set session
		= #{session}, key1 = #{key1}, remote_addr = #{remote_addr},
		 timestr = #{timestr},tequest = #{tequest},step = #{step},
		 staylong = #{staylong},referal = #{referal},useragent = #{useragent},
		 bytes_send = #{bytes_send},status = #{status}
		where session = #{session}
	</update>
    <!-- 删除一个外卖用户记录 -->
    <delete id="deletePageviews" parameterType="String">
		delete from pageviews
		where session = #{session}
	</delete>
</mapper>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看