本人承诺只做技术分享,永不收沸;
点击专栏------》传送V

1.1研究的背景

近年来,随着智能手机,5G和物联网技术的飞速发展,越来越多的人能够接触和使用网络,在人们使用网络的过程中,无时无刻不在产生的着数字信息,上网会产生数字信息,吃饭会产生数字信息,旅游会产生数字信息,我们的生活被数据信息包围,而这些所谓的数字信息就是我们通常所说的”数据“,我们称之为大数据的浪潮。

中国正处于城镇化进程加速发展时期,城市规模不断扩大,大量的人口有农村向着城市转移,农村地区逐步演变成城市地区,城市人口不断增加。而在城市化发展的过程中,住房问题成为了人们最为苦恼的问题,而且随着人们生活质量的不断提升,消费者在购房的过程中会考虑越来越多的房产因素,例如:小区绿化,小区周边的社会服务设施,区位资源,房源的价格等各方面的因素,那么针对这些消费者在购房过程中考虑的诸多问题,一套完整的房源信息分析推荐系统就显得格外重要。

1.2 研究的意义

在数字化的今天,人们的衣食住行都会产生数字信息信息,那如果我们通过分析的手段,对人们产生的数字信息进行多维度的分析,使这些无结构和无关联的数据成为有结构和有管理的数据标签,再利用这些数字标签来服务人们的日常生活。

数据分析的目的就是把隐藏在一大批看来杂乱无章的数据中的信息集中和提炼,从而找到所研究对象的内在规律。在实际的应用中,数据分析可以帮助人们做出判断,以便采取适当的行动。数据分析是有规律有目的的地数据数据,分析数据,使之成为有用信息的过程。

1.3 课题主要工作

课题一开始以房源数据分析,房源数据可视化,房源推荐作为本论文得论点,列举当下消费者购房过程中考虑的诸多因素,再结构中国目前城市化国中的消费者购置房产的现状,并再次基础上讨论了设计一个房源信息分析推荐系统的必要性。然后在此想法的基础上,对当下消费者在购置房产过程中的考虑的诸多问题进行的调查,完成了本系统的需求分析工作。完成用户的需求分析之后,再参考各大房源信息网站,再结构本系统的业务需求,数据需求,基于mongdb完成了基础房源信息的存储和基于mysql完成业务数据的设计,通过使用Scrapy异步爬虫框架完成数据的抓取工作,再结合Django框架完成web后端的搭建,前端使用当下流行的数据可视化插件Echarts完成数据的统计与展示,并采用基于用户和基于物品的推荐算法完成个性化推荐。

在对系统架构的搭建和所使用的技术进行确定之后,就对系统进行详细设计和实现,设计和实现过程紧紧围绕消费者在房产购置过程中的诸多因素进行数据的分析和结果展示清晰易懂两大主题,最后实现所有系统模块之后,对系统进行用例测试。

2  需求分析

需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。

2.1 需求分析

需求分析的内容是针对开发软件提供完整,清晰,具体的要求,确定软件必须要实现那些任务。具体分为功能性需求,和非功能需求与约束条件三个方面。

通过以上对需求的分析设计思路,系统如何进行开发的流程已经有了一个明确的方案。如图2-1所示。

图2-1系统开发流程图

下面将阐述系统用户用例的分析,用例图是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。

普通用户作为软件使用者之一,管理员是系统后台管理员,普通用户主要包括数据台账,查询统计,区位资源选择,房源对比,房源推荐,个人信息查询与修改用例。如图2-2所示。

图2-2 普通用户用例图

系统管理员用户,在拥有普通用户用例权限的基础上,还增加了用户信息管理和房源信息管理,与用户评论信息管理等资源管理用例。如图2-3所示。

图2-3 系统管理员用例图

2.2系统用例规约描述

2.2.1 用户登录用例描述

用户通过用户名和密码进行登陆,前端验证密码的规范性,规划性验证成功之后将用户登陆信息传到后端,后端从数据库中对用户登陆信息进行校验并返回结果码,前端通过后端返回的结果进行判断,成功将跳转至系统首页,登陆信息错误将给予提示。如图2-4,2-5所示。

2.2.2 数据台账

数据台账用例主要包括大连区域边界图,大连市近一年房价走势折线图,大连市城区近一边房价对比折线图,大连市城区公共资源数量对比柱状图。如图2-6所示。

2.2.3 查询统计

查询统计模块包括简单查询,条件查询,公共资源查询。

简单查询模块,该模块中用户可以根据小区名称进行小区的搜索,系统将根据用户输入的小区名称将该小区的信息返回给用户,小区信息包括:小区图片,小区名称,地址,价格,小区类型,小区高度类型,绿化率,停车位,是否在售等信息,并且用户可以通过收藏按钮对小区进行收藏,还可以通过小区详情按钮查看小区详情。如图2-7,2-8所示。

条件查询模块,该模块用户通过选择大连四个行政区域,房源类型并调节小区房源价格,房产面积参数来筛选符合条件的房源,系统通过用户选择的参数,自动筛选出符合条件的小区,将搜索结果显示在前端页面上,并且将小区标注在地图上。用户也可以通过查看小区详情按钮,跳转至小区详情页面。如图2-9所示。

 公共设施查询模块,用户通过输入小区名称,选择周边设施(学校,医院,商场,政府机构),输入搜索半径对某小区周边的公共设施进行查询,系统根据输入的小区名称,查询该小区的经纬度,返回给前端页面,前端页面根据后端返回的小区经纬度和用户选择的周边设施类型,以及搜索半径这些参数,然后调用百度地图某一地区的兴趣点位置查询服务(POI:Point of Interest,感兴趣点)API,查询出该小区搜索半径内的周边公共设施的信息,并将百度地图API返回的位置信息坐标标注在地图上。如图2-10所示。

2.2.4 区位资源

区位资源包括区位资源分析与区位资源查询模块。在区位资源分析中,用户选择大连四个城区中的任何一个城区和区位资源类型,系统会根据用户选择的城区和公共资源类型,先调用百度地图城区POI检索API,通过该API接口返回符合检索条件的兴趣点的坐标,再调用百度地图热地区将这个坐标信息展示成热力图,使检索结果更加清晰的展示给用户。在区位资源查询模块中,用户将对小区进行更加全面的筛选,筛选条件包括楼层类型,绿化率,小区主要房源朝向,装修状态,所在城区,区位资源,周边教育设置占比,周边医疗设施占比,周边交通设施占比,周边休闲娱乐设施占比,通过这些筛选条件系统将会给用户更加符合用户需求的房源。如图2-11,2-12所示。

2.2.6房源推荐

房源推荐模块包括,基于用户的推荐与基于房源的推荐。

基于用户的协同过滤推荐算法。

基本思想:

俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。

所以说,当一个用户 A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体 G,然后把 G 喜欢的、并且 A 没有听说过的物品推荐给 A,这就是基于用户的系统过滤算法。

实现步骤:

1.找到与目标用户兴趣相似的用户集合。

2.找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标 用户。

基于物品的协同过滤推荐算法。

基本思想:

基于物品的协同过滤算法(ItemCF)给用户推荐那些和他们之前喜欢的物品相似的物品。比如:该算法会因为你购买过《数据挖掘导论》而给你推荐《机器学习》。不过ItemCF算法不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大相似度的原因是因为喜欢物品A的用户大都也喜欢物品B。

实现步骤:

1.建立物品的同现矩阵,用于表示物品之间的相似度。

2.建立用户对物品的评分矩阵。

3.矩阵计算推荐结果。

3  总体设计

3.1 系统概述

大连房源分析推荐系统采用python语言实现,基础数据获取通过Scrapy异步爬虫框架进行基础数据的获取,再采用mongbd对爬虫数据进行转储,系统搭建使用Django框架,再配合mysql数据库进行系统业务数据的存储。

系统设计的主题主要围绕消费者在购置房产的过程中考虑的诸多问题进行设计,为购置房产的用户提供可信度,性价比更高的房源。

3.2 系统结构设计

大连房源分析推荐系统的系统结构设计采用树状结构进行设计,采用树状结构的原因是考虑到系统主要有模块与子模块和子模块中的子功能组合而成。

要考虑如何设计一个稳定的、完整的结构来完成系统结构设计,树状结构设计是一个不错的选择。它具体的分层结构特点如下:

(1)每一项子功能或者多项子功能都对应一个上级,最高一级是系统本身,功能之间相互对应。

(2)结构框架脉络明显,可以很清楚的对功能从主体出发进行设计,不用担心功能冗余或者重复。

(3)功能实现有问题,可以很清楚的发现问题根源,只需要对子功能进行修改,不会对整体框架造成影响。

(4)方便对之后的数据库设计提供较大的帮助,比如依据子功能的设计出发进行数据分析,能够得到更切合功能实现的数据库设计方案。

基于以上设计过程和方案有点分析,大连房源分析推荐系统选择更为细致的模块和子功能划分对系统进行设计。如图3-1所示。

图3-1 系统模块结构图

4  系统详细设计及实现

对总体设计的规划之后,便是对系统各项功能实现的细致探讨及设计,也就是对系统的详细设计及实现,详细设计的第一步离不开对类图的设计和功能的设计,在对设计的完成之后,理所应当是对功能实现的具体实施方案,因为只有设计是不够的,只有利用相关流程图和相关代码的进行描述,才能从根本上解析整个系统。

4.1 系统功能设计分析及流程

系统主界面的功能包括数据台账、查询统计、区位资源、房源对比,房源推荐,个人信息这六部分组成,通过python装饰器的功能实现了用户在没有登录时,无法访问后面的数据页面。完成登录操作后首先展示的时数据台账页面,数据台账页面主要包括大连城区区域边界图,大连房价走势图,大连城区房价对比图,大连城区公共资源对比图,通过该模块让用户可以对大连城区的大致情况有一个了解。查询统计模块中主要包括简单查询,区位资源查询,公共设施查询,该模块的目的可以帮助用户快速检索用户已知的楼盘并对该楼盘附近的公共设施情况有一个快速的了解。区位资源查询模块中主要包括区位资源查询,区位资源分析,该模块主要的目的是帮助用户对购房城区的公共设施资源以及该城区中房源细颗粒度的筛选。房源对比模块,该模块主要帮助用户对中意的多套房源进行信息的对比。房源推荐模块,该模块主要包括基于用户和基于房源的推荐。个人信息模块,主要包括个人信息的展示,个人信息的修改,用户评论管理,用户历史推荐这些子功能。

4.2数据台账模块设计与实现

数据台账主要包括大连城区区域边界图,大连房价走势图,大连城区房价对比图,大连城区公共资源对比图。页面设计参考大数据分析平台,通过Echarts,百度地图等前端数据展示技术进行展示。如图4-1所示。

图4-1数据台账界面

该功能实现的过程,前端进行路由访问,Django框架进行路由分发获取所对应的视图函数,再该视图函数中返回大连房价走势数据,大连市区房价对比数据,大连市公共资源数量数据。如图4-2所示。

4.3查询统计模块设计与实现

查询统计模块分为简单查询,条件查询,公共设施查询。如图4-3所示。

图4-3查询统计界面

简单查询查询中,系统会将大多数的房源信息进行展示,在模块中用户可以通过小区名称检索小区,收藏小区,查看小区详情。如图4-4所示。

条件查询模块中,用户通过选择城区,房源类型,价格区间,房源面积区间,系统会根据这些参数筛选出符合要求的小区,并将小区的地理位置信息绘制在地图上面。如图4-5,4-6,4-7所示。

图4-5条件查询界面

图4-6条件查询前端筛选代码

//创建地表marker 再给marker添加点事件 ,显示位置名称和地址
function create_marker(lat, lng, local_name, adress, index) {var mPoint = new BMap.Point(lng, lat);var opts = {width: 200,     // 信息窗口宽度height: 100,     // 信息窗口高度title: "名称:" + local_name, // 信息窗口标题}//创建窗体var infoWindow = new BMap.InfoWindow("地址:" + adress, opts);  // 创建信息窗口对象var marker = new BMap.Marker(mPoint);marker.setAnimation(BMAP_ANIMATION_BOUNCE)marker.addEventListener('click', function (e) {map.openInfoWindow(infoWindow, mPoint); //开启信息窗口});// 将标注添加到地图marker.setLabel(getNumberLabel(index));map.addOverlay(marker);
}
//创建数字label
function getNumberLabel(number) {var offsetSize = new BMap.Size(0, 0);var labelStyle = {color: "#fff",backgroundColor: "0.05",border: "0"};//不同数字长度需要设置不同的样式。switch ((number + '').length) {case 1:labelStyle.fontSize = "14px";offsetSize = new BMap.Size(4, 2);break;case 2:labelStyle.fontSize = "12px";offsetSize = new BMap.Size(2, 4);break;case 3:labelStyle.fontSize = "10px";offsetSize = new BMap.Size(-2, 4);break;default:break;}图4-7条件查询百度地图渲染查询结果代码

公共设施查询模块中,用户可以输入小区名称,公共设施类型,搜索半径,前端页面调用百度地图POI检索API接口,并返回小区周边的公共设施将其通过百度地图标注点进行展示。如图4-8,4-9所示。

图4-8公共设施查询界面

function map_init(loupan_name, surround_public_type, search_radius, lng, lat) {console.log(loupan_name, surround_public_type, search_radius, lng, lat);console.log(1)var map = new BMap.Map("query-public"); // 创建Map实例var mpoint = new BMap.Point(lng, lat); //地图中心点,//创建markervar marker = new BMap.Marker(mpoint);var opts = {width: 50,     // 信息窗口宽度height: 50,     // 信息窗口高度title: "小区名称", // 信息窗口标题}var infoWindow = new BMap.InfoWindow(loupan_name, opts);marker.addEventListener("click", function () {map.openInfoWindow(infoWindow, mpoint); //开启信息窗口});map.addOverlay(marker)marker.setAnimation(BMAP_ANIMATION_BOUNCE);map.centerAndZoom(mpoint, 15); // 初始化地图,设置中心点坐标和地图级别。map.enableScrollWheelZoom(true); //启用滚轮放大缩小//地图、卫星、混合模式切换map.addControl(new BMap.MapTypeControl({ mapTypes: [BMAP_HYBRID_MAP] }));//向地图中添加缩放控件var ctrlNav = new window.BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT,type: BMAP_NAVIGATION_CONTROL_LARGE});map.addControl(ctrlNav);//向地图中添加缩略图控件var ctrlOve = new window.BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT,isOpen: 1});map.addControl(ctrlOve);//向地图中添加比例尺控件//var ctrlSca = new window.BMap.ScaleControl({//  anchor: BMAP_ANCHOR_BOTTOM_LEFT//});// map.addControl(ctrlSca);      var options = {renderOptions: { map: map, autoViewport: false, panel: "public-result-list" },onSearchComplete: function (results) {if (local.getStatus() == BMAP_STATUS_SUCCESS) {// 判断状态是否正确  map.getDistance(pointA,pointB)).toFixed(2)+’ 米。’  弹窗 显示 名称 地址  距离目标point的距离}}};var local = new BMap.LocalSearch(map, options);// console.log(surround_public_type,search_radius)local.searchNearby(surround_public_type, mpoint, search_radius);}initNav();bindEvent();document.styleSheets[0].addRule("section>div.content::before","display:flex");getData("/all_loupan_informations", 'get').then(data => {allData = data.result;document.styleSheets[0].addRule("section>div.content::before","display:none");})
}
图4-9公共设施查询前端代码

本人承诺只做技术分享,永不收沸;
点击专栏------》传送V

【毕业设计推荐】基于Django大连房源分析系统相关推荐

  1. 基于Django大连房源分析系统

    本人承诺只做技术分享,永不收沸: 点击专栏------>传送V 设计背景 随着近几年我们房产市场呈现持续化火爆的势头,人们对于购房质量的追求,已由低层次向高层次发展,由原来的感性购房向理性购房不 ...

  2. python毕业设计作品基于django框架校园网站系统毕设成品(7)中期检查报告

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  3. python毕业设计作品基于django框架校园网站系统毕设成品(3)后台管理功能

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  4. python毕业设计作品基于django框架校园网站系统毕设成品(4)开题报告

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  5. python毕业设计作品基于django框架校园网站系统毕设成品(1)开发概要

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  6. 计算机毕业设计python基于django在线古诗词学习系统

    学好中国古典诗词的意义:学古诗是让我们了解古人的思想,学习他们的高尚情操,也是我们一步步向上学习的过程,只有这样我们才能不断的向上攀登,超越古人. 中国是世界上唯一的历史悠久.绵延不绝的国家,这是中国 ...

  7. python毕业设计作品基于django框架 景区购票系统毕设成品(4)开题报告

    python景区购票系统毕设 django景区购票系统毕设 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发 ...

  8. python毕业设计作品基于django框架 景区购票系统毕设成品(7)中期检查报告

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  9. python毕业设计作品基于django框架 电子书阅读系统毕设成品(6)开题答辩PPT

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

最新文章

  1. NRPE实现对其它(远端)设备的监控
  2. Spring MVC 使用拦截器 HiddenHttpMethodFilter配置Rest风格的URL
  3. 04-CoreData Stack技术栈堆手动实现
  4. 起点linux和深度linux哪个好,我想深入学习linux计算机,但不知道选择哪个版本好?...
  5. 最小费用最大流-SPFA-多路增广
  6. HTML5 history新特性pushState、replaceState,popstate
  7. java jar class_JAVA jar命令(一)-jar打包class文件
  8. Oracle数据库概述
  9. android游戏源码 2048,Android实现2048小游戏
  10. Python微信、QQ自动发消息
  11. 马士兵老师Java虚拟机调优
  12. 2020信息系统项目管理师备战1--开篇(项目范围说明书Project Scope Statement)
  13. php 防挂马,织梦dedecms安全设置防挂马教程
  14. allegro笔记:元件与走线一起移动/板框原点origin设置/放置定位孔封装等到特定坐标
  15. 别人笑我太疯癫 唐伯虎诗词集
  16. verilog增量式编码器
  17. 弧形银幕电影的成像原理
  18. lumen 框架学习
  19. @mentions for Users with ActionText; 使用Tribute.js库
  20. STM32G070芯片开发笔记:一、如何用ST送的学习板上的STLink烧录调试

热门文章

  1. Eaglestream平台下 取消BMC ACPI引发的host 无法power on 问题
  2. python简单体育竞技模拟_2019-05-12 Python之模拟体育竞赛
  3. 能用三角函数表示声音吗——正弦模型综述
  4. 针对局域网IM飞秋(feiq)的开发总结
  5. 用户输入自己的【姓名 年龄 爱好】 + 加CP【姓名 年龄 爱好】,点击按钮,页面显示该用户的信息 点击提交按钮,JSON显示用户信息+副本信息(副本初始值是{})
  6. Hadoop-wordcount,合并多个part-*文件
  7. 三菱服务器显示rb是什么故障,三菱变频器常见的故障代码 以及故障说明
  8. BP神经网络通俗教程(matlab实现方法)
  9. 白杨SEO:小红书关键词搜索量怎么查?小红书关键词搜索长尾下拉词如何深处挖掘?
  10. Microsoft Windows Server 2003版本对比