基于Hive数据仓库的租房数据分析系统的设计与实现_第1页
基于Hive数据仓库的租房数据分析系统的设计与实现_第2页
基于Hive数据仓库的租房数据分析系统的设计与实现_第3页
基于Hive数据仓库的租房数据分析系统的设计与实现_第4页
基于Hive数据仓库的租房数据分析系统的设计与实现_第5页
已阅读5页,还剩43页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1绪论 11.1课题背景以及意义 11.1.1课题背景 11.1.2课题目的和意义 11.2国内研究现状 11.3国外研究现状 22系统开发环境与开发技术 22.1数据仓库技术 22.1.1数据仓库架构 22.1.2数据仓库建模 32.2大数据相关技术 42.2.1Hadoop大数据框架 42.2.2Sqoop数据采集 42.2.3Spark计算引擎 52.3 JavaWeb相关技术 52.3.1SpringBoot框架 52.3.2Vue框架 63租房数据仓库系统需求分析 63.1系统总体概述 63.2系统功能性需求 63.2.1数据处理需求 63.2.2数据管理需求 73.2.3数据分析需求 73.3系统非功能性需求 83.4系统可行性分析 94概要设计 94.1系统架构 94.2系统结构设计 114.3系统功能设计 124.3.1登录注册设计 124.3.2评论评分设计 134.3.3搜索房源设计 144.3.4房屋预约设计 144.3.5发布房源设计 144.4数据库设计 154.4.1数据库概念结构设计 154.4.2数据库逻辑结构设计 175详细设计 195.1数据处理模块详细设计 195.1.1数据收集设计 195.1.2数据转换设计 205.2前台模块详细设计 205.2.1热门房源排行 205.2.1房源详情页面 215.3后台模块详细设计 225.3.1各模块添加设计 225.3.2各模块删除设计 235.4数据仓库详细设计 245.4.1不同区房源数分析 245.4.2各区域平均房价分析 256系统实现 256.1前台模块实现 266.1.1登录注册模块 266.1.2发布房源模块 286.1.3搜索房源模块 286.1.4聊天功能模块 296.1.5订单支付模块 306.2后台管理实现 316.2.1用户管理模块 316.2.2房源管理模块 316.2.3订单管理模块 336.2.4房源评论模块 336.2.2房源审核模块 346.3可视化大屏实现 346.1.1不同区房源数 346.1.2不同区平均房房价 357系统测试 367.1测试的目的 367.2测试的过程 367.2.1登录测试 367.2.2房源筛选测试 377.2.3房源筛选测试 377.2.5后台房源管理测试 387.3测试总结 398总结 39参考文献 41致谢 431绪论1.1课题背景以及意义课题背景近年来随着国内经济的快速发展,一座座高楼快速拔地而起,为此随之而来的还有农村的劳动力投入城市打拼,增加了城市人口数量,而这一部分人的目的仅仅是为了找到工作很少在工作的城市买房。对此房屋租赁市场对买卖双方对有着很大的需求,但是劳动人民能否租到满意的房屋这还是个问题,而且因为消息获知原因导致部分劳动人民经常被黑中介忽悠,并且还有付一定的中介费。此外,许多劳动人民的表达有限经常想的和说的不一致,中介也不能准确的满足求租者提供的要求。因此为了提高求租者的租房体验也为了减少不必要的费用我们迫切需要一个租房系统来满足双方的需求。为了满足市场的需求,本项目就孕育而生,目的就是为了分析房源的各种信息并做出可视化大屏供给租客及房东分析,租客如何找到适合自己的房屋以及房东怎么出租自己的房源。课题目的和意义通过设计和实现租房数据分析系统,可以对租房数据进行多维度、多层次的分析,揭示租房市场的规律和趋势,为租房者和房东提供有价值的信息和决策支持。引入推荐功能,可以根据租房者的个性化需求和偏好,为其推荐合适的房源,提高租房者的满意度和忠诚度,同时也增加房东的出租效率和收益。外出挣钱养家是多数人的无奈之举,对应大多数人来说在只需要有个一临时的住处就行了,并不需要买房在打工的地方,为此设计一款房源分析系统对于整个社会来说都是很有价值的,从不同的方向分析房源,减少租客在找房的时间,在提供效率的同时也促进了社会发展。国内研究现状在中国,分享经济的快速发展推动了短租行业的兴起。一些成熟的平台,如自如网、链家和蛋壳公寓等,已经在市场上占据了一席之地。他们的常规操作是通过公司或者中介与房东协商获取房源进行改造,但是在离市中心较近的地方租金普遍较高,一般的普通人可能会掏出自己近一半的工资来抵押租金,而稍微便宜一点的房源都比较远,在一线城市中通勤通常需要一个小时左右。但是如果直接找房东进行租房会便宜很多,因此他们可能会选择在线下寻找房源。此外,这种形式的房屋租赁也存在一定的风险。在国内,城市的不同会导致相同的平台会有一定的差异性。在一线城市如北京、上海、广州等地,由于房价较高、落户困难以及流动人口众多,租房需求旺盛,租房已经成为了一种社会常态[7,8]。而在二三线城市,由于房价较低、市场需求较小,租赁业务的规模也相对较小。因此,城市的地理位置和发展情况会对房屋租赁行业产生较大的影响[1]。国外研究现状在国际上,房屋租赁行业的发展较为先进和完善。其中,Airbnb和Homeaway是两家知名的美国公司,它们是最早从事房屋短期租赁业务的公司之一。Airbnb总部设在美国加州旧金山。是全球最大的在线另类住宿旅行社,也提供精品酒店和体验预订服务。,用户可通过网络或手机应用程序发布、搜索度假房屋租赁信息并完成在线预定程序。Airbnb在191个国家、65,000个城市为旅行者们提供数以百万计的入住选择,不管是公寓、别墅、城堡还是树屋。Airbnb公司的平台提供了大约700万个活跃的住宿列表。该公司的400多万房东的房源分布在世界上几乎每个国家。HomeAway总部位于美国德克萨斯州奥斯汀。是一个度假房屋租赁网站,提供短期出租房屋或房间,让旅行者通過网站或手機发掘和预訂世界各地的獨特房源。在全球145个国家拥有超过50万个假日租赁房源。2015年,ExpediaGroup以39亿美元的现金和股票收购了HomeAway。2020年,HomeAway和VRBO网站被重新品牌为单一的Vrbo网站。HomeAway的优势在于:提供信息数量大、与房东和房产经理关系良好、浏览网页的人数较多、网站分布地区广等。综上,基于Hive数据仓库的租房分析系统的研究和应用已经逐渐成为当前大数据领域的热点和趋势。国内外都有进行相关研究和应用的多个案例,相关技术已经成熟,未来的应用前景非常广阔。系统开发环境与开发技术数据仓库技术数据仓库架构对数据进行整合统一并建立模型从而获取价值数据。本次使用的是Hive数据仓库架构。Hive数据仓库架构如图2-1所示。图2-1Hive数据仓库架构图在Hive数据仓库架构中,确实常常使用星型模型或雪花模型来组织数据。这两种模型都有各自的优点和适用场景。星型模型的特点是简单和直观,它将事实表置于中心,维度表围绕其周围,就像星座一样。这种模型非常适合处理那些维度关系相对简单,且查询需求以报表汇总和OLAP分析为主的场景。而雪花模型则是星型模型的一种扩展,它允许维度表之间存在层次关系。这种模型的主要优点是能更好地处理复杂的层次结构和多对多的关系,但同时也带来了查询的复杂性。数据仓库建模主题导向,数据仓库建模以业务主题为中心,而不是以应用系统或技术为中心。它关注于某个特定的业务领域或业务需求,例如销售、市场营销、客户关系等。通过主题导向,数据仓库可以更好地支持业务分析和决策;集成的,据仓库建模需要整合多个数据源的数据,包括来自不同业务部门、不同系统的数据。这些数据可能以不同的格式、结构和标准存储,数据仓库建模需要将这些数据整合到一个统一的模型中,以支持全面的分析和报告;相对稳定的,数据仓库建模需要具有稳定性和持久性,即数据模型应该是长期稳定的,并且能够适应业务需求的变化。因此,在设计数据仓库模型时需要考虑未来的扩展性和灵活性,以应对业务的变化和发展;反映历史变化,数据仓库中会保存各个日期节点的数据,以满足不断变化的业务的需求。由于数据仓库具有上述四个特点,数据仓库建模是以业务主题为中心的集成性模型,具有稳定性和反应性特点。它通过主题导向实现对业务需求的精确支持,整合多个数据源的数据,确保数据模型长期稳定并适应业务变化,同时支持历史数据和时间变化的分析。大数据相关技术2.2.1Hadoop大数据框架(1)HDFS分布式文件系统HDFS是一个分布式文件系统,它能够处理运行在普通硬件上的大型数据集。它用于将单个ApacheHadoop集群扩展到数百甚至数千个节点。HDFS是ApacheHadoop的一个重要组件,其他组件包括MapReduce和YARN1。(2)MapReduce分布式计算引擎Map操作和Reduce操作。Map操作将输入数据划分为一系列键值对,并按照指定的函数进行处理生成中间结果;Reduce操作则对中间结果进行合并和计算得出最终的输出结果。MapReduce模型将大规模数据处理任务分解为多个可并行执行的小任务,每个任务在不同的计算节点上运行,最后将各个节点的结果进行整合得到最终结果。(3)YARN资源管理工具Yarn是Hadoop的集群资源管理系统。它负责管理计算资源,调度用户应用程序,并提供集群级别的服务。Yarn允许多种数据处理引擎(如MapReduce、Spark和Tez)在同一个Hadoop集群上运行,从而实现了更好的资源利用率和更快的数据处理速度。2.2.2Sqoop数据采集Sqoop是一个数据传输工具,主要用于Hadoop和关系数据库之间。它能够把关系数据库的数据导入到Hadoop的HDFS或Hive,同时也能将Hadoop的数据导出到关系数据库。Sqoop通过生成MapReduce作业来实现数据传输,它能够充分利用Hadoop集群的并行计算能力,实现高效的数据传输。Sqoop支持多种关系数据库,包括MySQL、Oracle、PostgreSQL和SQLServer等。Sqoop架构如图2-2所示。图2-2Sqoop架构图2.2.3Spark计算引擎Spark是一个开源的大数据处理框架,它被设计用于大规模数据处理,支持多种数据处理任务,包括批处理、实时流处理、机器学习和图计算等。Spark具有良好的横向扩展能力,可以轻松地扩展到大规模的集群中进行并行计算。它采用了RDD(ResilientDistributedDatasets)数据结构和DAG(DirectedAcyclicGraph)执行引擎,实现了高效的并行计算和任务调度。Spark架构图如图2-3所示。图2-3Spark架构图JavaWeb相关技术2.3.1SpringBoot框架SpringBoot是一个开源框架,它是为了简化项目配置依赖的繁琐,无需太多的配置并内置了许多常用的功能,如嵌入式Web服务器、安全性、数据访问和监控等。它还提供了丰富的启动器,可以快速集成各种常用的第三方库。2.3.2Vue框架Vue是一个开源的JavaScript框架,用于构建用户界面和单页应用程序。具有许多优点,包括简单易学、轻量级、灵活性高和性能优异等。它提供了声明式渲染、组件化系统和响应式数据绑定等功能,能够帮助开发人员快速构建复杂的用户界面。3租房数据仓库系统需求分析3.1系统总体概述基于Hive数据仓库的租房分析系统的目的是利用现市场流行发展的互联网技术快速分析出租房各个方面的数据比来提供用户选择和领导决策,系统还为用户提供个性化推荐房源服务。3.2系统功能性需求系统需求分析主要为:通过用户的日常行为和房源本身的性价比分析推荐出一套合适的房源给用户。功能性需求主要体现在数据处理、数据管理、数据分析、房源推荐等模块,现对如上模块进行需求分析。3.2.1数据处理需求本次项目对市场上已存在的海量房源数据进行采集、清洗、转化并存储到Hive数据仓库中。其中包括数据采集、数据清洗、数据转化等、数据处理功能用例图如图3-1所示。图3-1数据处理功能用例图(1)数据采集首先在系统建设之前我们通过爬虫技术向现有房屋相关的网站进行数据的获取,并将得到的数据先放入MySQL数据库中,然后通过Hive数据仓库进行清洗去除不合格的数据再次转让MySQL中并提供给设计的系统中,最后根据用户在系统中的行为获取用户的相关数据。(2)数据清洗在爬取房源的过程中可能会有某些字段丢失的情况,为此将其给剔除掉。(3)数据转化在最后的可视化阶段我们需要根据不同图表来供自身选房参考和做出决策,而这些图表中的数据并不能从房源数据中直接体现出来,因此我们需要对其进行格式转化和对应的数据计算,为统计打下基础。3.2.2数据管理需求(1)元数据管理Hive元数据是Hive的一个组成部分,它存储了数据库、表、分区和字段等基本属性,以及这些属性与HDFS文件的对应关系。它涵盖了Hive库的信息,包括表的属性、名称、列、分区及其属性和表数据的目录位置。(2)数据存储管理获取的房源可能来自不同的网站这意味着数据的格式有着一些差别,为此我们需要对这些数据进行格式统一处理便于后期分析。(3)数据交换管理在Hadoop中的大规模数据集使用Hive的UDF、UDAF、USTF,也可以实现对map和reduce函数的定制提炼出所需要的如各区域租房平均单价、租房地区数统计、租房类型统计、租房面积数据统计等等3.2.3数据分析需求本次数据分析的核心是提炼房源信息以及用户所产生的数据对其进行分析并实现数据可视化展示,为用户提高参考、领导做出决策。本次分析主要包括房源数据分析和用户行为数据分析。数据分析功能用例图3-2所示。图3-2数据分析功能用例图(1)用户分析用户的流量带动租房系统的运行,为此我们需要对用户的各方面进行分析,了解用户的需求并且针对用户的需求进行相应的决策。我们会对用户的浏览记录进行分析,收藏列表进行分析以及用户对房源的打分进行分析,为后面提供更好的服务打下基础。(2)房源分析在本租房系统中业绩可以反映出不同地区、不同房源类型、不同价格的售卖情况,根据这些结果我们可以做出适应的调整来提高出售量。3.3系统非功能性需求跟随大数据时代的来临,数据分析的规模也越来越大,因此对处理数据的工具也逐渐变得严格,其中严格主要体现在可靠性需求、性能需求。(1)安全性需求确保系统能够抵御各种威胁,保护数据和资源免受未经授权的访问和篡改,我们从以下几个方面进行分析。身份验证:确保只有经过授权的用户才能被系统的用户分析所检测到;访问控制:以确保用户只能访问其被授权访问的数据和资源;数据加密:对系统中比较敏感的相关数据进行加密如用户的密码等等。(2)可用性需求在设计本项目时考虑到了用户不喜欢复杂的操作流程,为此本系统的设计是按照最简洁的设计方式,可以让新老用户在几分钟之内熟悉我们的系统,比如如何筛选房源、租房以及怎么发布房源等。(3)性能需求在制作项目时,我们应当考虑一下系统的承载量是多少,比如系统在同一时间可以支持多少个用户在线租房,在多个用户同时发出请求时最多可以处理多少情况,而本系统在用户高峰期时可以在一分钟内处理1000个租房请求。3.4系统可行性分析分别从经济可行性、技术可行性和开发可行性三个面进行可行性分析。(1)经济可行性分析基于Hive数据仓库的租房数据分析系统,所要求的硬件和软件环境不高。程序开发主要是租房系统的开发和维护。所以程序在开发人力、财力上要求不高,开发周期短,在经济方面具有较高的可行性。(2)技术可行性分析在本次的开发中,本人对大数据相关技术和SpringBoot、Vue、MySQL等技术和开发软件比较熟悉,所以在技术上是可行的。(3)开发可行性分析可以使用爬虫获取想要的数据并使用hive进行数据清洗SpringBoot、Vue、MySQL等技术进行数据的展示和管理,在开发周期和开发成本方面也可以在规定的时间和所用资源内完成。4概要设计本章将进行租房系统的系统设计部分进行拆分设计,有系统架构、结构设计、功能模块设计,在管理台中有用户管理、房源管理、评论管理等。也对数据库进行概念结构设计、逻辑结构设计、物理结构设计、数据库实施。4.1系统架构本系统是租房分析系统采用了Hive数仓的体系结构,系统的主要流程是通过爬虫获取到对应的房源数据并导入MySQL数据库中然后再通过Sqoop将MySQL中的数据导入到Hive数据仓库中,并用HiveSQL进行数据分析。系统层次图如图4-1所示。图4-1系统层次图(1)数据源层在这一层数据中存放的是项目的核心数据,它的来源主要是通过爬虫获取数据将其存入这一层中为其它层提供数据。(2)数据处理层数据处理层又分为了三步,第一步就是利用Sqoop导入数据,第二部将导入的数据存储到分布式文件系统HDFS中,最后利用MapReduce计算引擎来转换数据,把它变成我们想要的效果。(3)Hive数据仓库层数据仓库层是本系统的重中之重,在这里我们主要通过HiveSQL来进行数据清洗、转换、分析,将源数据备份到ODS层中,对ODS进行明细数据提取和公共维度建立,最后把汇总好了的数据放入DWS层。(4)业务逻辑层这里主要是对我们房源的数据进行一个展示,进入本系统后可以对应的查看每一个房源的信息,并且可以进行和租房相关的操作。(5)页面展示层这层的内容主要是对我们数仓分析后的数据进行一个展示,将存储到MySQL中的数据通过SpringBoot和Vue展示到网页展内容包括,每个小区不同的房源数量、每个小区的房源价格是怎样的、还有最受欢迎的房源类型是什么样的等等。4.2系统结构设计Web开发领域一般会将架构分为三个部分:表示层、持久层、业务层,之所以将整体架构分为三个层面,主要目的是让整个系统更具有条理性,通过分配任务的方式进行系统的解耦,让每一层只关心自己内部的事情,只知道下层的存在,不知道上层的存在。如三层架构图4-2所示。图4-2三层架构图(1)表示层表示层是用户与系统之间的接口,主要负责展示数据和处理用户交互。其核心任务是呈现数据给用户,通常通过网页、移动应用界面等形式呈现。表示层关注的是用户体验和界面设计,负责接收用户的请求并将其传递给业务层处理,然后将结果呈现给用户。(2)持久层持久层负责数据的持久化和存储,以确保数据在系统关闭或重启后不会丢失。主要与数据库或其他数据存储系统进行交互,包括数据的读取、写入、更新和删除等操作。持久层的设计需要考虑数据的一致性、完整性和安全性,通常会使用数据库管理系统(如MySQL、PostgreSQL)或者NoSQL数据库(如MongoDB、Redis)来实现数据持久化。(3)业务层业务层是整个系统的核心,负责处理系统的业务逻辑和流程。主要包括业务规则的制定、业务流程的管理、数据的处理和转换等。业务层独立于具体的表示层和持久层实现,它关注的是业务需求的实现和业务流程的优化,通过业务层可以实现系统的解耦和灵活性。4.3系统功能设计本章节对用户的登录注册模块、评论评分、搜索房源、租房预约、发布房源等功能进行设计。4.3.1登录注册设计系统的登录注册流程图如4-3所示,等用户进入系统网站后进行登录操会有相应的判断,并获取信息检查信息是否合法,如果有效,就返回所需的资源;如果无效,就拒绝请求,并要求用户重新登录或注册。图4-3登录注册流程图4.3.2评论评分设计系统的评论评分流程图如4-4所示,用户进入某一房源的详情页面时可以看到该房源的相关评论评分,自己也可以对其评论打分。图4-4评论评分流程图4.3.3搜索房源设计搜索房源流程图如4-5所示。本系统可支持多条件查询,用户可以根据自己的需求进行多条件的范围性查询。图4-5搜索房源流程图4.3.4房屋预约设计房屋预约流程图如4.5所示。在用户完善自身资料后就可以对满意的房屋进行预约,预约时需要输入到期的时间最好是间隔月份,成功后会进入对应的订单页面进行支付取消功能。4.3.5发布房源设计发布房源流程图如4-6示。在用户完善自身资料后有想要出租的房屋可选择发布房源功能并完善对应的要求后就可以发布房源了。图4-6发布房源流程图4.4数据库设计数据库用于存储系统中的数据,在不同的模块中都会利用数据库进行交互完成对应的业务,本节将此数据库的概念结构设计和逻辑结构设计进行介绍。4.4.1数据库概念结构设计检查实体特征和业务背景是设计数据库的第一步,根据特征提出数据库概念结构设计。概念结构设计通常使用实体-关系模型(ER模型)来表示,其中实体表示对现实世界中的抽象,关系表示对象之间的联系。本系统中实体主要有用户、房源、订单等,其中用户属性有ID、姓名、密码、头像、身份证号、电话、介绍、创建时间,更新时间,E-R图如4-7所示。图4-7用户E-R图房源属性主要包括房屋ID、发布人ID、房屋名称、地址、面积、朝向、类型、价格、维护、租赁方式、朝向楼层、入住、电梯、车位、用水、用电、燃气、采暖。房源E-R图如4-8所示。图4-8房源ER图订单属性主要有订单ID、订单名称、订单号、支付宝订单号、创建时间、更新时间、订单状态、房源ID、用户ID、总价格。订单E-R图如4-9所示。图4-9订单E-R图4.4.2数据库逻辑结构设计下面对用户、房源、订单等重要的数据库进行逻辑设计。用户表如4-10所示。表4-10用户表字段名称类型长度字段说明是否为空备注idbigint20用户编号否PRIMARYKEYusernamepasswordid_numberaddressphone_numberintroducevarcharvarcharvarcharvarcharvarcharvarchar10202015020200用户名密码身份证号码地址电话号码介绍否否否否否是房源表有着房源展示的各个字段,它们分别是房屋名称、房屋价格、房屋位置、房屋类型、房屋朝向等等。如表4-11所示。表4-11房源表字段名称类型长度字段说明是否为空备注idbigint20房屋编号否PRIMARYKEYuser_idbigint20房主编号否create_timedatetime20发布时间否titlevarchar20房屋名称否townshipvarchar20所属小区否villagevarchar20所属区域否groupersvarchar20详情地址否areavarchar6房屋面积否towaredvarchar6房屋朝向否tapersvarchar15房屋类型否maintainvarchar10维护情况否priceint6月租价格否house_imgvarchar400图片连接否lease_methodvarchar10租赁方式否house_typevarchar20装修类型否facing_floorvarchar30朝向楼层否landlord_avatarvarchar10房东姓名否landlord_namevarchar400房东头像否acreagevarchar20基本面积否turn_towardsvarchar20基本朝向否safeguardvarchar20基本维护否check_invarchar20入住情况否floorvarchar20楼层否elevatorvarchar20电梯否parking_spacevarchar20停车场否use_watervarchar20用水否use_electricityvarchar20用电否gasvarchar10燃气否heatingvarchar20采暖方式否longitudelatitudevarcharvarchar2020经度纬度否否订单表的字段大概有订单编号、订单名、总价格、用户id、房屋id、房屋状态等如表4-12所示。表4-12订单表字段名称字段类型长度字段说明是否为空备注idbigint20订单编号否namevarchar20订单名称否order_idvarchar50订单号否alipay_novarchar50totaldecimal10支付总价是create_timedatetime20下单时间否pay_timedatetime20支付时间否trade_statusvarchar20支付状态否user_idhouse_idbigintbigint2020用户编号房屋编号否否5详细设计5.1数据处理模块详细设计通过Sqoop工具将我们MySQL中要分析的房源数据导入到我们的Hive数据仓库,通过HiveSQL编写完成我们的数据分析。5.1.1数据收集设计我们的数据基本都是来自对房源数据的爬取,把对应的数据表在Hive数据仓库中创建好并编写Sqoop的相关命令将相应的表数据放入目标表中。数据收集流程图如图5-1所示。图5-1数据收集流程图5.1.2数据转换设计最开始的数据导入是存放在ODS层也叫数据原始层,算是对房源数据进行一个备份,下一层的分析就是在这个层的基础上分析的;DWD层是对ODS层进行一下清洗将不合格的数据进行剔除,也就是对某些空值数据进行清洗;DWS层是对DWD层进行一些轻度的汇总,如计算某区域的房源数量、平均价格等。数据转换流程图如图5-2所示。图5-2数据转换流程图5.2前台模块详细设计5.2.1热门房源排行进入系统首页点击整租或者合租会显示对应的页面,在不同的页面也有对应的房源数据,在房源列表的右侧会显示该类型房源被收藏最多的前20所房源数据,相应的操作流程则是进入该页面查询该页面的房源类型,将房源类型通过Ajax传入到后端中,后端会查询系统中的收藏房源表,对房源的Id进行分组求和排序,获取前20的房源数据并通过json格式返回给前端页面。如图5-3热门房源排行图所示。图5-2热门房源排行流程图5.2.1房源详情页面对于用户来说线上看房图的就是方便,当我们选好了一款房源时就可以直接点击进入里面进行房源详情查看,对应的操作就是将用户自己的Id、房源的Id和房源类型一起传入到后端,根据房源的Id和类型到房源表中查询该房源的详细信息,后面对该房源的其它操作如评论、预约等都可以通过用户Id进行绑定。房源详情信息流程图如图5-3所示。图5-3房源详情信息流程图5.3后台模块详细设计5.3.1各模块添加设计后台主要是对前台的展示数据进行一个管理,管理的内容有用户管理、房源收藏管理、房源管理、订单管理、聊天信息管理等。对于以上的模块都是进行简单的增删改查,操作就是点击对应的模块就向后端查找该模块对应的全表数据,并返回到前端页面中。如图模块数据添加流程图如图5-4所示。图5-4数据添加流程图5.3.2各模块删除设计想要删除某个模块的某一条数据可以直接到对应模块找到该数据,点击删除按钮会把该模块信息和数据Id传入到后端,后端通过模块找到对应的表,再根据对应的表删除此Id就可以了。数据删除流程图如图5-5所示。图5-5数据删除流程图5.4数据仓库详细设计5.4.1不同区房源数分析这个分析主要是对比不同地方的房源数的,通过对房源数据进行空值去除和格式不合格去除后得到了dwd_different_regions_count,并对dwd_different_regions_count按照小区字段进行分组并插入dws_different_regions_count,再对其进行count数量统计,按照小区名称、房源数量的格式插入ads_different_regions_count。过程如图5-6所示。图5-6不同区房源数流程图5.4.2各区域平均房价分析价格往往是决定我们用户在挑选房源时的重要原因,因此分析房源的价格尤为重要,本次的平均价格分析就是通过房源原数据进行清洗转换,对小区进行分组查询再对价格字段进行平均数函数求平均价格。如图5-7所示。图5-7不同区房源平均价程图6系统实现6.1前台模块实现6.1.1登录注册模块在进入系统后像具体使用某一个功能时需要进行登录,如果没有登录就需要注册在进入系统。在用户注册时需要填写自己的用户名、密码、地址、介绍、电话号码、身份证号码、头像等。如图6-1用户注册截图。图6-1用户注册截图@RestControllerpublicclassRegisterController{@AutowiredprivateRegisterServiceregisterService;@PostMapping("/user/account/register/")publicMap<String,String>register(@RequestParamMap<String,String>data){returnregisterService.register(data);}}}注册好了之后可直接跳转到登录页面,输入用户名和密码都正确即可使用系统大部分功能。用户登录截图如6-2所示。图6-2用户登录截图@RestControllerpublicclassLoginController{@AutowiredprivateLoginServiceloginService;@PostMapping("/user/account/token/")publicMap<String,String>getToken(@RequestParamMap<String,String>map){Stringusername=map.get("username");Stringpassword=map.get("password");returnloginService.getToken(username,password);}}6.1.2发布房源模块这个功能模块需要用户进行登录之后才可以使用,登录成功后可根据系统的相关提示进行房源信息的填写,如名称、价格、楼层、户型、租赁方式、地址等等。房源发布如图6-3所示。图6-3房源发布图6.1.3搜索房源模块如果用户心里已经想好了租房的条件时可以直接通过多条件查询进行搜索,本系统中的搜索条件主要有城市、价格、面积、租赁方式、朝向、户型等。如图6-4所示。图6-4房源搜索图6.1.4聊天功能模块为了方便用户在租房时咨询房东房屋相关问题,我们实现了一个聊过功能,它可以使用户和用户聊天也可用户和房东聊天还可房东和房东聊天,总之,注册账号后都可以和其他用户聊天。聊天截图如6-5所示。图6-5聊天截图protectedvoidchannelRead0(ChannelHandlerContextctx,TextWebSocketFramemsg)throwsException{//接收的消息System.out.println(String.format("收到客户端%s的数据:%s",ctx.channel().id(),msg.text()));Mapmap=JSON.parseObject(msg.text(),Map.class);Stringtype=map.get("type").toString();switch(type){case"1":websocketLogin(map,ctx);break;case"2":send_message(map);break;}}privatevoidsend_message(Mapmap){Stringto=map.get("to").toString();if(cmap.containsKey("user"+to)){Channelchannel=cmap.get("user"+to);Map<String,Object>obj=newHashMap<>();obj.put("type",2);//对话obj.put("uuid",UUID.randomUUID().toString());channel.writeAndFlush(newTextWebSocketFrame(JSON.toJSONString(obj)));}else{System.out.println("未登录");}}6.1.5订单支付模块用户进行查找后找到了满意的房源就可以进行租房,点击租房选好日期后会直接进入订单列表,想清楚后可直接进行支付。如图6-6所示。图6-6支付截图6.2后台管理实现6.2.1用户管理模块在用户管理模块中,管理员可以对用户进行添加、修改、删除、搜索等一系列操作,但是对于密码来说只能看见加密后的密码。如图6-7所示。图6-7用户管理截图6.2.2房源管理模块房源管理分为了两块,一个是整租一个是合租,对于这两种类型的房源管理员都是相同的操作如对房源进行添加、修改、删除、根据房屋名搜索等。如图6-8所示。图6-8房源信息截图@OverridepublicMap<String,String>remove(Map<String,String>data){LongorderSharedId=Long.valueOf(data.get("entireId"));OrdersEntireordersEntire=ordersEntireMapper.selectById(orderSharedId);Map<String,String>map=newHashMap<>();if(ordersEntire==null){map.put("error_message","房屋不存在或已被删除");returnmap;}ordersEntireMapper.deleteById(orderSharedId);map.put("error_message","success");returnmap;}6.2.3订单管理模块订单管理模块是获取了所有用户的订单进行管理,可修改订单的状态,但暂不支持退款功能。如图6-9所示。图6-9订单截图6.2.4房源评论模块管理员可对某些恶意评论进行删除。如图6-10所示。图6-10房源评论截图@OverridepublicMap<String,String>remove(Map<String,String>data){LongcommentId=Long.valueOf(data.get("commentId"));Commentcomment=commentMapper.selectById(commentId);Map<String,String>map=newHashMap<>();if(comment==null){map.put("error_message","评论不存在或已被删除");returnmap;}commentMapper.deleteById(commentId);map.put("error_message","success");returnmap;}6.2.2房源审核模块房源审核模块是为了审核用户发布的房源,在本系统中用户登录后便有了发布房源的权限,但是得经过管理员的同意。如图6-11所示。图6-11房源审核截图6.3可视化大屏实现6.1.1不同区房源数这个模块就是为了让用户快速清楚的了解每个地方的房源数量。房源数量截图如图6-12所示。图6-12不同区房源数量截图@OverridepublicJSONObjectgetList(){JSONObjecthouseNums=newJSONObject();List<DwsHousesNumber>dwsHousesNumbers=dwsHousesNumberMapper.selectList(null);List<String>listX=newArrayList<>();List<Integer>listY=newArrayList<>();dwsHousesNumbers.forEach(e->{listX.add(e.getTownship());listY.add(e.getHouseNumber());});houseNums.put("dataX",listX);houseNums.put("dataY",listY);returnhouseNums;}6.1.2不同区平均房房价为了让用户直观的观看每个地区的价格差异,于是实现了这个图表,专为用户观看。如图6-13所示。图6-13不同区平均房价截图@OverridepublicJSONObjectgetList(){List<AreaPriceDTO>acreageList=mapper.getAcreageList();List<List<Double>>lists=newArrayList<>();acreageList.forEach(e->{List<Double>list=newArrayList<>();list.add(e.getAreas());list.add(e.getAvgPrice());lists.add(list);});JSONObjectresult=newJSONObject();result.put("data",lists);returnresult;}7系统测试7.1测试的目的系统测试在开发中是必不可少的,每当我们完成对应的功能就应该及时的进行测,在这个过程中及时的发现系统的不足然后加以修改,这样可以避免后期开发或者维护所带来的困扰。作为开发人员,我们也应当对自己的代码质量负责,完成对应功能测试。7.2测试的过程7.2.1登录测试表7-1登录功能测试用例IDTC001用例名称登录系统用例描述登录系统用户点击登录才能收藏房源、预约房源、评价房源测试用例ID场景测试步骤预期结果测试结果TC1显示登录页面进入系统点击右上角登录按钮显示登录页面元素用户名、密码与预期一致TC2提交登录输入用户名及密码跳转至首页与预期一致TC3提交错误用户名、密码输入错误用户名、密码显示登录失败,用户名或密码错误与预期一致7.2.2房源筛选测试表7-2房源筛选功能测试用例IDTC002用例名称房源搜索用例描述房源搜索未登录的用户也可以进行房源条件筛选测试用例ID场景测试步骤预期结果测试结果TC1显示全部房源进入系统点击整租或者合租显示全部的房源与预期一致TC2只显示指定价格内房源在房源筛选条件中点击小于1500每月的房源显示1500每月的房源与预期一致TC3显示指定价格和指定小区房源在房源筛选条件中点击小于1500每月并在朝阳区的房源显示1500每月并在朝阳区的房源与预期一致7.2.3房源收藏测试表7-3房源收藏功能测试用例IDTC003用例名称房源收藏用例描述房源收藏登录的用户进行收藏并在收藏列表中查看测试用例ID场景测试步骤预期结果测试结果TC1未登录能否收藏未登录进入详情房源进行收藏您的token无效,请重新登录与预期一致TC2登录情况下进行收藏登录进入详情房源进行收藏跳转至收藏列表与预期一致7.2.4后台用户管理测试表7-4后台用户管理功能测试用例IDTC004用例名称用户管理用例描述用户管理对用户进行增删改查操作测试用例ID场景测试步骤预期结果测试结果TC1查看全部用户进入系统点击用户管理显示全部用户与预期一致TC2删除一个用户点击用户列表右侧的删除按钮该用户被删除与预期一致TC3添加一个用户在用户列表点击添加按钮,填写用户的信息并添加用户列表多一条刚添加的用户与预期一致TC4修改一个用户在用户列表的一个用户进行修改姓名对应id的用户名被修改与预期一致7.2.5后台房源管理测试表7-5后台房源管理功能测试用例IDTC0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论