摘 要
如今,房屋作为人类生活的重要场所,在城市中扮演着至关重要的角色。随着城市化进程的加速和流动人口的增多,房屋租赁产业迎来了巨大的发展机遇。然而,在房屋租赁过程中存在着许多繁琐的手续和信息搜索的问题,需要耗费大量的人力和时间。为了适应社会发展的需求,在对当前社会情况和相关人员进行分析后,我们提出了基于Spring Boot的网上租房系统作为课题。该系统旨在解决房屋租赁业务中的各种问题,包括房源信息、预约看房、租赁合同、房屋反馈、留言管理等全面服务。通过浏览器与服务器的通信,实现数据的交互和变更。这样的Spring Boot网上租房系统将为用户提供便捷、高效的租赁服务,使整个租赁过程更加简化和智能化。
关键词:网上租房系统;Java;MySQL; springboot
Abstract
Nowadays, as an important place for human life, houses play a crucial role in cities. With the acceleration of urbanization and the increase of mobile population, the housing rental industry has ushered in huge development opportunities. However, there are many cumbersome procedures and information search problems in the process of housing rental, which require a lot of manpower and time. In order to meet the needs of social development, after analyzing the current social situation and relevant personnel, we propose an online rental system based on Spring Boot as the topic. This system aims to solve various problems in housing rental business, including comprehensive services such as housing information, appointment viewing, rental contracts, housing feedback, and message management. Through communication between the browser and the server, data exchange and changes can be achieved. This Spring Boot online rental system will provide users with convenient and efficient rental services, making the entire rental process more simplified and intelligent.
Key words :Online rental system; Java; MySQL; Springboot
目 录
摘 要
目 录
1 绪论
1.1 研究背景
1.2研究意义
1.3论文结构与章节安排
2 相关技术介绍 2
2.1 JavaScript 运行模式 2
2.2 HTML介绍 2
2.3 MySQL数据库管理系统 2
2.4 Springboot框架..............................................2
3 系统分析
3.1可行性分析
3.1.1 技术可行性分析
3.1.2 操作可行性分析
3.1.3 经济可行性分析
3.2功能需求分析
3.3用例分析
4系统总体设计
4.1系统功能模块设计
4.1.1 前台页面设计
4.1.2 用户模块设计
4.1.3 评论管理模块设计
4.1.4房源管理模块设计
4.2数据库设计
4.2.1数据库概要设计
4.2.2数据库逻辑设计
5系统详细设计
5.1 系统总体的逻辑结构图
5.1.1系统MVC结构图
5.1.2系统的三层架构图
5.2系统功能实现
5.2.1系统主页功能实现
5.2.2用户注册登录功能实现
5.2.3登录功能实现
5.2.4留言反馈功能实现
5.2.5房源信息功能实现......................................
5.2.6用户管理功能实现
5.2.7系统公告管理功能实现
5.2.8租赁合同管理功能实现
5.2.8房源类型管理功能实现..................................
6系统测试
6.1 系统测试目的
6.2 系统可用性测试
6.3 系统典型测试用例
6.4 测试结论
结论
参考文献
致 谢
1 绪论
1.1 研究背景
随着城市化进程的加速和人口流动的增加,房屋租赁需求不断增长,传统的租房方式已经无法满足现代社会的需求。在这样的背景下,网上租房系统应运而生。这种系统利用互联网技术和智能化平台,提供了便捷的房源信息查询、预约和租赁服务,为租客和房东提供了更高效、便利的租房体验。通过在线平台,用户可以快速浏览和比较各种房源信息,实现快速租房,满足现代社会对便捷、智能租房方式的需求。
1.2研究意义
网上租房系统的研究意义在于提升房屋租赁行业的效率和便捷性。通过引入在线平台和智能化技术,该系统可以简化租房流程,提供便捷的房源信息查询、预订和管理服务,为租客和房东提供更优质的租赁体验。同时,网上租房系统也促进了房屋资源的合理利用和市场透明度,推动了租赁市场的规范化和智能化发展。通过研究和实践网上租房系统,可以提高房屋租赁行业的竞争力,满足社会对便捷、高效租房服务的需求,推动行业向数字化、智能化方向发展。
1.3论文结构与章节安排
本文共分为六章,章节内容安排如下:
第一章:引言。第一章主要介绍了课题研究的背景意义,开发现状分析目前相关研究意义以及技术和本文的研究内容与主要工作。
第二章:相关技术介绍。第二章主要介绍了课题开发技术和框架
第三章:系统分析。第三章主要从系统的可行性、功能等方面进行需求分析。
第四章:系统总体设计。第四章主要对系统功能模块、数据库进行功能设计。
第五章:系统详细设计。第五章主要介绍了系统各个用户的功能、系统界面的实现。
第六章:系统测试。第六章主要对系统的部分界面进行测试并对主要功能进行测试
2 相关技术介绍
2.1 JavaScript 运行模式
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
1.1.2主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
1.1.3可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
1.1.4跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
1.1.5 JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
2.2 HTML介绍
HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。
2.3 MySQL数据库管理系统
数据库作为数据的存储地方是项目必须的,MySQL是一款非常优秀的关系型数据库,早期的Mysql并不是甲骨文公司的,后来才被他收购的。Mysql非常的小巧,安装包才几兆,sql语言的书写也比较容易学习,最重要的是mysql同时也是一款开源的软件,所以不需要额外进行付费,本系统本身也是以学习结论所学知识为主,在系统的开发上最好尽量使用免费的软件,所以选用mysql进行数据库管理。Mysql的容量也是非常大的,同时支持分库分表的操作,支持分布式,所以越来越多的中小企业选择该款数据库管理工具。另外值得一提的是,开源也有一个不好的地方,就是容易遭到破解和黑客攻击,所以mysql在使用上还是更多的使用在中小项目中。
2.4 Springboot框架
Spring boot是一种新的开源轻量级框架,它继承了Spring framework的优秀特性。它是Spring 4.0之后提供的一个自动启动框架,通过配置进一步简化了Spring应用程序的构建和开发的整个过程。此外,Springboot还集成了大量的框架,解决了依赖包的版本冲突和引用不稳定的问题。
SpringBoot有两个核心,快速启动和自动装配。快速启动是指Spring Boot通过main方法启动,而且内置Web容器(Tomcat)。自动装配是指采用习惯优于配置的理念,可以进行自动化配置(EnabelAutoConfiguration),框架采用注解和properties(或yaml)代替传统的Xml配置。
3 系统分析
3.1可行性分析
通过以下的系统总体需求分析,进而分析是否拥有达成需求的技术、资金和开发人员等条件。那么就从以下几点进行简单的说明:
3.1.1 技术可行性分析
网上租房系统通过分析以上的系统需求,首先需要使用数据库存储各种数据,包括房源信息数据、预约看房数据、租赁合同数据、房屋反馈数据等。其次,后端数据要调到页面上来,所以需要使用到前端技术,包括html,css 和javascript三大技术。当前端发出请求的时候,还需要中间件的支持等。这些技术在学校基本都学习过了,而且在使用上如果发生遗忘都可以查询到相关知识进行补充。所以总的来说,技术可行性是没有问题的。
3.1.2 操作可行性分析
3.1.3 经济可行性分析
整体来说,项目的开发使用的硬件和软件还是不多的,硬件就是一台电脑,软件需求比较多,因为现在都有很多开源软件可是使用,所以投入也是不高的,项目使用的开源软件还是比较多的,比如mysql,tomcat,mybatis等,图标字体阿里巴巴的图标字体库,版本控制使用的git等。总体的投入主要就是开发的时间投入,所以总的来说,经济可行性也是没有问题的。
3.2功能需求分析
网上租房系统的主要目的分为两个。
(1)网上租房系统提供了一个用户和用户,用户与管理员进行互动交流的系统,用户可以通过注册获取一个帐户,查询房源信息,进行预约看房等。在这个系统中,用户之间可以进行随时查询、预约看房等。
(2)该系统需要很好的功能扩充性和可维护性。由于该系统是涉及的用户比较多,对管理员来说同样也是一个信息管理系统,包括用户信息,房屋反馈,房源信息等。而且,随着用户数量的增加,必然对程序的更新迭代要求更高,所有在开发的时候就需要注意程序的可维护性和可拓展性。
3.3用例分析
网上租房系统中的管理员角色主要负责了如下功能操作。
(1)轮播图/系统公告信息管理功能需求:管理员可以对这两部分进行添加,修改,删除和查询等。
(2)用户管理功能需求:用户管理部分包括了管理员、房主用户和租房用户三部分,管理员可以对这三部分进行添加,修改,删除以及查询等。
(3)房源信息管理功能需求:主页面展示房源信息列表,并可以查询、新增、删除、修改房源信息,点击“详情”可查看该房源信息详细信息。
(4)预约看房管理功能需求:主页面展示预约看房列表,并可以查询、删除、修改预约看房信息,点击“详情”可查看该预约看房详细信息。
(5)租赁合同管理功能需求:主页面展示租赁合同列表,并可以查询、删除、修改租赁合同信息,点击“详情”可查看该租赁合同详细信息。
(6)房屋反馈管理功能需求:主页面展示房屋反馈列表,并可以查询、删除、修改房屋反馈信息,点击“详情”可查看该房屋反馈详细信息。
网上租房系统中的前台租房用户角色主负责了如下功能操作。
(1)用户查看系统信息功能需求:用户可以通过系统首页查看网上租房系统,包括首页,系统公告、房源信息、留言反馈,同时可以输入关键词进行房源信息查询等模块,用户可以对房源信息进行预约、收藏,评论等操作。
(2)用户登录与注册功能需求:点击“注册”,输入注册相关信息后点击页面的“注册”按钮,提示注册成功后,回到首页,点击“登录”按钮,根据注册输入的账号密码登录系统,登录时校验输入的账号密码,输入正确登录成功,输入错误会有提示信息。
(3)房源信息功能需求:展示房源信息列表,可通过关键字跟下拉搜索进行搜索,点击房源可查看详细房源内容。
(4)系统公告功能需求:展示所有后台发布的系统公告信息,点击可查看系统公告详情。
(5)我的账户功能需求:查看并修改个人资料跟密码。
(6)留言反馈:用户在留言反馈这一菜单下对用户提交的查看、同时也可以发布、评论。
图3-2 前台租房用户角色用例图
网上租房系统中的前台房主用户角色主负责了如下功能操作。
(1)房主登录与注册功能需求:点击“注册”,输入注册相关信息后点击页面的“注册”按钮,提示注册成功后,回到首页,点击“登录”按钮,根据注册输入的账号密码登录系统,登录时校验输入的账号密码,输入正确登录成功,输入错误会有提示信息。
(2)留言反馈功能需求:房主对用户提交的留言回复、删除。
(3)系统公告功能需求:展示所有后台发布的系统公告信息,点击可查看系统公告详情。
(4)房源信息功能需求:展示房源信息列表,可通过关键字跟下拉搜索进行搜索,点击房源可查看详细房源内容。
图3-3 前台房主用户角色用例图
4系统总体设计
4.1系统功能模块设计
网上租房系统的整体架构确定以后,再来看网上租房系统的主要功能模块图。整体的功能模块包括前台和后台,前台就是主要的页面,包括首页,系统公告、房源信息、留言反馈等页面。后台的模块主要实现了有系统用户、预约看房管理、房源信息管理、系统公告管理、确认租赁管理、房屋反馈管理、租赁合同管理等等。确定了模块以后,再设计各个模块的功能特点,方便抽取出各个模块的公共部分来。
图4-1网上租房系统功能模块图
4.1.1 前台页面设计
本网上租房系统的前台页面所有的页面设计主要是上中下的结构,这样的好处是让所有的页面更加的整洁。主题的页面颜色采用淡色为主,为突出页面的美观。主页面上分为导航栏,导航栏的每个导航项目设计为一张Java页面,除此之外,还有就是用户中心页面,后台管理的页面了。后台管理页面已简单的上下结构为主。
4.1.2 用户模块设计
(1)用户模块结构图
本系统的用户包括管理员、房主用户和租房用户模块。三种用户模块的功能基本是相同的,租房用户模块比管理员多了一个注册功能,所以以用户模块的结构图为例进行分析,如下图:
图4-2用户模块结构图
(2)各个结构的具体业务逻辑
a.查询用户信息:设计最基础的查询功能,主要就是根据用户id查询用户信息。该功能主要体现在管理员用户信息查询和用户自己查询信息的时候。
b.修改用户信息:用户可以根据情况,对自己的基本信息进行修改,包括名字修改、密码修改、头像修改等操作。
c.增加用户:用户可以通过注册来获得账号
d.删除用户信息:管理员没有权利进行删除信息的删除,最多把用户加入到黑名单中,禁止用户进行登录操作。
4.1.3 评论管理模块设计
(1)评论模块结构图
网上租房系统是一个交流性质的公开系统,用户和用户之间可以对系统上的内容,比如房源信息、预约看房等进行点评,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的言论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:
图4-3评论模块结构图
(2)各个结构的具体业务逻辑
a.查询评论:设计最基础的查询功能,主要就是根据用户id查询该用户下的所有评论信息。
b.发布评论:租房用户用户可以根据情况,发布自己评论信息到系统上。
c.删除评论:管理员没有权限修改用户的评论信息,但是可以删除用户的整条评论。
4.1.4房源管理模块设计
(1)房源信息模块结构图
网上租房系统是中需要存储不少房源信息,租房用户可以查看房源信息,管理员可以添加,修改,删除房源信息等,具体的结构图如下:
图4-4房源信息模块结构图
(2)各个结构的具体业务逻辑
a.添加房源信息:管理员和房主用户可以对房源信息进行添加。
b.修改房源信息:管理员和房主用户可以对房源信息进行修改。
c.删除房源信息:管理员和房主用户可以对房源信息进行删除。
3.2数据库设计
3.2.1数据库概要设计
网上租房系统根据上面的E-R实体图,就再找到实体与实体之间的关系来,制作总的E-R图,实体之间的关系一共有4种,也就是一对一,多对一,一对多和多对多,总的E-R图是设计数据库表格的依据,如下图是系统的总E-R图。
图4-5系统总体E-R图
4.2.2数据库逻辑设计
通过上一小节中网上租房系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表book_a_room_viewing_appointment (预约看房)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | book_a_room_viewing_appointment_id | int | 10 | 0 | N | Y | 预约看房ID | |
2 | appointment_number | varchar | 64 | 0 | Y | N | 预约号 | |
3 | community_name | varchar | 64 | 0 | Y | N | 小区名称 | |
4 | property_name | varchar | 64 | 0 | Y | N | 房源名称 | |
5 | cover | varchar | 255 | 0 | Y | N | 封面 | |
6 | property_type | varchar | 64 | 0 | Y | N | 房源类型 | |
7 | rental_price | int | 10 | 0 | Y | N | 0 | 租赁价格 |
8 | property_address | varchar | 64 | 0 | Y | N | 房源地址 | |
9 | viewing_date | date | 10 | 0 | Y | N | 看房日期 | |
10 | homeowner_users | int | 10 | 0 | Y | N | 0 | 房主用户 |
11 | homeowners_name | varchar | 64 | 0 | Y | N | 房主姓名 | |
12 | homeowners_phone_number | varchar | 64 | 0 | Y | N | 房主电话 | |
13 | rental_users | int | 10 | 0 | Y | N | 0 | 租房用户 |
14 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
15 | users_mobile_phone | varchar | 16 | 0 | Y | N | 用户手机 | |
16 | viewing_remarks | text | 65535 | 0 | Y | N | 看房备注 | |
17 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
18 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
19 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表confirm_lease (确认租赁)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | confirm_lease_id | int | 10 | 0 | N | Y | 确认租赁ID | |
2 | appointment_number | varchar | 64 | 0 | N | N | 预约号 | |
3 | community_name | varchar | 64 | 0 | Y | N | 小区名称 | |
4 | property_name | varchar | 64 | 0 | Y | N | 房源名称 | |
5 | property_type | varchar | 64 | 0 | Y | N | 房源类型 | |
6 | rental_price | int | 10 | 0 | Y | N | 0 | 租赁价格 |
7 | property_address | varchar | 64 | 0 | Y | N | 房源地址 | |
8 | homeowner_users | int | 10 | 0 | Y | N | 0 | 房主用户 |
9 | homeowners_name | varchar | 64 | 0 | Y | N | 房主姓名 | |
10 | homeowners_phone_number | varchar | 64 | 0 | Y | N | 房主电话 | |
11 | rental_users | int | 10 | 0 | Y | N | 0 | 租房用户 |
12 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
13 | users_mobile_phone | varchar | 16 | 0 | Y | N | 用户手机 | |
14 | id_screenshot | varchar | 255 | 0 | Y | N | 证件截图 | |
15 | confirmation_date | date | 10 | 0 | Y | N | 确认日期 | |
16 | number_of_lease_months | int | 10 | 0 | Y | N | 0 | 租赁月数 |
17 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
18 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
19 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表homeowner_users (房主用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | homeowner_users_id | int | 10 | 0 | N | Y | 房主用户ID | |
2 | homeowners_name | varchar | 64 | 0 | Y | N | 房主姓名 | |
3 | homeowners_phone_number | varchar | 16 | 0 | Y | N | 房主电话 | |
4 | homeowners_address | varchar | 64 | 0 | Y | N | 房主地址 | |
5 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表housing_feedback (房屋反馈)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | housing_feedback_id | int | 10 | 0 | N | Y | 房屋反馈ID | |
2 | feedback_number | varchar | 64 | 0 | Y | N | 反馈编号 | |
3 | community_name | varchar | 64 | 0 | Y | N | 小区名称 | |
4 | property_name | varchar | 64 | 0 | Y | N | 房源名称 | |
5 | property_type | varchar | 64 | 0 | Y | N | 房源类型 | |
6 | rental_price | int | 10 | 0 | Y | N | 0 | 租赁价格 |
7 | property_address | varchar | 64 | 0 | Y | N | 房源地址 | |
8 | homeowner_users | int | 10 | 0 | Y | N | 0 | 房主用户 |
9 | homeowners_name | varchar | 64 | 0 | Y | N | 房主姓名 | |
10 | homeowners_phone_number | varchar | 64 | 0 | Y | N | 房主电话 | |
11 | rental_users | int | 10 | 0 | Y | N | 0 | 租房用户 |
12 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
13 | users_mobile_phone | varchar | 16 | 0 | Y | N | 用户手机 | |
14 | feedback_date | date | 10 | 0 | Y | N | 反馈日期 | |
15 | feedback_screenshot | varchar | 255 | 0 | Y | N | 反馈截图 | |
16 | feedback_content | text | 65535 | 0 | Y | N | 反馈内容 | |
17 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
18 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
19 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表lease_contract (租赁合同)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | lease_contract_id | int | 10 | 0 | N | Y | 租赁合同ID | |
2 | contract_number | varchar | 64 | 0 | Y | N | 合同号 | |
3 | community_name | varchar | 64 | 0 | Y | N | 小区名称 | |
4 | property_name | varchar | 64 | 0 | Y | N | 房源名称 | |
5 | property_type | varchar | 64 | 0 | Y | N | 房源类型 | |
6 | rental_price | int | 10 | 0 | Y | N | 0 | 租赁价格 |
7 | property_address | varchar | 64 | 0 | Y | N | 房源地址 | |
8 | homeowner_users | int | 10 | 0 | Y | N | 0 | 房主用户 |
9 | homeowners_name | varchar | 64 | 0 | Y | N | 房主姓名 | |
10 | homeowners_phone_number | varchar | 64 | 0 | Y | N | 房主电话 | |
11 | rental_users | int | 10 | 0 | Y | N | 0 | 租房用户 |
12 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
13 | users_mobile_phone | varchar | 16 | 0 | Y | N | 用户手机 | |
14 | id_screenshot | varchar | 255 | 0 | Y | N | 证件截图 | |
15 | confirmation_date | date | 10 | 0 | Y | N | 确认日期 | |
16 | number_of_lease_months | int | 10 | 0 | Y | N | 0 | 租赁月数 |
17 | contract_amount | varchar | 64 | 0 | Y | N | 合同金额 | |
18 | contract_documents | varchar | 255 | 0 | Y | N | 合同文件 | |
19 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表message (留言板)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | message_id | int | 10 | 0 | N | Y | 留言板ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 用户ID: |
3 | title | varchar | 64 | 0 | Y | N | 标题: | |
4 | content | longtext | 2147483647 | 0 | N | N | 内容: | |
5 | nickname | varchar | 32 | 0 | N | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像: | |
7 | | varchar | 125 | 0 | Y | N | 留言者邮箱 | |
8 | phone | varchar | 11 | 0 | Y | N | 留言者手机号码 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
11 | reply | longtext | 2147483647 | 0 | Y | N | 回复 | |
12 | reply_state | tinyint | 4 | 0 | Y | N | 0 | 回复状态 |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表property_information (房源信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | property_information_id | int | 10 | 0 | N | Y | 房源信息ID | |
2 | community_name | varchar | 64 | 0 | Y | N | 小区名称 | |
3 | property_name | varchar | 64 | 0 | Y | N | 房源名称 | |
4 | cover | varchar | 255 | 0 | Y | N | 封面 | |
5 | property_type | varchar | 64 | 0 | Y | N | 房源类型 | |
6 | rental_price | int | 10 | 0 | Y | N | 0 | 租赁价格 |
7 | property_address | varchar | 64 | 0 | Y | N | 房源地址 | |
8 | property_introduction | longtext | 2147483647 | 0 | Y | N | 房源介绍 | |
9 | homeowner_users | int | 10 | 0 | Y | N | 0 | 房主用户 |
10 | homeowners_name | varchar | 64 | 0 | Y | N | 房主姓名 | |
11 | homeowners_phone_number | varchar | 64 | 0 | Y | N | 房主电话 | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表property_type (房源类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | property_type_id | int | 10 | 0 | N | Y | 房源类型ID | |
2 | property_type | varchar | 64 | 0 | Y | N | 房源类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表rental_users (租房用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | rental_users_id | int | 10 | 0 | N | Y | 租房用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | users_mobile_phone | varchar | 16 | 0 | Y | N | 用户手机 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
5系统详细设计
5.1 系统总体的逻辑结构图
5.1.1系统MVC结构图
首先从项目整体的进行逻辑设计,采用的是目前流行的MVC模式进行开发。Model层是系统的核心层,里面含有项目的核心逻辑代码和数据库,View层是Model层的显示实例,Controller的主要的功能就是处理用户与数据交互的。值得注意的是,MVC模式的特点是为了更好的对前台和后台进行解耦的操作,控制器就是充当解耦的中间层,他可以分发前台的请求,然后通过调用模型层来处理数据。本系统使用的控制器是springMVC,springMVC的dispatchServlet是对servlert的封装。
5.1.2系统的三层架构图
网上租房系统使用的springboot框架搭建后台系统,把所有的对象都交予spring的ioc容器进行管理,这样的好处就是能够更好的让系统掌握对象的生命周期还有方便进行依赖注入,减少代码的书写量和对象之间的耦合。具体的三层包括,控制层、业务逻辑层和数据持久化层,也就是controller, service和dao层。Dao层的实现类通过mybatis映射文件进行实例化操作。三层架构的好处就是能够更好的对系统操作进行解耦,方便维护与分工。
图5-2 网上租房系统三大操作类结构图
4.2系统功能实现
4.2.1系统主页功能实现
用户进入首页之后会显示如下的一个窗口。如下图:
图4.3网上租房系统主界面
由于该项目只是用来测试,用户登录首页展示的图片等数据有的是从项目本地拿到的,有的则是从数据库中获取的。页面中的搜索部分,页头部分等都是属于公共样式,可以进行公告样式的抽取,然后再引入到Java页面中。
4.2.2用户注册登录功能实现
该网上租房系统用户是需要先注册的,没有登录的情况下,用户进行任何的操作,都会跳到登录页面,提示注册。具体的流程图和实现界面如下:
图5-4网上租房系统用户注册登入流程图
图5-5网上租房系统用户注册界面
注册关键代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
5.2.3登录功能实现
当用户注册完成后就可以登录了,输入用户名+密码,点击“登录”按钮进行登录,界面如图:
图5-6网上租房系统用户登录界面
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
5.2.4留言反馈功能实现
房主用户对租房用户提交的留言进行回复、删除,具体的实现界面如下图:
图5-7留言反馈界面
5.2.5 房源信息功能实现
用户可以查看房源信息,在查询到自己想要了解的房源信息的时候,可以进入查看详细的介绍,点击“预约看房”这一按钮以后会跳转到预约看房填写的界面,根据提示填写好预约看房的信息,点击“提交”以后预约看房就完成了,在房源信息详情这个界面,同时支持用户对喜欢的房源信息进行收藏、点赞的功能,具体的流程图和实现界面如下:
图5-8 网上租房系统房源信息流程图
图5-9网上租房系统房源信息界面
5.2.6用户管理功能实现
管理员在用户管理模块,可以对用户信息进行管理,用户管理模块由管理员,房主用户,租房用户三部分组成组成,这里以租房用户管理为例,具体的实现界面如下图:
图5-10用户管理界面
用户管理关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.2.7系统公告管理功能实现
管理员点击“系统公告管理”菜单可以查看到系统中的所有系统公告信息,对已经存在的系统公告,管理员可以修改,也可以添加新的系统公告或者删除系统公告,具体的实现界面如下图:
图5-11系统公告管理界面
系统公告管理关键代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
5.2.8租赁合同管理功能实现
租房用户在“租赁合同”这一菜单能看到所有租赁合同信息,进行反馈、查询等操作,具体的实现界面如下图:
图5-12租赁合同管理界面
租赁合同管理关键代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
5.2.9 房源类型管理功能实现
管理员在“房源类型”界面能够对所有的房源类型信息进行增删改查等操作,具体的实现界面如下图。
图5-13房源类型界面图
6系统测试
6.1 系统测试目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
6.2 系统可用性测试
系统的可用性测试是测试系统最基本的功能,比如鼠标点击是否可用,页面跳转是否正常等。下面是具体的测试结果。
表5-1网上租房系统可用性测试
测试项 | 测试人员评价 |
窗口移动、改变大小、关闭等操作是否正常 | 好 |
操作模块是否友好 | 好 |
模块和提示内容等文字描述是否正确 | 好 |
模块布局是否合理、协调 | 好 |
模块的状态是否正确(对选中项能否发生对应切换) | 好 |
键盘、鼠标操作是否支持 | 好 |
所需的数据项是否正确显示 | 好 |
操作流程是否合理 | 好 |
是否提供帮助信息 | 好 |
6.3 系统典型测试用例
对系统的主要页面和功能点的测试用例如下:
(1) 用户登陆系统测试用例如表 5-2 所示。
表5-2用户登录系统测试用例
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
(2)预约看房测试用例如表 5-3 所示
表5-3 预约看房测试用例
用例名称 | 预约看房 |
目的 | 测试预约看房功能 |
前提 | 无 |
测试流程 | 打开预约看房界面 |
预期结果 | 可以进行查看预约看房详细 |
实际结果 | 实际结果与预期结果一致 |
(3)评论试用例如表 5-4所示
表5-4评论测试用例
用例名称 | 评论 |
目的 | 测试评论模块功能 |
前提 | 无 |
测试流程 | 用户在评论区进行点评操作。 |
预期结果 | 评论提交以后,可以查看到自己的评论信息 |
实际结果 | 实际结果与预期结果一致 |
(4)房源信息添加信息测试用例如表 5-5 所示
表5-5 房源信息添加测试用例
用例名称 | 房源信息添加 |
目的 | 测试房源信息添加功能 |
前提 | 无 |
测试流程 | 管理员点击房源信息添加,输入房源信息 |
预期结果 | 提交房源信息后可以查看房源信息 |
实际结果 | 实际结果与预期结果一致 |
6.4 测试结论
通过系统的调试,能够检测项目的稳定性,为项目正式运行、稳定运行提供了可预测性的维护备案。能够帮助用户熟悉整个项目,并对项目可能出现的错误有所了解。本文提供了部分调试用例及调试日志,可以帮助用户解决简单的错误问题,也加深了开发者对于此框架下的项目编写的了解度,为后期开发者顺利完成项目、发布项目提供了非常大的帮助。
结论
通过引入信息技术和互联网思维,建立一个便捷高效的Spring Boot网上租房系统,可以解决传统租赁市场中存在的问题,并为租房者和房主带来更好的使用体验。该系统整合了房源信息,提供在线搜索和筛选功能,帮助租房者快速找到符合需求的房源。同时,系统提供详尽的房源信息、真实的图片和租金参考,增强租房者对房源的了解和选择能力。在线租房、支付和评价等功能简化了租赁流程,降低了交易风险,并提高了交易的透明度和安全性。Spring Boot网上租房系统的应用将推动房屋租赁市场的发展,促进城市居民的住房需求得到满足。同时,该系统也为租房者提供了更多的选择权和信息透明度,为房主提供了更广阔的租赁市场,促进了租房双方的互利共赢。然而,系统发展仍面临着一些挑战和问题,如信息真实性和安全性的保障、平台的可持续运营等。因此,在未来的研究和实践中,需要进一步完善系统功能和技术手段,提升用户体验和安全性,推动房屋租赁市场的规范化和健康发展。
参考文献
[1]徐少军,李宗哲,梅杰等. 基于Springboot+Vue框架的质量检验监督管理系统研发 [J]. 纺织标准与质量, 2024, (01): 11-14+21.
[2]TAM H T ,TARCHALA J C . RENTAL SYSTEM AND RENTAL METHOD THEREOF[P]. US2024037642, 2024-02-01.
[3]韩小龙,司珍,吕晓峰等. 基于面向对象编程的Java语言程序设计方法分析 [J]. 集成电路应用, 2024, 41 (01): 228-229.
[4]吴昊,张丹. 基于SpringBoot框架的大学生网上兼职系统设计与实现 [J]. 电脑知识与技术, 2023, 19 (35): 68-72.
[5]李冉,杨军,宁玉富等. 基于SpringBoot框架和CNN-SVM算法的浸润性肺腺癌细胞的初步诊断筛选系统 [J]. 无线互联科技, 2023, 20 (22): 58-61.
[6]刘明,杨胜飞,张冶锋等. 基于SpringBoot框架的长距离输水工程水量监测系统设计 [J]. 云南水力发电, 2023, 39 (11): 359-362.
[7]请求不公布姓名. 一种基于JAVA语言的Excel表格导入方法和系统[P]. 四川省: CN116757170B, 2023-10-20.
[8]裴春杰. 大学生在线租房系统的设计与实现[D]. 北京交通大学, 2022.
[9]夏健强, 基于Java语言的在线网络视频聊天系统V1.0. 湖北省, 武汉东湖学院, 2021-11-01.
[10]Kline K . The Java Language Extension for SQL Server Is Now Open Source [J]. Database Trends and Applications, 2020, 34 (4): 31-31.
[11]季杰,陈强仁,朱东. 基于Vue.js租房网系统的设计与实现 [J]. 电脑知识与技术, 2020, 16 (16): 91-92.
[12]周海锐. 基于区块链的租房系统设计与实现[D]. 北京邮电大学, 2020.
[13]Spegni F ,Spalazzi L ,Liva G , et al. Verifying temporal specifications of Java programs [J]. Software Quality Journal, 2020, 28 (2): 1-50.
[14]GB/T 34944-2019, Java语言源代码漏洞测试规范[S].
[15]杨哲慜. Java语言的程序漏洞检测与诊断技术[D]. 复旦大学, 2019.
致 谢
至此,论文结束。我要衷心感谢我的导师,尽管在实习期间我非常忙碌,论文的撰写也总是反复修改,但导师始终非常负责,经常询问我的任务进展情况,并跟进我的论文进度。即使我在实习期间很忙,直到很晚才开始论文写作和编写程序,但在导师的指导下,我逐步完成了自己的论文和程序。我从导师身上学到了许多知识和经验,受益匪浅。同时,通过导师,我看到了自己的不足之处,无论是技术层面还是对待工作的态度上,都在明镜中照出了我需要改进的地方。此外,我还要感谢在我实习期间在论文和程序上给予我帮助的同学和社会人士。以前我对框架、jQuery和Bootstrap等方面的知识了解有限,他们在我编写程序过程中给予了我很多启发和建议,帮助我调试和检查程序。没有他们的帮助,我无法顺利完成本次毕业设计。
最后,我要说我的毕业设计圆满结束。感谢大家的支持和帮助!