基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄1緒論 11.1課題背景以及意義 11.1.1課題背景 11.1.2課題目的和意義 11.2國(guó)內(nèi)研究現(xiàn)狀 11.3國(guó)外研究現(xiàn)狀 22系統(tǒng)開(kāi)發(fā)環(huán)境與開(kāi)發(fā)技術(shù) 22.1數(shù)據(jù)倉(cāng)庫(kù)技術(shù) 22.1.1數(shù)據(jù)倉(cāng)庫(kù)架構(gòu) 22.1.2數(shù)據(jù)倉(cāng)庫(kù)建模 32.2大數(shù)據(jù)相關(guān)技術(shù) 42.2.1Hadoop大數(shù)據(jù)框架 42.2.2Sqoop數(shù)據(jù)采集 42.2.3Spark計(jì)算引擎 52.3 JavaWeb相關(guān)技術(shù) 52.3.1SpringBoot框架 52.3.2Vue框架 63租房數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)需求分析 63.1系統(tǒng)總體概述 63.2系統(tǒng)功能性需求 63.2.1數(shù)據(jù)處理需求 63.2.2數(shù)據(jù)管理需求 73.2.3數(shù)據(jù)分析需求 73.3系統(tǒng)非功能性需求 83.4系統(tǒng)可行性分析 94概要設(shè)計(jì) 94.1系統(tǒng)架構(gòu) 94.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 114.3系統(tǒng)功能設(shè)計(jì) 124.3.1登錄注冊(cè)設(shè)計(jì) 124.3.2評(píng)論評(píng)分設(shè)計(jì) 134.3.3搜索房源設(shè)計(jì) 144.3.4房屋預(yù)約設(shè)計(jì) 144.3.5發(fā)布房源設(shè)計(jì) 144.4數(shù)據(jù)庫(kù)設(shè)計(jì) 154.4.1數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì) 154.4.2數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì) 175詳細(xì)設(shè)計(jì) 195.1數(shù)據(jù)處理模塊詳細(xì)設(shè)計(jì) 195.1.1數(shù)據(jù)收集設(shè)計(jì) 195.1.2數(shù)據(jù)轉(zhuǎn)換設(shè)計(jì) 205.2前臺(tái)模塊詳細(xì)設(shè)計(jì) 205.2.1熱門房源排行 205.2.1房源詳情頁(yè)面 215.3后臺(tái)模塊詳細(xì)設(shè)計(jì) 225.3.1各模塊添加設(shè)計(jì) 225.3.2各模塊刪除設(shè)計(jì) 235.4數(shù)據(jù)倉(cāng)庫(kù)詳細(xì)設(shè)計(jì) 245.4.1不同區(qū)房源數(shù)分析 245.4.2各區(qū)域平均房?jī)r(jià)分析 256系統(tǒng)實(shí)現(xiàn) 256.1前臺(tái)模塊實(shí)現(xiàn) 266.1.1登錄注冊(cè)模塊 266.1.2發(fā)布房源模塊 286.1.3搜索房源模塊 286.1.4聊天功能模塊 296.1.5訂單支付模塊 306.2后臺(tái)管理實(shí)現(xiàn) 316.2.1用戶管理模塊 316.2.2房源管理模塊 316.2.3訂單管理模塊 336.2.4房源評(píng)論模塊 336.2.2房源審核模塊 346.3可視化大屏實(shí)現(xiàn) 346.1.1不同區(qū)房源數(shù) 346.1.2不同區(qū)平均房房?jī)r(jià) 357系統(tǒng)測(cè)試 367.1測(cè)試的目的 367.2測(cè)試的過(guò)程 367.2.1登錄測(cè)試 367.2.2房源篩選測(cè)試 377.2.3房源篩選測(cè)試 377.2.5后臺(tái)房源管理測(cè)試 387.3測(cè)試總結(jié) 398總結(jié) 39參考文獻(xiàn) 41致謝 431緒論1.1課題背景以及意義課題背景近年來(lái)隨著國(guó)內(nèi)經(jīng)濟(jì)的快速發(fā)展,一座座高樓快速拔地而起,為此隨之而來(lái)的還有農(nóng)村的勞動(dòng)力投入城市打拼,增加了城市人口數(shù)量,而這一部分人的目的僅僅是為了找到工作很少在工作的城市買房。對(duì)此房屋租賃市場(chǎng)對(duì)買賣雙方對(duì)有著很大的需求,但是勞動(dòng)人民能否租到滿意的房屋這還是個(gè)問(wèn)題,而且因?yàn)橄@知原因?qū)е虏糠謩趧?dòng)人民經(jīng)常被黑中介忽悠,并且還有付一定的中介費(fèi)。此外,許多勞動(dòng)人民的表達(dá)有限經(jīng)常想的和說(shuō)的不一致,中介也不能準(zhǔn)確的滿足求租者提供的要求。因此為了提高求租者的租房體驗(yàn)也為了減少不必要的費(fèi)用我們迫切需要一個(gè)租房系統(tǒng)來(lái)滿足雙方的需求。為了滿足市場(chǎng)的需求,本項(xiàng)目就孕育而生,目的就是為了分析房源的各種信息并做出可視化大屏供給租客及房東分析,租客如何找到適合自己的房屋以及房東怎么出租自己的房源。課題目的和意義通過(guò)設(shè)計(jì)和實(shí)現(xiàn)租房數(shù)據(jù)分析系統(tǒng),可以對(duì)租房數(shù)據(jù)進(jìn)行多維度、多層次的分析,揭示租房市場(chǎng)的規(guī)律和趨勢(shì),為租房者和房東提供有價(jià)值的信息和決策支持。引入推薦功能,可以根據(jù)租房者的個(gè)性化需求和偏好,為其推薦合適的房源,提高租房者的滿意度和忠誠(chéng)度,同時(shí)也增加房東的出租效率和收益。外出掙錢養(yǎng)家是多數(shù)人的無(wú)奈之舉,對(duì)應(yīng)大多數(shù)人來(lái)說(shuō)在只需要有個(gè)一臨時(shí)的住處就行了,并不需要買房在打工的地方,為此設(shè)計(jì)一款房源分析系統(tǒng)對(duì)于整個(gè)社會(huì)來(lái)說(shuō)都是很有價(jià)值的,從不同的方向分析房源,減少租客在找房的時(shí)間,在提供效率的同時(shí)也促進(jìn)了社會(huì)發(fā)展。國(guó)內(nèi)研究現(xiàn)狀在中國(guó),分享經(jīng)濟(jì)的快速發(fā)展推動(dòng)了短租行業(yè)的興起。一些成熟的平臺(tái),如自如網(wǎng)、鏈家和蛋殼公寓等,已經(jīng)在市場(chǎng)上占據(jù)了一席之地。他們的常規(guī)操作是通過(guò)公司或者中介與房東協(xié)商獲取房源進(jìn)行改造,但是在離市中心較近的地方租金普遍較高,一般的普通人可能會(huì)掏出自己近一半的工資來(lái)抵押租金,而稍微便宜一點(diǎn)的房源都比較遠(yuǎn),在一線城市中通勤通常需要一個(gè)小時(shí)左右。但是如果直接找房東進(jìn)行租房會(huì)便宜很多,因此他們可能會(huì)選擇在線下尋找房源。此外,這種形式的房屋租賃也存在一定的風(fēng)險(xiǎn)。在國(guó)內(nèi),城市的不同會(huì)導(dǎo)致相同的平臺(tái)會(huì)有一定的差異性。在一線城市如北京、上海、廣州等地,由于房?jī)r(jià)較高、落戶困難以及流動(dòng)人口眾多,租房需求旺盛,租房已經(jīng)成為了一種社會(huì)常態(tài)[7,8]。而在二三線城市,由于房?jī)r(jià)較低、市場(chǎng)需求較小,租賃業(yè)務(wù)的規(guī)模也相對(duì)較小。因此,城市的地理位置和發(fā)展情況會(huì)對(duì)房屋租賃行業(yè)產(chǎn)生較大的影響[1]。國(guó)外研究現(xiàn)狀在國(guó)際上,房屋租賃行業(yè)的發(fā)展較為先進(jìn)和完善。其中,Airbnb和Homeaway是兩家知名的美國(guó)公司,它們是最早從事房屋短期租賃業(yè)務(wù)的公司之一。Airbnb總部設(shè)在美國(guó)加州舊金山。是全球最大的在線另類住宿旅行社,也提供精品酒店和體驗(yàn)預(yù)訂服務(wù)。,用戶可通過(guò)網(wǎng)絡(luò)或手機(jī)應(yīng)用程序發(fā)布、搜索度假房屋租賃信息并完成在線預(yù)定程序。Airbnb在191個(gè)國(guó)家、65,000個(gè)城市為旅行者們提供數(shù)以百萬(wàn)計(jì)的入住選擇,不管是公寓、別墅、城堡還是樹屋。Airbnb公司的平臺(tái)提供了大約700萬(wàn)個(gè)活躍的住宿列表。該公司的400多萬(wàn)房東的房源分布在世界上幾乎每個(gè)國(guó)家。HomeAway總部位于美國(guó)德克薩斯州奧斯汀。是一個(gè)度假房屋租賃網(wǎng)站,提供短期出租房屋或房間,讓旅行者通過(guò)網(wǎng)站或手機(jī)發(fā)掘和預(yù)訂世界各地的獨(dú)特房源。在全球145個(gè)國(guó)家擁有超過(guò)50萬(wàn)個(gè)假日租賃房源。2015年,ExpediaGroup以39億美元的現(xiàn)金和股票收購(gòu)了HomeAway。2020年,HomeAway和VRBO網(wǎng)站被重新品牌為單一的Vrbo網(wǎng)站。HomeAway的優(yōu)勢(shì)在于:提供信息數(shù)量大、與房東和房產(chǎn)經(jīng)理關(guān)系良好、瀏覽網(wǎng)頁(yè)的人數(shù)較多、網(wǎng)站分布地區(qū)廣等。綜上,基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房分析系統(tǒng)的研究和應(yīng)用已經(jīng)逐漸成為當(dāng)前大數(shù)據(jù)領(lǐng)域的熱點(diǎn)和趨勢(shì)。國(guó)內(nèi)外都有進(jìn)行相關(guān)研究和應(yīng)用的多個(gè)案例,相關(guān)技術(shù)已經(jīng)成熟,未來(lái)的應(yīng)用前景非常廣闊。系統(tǒng)開(kāi)發(fā)環(huán)境與開(kāi)發(fā)技術(shù)數(shù)據(jù)倉(cāng)庫(kù)技術(shù)數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)對(duì)數(shù)據(jù)進(jìn)行整合統(tǒng)一并建立模型從而獲取價(jià)值數(shù)據(jù)。本次使用的是Hive數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)。Hive數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)如圖2-1所示。圖2-1Hive數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)圖在Hive數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)中,確實(shí)常常使用星型模型或雪花模型來(lái)組織數(shù)據(jù)。這兩種模型都有各自的優(yōu)點(diǎn)和適用場(chǎng)景。星型模型的特點(diǎn)是簡(jiǎn)單和直觀,它將事實(shí)表置于中心,維度表圍繞其周圍,就像星座一樣。這種模型非常適合處理那些維度關(guān)系相對(duì)簡(jiǎn)單,且查詢需求以報(bào)表匯總和OLAP分析為主的場(chǎng)景。而雪花模型則是星型模型的一種擴(kuò)展,它允許維度表之間存在層次關(guān)系。這種模型的主要優(yōu)點(diǎn)是能更好地處理復(fù)雜的層次結(jié)構(gòu)和多對(duì)多的關(guān)系,但同時(shí)也帶來(lái)了查詢的復(fù)雜性。數(shù)據(jù)倉(cāng)庫(kù)建模主題導(dǎo)向,數(shù)據(jù)倉(cāng)庫(kù)建模以業(yè)務(wù)主題為中心,而不是以應(yīng)用系統(tǒng)或技術(shù)為中心。它關(guān)注于某個(gè)特定的業(yè)務(wù)領(lǐng)域或業(yè)務(wù)需求,例如銷售、市場(chǎng)營(yíng)銷、客戶關(guān)系等。通過(guò)主題導(dǎo)向,數(shù)據(jù)倉(cāng)庫(kù)可以更好地支持業(yè)務(wù)分析和決策;集成的,據(jù)倉(cāng)庫(kù)建模需要整合多個(gè)數(shù)據(jù)源的數(shù)據(jù),包括來(lái)自不同業(yè)務(wù)部門、不同系統(tǒng)的數(shù)據(jù)。這些數(shù)據(jù)可能以不同的格式、結(jié)構(gòu)和標(biāo)準(zhǔn)存儲(chǔ),數(shù)據(jù)倉(cāng)庫(kù)建模需要將這些數(shù)據(jù)整合到一個(gè)統(tǒng)一的模型中,以支持全面的分析和報(bào)告;相對(duì)穩(wěn)定的,數(shù)據(jù)倉(cāng)庫(kù)建模需要具有穩(wěn)定性和持久性,即數(shù)據(jù)模型應(yīng)該是長(zhǎng)期穩(wěn)定的,并且能夠適應(yīng)業(yè)務(wù)需求的變化。因此,在設(shè)計(jì)數(shù)據(jù)倉(cāng)庫(kù)模型時(shí)需要考慮未來(lái)的擴(kuò)展性和靈活性,以應(yīng)對(duì)業(yè)務(wù)的變化和發(fā)展;反映歷史變化,數(shù)據(jù)倉(cāng)庫(kù)中會(huì)保存各個(gè)日期節(jié)點(diǎn)的數(shù)據(jù),以滿足不斷變化的業(yè)務(wù)的需求。由于數(shù)據(jù)倉(cāng)庫(kù)具有上述四個(gè)特點(diǎn),數(shù)據(jù)倉(cāng)庫(kù)建模是以業(yè)務(wù)主題為中心的集成性模型,具有穩(wěn)定性和反應(yīng)性特點(diǎn)。它通過(guò)主題導(dǎo)向?qū)崿F(xiàn)對(duì)業(yè)務(wù)需求的精確支持,整合多個(gè)數(shù)據(jù)源的數(shù)據(jù),確保數(shù)據(jù)模型長(zhǎng)期穩(wěn)定并適應(yīng)業(yè)務(wù)變化,同時(shí)支持歷史數(shù)據(jù)和時(shí)間變化的分析。大數(shù)據(jù)相關(guān)技術(shù)2.2.1Hadoop大數(shù)據(jù)框架(1)HDFS分布式文件系統(tǒng)HDFS是一個(gè)分布式文件系統(tǒng),它能夠處理運(yùn)行在普通硬件上的大型數(shù)據(jù)集。它用于將單個(gè)ApacheHadoop集群擴(kuò)展到數(shù)百甚至數(shù)千個(gè)節(jié)點(diǎn)。HDFS是ApacheHadoop的一個(gè)重要組件,其他組件包括MapReduce和YARN1。(2)MapReduce分布式計(jì)算引擎Map操作和Reduce操作。Map操作將輸入數(shù)據(jù)劃分為一系列鍵值對(duì),并按照指定的函數(shù)進(jìn)行處理生成中間結(jié)果;Reduce操作則對(duì)中間結(jié)果進(jìn)行合并和計(jì)算得出最終的輸出結(jié)果。MapReduce模型將大規(guī)模數(shù)據(jù)處理任務(wù)分解為多個(gè)可并行執(zhí)行的小任務(wù),每個(gè)任務(wù)在不同的計(jì)算節(jié)點(diǎn)上運(yùn)行,最后將各個(gè)節(jié)點(diǎn)的結(jié)果進(jìn)行整合得到最終結(jié)果。(3)YARN資源管理工具Yarn是Hadoop的集群資源管理系統(tǒng)。它負(fù)責(zé)管理計(jì)算資源,調(diào)度用戶應(yīng)用程序,并提供集群級(jí)別的服務(wù)。Yarn允許多種數(shù)據(jù)處理引擎(如MapReduce、Spark和Tez)在同一個(gè)Hadoop集群上運(yùn)行,從而實(shí)現(xiàn)了更好的資源利用率和更快的數(shù)據(jù)處理速度。2.2.2Sqoop數(shù)據(jù)采集Sqoop是一個(gè)數(shù)據(jù)傳輸工具,主要用于Hadoop和關(guān)系數(shù)據(jù)庫(kù)之間。它能夠把關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入到Hadoop的HDFS或Hive,同時(shí)也能將Hadoop的數(shù)據(jù)導(dǎo)出到關(guān)系數(shù)據(jù)庫(kù)。Sqoop通過(guò)生成MapReduce作業(yè)來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸,它能夠充分利用Hadoop集群的并行計(jì)算能力,實(shí)現(xiàn)高效的數(shù)據(jù)傳輸。Sqoop支持多種關(guān)系數(shù)據(jù)庫(kù),包括MySQL、Oracle、PostgreSQL和SQLServer等。Sqoop架構(gòu)如圖2-2所示。圖2-2Sqoop架構(gòu)圖2.2.3Spark計(jì)算引擎Spark是一個(gè)開(kāi)源的大數(shù)據(jù)處理框架,它被設(shè)計(jì)用于大規(guī)模數(shù)據(jù)處理,支持多種數(shù)據(jù)處理任務(wù),包括批處理、實(shí)時(shí)流處理、機(jī)器學(xué)習(xí)和圖計(jì)算等。Spark具有良好的橫向擴(kuò)展能力,可以輕松地?cái)U(kuò)展到大規(guī)模的集群中進(jìn)行并行計(jì)算。它采用了RDD(ResilientDistributedDatasets)數(shù)據(jù)結(jié)構(gòu)和DAG(DirectedAcyclicGraph)執(zhí)行引擎,實(shí)現(xiàn)了高效的并行計(jì)算和任務(wù)調(diào)度。Spark架構(gòu)圖如圖2-3所示。圖2-3Spark架構(gòu)圖JavaWeb相關(guān)技術(shù)2.3.1SpringBoot框架SpringBoot是一個(gè)開(kāi)源框架,它是為了簡(jiǎn)化項(xiàng)目配置依賴的繁瑣,無(wú)需太多的配置并內(nèi)置了許多常用的功能,如嵌入式Web服務(wù)器、安全性、數(shù)據(jù)訪問(wèn)和監(jiān)控等。它還提供了豐富的啟動(dòng)器,可以快速集成各種常用的第三方庫(kù)。2.3.2Vue框架Vue是一個(gè)開(kāi)源的JavaScript框架,用于構(gòu)建用戶界面和單頁(yè)應(yīng)用程序。具有許多優(yōu)點(diǎn),包括簡(jiǎn)單易學(xué)、輕量級(jí)、靈活性高和性能優(yōu)異等。它提供了聲明式渲染、組件化系統(tǒng)和響應(yīng)式數(shù)據(jù)綁定等功能,能夠幫助開(kāi)發(fā)人員快速構(gòu)建復(fù)雜的用戶界面。3租房數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)需求分析3.1系統(tǒng)總體概述基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房分析系統(tǒng)的目的是利用現(xiàn)市場(chǎng)流行發(fā)展的互聯(lián)網(wǎng)技術(shù)快速分析出租房各個(gè)方面的數(shù)據(jù)比來(lái)提供用戶選擇和領(lǐng)導(dǎo)決策,系統(tǒng)還為用戶提供個(gè)性化推薦房源服務(wù)。3.2系統(tǒng)功能性需求系統(tǒng)需求分析主要為:通過(guò)用戶的日常行為和房源本身的性價(jià)比分析推薦出一套合適的房源給用戶。功能性需求主要體現(xiàn)在數(shù)據(jù)處理、數(shù)據(jù)管理、數(shù)據(jù)分析、房源推薦等模塊,現(xiàn)對(duì)如上模塊進(jìn)行需求分析。3.2.1數(shù)據(jù)處理需求本次項(xiàng)目對(duì)市場(chǎng)上已存在的海量房源數(shù)據(jù)進(jìn)行采集、清洗、轉(zhuǎn)化并存儲(chǔ)到Hive數(shù)據(jù)倉(cāng)庫(kù)中。其中包括數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)化等、數(shù)據(jù)處理功能用例圖如圖3-1所示。圖3-1數(shù)據(jù)處理功能用例圖(1)數(shù)據(jù)采集首先在系統(tǒng)建設(shè)之前我們通過(guò)爬蟲技術(shù)向現(xiàn)有房屋相關(guān)的網(wǎng)站進(jìn)行數(shù)據(jù)的獲取,并將得到的數(shù)據(jù)先放入MySQL數(shù)據(jù)庫(kù)中,然后通過(guò)Hive數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行清洗去除不合格的數(shù)據(jù)再次轉(zhuǎn)讓MySQL中并提供給設(shè)計(jì)的系統(tǒng)中,最后根據(jù)用戶在系統(tǒng)中的行為獲取用戶的相關(guān)數(shù)據(jù)。(2)數(shù)據(jù)清洗在爬取房源的過(guò)程中可能會(huì)有某些字段丟失的情況,為此將其給剔除掉。(3)數(shù)據(jù)轉(zhuǎn)化在最后的可視化階段我們需要根據(jù)不同圖表來(lái)供自身選房參考和做出決策,而這些圖表中的數(shù)據(jù)并不能從房源數(shù)據(jù)中直接體現(xiàn)出來(lái),因此我們需要對(duì)其進(jìn)行格式轉(zhuǎn)化和對(duì)應(yīng)的數(shù)據(jù)計(jì)算,為統(tǒng)計(jì)打下基礎(chǔ)。3.2.2數(shù)據(jù)管理需求(1)元數(shù)據(jù)管理Hive元數(shù)據(jù)是Hive的一個(gè)組成部分,它存儲(chǔ)了數(shù)據(jù)庫(kù)、表、分區(qū)和字段等基本屬性,以及這些屬性與HDFS文件的對(duì)應(yīng)關(guān)系。它涵蓋了Hive庫(kù)的信息,包括表的屬性、名稱、列、分區(qū)及其屬性和表數(shù)據(jù)的目錄位置。(2)數(shù)據(jù)存儲(chǔ)管理獲取的房源可能來(lái)自不同的網(wǎng)站這意味著數(shù)據(jù)的格式有著一些差別,為此我們需要對(duì)這些數(shù)據(jù)進(jìn)行格式統(tǒng)一處理便于后期分析。(3)數(shù)據(jù)交換管理在Hadoop中的大規(guī)模數(shù)據(jù)集使用Hive的UDF、UDAF、USTF,也可以實(shí)現(xiàn)對(duì)map和reduce函數(shù)的定制提煉出所需要的如各區(qū)域租房平均單價(jià)、租房地區(qū)數(shù)統(tǒng)計(jì)、租房類型統(tǒng)計(jì)、租房面積數(shù)據(jù)統(tǒng)計(jì)等等3.2.3數(shù)據(jù)分析需求本次數(shù)據(jù)分析的核心是提煉房源信息以及用戶所產(chǎn)生的數(shù)據(jù)對(duì)其進(jìn)行分析并實(shí)現(xiàn)數(shù)據(jù)可視化展示,為用戶提高參考、領(lǐng)導(dǎo)做出決策。本次分析主要包括房源數(shù)據(jù)分析和用戶行為數(shù)據(jù)分析。數(shù)據(jù)分析功能用例圖3-2所示。圖3-2數(shù)據(jù)分析功能用例圖(1)用戶分析用戶的流量帶動(dòng)租房系統(tǒng)的運(yùn)行,為此我們需要對(duì)用戶的各方面進(jìn)行分析,了解用戶的需求并且針對(duì)用戶的需求進(jìn)行相應(yīng)的決策。我們會(huì)對(duì)用戶的瀏覽記錄進(jìn)行分析,收藏列表進(jìn)行分析以及用戶對(duì)房源的打分進(jìn)行分析,為后面提供更好的服務(wù)打下基礎(chǔ)。(2)房源分析在本租房系統(tǒng)中業(yè)績(jī)可以反映出不同地區(qū)、不同房源類型、不同價(jià)格的售賣情況,根據(jù)這些結(jié)果我們可以做出適應(yīng)的調(diào)整來(lái)提高出售量。3.3系統(tǒng)非功能性需求跟隨大數(shù)據(jù)時(shí)代的來(lái)臨,數(shù)據(jù)分析的規(guī)模也越來(lái)越大,因此對(duì)處理數(shù)據(jù)的工具也逐漸變得嚴(yán)格,其中嚴(yán)格主要體現(xiàn)在可靠性需求、性能需求。(1)安全性需求確保系統(tǒng)能夠抵御各種威脅,保護(hù)數(shù)據(jù)和資源免受未經(jīng)授權(quán)的訪問(wèn)和篡改,我們從以下幾個(gè)方面進(jìn)行分析。身份驗(yàn)證:確保只有經(jīng)過(guò)授權(quán)的用戶才能被系統(tǒng)的用戶分析所檢測(cè)到;訪問(wèn)控制:以確保用戶只能訪問(wèn)其被授權(quán)訪問(wèn)的數(shù)據(jù)和資源;數(shù)據(jù)加密:對(duì)系統(tǒng)中比較敏感的相關(guān)數(shù)據(jù)進(jìn)行加密如用戶的密碼等等。(2)可用性需求在設(shè)計(jì)本項(xiàng)目時(shí)考慮到了用戶不喜歡復(fù)雜的操作流程,為此本系統(tǒng)的設(shè)計(jì)是按照最簡(jiǎn)潔的設(shè)計(jì)方式,可以讓新老用戶在幾分鐘之內(nèi)熟悉我們的系統(tǒng),比如如何篩選房源、租房以及怎么發(fā)布房源等。(3)性能需求在制作項(xiàng)目時(shí),我們應(yīng)當(dāng)考慮一下系統(tǒng)的承載量是多少,比如系統(tǒng)在同一時(shí)間可以支持多少個(gè)用戶在線租房,在多個(gè)用戶同時(shí)發(fā)出請(qǐng)求時(shí)最多可以處理多少情況,而本系統(tǒng)在用戶高峰期時(shí)可以在一分鐘內(nèi)處理1000個(gè)租房請(qǐng)求。3.4系統(tǒng)可行性分析分別從經(jīng)濟(jì)可行性、技術(shù)可行性和開(kāi)發(fā)可行性三個(gè)面進(jìn)行可行性分析。(1)經(jīng)濟(jì)可行性分析基于Hive數(shù)據(jù)倉(cāng)庫(kù)的租房數(shù)據(jù)分析系統(tǒng),所要求的硬件和軟件環(huán)境不高。程序開(kāi)發(fā)主要是租房系統(tǒng)的開(kāi)發(fā)和維護(hù)。所以程序在開(kāi)發(fā)人力、財(cái)力上要求不高,開(kāi)發(fā)周期短,在經(jīng)濟(jì)方面具有較高的可行性。(2)技術(shù)可行性分析在本次的開(kāi)發(fā)中,本人對(duì)大數(shù)據(jù)相關(guān)技術(shù)和SpringBoot、Vue、MySQL等技術(shù)和開(kāi)發(fā)軟件比較熟悉,所以在技術(shù)上是可行的。(3)開(kāi)發(fā)可行性分析可以使用爬蟲獲取想要的數(shù)據(jù)并使用hive進(jìn)行數(shù)據(jù)清洗SpringBoot、Vue、MySQL等技術(shù)進(jìn)行數(shù)據(jù)的展示和管理,在開(kāi)發(fā)周期和開(kāi)發(fā)成本方面也可以在規(guī)定的時(shí)間和所用資源內(nèi)完成。4概要設(shè)計(jì)本章將進(jìn)行租房系統(tǒng)的系統(tǒng)設(shè)計(jì)部分進(jìn)行拆分設(shè)計(jì),有系統(tǒng)架構(gòu)、結(jié)構(gòu)設(shè)計(jì)、功能模塊設(shè)計(jì),在管理臺(tái)中有用戶管理、房源管理、評(píng)論管理等。也對(duì)數(shù)據(jù)庫(kù)進(jìn)行概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)實(shí)施。4.1系統(tǒng)架構(gòu)本系統(tǒng)是租房分析系統(tǒng)采用了Hive數(shù)倉(cāng)的體系結(jié)構(gòu),系統(tǒng)的主要流程是通過(guò)爬蟲獲取到對(duì)應(yīng)的房源數(shù)據(jù)并導(dǎo)入MySQL數(shù)據(jù)庫(kù)中然后再通過(guò)Sqoop將MySQL中的數(shù)據(jù)導(dǎo)入到Hive數(shù)據(jù)倉(cāng)庫(kù)中,并用HiveSQL進(jìn)行數(shù)據(jù)分析。系統(tǒng)層次圖如圖4-1所示。圖4-1系統(tǒng)層次圖(1)數(shù)據(jù)源層在這一層數(shù)據(jù)中存放的是項(xiàng)目的核心數(shù)據(jù),它的來(lái)源主要是通過(guò)爬蟲獲取數(shù)據(jù)將其存入這一層中為其它層提供數(shù)據(jù)。(2)數(shù)據(jù)處理層數(shù)據(jù)處理層又分為了三步,第一步就是利用Sqoop導(dǎo)入數(shù)據(jù),第二部將導(dǎo)入的數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng)HDFS中,最后利用MapReduce計(jì)算引擎來(lái)轉(zhuǎn)換數(shù)據(jù),把它變成我們想要的效果。(3)Hive數(shù)據(jù)倉(cāng)庫(kù)層數(shù)據(jù)倉(cāng)庫(kù)層是本系統(tǒng)的重中之重,在這里我們主要通過(guò)HiveSQL來(lái)進(jìn)行數(shù)據(jù)清洗、轉(zhuǎn)換、分析,將源數(shù)據(jù)備份到ODS層中,對(duì)ODS進(jìn)行明細(xì)數(shù)據(jù)提取和公共維度建立,最后把匯總好了的數(shù)據(jù)放入DWS層。(4)業(yè)務(wù)邏輯層這里主要是對(duì)我們房源的數(shù)據(jù)進(jìn)行一個(gè)展示,進(jìn)入本系統(tǒng)后可以對(duì)應(yīng)的查看每一個(gè)房源的信息,并且可以進(jìn)行和租房相關(guān)的操作。(5)頁(yè)面展示層這層的內(nèi)容主要是對(duì)我們數(shù)倉(cāng)分析后的數(shù)據(jù)進(jìn)行一個(gè)展示,將存儲(chǔ)到MySQL中的數(shù)據(jù)通過(guò)SpringBoot和Vue展示到網(wǎng)頁(yè)展內(nèi)容包括,每個(gè)小區(qū)不同的房源數(shù)量、每個(gè)小區(qū)的房源價(jià)格是怎樣的、還有最受歡迎的房源類型是什么樣的等等。4.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)Web開(kāi)發(fā)領(lǐng)域一般會(huì)將架構(gòu)分為三個(gè)部分:表示層、持久層、業(yè)務(wù)層,之所以將整體架構(gòu)分為三個(gè)層面,主要目的是讓整個(gè)系統(tǒng)更具有條理性,通過(guò)分配任務(wù)的方式進(jìn)行系統(tǒng)的解耦,讓每一層只關(guān)心自己內(nèi)部的事情,只知道下層的存在,不知道上層的存在。如三層架構(gòu)圖4-2所示。圖4-2三層架構(gòu)圖(1)表示層表示層是用戶與系統(tǒng)之間的接口,主要負(fù)責(zé)展示數(shù)據(jù)和處理用戶交互。其核心任務(wù)是呈現(xiàn)數(shù)據(jù)給用戶,通常通過(guò)網(wǎng)頁(yè)、移動(dòng)應(yīng)用界面等形式呈現(xiàn)。表示層關(guān)注的是用戶體驗(yàn)和界面設(shè)計(jì),負(fù)責(zé)接收用戶的請(qǐng)求并將其傳遞給業(yè)務(wù)層處理,然后將結(jié)果呈現(xiàn)給用戶。(2)持久層持久層負(fù)責(zé)數(shù)據(jù)的持久化和存儲(chǔ),以確保數(shù)據(jù)在系統(tǒng)關(guān)閉或重啟后不會(huì)丟失。主要與數(shù)據(jù)庫(kù)或其他數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,包括數(shù)據(jù)的讀取、寫入、更新和刪除等操作。持久層的設(shè)計(jì)需要考慮數(shù)據(jù)的一致性、完整性和安全性,通常會(huì)使用數(shù)據(jù)庫(kù)管理系統(tǒng)(如MySQL、PostgreSQL)或者NoSQL數(shù)據(jù)庫(kù)(如MongoDB、Redis)來(lái)實(shí)現(xiàn)數(shù)據(jù)持久化。(3)業(yè)務(wù)層業(yè)務(wù)層是整個(gè)系統(tǒng)的核心,負(fù)責(zé)處理系統(tǒng)的業(yè)務(wù)邏輯和流程。主要包括業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的管理、數(shù)據(jù)的處理和轉(zhuǎn)換等。業(yè)務(wù)層獨(dú)立于具體的表示層和持久層實(shí)現(xiàn),它關(guān)注的是業(yè)務(wù)需求的實(shí)現(xiàn)和業(yè)務(wù)流程的優(yōu)化,通過(guò)業(yè)務(wù)層可以實(shí)現(xiàn)系統(tǒng)的解耦和靈活性。4.3系統(tǒng)功能設(shè)計(jì)本章節(jié)對(duì)用戶的登錄注冊(cè)模塊、評(píng)論評(píng)分、搜索房源、租房預(yù)約、發(fā)布房源等功能進(jìn)行設(shè)計(jì)。4.3.1登錄注冊(cè)設(shè)計(jì)系統(tǒng)的登錄注冊(cè)流程圖如4-3所示,等用戶進(jìn)入系統(tǒng)網(wǎng)站后進(jìn)行登錄操會(huì)有相應(yīng)的判斷,并獲取信息檢查信息是否合法,如果有效,就返回所需的資源;如果無(wú)效,就拒絕請(qǐng)求,并要求用戶重新登錄或注冊(cè)。圖4-3登錄注冊(cè)流程圖4.3.2評(píng)論評(píng)分設(shè)計(jì)系統(tǒng)的評(píng)論評(píng)分流程圖如4-4所示,用戶進(jìn)入某一房源的詳情頁(yè)面時(shí)可以看到該房源的相關(guān)評(píng)論評(píng)分,自己也可以對(duì)其評(píng)論打分。圖4-4評(píng)論評(píng)分流程圖4.3.3搜索房源設(shè)計(jì)搜索房源流程圖如4-5所示。本系統(tǒng)可支持多條件查詢,用戶可以根據(jù)自己的需求進(jìn)行多條件的范圍性查詢。圖4-5搜索房源流程圖4.3.4房屋預(yù)約設(shè)計(jì)房屋預(yù)約流程圖如4.5所示。在用戶完善自身資料后就可以對(duì)滿意的房屋進(jìn)行預(yù)約,預(yù)約時(shí)需要輸入到期的時(shí)間最好是間隔月份,成功后會(huì)進(jìn)入對(duì)應(yīng)的訂單頁(yè)面進(jìn)行支付取消功能。4.3.5發(fā)布房源設(shè)計(jì)發(fā)布房源流程圖如4-6示。在用戶完善自身資料后有想要出租的房屋可選擇發(fā)布房源功能并完善對(duì)應(yīng)的要求后就可以發(fā)布房源了。圖4-6發(fā)布房源流程圖4.4數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)用于存儲(chǔ)系統(tǒng)中的數(shù)據(jù),在不同的模塊中都會(huì)利用數(shù)據(jù)庫(kù)進(jìn)行交互完成對(duì)應(yīng)的業(yè)務(wù),本節(jié)將此數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì)進(jìn)行介紹。4.4.1數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)檢查實(shí)體特征和業(yè)務(wù)背景是設(shè)計(jì)數(shù)據(jù)庫(kù)的第一步,根據(jù)特征提出數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)。概念結(jié)構(gòu)設(shè)計(jì)通常使用實(shí)體-關(guān)系模型(ER模型)來(lái)表示,其中實(shí)體表示對(duì)現(xiàn)實(shí)世界中的抽象,關(guān)系表示對(duì)象之間的聯(lián)系。本系統(tǒng)中實(shí)體主要有用戶、房源、訂單等,其中用戶屬性有ID、姓名、密碼、頭像、身份證號(hào)、電話、介紹、創(chuàng)建時(shí)間,更新時(shí)間,E-R圖如4-7所示。圖4-7用戶E-R圖房源屬性主要包括房屋ID、發(fā)布人ID、房屋名稱、地址、面積、朝向、類型、價(jià)格、維護(hù)、租賃方式、朝向樓層、入住、電梯、車位、用水、用電、燃?xì)狻⒉膳?。房源E-R圖如4-8所示。圖4-8房源ER圖訂單屬性主要有訂單ID、訂單名稱、訂單號(hào)、支付寶訂單號(hào)、創(chuàng)建時(shí)間、更新時(shí)間、訂單狀態(tài)、房源ID、用戶ID、總價(jià)格。訂單E-R圖如4-9所示。圖4-9訂單E-R圖4.4.2數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)下面對(duì)用戶、房源、訂單等重要的數(shù)據(jù)庫(kù)進(jìn)行邏輯設(shè)計(jì)。用戶表如4-10所示。表4-10用戶表字段名稱類型長(zhǎng)度字段說(shuō)明是否為空備注idbigint20用戶編號(hào)否PRIMARYKEYusernamepasswordid_numberaddressphone_numberintroducevarcharvarcharvarcharvarcharvarcharvarchar10202015020200用戶名密碼身份證號(hào)碼地址電話號(hào)碼介紹否否否否否是房源表有著房源展示的各個(gè)字段,它們分別是房屋名稱、房屋價(jià)格、房屋位置、房屋類型、房屋朝向等等。如表4-11所示。表4-11房源表字段名稱類型長(zhǎng)度字段說(shuō)明是否為空備注idbigint20房屋編號(hào)否PRIMARYKEYuser_idbigint20房主編號(hào)否create_timedatetime20發(fā)布時(shí)間否titlevarchar20房屋名稱否townshipvarchar20所屬小區(qū)否villagevarchar20所屬區(qū)域否groupersvarchar20詳情地址否areavarchar6房屋面積否towaredvarchar6房屋朝向否tapersvarchar15房屋類型否maintainvarchar10維護(hù)情況否priceint6月租價(jià)格否house_imgvarchar400圖片連接否lease_methodvarchar10租賃方式否house_typevarchar20裝修類型否facing_floorvarchar30朝向樓層否landlord_avatarvarchar10房東姓名否landlord_namevarchar400房東頭像否acreagevarchar20基本面積否turn_towardsvarchar20基本朝向否safeguardvarchar20基本維護(hù)否check_invarchar20入住情況否floorvarchar20樓層否elevatorvarchar20電梯否parking_spacevarchar20停車場(chǎng)否use_watervarchar20用水否use_electricityvarchar20用電否gasvarchar10燃?xì)夥駂eatingvarchar20采暖方式否longitudelatitudevarcharvarchar2020經(jīng)度緯度否否訂單表的字段大概有訂單編號(hào)、訂單名、總價(jià)格、用戶id、房屋id、房屋狀態(tài)等如表4-12所示。表4-12訂單表字段名稱字段類型長(zhǎng)度字段說(shuō)明是否為空備注idbigint20訂單編號(hào)否namevarchar20訂單名稱否order_idvarchar50訂單號(hào)否alipay_novarchar50totaldecimal10支付總價(jià)是create_timedatetime20下單時(shí)間否pay_timedatetime20支付時(shí)間否trade_statusvarchar20支付狀態(tài)否user_idhouse_idbigintbigint2020用戶編號(hào)房屋編號(hào)否否5詳細(xì)設(shè)計(jì)5.1數(shù)據(jù)處理模塊詳細(xì)設(shè)計(jì)通過(guò)Sqoop工具將我們MySQL中要分析的房源數(shù)據(jù)導(dǎo)入到我們的Hive數(shù)據(jù)倉(cāng)庫(kù),通過(guò)HiveSQL編寫完成我們的數(shù)據(jù)分析。5.1.1數(shù)據(jù)收集設(shè)計(jì)我們的數(shù)據(jù)基本都是來(lái)自對(duì)房源數(shù)據(jù)的爬取,把對(duì)應(yīng)的數(shù)據(jù)表在Hive數(shù)據(jù)倉(cāng)庫(kù)中創(chuàng)建好并編寫Sqoop的相關(guān)命令將相應(yīng)的表數(shù)據(jù)放入目標(biāo)表中。數(shù)據(jù)收集流程圖如圖5-1所示。圖5-1數(shù)據(jù)收集流程圖5.1.2數(shù)據(jù)轉(zhuǎn)換設(shè)計(jì)最開(kāi)始的數(shù)據(jù)導(dǎo)入是存放在ODS層也叫數(shù)據(jù)原始層,算是對(duì)房源數(shù)據(jù)進(jìn)行一個(gè)備份,下一層的分析就是在這個(gè)層的基礎(chǔ)上分析的;DWD層是對(duì)ODS層進(jìn)行一下清洗將不合格的數(shù)據(jù)進(jìn)行剔除,也就是對(duì)某些空值數(shù)據(jù)進(jìn)行清洗;DWS層是對(duì)DWD層進(jìn)行一些輕度的匯總,如計(jì)算某區(qū)域的房源數(shù)量、平均價(jià)格等。數(shù)據(jù)轉(zhuǎn)換流程圖如圖5-2所示。圖5-2數(shù)據(jù)轉(zhuǎn)換流程圖5.2前臺(tái)模塊詳細(xì)設(shè)計(jì)5.2.1熱門房源排行進(jìn)入系統(tǒng)首頁(yè)點(diǎn)擊整租或者合租會(huì)顯示對(duì)應(yīng)的頁(yè)面,在不同的頁(yè)面也有對(duì)應(yīng)的房源數(shù)據(jù),在房源列表的右側(cè)會(huì)顯示該類型房源被收藏最多的前20所房源數(shù)據(jù),相應(yīng)的操作流程則是進(jìn)入該頁(yè)面查詢?cè)擁?yè)面的房源類型,將房源類型通過(guò)Ajax傳入到后端中,后端會(huì)查詢系統(tǒng)中的收藏房源表,對(duì)房源的Id進(jìn)行分組求和排序,獲取前20的房源數(shù)據(jù)并通過(guò)json格式返回給前端頁(yè)面。如圖5-3熱門房源排行圖所示。圖5-2熱門房源排行流程圖5.2.1房源詳情頁(yè)面對(duì)于用戶來(lái)說(shuō)線上看房圖的就是方便,當(dāng)我們選好了一款房源時(shí)就可以直接點(diǎn)擊進(jìn)入里面進(jìn)行房源詳情查看,對(duì)應(yīng)的操作就是將用戶自己的Id、房源的Id和房源類型一起傳入到后端,根據(jù)房源的Id和類型到房源表中查詢?cè)摲吭吹脑敿?xì)信息,后面對(duì)該房源的其它操作如評(píng)論、預(yù)約等都可以通過(guò)用戶Id進(jìn)行綁定。房源詳情信息流程圖如圖5-3所示。圖5-3房源詳情信息流程圖5.3后臺(tái)模塊詳細(xì)設(shè)計(jì)5.3.1各模塊添加設(shè)計(jì)后臺(tái)主要是對(duì)前臺(tái)的展示數(shù)據(jù)進(jìn)行一個(gè)管理,管理的內(nèi)容有用戶管理、房源收藏管理、房源管理、訂單管理、聊天信息管理等。對(duì)于以上的模塊都是進(jìn)行簡(jiǎn)單的增刪改查,操作就是點(diǎn)擊對(duì)應(yīng)的模塊就向后端查找該模塊對(duì)應(yīng)的全表數(shù)據(jù),并返回到前端頁(yè)面中。如圖模塊數(shù)據(jù)添加流程圖如圖5-4所示。圖5-4數(shù)據(jù)添加流程圖5.3.2各模塊刪除設(shè)計(jì)想要?jiǎng)h除某個(gè)模塊的某一條數(shù)據(jù)可以直接到對(duì)應(yīng)模塊找到該數(shù)據(jù),點(diǎn)擊刪除按鈕會(huì)把該模塊信息和數(shù)據(jù)Id傳入到后端,后端通過(guò)模塊找到對(duì)應(yīng)的表,再根據(jù)對(duì)應(yīng)的表刪除此Id就可以了。數(shù)據(jù)刪除流程圖如圖5-5所示。圖5-5數(shù)據(jù)刪除流程圖5.4數(shù)據(jù)倉(cāng)庫(kù)詳細(xì)設(shè)計(jì)5.4.1不同區(qū)房源數(shù)分析這個(gè)分析主要是對(duì)比不同地方的房源數(shù)的,通過(guò)對(duì)房源數(shù)據(jù)進(jìn)行空值去除和格式不合格去除后得到了dwd_different_regions_count,并對(duì)dwd_different_regions_count按照小區(qū)字段進(jìn)行分組并插入dws_different_regions_count,再對(duì)其進(jìn)行count數(shù)量統(tǒng)計(jì),按照小區(qū)名稱、房源數(shù)量的格式插入ads_different_regions_count。過(guò)程如圖5-6所示。圖5-6不同區(qū)房源數(shù)流程圖5.4.2各區(qū)域平均房?jī)r(jià)分析價(jià)格往往是決定我們用戶在挑選房源時(shí)的重要原因,因此分析房源的價(jià)格尤為重要,本次的平均價(jià)格分析就是通過(guò)房源原數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,對(duì)小區(qū)進(jìn)行分組查詢?cè)賹?duì)價(jià)格字段進(jìn)行平均數(shù)函數(shù)求平均價(jià)格。如圖5-7所示。圖5-7不同區(qū)房源平均價(jià)程圖6系統(tǒng)實(shí)現(xiàn)6.1前臺(tái)模塊實(shí)現(xiàn)6.1.1登錄注冊(cè)模塊在進(jìn)入系統(tǒng)后像具體使用某一個(gè)功能時(shí)需要進(jìn)行登錄,如果沒(méi)有登錄就需要注冊(cè)在進(jìn)入系統(tǒng)。在用戶注冊(cè)時(shí)需要填寫自己的用戶名、密碼、地址、介紹、電話號(hào)碼、身份證號(hào)碼、頭像等。如圖6-1用戶注冊(cè)截圖。圖6-1用戶注冊(cè)截圖@RestControllerpublicclassRegisterController{@AutowiredprivateRegisterServiceregisterService;@PostMapping("/user/account/register/")publicMap<String,String>register(@RequestParamMap<String,String>data){returnregisterService.register(data);}}}注冊(cè)好了之后可直接跳轉(zhuǎn)到登錄頁(yè)面,輸入用戶名和密碼都正確即可使用系統(tǒng)大部分功能。用戶登錄截圖如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發(fā)布房源模塊這個(gè)功能模塊需要用戶進(jìn)行登錄之后才可以使用,登錄成功后可根據(jù)系統(tǒng)的相關(guān)提示進(jìn)行房源信息的填寫,如名稱、價(jià)格、樓層、戶型、租賃方式、地址等等。房源發(fā)布如圖6-3所示。圖6-3房源發(fā)布圖6.1.3搜索房源模塊如果用戶心里已經(jīng)想好了租房的條件時(shí)可以直接通過(guò)多條件查詢進(jìn)行搜索,本系統(tǒng)中的搜索條件主要有城市、價(jià)格、面積、租賃方式、朝向、戶型等。如圖6-4所示。圖6-4房源搜索圖6.1.4聊天功能模塊為了方便用戶在租房時(shí)咨詢房東房屋相關(guān)問(wèn)題,我們實(shí)現(xiàn)了一個(gè)聊過(guò)功能,它可以使用戶和用戶聊天也可用戶和房東聊天還可房東和房東聊天,總之,注冊(cè)賬號(hào)后都可以和其他用戶聊天。聊天截圖如6-5所示。圖6-5聊天截圖protectedvoidchannelRead0(ChannelHandlerContextctx,TextWebSocketFramemsg)throwsException{//接收的消息System.out.println(String.format("收到客戶端%s的數(shù)據(jù):%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);//對(duì)話obj.put("uuid",UUID.randomUUID().toString());channel.writeAndFlush(newTextWebSocketFrame(JSON.toJSONString(obj)));}else{System.out.println("未登錄");}}6.1.5訂單支付模塊用戶進(jìn)行查找后找到了滿意的房源就可以進(jìn)行租房,點(diǎn)擊租房選好日期后會(huì)直接進(jìn)入訂單列表,想清楚后可直接進(jìn)行支付。如圖6-6所示。圖6-6支付截圖6.2后臺(tái)管理實(shí)現(xiàn)6.2.1用戶管理模塊在用戶管理模塊中,管理員可以對(duì)用戶進(jìn)行添加、修改、刪除、搜索等一系列操作,但是對(duì)于密碼來(lái)說(shuō)只能看見(jiàn)加密后的密碼。如圖6-7所示。圖6-7用戶管理截圖6.2.2房源管理模塊房源管理分為了兩塊,一個(gè)是整租一個(gè)是合租,對(duì)于這兩種類型的房源管理員都是相同的操作如對(duì)房源進(jìn)行添加、修改、刪除、根據(jù)房屋名搜索等。如圖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訂單管理模塊訂單管理模塊是獲取了所有用戶的訂單進(jìn)行管理,可修改訂單的狀態(tài),但暫不支持退款功能。如圖6-9所示。圖6-9訂單截圖6.2.4房源評(píng)論模塊管理員可對(duì)某些惡意評(píng)論進(jìn)行刪除。如圖6-10所示。圖6-10房源評(píng)論截圖@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","評(píng)論不存在或已被刪除");returnmap;}commentMapper.deleteById(commentId);map.put("error_message","success");returnmap;}6.2.2房源審核模塊房源審核模塊是為了審核用戶發(fā)布的房源,在本系統(tǒng)中用戶登錄后便有了發(fā)布房源的權(quán)限,但是得經(jīng)過(guò)管理員的同意。如圖6-11所示。圖6-11房源審核截圖6.3可視化大屏實(shí)現(xiàn)6.1.1不同區(qū)房源數(shù)這個(gè)模塊就是為了讓用戶快速清楚的了解每個(gè)地方的房源數(shù)量。房源數(shù)量截圖如圖6-12所示。圖6-12不同區(qū)房源數(shù)量截圖@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不同區(qū)平均房房?jī)r(jià)為了讓用戶直觀的觀看每個(gè)地區(qū)的價(jià)格差異,于是實(shí)現(xiàn)了這個(gè)圖表,專為用戶觀看。如圖6-13所示。圖6-13不同區(qū)平均房?jī)r(jià)截圖@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系統(tǒng)測(cè)試7.1測(cè)試的目的系統(tǒng)測(cè)試在開(kāi)發(fā)中是必不可少的,每當(dāng)我們完成對(duì)應(yīng)的功能就應(yīng)該及時(shí)的進(jìn)行測(cè),在這個(gè)過(guò)程中及時(shí)的發(fā)現(xiàn)系統(tǒng)的不足然后加以修改,這樣可以避免后期開(kāi)發(fā)或者維護(hù)所帶來(lái)的困擾。作為開(kāi)發(fā)人員,我們也應(yīng)當(dāng)對(duì)自己的代碼質(zhì)量負(fù)責(zé),完成對(duì)應(yīng)功能測(cè)試。7.2測(cè)試的過(guò)程7.2.1登錄測(cè)試表7-1登錄功能測(cè)試用例IDTC001用例名稱登錄系統(tǒng)用例描述登錄系統(tǒng)用戶點(diǎn)擊登錄才能收藏房源、預(yù)約房源、評(píng)價(jià)房源測(cè)試用例ID場(chǎng)景測(cè)試步驟預(yù)期結(jié)果測(cè)試結(jié)果TC1顯示登錄頁(yè)面進(jìn)入系統(tǒng)點(diǎn)擊右上角登錄按鈕顯示登錄頁(yè)面元素用戶名、密碼與預(yù)期一致TC2提交登錄輸入用戶名及密碼跳轉(zhuǎn)至首頁(yè)與預(yù)期一致TC3提交錯(cuò)誤用戶名、密碼輸入錯(cuò)誤用戶名、密碼顯示登錄失敗,用戶名或密碼錯(cuò)誤與預(yù)期一致7.2.2房源篩選測(cè)試表7-2房源篩選功能測(cè)試用例IDTC002用例名稱房源搜索用例描述房源搜索未登錄的用戶也可以進(jìn)行房源條件篩選測(cè)試用例ID場(chǎng)景測(cè)試步驟預(yù)期結(jié)果測(cè)試結(jié)果TC1顯示全部房源進(jìn)入系統(tǒng)點(diǎn)擊整租或者合租顯示全部的房源與預(yù)期一致TC2只顯示指定價(jià)格內(nèi)房源在房源篩選條件中點(diǎn)擊小于1500每月的房源顯示1500每月的房源與預(yù)期一致TC3顯示指定價(jià)格和指定小區(qū)房源在房源篩選條件中點(diǎn)擊小于1500每月并在朝陽(yáng)區(qū)的房源顯示1500每月并在朝陽(yáng)區(qū)的房源與預(yù)期一致7.2.3房源收藏測(cè)試表7-3房源收藏功能測(cè)試用例IDTC003用例名稱房源收藏用例描述房源收藏登錄的用戶進(jìn)行收藏并在收藏列表中查看測(cè)試用例ID場(chǎng)景測(cè)試步驟預(yù)期結(jié)果測(cè)試結(jié)果TC1未登錄能否收藏未登錄進(jìn)入詳情房源進(jìn)行收藏您的token無(wú)效,請(qǐng)重新登錄與預(yù)期一致TC2登錄情況下進(jìn)行收藏登錄進(jìn)入詳情房源進(jìn)行收藏跳轉(zhuǎn)至收藏列表與預(yù)期一致7.2.4后臺(tái)用戶管理測(cè)試表7-4后臺(tái)用戶管理功能測(cè)試用例IDTC004用例名稱用戶管理用例描述用戶管理對(duì)用戶進(jìn)行增刪改查操作測(cè)試用例ID場(chǎng)景測(cè)試步驟預(yù)期結(jié)果測(cè)試結(jié)果TC1查看全部用戶進(jìn)入系統(tǒng)點(diǎn)擊用戶管理顯示全部用戶與預(yù)期一致TC2刪除一個(gè)用戶點(diǎn)擊用戶列表右側(cè)的刪除按鈕該用戶被刪除與預(yù)期一致TC3添加一個(gè)用戶在用戶列表點(diǎn)擊添加按鈕,填寫用戶的信息并添加用戶列表多一條剛添加的用戶與預(yù)期一致TC4修改一個(gè)用戶在用戶列表的一個(gè)用戶進(jìn)行修改姓名對(duì)應(yīng)id的用戶名被修改與預(yù)期一致7.2.5后臺(tái)房源管理測(cè)試表7-5后臺(tái)房源管理功能測(cè)試用例IDTC0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論