摘要
随着城市间人口流动,房屋租赁交易越来越频繁,找房看房会占用大量时间,随着近几年的疫情出现,实地找房会收到限制,因此充分利用我国互联网的优势,发展线上选房、预约看房可以提高便利度,节省时间,也避免了疫情期间不必要的接触。实现线上租房,从而突破时间和地域的界限,从传统的线下看房租房转为线上看房租房,为出租方和租房方带来了极大的便利。
本文论文的系统架构模式运用了B/S,开发语言为Python以及Django框架,框架模式为MTV等技术。通过对国内外现状和目前的租房网站的研究,设计本系统的主要业务功能模块包括:主页、房屋类别、房屋详情、房屋预定、个人中心、我的订单和我的评论等。
软件工程设计项目从需求、分析、设计、实现、验证几方面进行推进,实现全部的功能后,进行全面的功能测试,依据形成的测试报告进行修改完善,从而保证系统可以安全稳定的运行。
关键词
租房网站;系统管理;Django;MTV
Abstract
With the population flow between cities, housing rental transactions more and more frequent, house viewing will take up a lot of time, with the outbreak in recent years, field search will receive restrictions, so make full use of the advantages of the Internet in our country, developing online selection, appointment viewing can improve convenience, save time, also avoid unnecessary contact during the outbreak To realize online rental, so as to break through the boundary between time and region, from the traditional offline rent housing to online rent housing, bringing great convenience to the lessor and the renter.
The system architecture mode of this paper adopts B / S, development language Python, development framework Django and MTV Through the research of the current situation at home and abroad and the current rental websites, the main business function modules of designing the system include the home page, house category, house details, house reservation, personal center, my order and my comments.
Software engineering design project is promoted from the requirements, analysis, design, realization and verification, after the realization of all functions, a comprehensive functional test, modification and improvement according to the formed test report, so as to ensure the safe and stable operation of the system.
Key w ords
Sites that rent a house; System management; Django; MySQL
目录
[++++第一章 前言++++](#第一章 前言)
[++++1.1 研究背景++++](#1.1 研究背景)
[++++1.1.1 国内研究现状++++](#1.1.1 国内研究现状)
[++++1.1.2 国外研究现状++++](#1.1.2 国外研究现状)
[++++1.2 研究的目的与意义++++](#1.2 研究的目的与意义)
[++++1.2.1 研究的目的++++](#1.2.1 研究的目的)
[++++1.2.2 研究的意义++++](#1.2.2 研究的意义)
[++++1.3 相关技术介绍++++](#1.3 相关技术介绍)
[++++1.3.1 MTV结构模式++++](#1.3.1 MTV结构模式)
[++++1.3.2 Nginx服务器++++](#1.3.2 Nginx服务器)
[++++1.3.3 MySQL数据库++++](#1.3.3 MySQL数据库)
[++++1.3.4 Django介绍++++](#1.3.4 Django介绍)
[++++1.4 系统要解决的主要问题及论文结构++++](#1.4 系统要解决的主要问题及论文结构)
[++++1.4.1 系统要完成的主要功能及描述++++](#1.4.1 系统要完成的主要功能及描述)
[++++1.4.2 论文结构++++](#1.4.2 论文结构)
[++++第二章 需求分析++++](#第二章 需求分析)
[++++2.1 可行性研究++++](#2.1 可行性研究)
[++++2.1.1 技术可行性分析++++](#2.1.1 技术可行性分析)
[++++2.1.2 经济可行性分析++++](#2.1.2 经济可行性分析)
[++++2.1.3 操作可行性++++](#2.1.3 操作可行性)
[++++2.2 系统功能需求++++](#2.2 系统功能需求)
[++++2.2.1 功能需求模型建立++++](#2.2.1 功能需求模型建立)
[++++2.2.2 系统用例图++++](#2.2.2 系统用例图)
[++++2.2.3 系统用例描述++++](#2.2.3 系统用例描述)
[++++2.3 本章小结++++](#2.3 本章小结)
[++++第三章 系统设计++++](#第三章 系统设计)
[++++3.1 系统的设计原则++++](#3.1 系统的设计原则)
[++++3.2 系统总体结构设计++++](#3.2 系统总体结构设计)
[++++3.3 系统功能结构设计++++](#3.3 系统功能结构设计)
[++++3.4 数据库设计++++](#3.4 数据库设计)
[++++3.4.1 数据库概念结构设计++++](#3.4.1 数据库概念结构设计)
[++++3.4.2 数据库物理结构设计++++](#3.4.2 数据库物理结构设计)
[++++3.5 本章小结++++](#3.5 本章小结)
[++++第四章 系统详细设计与实现++++](#第四章 系统详细设计与实现)
[++++4.1 前端功能的实现++++](#4.1 前端功能的实现)
[++++4.1.1 主页功能的实现++++](#4.1.1 主页功能的实现)
[++++4.1.2 用户注册功能的实现++++](#4.1.2 用户注册功能的实现)
[++++4.1.3 房源预定功能的实现++++](#4.1.3 房源预定功能的实现)
[++++4.1.4 房源信息功能的实现++++](#4.1.4 房源信息功能的实现)
[++++4.1.5 实名认证功能的实现++++](#4.1.5 实名认证功能的实现)
[++++4.2 后台功能的实现++++](#4.2 后台功能的实现)
[++++4.2.1 登录功能的实现++++](#4.2.1 登录功能的实现)
[++++4.2.2 发布房源功能的实现++++](#4.2.2 发布房源功能的实现)
[++++4.2.3 个人中心功能的实现++++](#4.2.3 个人中心功能的实现)
[++++4.2.4 客户订单功能的实现++++](#4.2.4 客户订单功能的实现)
[++++4.3 本章小结++++](#4.3 本章小结)
[++++第五章 系统测试++++](#第五章 系统测试)
[++++5.1 测试内容++++](#5.1 测试内容)
[++++5.2 测试方案++++](#5.2 测试方案)
[++++5.2.1 登录测试++++](#5.2.1 登录测试)
[++++5.2.2 用户注册测试++++](#5.2.2 用户注册测试)
[++++5.2.3 发布新房源测试++++](#5.2.3 发布新房源测试)
[++++5.2.4 实名认证测试++++](#5.2.4 实名认证测试)
[++++5.3 测试结论++++](#5.3 测试结论)
[++++5.4 本章小结++++](#5.4 本章小结)
第一章 前言
通过对租房网站的研究,分析国内外现状,利用相关知识,展现出一个简洁实用的租房网站,满足行业需求,提高工作效率。减轻租房行业的线下压力,带给群众便利,实现自我价值。
1.1 研究背景
高昂的房价让很多人不堪重负,越来越多的年轻人开始选择租房生活。"发达地区房子价格偏高,租房市场有着供应结构不合理、市场不规范、租赁关系不稳定等问题。应届生、年轻人特别是从事社会公共服务人员等群体的住房问题比较突出[1]。" 大城市中住房问题尤为突出,所以尤其要关注并予以解决这个问题。计算机信息化的技术也在快速的发展,在各行业的应用也日趋成熟,借助计算机信息化技术来解决租房行业的一些痛点,提升租房交易的效率。
1.1.1 国内研究现状
国内大部分租赁主力都是以年轻人为主,通过对年轻人租房意愿的调查,综合评价对年轻人自身租房实力、公寓环境吸引力、住房市场竞争力等方面进行分析,综合判断影响年轻人租住选择的影响因素。根据研究现状:有些年轻租客需求差异性比较大,长期租房优惠、房屋周边的基础设施建设、环境建设、公司租房补贴等,都会影响年轻人的租房选择。
今年的疫情虽然得到了有效控制,但是还存在潜在风险。线上租房更是成为了首选,随着信息技术不断的发展,系统更是更新迭代,越来越多的新技术涌现出来。以便于达到更加完善、人性化、高效化的用户体验。所以好的租房系统更是顺应时代发展。
1.1.2 国外研究现状
国外线上租房系统的发展开始于上世纪90年代末,比较著名的为Rent.com,它的线上功能能够满足大部分用户的需求,因为图片、文字等技术在当时得到了比较好的发展。慢慢的,国内也引进了国外优秀的租房系统,其中比较出名的有Airbnb(爱彼迎),不过Airbnb 的目标用户是旅游用户,而且大部分为短期租赁,提供的房源比较有当地的文化特色,努力打造一种旅行氛围,同时注重诚信经营,在旅游期间和房东同吃同住,感受异域风情。由于国内外的文化、审美的差异,因此而衍生出的互联网产品会有差异,但好的产品总会针对当地用户的需求而进行相应的调整[4]。
1.2 研究的目的与意义
随着信息化技术的高速发展,传统行业对于应用信息化技术来实现网络平台的行业软件需求及其迫切。随着社会的发展,用户对系统的功能设计需要与时俱进,因此在系统设计中需要研究用户需求,最大限度的满足用户需求[5]。
1.2.1 研究的目的
在房屋租赁场景中,传统的房屋租赁方式是房屋拥有者通常会委托房屋中介或者提供房屋租赁的服务中心(如链家,Airbnb等等)出租房屋,租房流程繁琐,租客们信息泄露和被篡改、租房合约争议等问题频繁出现。另外一个方面,随着物联网设备的普及,智能门锁由租赁系统统一管理。房屋出租管理系统正是针对上述的问题而开发的,应用计算机信息化技术实现线上数字化管理房屋信息,不但能够随时随地的浏览和管理,而且给物业公司管理房屋带来了极大的便利。同时能够为租房用户提供足不出户就可以找到合适房源。使租房的过程简化,并记录从房屋浏览直至房屋最终交易全过程的信息。为人们生活提供便利的租房服务。
1.2.2 研究的意义
随着人们对住房观念的改变,以租代买的需求主键扩大,房价的居高不下,是众多年轻人选择了租房,而年轻人工作时间紧,实地看房浪费时间,年轻人依赖于互联网上的信息,因此开发一套租房网站,解决年轻人时间紧、租赁要求高、充分利用互联网的需求十分必要。本系统不但可以解决租房用户的需求也可以解决房主租赁房产的需求,房主不用再去中介公司,在家就可以发布房屋租赁信息,租房者可以预先通过系统选择合适的房源进行预约,集中进行实地看房,该系统可以保障租赁市场的稳定,因此具有实际的社会意义。
1.3 相关技术介绍
B/S为本系统的开发模式,MySQL对本系统进行数据存储,选用Nginx为本系统的WEB服务器。
1.3.1 MTV结构模式
Django是相对厉害的Python编程语言驱动的一个开源模型、视图、控制器风格的Web应用程序框架[6]。运用这种框架的好处有:代码编写人员更加方便、快捷高效地创建品质高、维护易、数据库驱动的程序。这是OpenStack的Horizon组件使用这种架构的主要原因,在Django框架中,还有诸多功能齐全的第三方插件,使Django具备可扩展性[7]。
1.3.2 Nginx服务器
Nginx它有着高效率的HTTP和反向代理web服务器,也具备IMAP/POP3/SMTP服务。Nginx它是一个基础的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下出版,有着占有内存少,并发能力强的特点,其实
nginx的并发能力在相同服务的网页服务器中表现比较优秀[8]。
1.3.3 MySQL数据库
MySQL是当前公司企业使用最普遍的数据库服务,数据库服务在软件程序开发中有着举足若轻的地位,软件程序的上限由他决定。它是一种关系数据库管理系统,关系数据库能够合并多个数据表单来处理信息并随即完成对数据管理,它还可以降低开发成本的源开发数据库。它有着开发、标准化、可移植等特点,而且能够在多个操作平台上同时使用。它与多种语言(如C、C++、JAVA等)都有优秀的兼容性[9]。
1.3.4 Django介绍
Python编写的一个开源代码的Web框架[10]为Django。Python的代码编写人员就能够非常轻松地完成一个正式网站需要的巨量工作量内容,并且进一步研究出功能齐全的 Web 服务。Django本身基于MVC模型,即Model+ View+ Controller设计模式,MVC可以让后续对程序的变更和延伸简单操作,并且使软件任意一部分的重复利用[11]。 Python和Django一起使用是快速开发、设计、的首选组合,他的优点是低耦合、开发块、部署方便、可重用性高、降低维护成本[12]。
1.4 系统要解决的主要问题及论文结构
进行对课题的国内外现状研究,系统的论述课题的研究背景和课题的研究目的,再根据系统的实际需求,遵循应用程序的设计原则,进行系统功能的实现设计,按课题要求实现本论文的制作任务。
1.4.1 系统要完成的主要功能及描述
通过对系统真实需求的详细分析,进行分项详细阐述。
1.主页管理功能:具体实现管理员身份权限的验证,查看主页内容信息,用户登录和注册、搜索查找房屋信息。
2.房屋列表功能:普通用户填写相关信息以便于发布租房信息的完整性,条件搜索查看房屋具体信息。
3.房屋详情功能:管理员登录可对房屋信息进行维护,及时更新数据,普通用户查看房屋信息。
4.房屋预定功能:管理员登录对房屋预定信息的管理和维护,普通用户进行房屋的预定功能以及交付订单。
5.个人中心功能:管理员登录对房东信息的实名认证的验证、发布新房源信息、查看租客对房屋的订单,普通用户进行网站的实名认证、发布自己需要租赁的房屋,根据需求进行房屋预定。
6.我的订单功能:管理员登录对未支付的订单进行管理,普通用户能够查看进行中的订单。
7.我的评论功能: 管理员登录能够对评论进行合法性审核,普通用户可对进行过的订单进行评论和浏览评论区。
1.4.2 论文结构
本论文阐述对租房网站系统的背景及国内外研究,针对系统需求进行设计,实现系统功能为人们提供快捷的租房体验。下面详细介绍本文的研究内容:
第一章节前言介绍租房网站背景的研究,参考众多文章的国内研究现状以及外现状研究现状从而明确该租房网站实现的具体意义,依据租房系统目前的现状分析介绍租房网站所使用的关键技术支持和主要的开发工具。
第二章节需求分析对网站租房系统进行详细分的需求分析,首先进行可行性分析,具体阐述了技术,经济,操作可行性。对想应的功能建立了用例模型,设计了系统用例,详细的描述了各用例。
第三章节系统设计进行了系统设计描述,对系统的设计原则,总体结构设计,功能结构设计记忆数据库结构设计进行阐述。
第四章节系统详细设计与实现主要介绍是功能的实现过程,分别从系统执行流程和系统页面展示设计两方面进行功能模块的描述。
第五章节系统测试着重介绍测试方法,通过建立测试用例对各功能完成逐项测试,依据测试报告完成功能的更改和完善,保证系统的健壮性和稳定性。
第二章 需求分析
在对系统的设计目的和意义进行论述,详细的进行需求的汇总和分析。依据租房现状的核心业务及行业中痛点,进行系统的设计。通过应用需求调查表的方式收集核心需求。目的为实现一个应用性极高的、方便用户使用的租房网。
2.1 可行性研究
在项目开展开发之前进行详细的论述系统在应用方面的可行性,从系统实现的经济可行层、技术层面和操作可行层面进行论述。消除不稳定因素,确保项目准确无误的进行。
2.1.1 技术可行性分析
在网站的技术方面主要采用开源的平台进行系统的实现。这次设计采用的技术是Django框架来进行程序设计,框架自身集成了ORM、模型绑定、模板引擎、缓存、Session[13]等功能。采用MTV模式,框架分为三层,分别是模型层Model,模板层Template[14],视图层View,能够采用多层次管理开发,对于各个模块设计制作有一定的安全性;在存储数据方面选型方面及其的谨慎,为保障数据的安全和提供稳定的数据访问和交互,应用MySQL作为本项目的数据库;WEB服务器采用的是Nginx服务,能够提供稳定的运行平台服务,确保网站系统的稳定运行[15]。通过以上论述,本系统在技术方面具有可行性。
2.1.2 经济可行性分析
经济可行性主要是分析网站系统的开发成本,开发有的实际意义,后期的投资收益以及社会效益。租房网站为本人的毕业设计,在系统开发中开发人员为本人,人员成本为零;自有笔记本电脑满足开发要求,硬件成本为零;系统开发应用到的软件平台均为开源软件,开发平台成本为零。因此在系统开发的人工及软硬件方面无需资金的投入。综上所述,本系统在经济方面具有可行性。
2.1.3 操作可行性
系统的线上运行,操作可行性主要从用户操作是否便利考虑,用户能否在系统中快速定位到具体的功能,除了操作便利以外还要考虑系统界面是否美观,用户体验是否优良。系统布局统一可以快速到达功能界面进行处理,操作可行性通过。综上所述,本系统在操作方面具有可行性。
2.2 系统功能需求
这一节论述的功能需求是本论文的一项重要内容,系统需求主要划分为结构化方面的分析与面向对象方面的分析。
2.2.1 功能需求模型建立
1.参与者分为会员和管理员,并且拥有不同的功能。采用参与者词汇表进行描述,如表2-1所示。
表2-1 参与者词汇表
|----|-----|------|------------------------|
| 序号 | 词汇 | 同义词 | 描述 |
| 1 | 会员 | 普通用户 | 进行信息注册、房源搜索、房屋预定、我的订单等 |
| 2 | 管理员 | 管理用户 | 管理网站内全部信息 |
2.租房网站拥有着不少的用例,每个用例预期的参与者与角色都有不同。用例词汇表,如表2-2所示。
表2-2 用例词汇表
|-------|---------------------------------|-----------|
| 用例名称 | 用例描述 | 预期的参与者和角色 |
| 主页 | 展示城区和房租详细信息,提供登录、注册入口 | 会员、管理员 |
| 注册 | 会员进行系统用户的注册 | 会员 |
| 登录 | 会员、管理员登录系统的入口 | 会员、管理员 |
| 房屋列表页 | 房屋信息查询 | 会员、管理员 |
| 房屋详情页 | 房屋详细信息和房屋预定 | 会员、管理员 |
| 房屋预定 | 包括天数计算和金额计算 | 会员、管理员 |
| 个人中心 | 可进行方可下单查询、房东实名认证、房东发布信息查询和发布房源。 | 会员 |
| 我的订单 | 进行客户订单信息的维护管理 | 会员 |
| 我的评论 | 评论查询与评论发布 | 会员 |
| 退出 | 会员、管理员实现退出系统的操作 | 会员、管理员 |
2.2.2 系统用例图
系统管理员对网站的会员详情信息、房源详情信息、订单详情信息和评论区信息的维护。系统的会员用户可以查看主页、查看房屋、查看详情房屋信息、进行预定房屋、维护个人、订单和评论信息。下面进行通过用例图的方式构建会员和管理用户的功能及对应的功能关系,系统用户用例图,如图2-1所示。

图2-1 系统用户用例图
2.2.3 系统用例描述
根据租房网站的需求分析,设计项目的系统用例,通过用例表的形式介绍系统的管理员和会员两类用户,具体如下。
1.会员管理用例描述,如表2-3所示。
表2-3 会员管理用例描述表
|---------|---------------------------------------|
| 用例条目 | 输出 |
| 用例名称 | 会员管理 |
| 主要业务参与者 | 用户 |
| 其他参与者 | 无 |
| 描述 | 用户进行注册、登录、条件检索、区域检索 |
| 前置条件 | 注册模块 |
| 后置条件 | 注册信息的改查操作 |
| 基本流程 | 用户访问对应模块进行注册、登录、条件检索、区域检索,选择查操作数据实时入库 |
续表2-3
|---------|-------------------------------------------|
| 用例条目 | 输出 |
| 替代流程 | 1.访问主页模块 2.访问数据操作失败 |
| 结束 | 数据操作成功 |
| 实现约束和说明 | 1.修改信息需要获取选中行 2.删除信息需要获取选中行 3.查询信息需要获取数据源 |
2.房屋列表用例描述,如表2-4所示。
表2-4 房屋列表用例描述表
|---------|---------------------------------------------------------------|
| 用例条目 | 输出 |
| 用例名称 | 房屋列表 |
| 主要业务参与者 | 管理员 |
| 其他参与者 | 用户 |
| 描述 | 管理员维护房源信息 用户可以查询房源的相关信息 |
| 前置条件 | 访问房屋列表模块 |
| 后置条件 | 房屋列表增删改查操作成功 |
| 基本流程 | 访问对应模块选择增删改查操作数据实时入库 |
| 替代流程 | 1.访问房屋列表模块 2.访问数据操作失败 |
| 结束 | 房屋列表数据维护成功 |
| 实现约束和说明 | 1.录入数据要保证数据全面 2.更新操作需要获得选中行信息 3.删除操作需要获得选中行信息 4.所有操作要和数据库进行交互 |
3.房屋详情用例描述,如表2-5所示。
表2-5 房屋详情用例描述表
|---------|---------------------------------|
| 用例条目 | 输出 |
| 用例名称 | 房屋详情 |
| 主要业务参与者 | 管理员 |
| 其他参与者 | 用户 |
| 描述 | 管理员浏览订单的基本信息 管理员根据查询检索房屋预定的相关信息 |
| 前置条件 | 访问房屋详情模块 |
| 后置条件 | 房屋详情检索、查看操作成功 |
| 基本流程 | 访问房屋详情模块选择条件检索数据中房屋预定信息 |
| 替代流程 | 1.访问房屋详情模块 2.访问数据操作失败 |
续表2-5
|---------|--------------------------|
| 用例条目 | 输出 |
| 结束 | 房屋详情数据查看成功 |
| 实现约束和说明 | 1.检索条件完整准确 2.查看数据要保证数据全面 |
4.个人中心用例描述,如表2-6所示。
表2-6 个人中心用例描述表
|---------|-----------------------------------------------|
| 用例条目 | 输出 |
| 用例名称 | 个人中心 |
| 主要业务参与者 | 用户 |
| 其他参与者 | 管理员 |
| 描述 | 用户查询修改个人信息、房东实名认证、房东发布信息和查询、房客下单 |
| 前置条件 | 访问个人中心模块 |
| 后置条件 | 修改个人信息操作成功、房东实名认证成功、房源发布成功 |
| 基本流程 | 用户实名认证、发布房源,管理员访问对应模块选择信息操作数据实时入库 |
| 替代流程 | 1.访问个人中心模块 2.访问数据操作失败 |
| 结束 | 个人中心数据操作成功 |
| 实现约束和说明 | 1.录入数据要保证数据全面 2.审核操作需要获得选中行信息 3.所有操作要和数据库进行交互 |
5.我的订单用例描述,如表2-7所示。
表2-7 我的订单用例描述表
|---------|-----------------------------|
| 用例条目 | 输出 |
| 用例名称 | 我的订单 |
| 主要业务参与者 | 用户 |
| 其他参与者 | 无 |
| 描述 | 用户浏览订单的基本信息,选择订单接收或者拒绝 |
| 前置条件 | 访问我的订单模块 |
| 后置条件 | 我的订单检索、查看操作成功 |
| 基本流程 | 访问我的订单模块查询订单,选择数据接收或者拒绝订单信息 |
| 替代流程 | 1.访问我的订单模块 2.访问数据操作失败 |
| 结束 | 我的订单数据查看成功,接受、拒绝成功 |
| 实现约束和说明 | 1.检索条件完整准确 2.查看数据要保证数据全面 |
6.我的评论用例描述,如表2-8所示。
表2-8 我的评论用例描述表
|---------|-------------------------------------------------|
| 用例条目 | 输出 |
| 用例名称 | 我的评论 |
| 主要业务参与者 | 用户 |
| 其他参与者 | 管理员 |
| 描述 | 管理员维护用户评论的信息,审核发布评论信息 用户可以查看评论的相关信息 |
| 前置条件 | 访问我的评论模块 |
| 后置条件 | 我的评论审核发布评论操作成功 |
| 基本流程 | 用户发表评论信息,管理员访问对应模块选择审核发布评论操作数据实时入库 |
| 替代流程 | 1.访问我的评论模块 2.访问数据操作失败 |
| 结束 | 我的评论数据维护成功 |
| 实现约束和说明 | 1.录入审核数据要保证数据全面 2.审核操作需要获得选中行信息 3.所有操作要和数据库进行交互 |
2.3 本章小结
本章介绍的系统需求进行详尽的分析,针对系统开发后的经济价值,以及开发过程中的成本,分析系统所用技术是否可靠和安全,分析系统操作设计是否能够达到用户满意度,分析系统的非功能性需求,设计系统的用户种类以及用户的功能用例。
第三章 系统设计
城市人口的增多,人员流动频繁,买房已经不是主要的据主方式,而现代青年对居住环境的要求也日益提高,是目前租住房屋的主力军,而年轻人对于互联网的应用又极为熟悉,因此依托互联网的租房网站可用有效的帮助有租房需求的人更加效率、便捷的完成租房活动,开发一套快捷、安全、效率的租房网站系统已是必然趋势。
3.1 系统的设计原则
在设计过程中应当严格遵循信息系统设计原则进行设计。系统第一层次划分用户身份,第二层次主要是根据用户身份划分各身份下模块的具体功能。保证数据的可靠性,用户录入数据时能够选择的数据项尽量采用用户选择或者默认,避免数字或日期因格式的问题导致系统问题。保证系统的安全性,设计不同用户身份操作不同的功能模块保证系统的数据操作严谨。
3.2 系统总体结构设计
本系统依据基本功能结构进行模块的划分,划分后的功能模块非常的清晰,同时尽量降低模块间耦合程度,以尽量保持各模块的独立性,从而避免模型造成系统能的混淆。系统间的模块互相交互采用标准的数据接口进行授权访问,接口方式的设计也极大的提高了系统的可扩展性。
3.3 系统功能结构设计
依据网站功能的详细需求分析,设计系统内用户对应的各项功能,保证各个功能的完整,界面简洁易懂,操作简单,适合各个阶段年龄群众。满足租房服务中的所有需求,注意局部设计,并且符合并适应总体的设计思路,对租房网站的稳定性和协调性充分考虑。租房网站不能一味地追求新技术和高性能,还得注重安全性和可靠性,不能出现bug,注重租房网站整体的性价比,这样才更实用,更容易受到用户的喜欢,才会有用户群体,不然就是纸上谈兵。还要注意用户体验,意见反馈。租房网站主要的功能有:网站主页、房屋列表、房屋预订、我的订单、房屋详情、我的评论以及个人中心。系统功能结构图,如图3-1所示。

图3-1 系统功能结构图
3.4 数据库设计
该网站主要运用了MySQL数据库,分为七个表来存储该网站的基本信息,并在使用时进行调用。
3.4.1 数据库概念结构设计
依据系统功能设计,进行实体设计和实体间关系的构建,E-R图体现管理员和普通用户针对用户信息的注册、客户订单信息的管理、房源信息发布以及信息的审核、用户的实名认证之间的实体管理。系统整体E-R图,如图3-2所示。

图3-2 系统整体E-R图
1.管理员实体
管理员实体系统用户在系统内进行数据访问时候提供管理员信息的实体类对象实例。管理员实体属性图,如图3-3所示。

图3-3 管理员实体属性图
2.用户注册实体
用户注册实体用于系统用户在系统内进行数据访问时候提供用户注册信息的实体类对象实例。用户注册实体属性图,如图3-4所示。

图3-4 用户注册实体属性图
3.用户信息实体
用户信息实体主要是储存用户信息,它包括用户id、手机号码、用户真实姓名、身份证证件号。用户信息实体属性图,如图3-5所示。

图3-5 用户信息实体属性图
4.房源信息实体
房源信息实体系统用户在系统内进行数据访问时候提供房源信息的实体类对象实例。房源信息实体属性图,如图3-6所示。

图3-6 房源信息实体图
5.客户订单实体
客户订单实体系统用户在系统内进行数据访问时候提供客户订单信息的实体类对象实例。客户订单的E-R图如图3-7所示。

图3-7 客户订单实体图
3.4.2 数据库物理结构设计
关系型数据库可设置多个表关系,租房系统设计了多个业务功能数据表的关联信息,例如客户订单中关联用户信息表,房源信息表关联房屋设施表等。
用户信息表用于存储网站登录的合法用户信息,只有在这张表内存在的用户才可以成功的登录租房网站来浏览网站内的数据,已经进行当前用户具有的功能项操作。用户信息表如表3-1所示。
表3-1 用户信息表
|---------------|----------|-----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| ID | int | 18 | 否 | 主键 | 身份证号 |
| create_time | datetime | | 否 | | 创建时间 |
| update_time | datetime | | 否 | | 修改时间 |
| name | varchar | 20 | 否 | | 用户名 |
| password_hash | varchar | 128 | 否 | | 密码 |
| mobile | varchar | 11 | 否 | | 联系电话 |
| real_name | varchar | 10 | 否 | | 真实姓名 |
| id_card | varchar | 18 | 否 | | 身份证号 |
| avatar_url | varchar | 20 | 否 | | 头像地址 |
区域信息表作为系统内的基础表,用于存储城市区域信息,作为房屋表的外键表使用,这两张表是1对多的关系。区域信息表如表3-2所示。
表3-2 区域信息表
|-------------|----------|----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| id | int | 4 | 否 | 主键 | 编号 |
| create_time | datetime | | 否 | | 创建时间 |
| update_time | datetime | | 否 | | 修改时间 |
| name | varchar | 45 | 否 | | 区域名称 |
设施基础表为系统内比较基础的数据表,他为系统内容房屋信息提供相应的基础设施的信息存储啊。设施基础表如表3-3所示。
表3-3 设施基础表
|-------------|----------|----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| id | int | 4 | 否 | 主键 | 编号 |
| create_time | datetime | | 否 | | 创建时间 |
| update_time | datetime | | 否 | | 修改时间 |
| name | varchar | 45 | 否 | | 设施名称 |
房源信息表:这张表作为系统中存储房源最重要的一个表,表字段包括主键、用户、区域、标题、价格、地址、房间数量、面积、单元、宜住人数、床、定金、入住时间、退房时间、排序、展示图,房源信息表如表3-4所示。
表3-4 房源信息表
|-------------|----------|----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| id | int | 11 | 否 | 主键 | 编号 |
| create_time | datetime | | 否 | | 创建时间 |
续表3-4
|-----------------|----------|-----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| update_time | datetime | | 否 | | 修改时间 |
| user_id | int | 11 | 否 | 外键 | 用户 |
| area_id | int | 11 | 否 | 外键 | 区域 |
| title | varchar | 64 | 否 | | 标题 |
| price | int | 11 | 否 | | 价格 |
| address | varchar | 512 | 否 | | 地址 |
| room_count | int | 11 | 否 | | 房间数量 |
| acreage | int | 11 | 否 | | 面积 |
| unit | varchar | 32 | 否 | | 单元 |
| capacity | int | 11 | 否 | | 宜住人数 |
| beds | varchar | 64 | 否 | | 床 |
| deposit | int | 11 | 否 | | 定金 |
| min_days | datetime | 11 | 否 | | 入住时间 |
| max_days | datetime | 11 | 否 | | 退房时间 |
| order_count | int | 11 | 否 | | 排序 |
| index_image_url | varchar | 256 | 否 | | 展示图 |
房屋设施表是一张用来存储两个表之间的关系的信息的数据表,从表的内容方面体现了房屋和其设施之间关联关系的一张表。房屋设施表如表3-5所示。
表3-5 房屋设施表
|-------------|-----|----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| house_id | int | 11 | 否 | 外键 | 房屋id |
| facility_id | int | 11 | 否 | 外键 | 设施id |
房屋图片表的设计是用来存储网站内所有房屋的个方位的照片的数据。房屋图片表如表3-6所示。
表3-6 房屋图片表
|-------------|----------|-----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| id | int | 4 | 否 | 主键 | 编号 |
| create_time | datetime | | 否 | | 创建时间 |
| update_time | datetime | | 否 | | 修改时间 |
| house_id | int | 11 | 否 | 外键 | 房屋ID |
| url | varchar | 256 | 否 | | 图片地址 |
客户订单表的作用是存放系统内产生的订单数据的表,这是一张系统内容的核心业务表,通过这张表内容的数据可以体现当前的房屋交易量和交易状态,同时可以汇总订单数据,以及对订单数据可以进行统计和分析。客户订单表如表3-7所示。
表3-7 客户订单表
|-------------|----------|----|------|----|------|
| 字段 | 类型 | 长度 | 是否为空 | 主键 | 备注 |
| id | int | 11 | 否 | 主键 | 编号 |
| create_time | datetime | | 否 | | 创建时间 |
| update_time | datetime | | 否 | | 修改时间 |
| user_id | int | 11 | 否 | 外键 | 用户ID |
| house_id | int | 11 | 否 | 外键 | 房屋ID |
| begin_date | datetime | | 否 | | 开始时间 |
| end_date | datetime | | 否 | | 结束时间 |
| days | int | 11 | 否 | | 天数 |
| house_price | int | 11 | 否 | | 价格 |
| amount | int | 11 | 否 | | 合计 |
| status | int | 11 | 否 | | 状态 |
| comment | text | | 否 | | 注释 |
| trade_no | varchar | 80 | 否 | | 订单号 |
3.6 本章小结
基于Django租房网站系统论文第三章主要阐述系统设计详尽内容,明确设计原则,梳理功能结构,介绍系统拥有的功能,通过功能分析建立模型并绘制图表,依据设计好的功能设计数据表结构和表关系。