摘 要
随着人们对居住环境品质的要求不断提高,二手房市场成为人们关注的焦点。株洲作为一个具有发展潜力的城市,二手房市场需求逐渐增加,但目前存在信息不对称、交易不透明等问题,影响了买家和卖家的选择和决策。设计与实现SSM株洲二手房选购系统旨在为用户提供一个便捷、透明的二手房信息平台,帮助他们更快速、准确地选择合适的二手房物业,促进二手房市场的健康发展。系统利用地图服务展示房源位置,帮助用户直观了解周边环境。同时,根据用户的偏好和历史浏览记录推荐相匹配的房源,提升用户体验。此外,支持用户在线支付订金或房款,简化交易流程,增加交易便利性。
通过SSM株洲二手房选购系统的设计与实现,将有效整合株洲地区的二手房资源,提升信息透明度,促进二手房市场的良性发展,为用户提供更便捷、高效的二手房选购体验。这将有助于解决二手房市场存在的问题,推动株洲城市发展,满足人们对居住品质日益增长的需求。
关键词:株洲二手房选购系统;Java;MySQL; SSM
Abstract
With the continuous improvement of people's requirements for the quality of living environment, the second-hand housing market has become a focus of attention. As a city with development potential, the demand for second-hand housing in Zhuzhou is gradually increasing. However, there are currently problems such as information asymmetry and opaque transactions, which affect the choices and decisions of buyers and sellers. The design and implementation of the SSM Zhuzhou second-hand housing selection system aims to provide users with a convenient and transparent second-hand housing information platform, helping them choose suitable second-hand housing properties more quickly and accurately, and promoting the healthy development of the second-hand housing market. The system utilizes map services to display the location of properties, helping users to intuitively understand the surrounding environment. Meanwhile, recommend matching properties based on user preferences and browsing history to enhance user experience. In addition, it supports users to pay deposits or room fees online, simplifies the transaction process, and increases transaction convenience.
The design and implementation of the SSM Zhuzhou second-hand housing selection system will effectively integrate the second-hand housing resources in the Zhuzhou area, improve information transparency, promote the healthy development of the second-hand housing market, and provide users with a more convenient and efficient second-hand housing selection experience. This will help solve the problems in the second-hand housing market, promote the development of Zhuzhou city, and meet the growing demand for living quality among people.
Key words :Zhuzhou Second hand Housing Selection System; Java; MySQL; SSM
目 录
2.4 SSM框架..............................................2
1 绪论
1.1 研究背景
随着人们对居住环境品质的要求不断提高,二手房市场成为人们关注的焦点。株洲作为一个具有发展潜力的城市,二手房市场需求逐渐增加,但目前存在信息不对称、交易不透明等问题,影响了买家和卖家的选择和决策。
在这样的背景下,设计与实现二手房选购系统变得尤为重要。通过建立一个便捷、透明的平台,可以帮助用户更快速、准确地选择合适的二手房物业,促进二手房市场的健康发展。利用地图服务展示房源位置,根据用户偏好和历史浏览记录推荐相匹配的房源,以及支持在线支付等功能,都是满足用户需求和提升体验的关键步骤。通过研究和实现二手房选购系统,可以有效整合二手房资源,提升信息透明度,促进市场的良性发展,从而满足人们对居住品质不断提升的需求,推动城市房地产市场的健康发展。
1.2选题背景
随着人们对居住环境品质要求的提高,二手房市场逐渐成为人们关注的焦点。在这一背景下,二手房选购系统的设计与实现变得至关重要。目前,许多城市的二手房市场存在着信息不对称、交易不透明等问题,给买卖双方带来困扰。因此,通过建立一个便捷、透明的二手房信息平台,可以帮助用户更快速、准确地选择合适的二手房物业,促进市场的健康发展。此外,随着科技的发展,利用地图服务展示房源位置、根据用户偏好和历史浏览记录推荐房源、支持在线支付等功能的引入,将进一步提升用户体验,促进二手房市场的良性发展。因此,二手房选购系统的选题背景在于满足人们对居住品质提升的需求,解决市场存在的问题,促进信息透明度和交易便利性的提升,推动城市房地产市场向着更加健康和可持续的方向发展
1.3论文结构与章节安排
本文共分为六章,章节内容安排如下:
第一章:引言。第一章主要介绍了课题研究的背景意义,开发现状分析目前相关研究现状以及技术和本文的研究内容与主要工作。
第二章:相关结束介绍。第二章主要介绍了课题开发技术和框架
第三章:系统需求分析。第三章主要从系统的可行性、功能等方面进行需求分析。
第四章:系统总体设计。第四章主要对系统功能模块、数据库进行功能设计。
第五章:系统详细设计。第五章主要介绍了系统各个用户的功能、系统界面的实现。
第六章:系统测试。第六章主要对系统的部分界面进行测试并对主要功能进行测试
2 相关技术介绍
2.1 Java编程语言
早在上个世纪90年代,Java就由詹姆斯·高斯林进行开发,自诞生之日起,Java就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Java语言是真的是一种纯面向对象的计算机语言,在Java的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Java中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Java另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Java也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Java编程语言进行后台的开发,一是鉴于标准化制定以后[4],Java语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Java代码的能力。
2.2 jQuery框架
在Web项目中,异步请求是必须要使用的技术,最早是通过javaScript进行异步请求,这样的操作非常的繁琐,随着jquery的出现,给代码的书写提供了很多的方便,ajax就可以操作相应的代码,本质上说,jQuery是js的封装的库,js在获取DOM元素的时候需要书写的代码量大,而且随着如今前台项目越来越庞大,js完全不能满足当前的需求,通过jquery则可以非常简单的获取相应的DOM元素。正是如此,jquery在前台应用十分广阔,成为必备的前台技术之一。
2.3 MySQL数据库管理系统
数据库作为数据的存储地方是项目必须的,MySQL是一款非常优秀的关系型数据库,早期的Mysql并不是甲骨文公司的,后来才被他收购的。Mysql非常的小巧,安装包才几兆,sql语言的书写也比较容易学习,最重要的是mysql同时也是一款开源的软件,所以不需要额外进行付费,本系统本身也是以学习总结所学知识为主,在系统的开发上最好尽量使用免费的软件,所以选用mysql进行数据库管理。Mysql的容量也是非常大的,同时支持分库分表的操作,支持分布式,所以越来越多的中小企业选择该款数据库管理工具。另外值得一提的是,开源也有一个不好的地方,就是容易遭到破解和黑客攻击,所以mysql在使用上还是更多的使用在中小项目中。
2.4 SSM框架
在后端技术方面,系统开发采用了SSM框架,即Spring、SpringMVC和MyBatis的组合。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它主要用于简化企业级应用的开发。SpringMVC则是一个基于Java的Web开发框架,它实现了Web MVC设计模式,将Web层进行职责解耦,使得开发更加简便且易于扩展。MyBatis则是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,可以使用简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通的Java对象)为数据库中的记录。
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)房源位置管理功能需求:管理员可以进行添加、查询,编辑,删除操作。
(7)买房意向管理功能需求:管理员可以进行查询、编辑,删除操作。
(8)资源管理:管理员可以对株洲二手房选购系统前台展示的新闻资讯以及资讯所属的分类进行管控。
(9)推荐信息管理功能需求:管理员可以进行查询、编辑,删除操作。
(10)质询信息管理功能需求:管理员可以进行查询、编辑,删除操作。
株洲二手房选购系统中的前台普通用户角色主负责了如下功能操作。
(1)用户查看系统信息功能需求:用户可以通过系统首页查看株洲二手房选购系统,包括首页,公告通知、新闻资讯、房源信息、买房意向,同时可以输入关键词进行房源查询等模块,用户可以对房源信息进行预约看房、收藏,评论等操作。
(2)用户登录与注册功能需求:用户可以通过注册获取帐户。
(3)房源信息功能需求:用户登录系统以后,是可以进行对房源信息查看,进行预约信息、点赞、收藏、评论等操作。
(4)公告通知功能需求:用户登录系统以后,是可以进行对公告通知信息进行浏览。
(5)我的账户功能需求:用户登录系统以后,是可以进行我的账户进行管理的,包括个人资料,修改密码两部分。
(5)新闻资讯:用户可以查看新闻资讯信息,在查询到自己想要了解的新闻资讯的时候,可以进入查看详细的介绍进行评论、点赞、收藏操作。
图3-2 前台普通用户角色用例图
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关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表appointment_information (预约信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | appointment_information_id | int | 10 | 0 | N | Y | 预约信息ID | |
2 | property_number | varchar | 64 | 0 | Y | N | 房源编号 | |
3 | housing_unit_type | varchar | 64 | 0 | Y | N | 房源户型 | |
4 | property_location | varchar | 64 | 0 | Y | N | 房源位置 | |
5 | selling_price | varchar | 64 | 0 | Y | N | 售卖价格 | |
6 | housing_agency | int | 10 | 0 | Y | N | 0 | 房源中介 |
7 | appointment_users | int | 10 | 0 | Y | N | 0 | 预约用户 |
8 | open_home | datetime | 19 | 0 | Y | N | 看房时间 | |
9 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
10 | appointment_status | varchar | 64 | 0 | Y | N | 预约状态 | |
11 | note_details | text | 65535 | 0 | Y | N | 备注详情 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | 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: |
表house_price_type (房价类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | house_price_type_id | int | 10 | 0 | N | Y | 房价类型ID | |
2 | house_price_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 | 更新时间 |
表housing_agency (房屋中介)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | housing_agency_id | int | 10 | 0 | N | Y | 房屋中介ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_age | varchar | 64 | 0 | Y | N | 用户年龄 | |
5 | business_qualification | varchar | 255 | 0 | Y | N | 营业资质 | |
6 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表housing_unit_type (房源户型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | housing_unit_type_id | int | 10 | 0 | N | Y | 房源户型ID | |
2 | housing_unit_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 | 更新时间 |
表inquiry_information (质询信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | inquiry_information_id | int | 10 | 0 | N | Y | 质询信息ID | |
2 | property_number | varchar | 64 | 0 | Y | N | 房源编号 | |
3 | housing_unit_type | varchar | 64 | 0 | Y | N | 房源户型 | |
4 | property_location | varchar | 64 | 0 | Y | N | 房源位置 | |
5 | selling_price | varchar | 64 | 0 | Y | N | 售卖价格 | |
6 | housing_agency | int | 10 | 0 | Y | N | 0 | 房源中介 |
7 | inquire_with_users | int | 10 | 0 | Y | N | 0 | 质询用户 |
8 | inquiry_time | datetime | 19 | 0 | Y | N | 质询时间 | |
9 | questioning_questions | text | 65535 | 0 | Y | N | 质询问题 | |
10 | question_response | text | 65535 | 0 | Y | N | 问题回复 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表intention_to_buy_a_house (买房意向)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | intention_to_buy_a_house_id | int | 10 | 0 | N | Y | 买房意向ID | |
2 | fill_in_user_information | int | 10 | 0 | Y | N | 0 | 填写用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | user_age | int | 10 | 0 | Y | N | 0 | 用户年龄 |
6 | anticipated_listings | varchar | 64 | 0 | Y | N | 预想房源 | |
7 | property_size | varchar | 64 | 0 | Y | N | 房源大小 | |
8 | location_interval | varchar | 64 | 0 | Y | N | 位置区间 | |
9 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
10 | intention_details | text | 65535 | 0 | Y | N | 意向详情 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表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 | property_number | varchar | 64 | 0 | Y | N | 房源编号 | |
3 | housing_unit_type | varchar | 64 | 0 | Y | N | 房源户型 | |
4 | property_status | varchar | 64 | 0 | Y | N | 房源状态 | |
5 | property_cover | varchar | 255 | 0 | Y | N | 房源封面 | |
6 | property_location | varchar | 64 | 0 | Y | N | 房源位置 | |
7 | selling_price | varchar | 64 | 0 | Y | N | 售卖价格 | |
8 | housing_agency | int | 10 | 0 | Y | N | 0 | 房源中介 |
9 | listing_time | date | 10 | 0 | Y | N | 上架时间 | |
10 | property_details | text | 65535 | 0 | Y | N | 房源详情 | |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表property_location (房源位置)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | property_location_id | int | 10 | 0 | N | Y | 房源位置ID | |
2 | property_location | 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 | 更新时间 |
表recommended_information (推荐信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | recommended_information_id | int | 10 | 0 | N | Y | 推荐信息ID | |
2 | fill_in_user_information | int | 10 | 0 | Y | N | 0 | 填写用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
4 | anticipated_listings | varchar | 64 | 0 | Y | N | 预想房源 | |
5 | property_size | varchar | 64 | 0 | Y | N | 房源大小 | |
6 | location_interval | varchar | 64 | 0 | Y | N | 位置区间 | |
7 | recommended_intermediary | int | 10 | 0 | Y | N | 0 | 推荐中介 |
8 | property_information | varchar | 255 | 0 | Y | N | 房源资料 | |
9 | recommended_time | date | 10 | 0 | Y | N | 推荐时间 | |
10 | note_details | text | 65535 | 0 | Y | N | 备注详情 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_age | int | 10 | 0 | Y | N | 0 | 用户年龄 |
5 | contact_information | varchar | 64 | 0 | N | N | 联系方式 | |
6 | anticipated_listings | varchar | 64 | 0 | N | N | 预想房源 | |
7 | property_size | varchar | 64 | 0 | N | N | 房源大小 | |
8 | location_interval | varchar | 64 | 0 | N | N | 位置区间 | |
9 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
10 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | 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系统的三层架构图
株洲二手房选购系统使用的SSM框架搭建后台系统,把所有的对象都交予spring的ioc容器进行管理,这样的好处就是能够更好的让系统掌握对象的生命周期还有方便进行依赖注入,减少代码的书写量和对象之间的耦合。具体的三层包括,控制层、业务逻辑层和数据持久化层,也就是controller, service和dao层。Dao层的实现类通过mybatis映射文件进行实例化操作。三层架构的好处就是能够更好的对系统操作进行解耦,方便维护与分工。
图5-2 株洲二手房选购系统三大操作类结构图
4.2系统功能实现
4.2.1系统主页功能实现
用户进入首页之后会显示如下的一个窗口。如下图:
图4.3株洲二手房选购系统主界面
由于该项目只是用来测试,用户登录首页展示的图片等数据有的是从项目本地拿到的,有的则是从数据库中获取的。页面中的搜索部分,页头部分等都是属于公共样式,可以进行公告样式的抽取,然后再引入到Java页面中。
4.2.2用户注册登录功能实现
该株洲二手房选购系统用户是需要先注册的,没有登录的情况下,用户进行任何的操作,都会跳到登录页面,提示注册。具体的流程图和实现界面如下:
图5-4株洲二手房选购系统用户注册登入流程图
图5-5株洲二手房选购系统用户注册界面
注册关键代码如下所示。
* 注册
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
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;
QueryWrapper wrapper = new QueryWrapper<User>();
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());
tokenService.save(accessToken);
// 返回用户信息
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);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.2.7预约信息管理功能实现
管理员点击“预约信息”会显示出所有的预约信息,支持输入房源编号或者房源户型对预约信息进行查询,可以选择某一条预约信息,点击“删除”进行删除,具体的实现界面如下图:
图5-11预约信息管理界面
预约信息管理关键代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
5.2.8质询信息管理功能实现
管理员点击“质询信息”会显示出所有的质询信息,支持输入房源编号对质询信息进行查询,可以选择某一条质询信息,点击“删除”进行删除,具体的实现界面如下图:
图5-12质询信息物管理界面
质询信息管理关键代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
5.2.9买房意向管理功能实现
管理员点击“买房意向”会显示出所有的买房意向信息,支持输入用户名称或者用户性别对买房意向信息进行查询,如果想要添加新的买房意向信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条买房意向信息,点击“删除”进行删除,也可以对用户提交的买房意向评论的信息进行管控,具体的实现界面如下图:
图5-13买房意向管理界面
5系统测试
5.1 系统测试目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
5.2 系统可用性测试
系统的可用性测试是测试系统最基本的功能,比如鼠标点击是否可用,页面跳转是否正常等。下面是具体的测试结果。
表5-1株洲二手房选购系统可用性测试
测试项 | 测试人员评价 |
窗口移动、改变大小、关闭等操作是否正常 | 好 |
操作模块是否友好 | 好 |
模块和提示内容等文字描述是否正确 | 好 |
模块布局是否合理、协调 | 好 |
模块的状态是否正确(对选中项能否发生对应切换) | 好 |
键盘、鼠标操作是否支持 | 好 |
所需的数据项是否正确显示 | 好 |
操作流程是否合理 | 好 |
是否提供帮助信息 | 好 |
5.3 系统典型测试用例
对系统的主要页面和功能点的测试用例如下:
(1) 用户登陆系统测试用例如表 5-2 所示。
表5-2用户登录系统测试用例
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
(2)预约信息测试用例如表 5-3 所示
表5-3 预约信息测试用例
用例名称 | 预约信息 |
目的 | 测试预约信息功能 |
前提 | 无 |
测试流程 | 打开预约信息界面 |
预期结果 | 可以进行查看预约信息详细 |
实际结果 | 实际结果与预期结果一致 |
(3)评论试用例如表 5-4所示
表5-4评论测试用例
用例名称 | 评论 |
目的 | 测试评论模块功能 |
前提 | 无 |
测试流程 | 用户在评论区进行点评操作。 |
预期结果 | 评论提交以后,可以查看到自己的评论信息 |
实际结果 | 实际结果与预期结果一致 |
(4)房源信息添加信息测试用例如表 5-5 所示
表5-5 房源信息添加测试用例
用例名称 | 房源信息添加 |
目的 | 测试房源信息添加功能 |
前提 | 无 |
测试流程 | 管理员点击房源信息添加,输入房源信息 |
预期结果 | 提交房源信息后可以查看房源信息 |
实际结果 | 实际结果与预期结果一致 |
5.4 测试总结
通过系统的调试,能够检测项目的稳定性,为项目正式运行、稳定运行提供了可预测性的维护备案。能够帮助用户熟悉整个项目,并对项目可能出现的错误有所了解。本文提供了部分调试用例及调试日志,可以帮助用户解决简单的错误问题,也加深了开发者对于此框架下的项目编写的了解度,为后期开发者顺利完成项目、发布项目提供了非常大的帮助。
总结
本次设计中,我还学会了很多,例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。
在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。
参考文献
[1]庄广壬,陈建生,冼永乐等. 基于SSM框架的Restful服务开发方法与装置[P]. 广东省: CN112748908B, 2024-02-27.
[2]申娇娣. 基于SSM框架的大学生创新创业申报系统构建 [J]. 中国新技术新产品, 2024, (03): 27-30.
[3]韩小龙,司珍,吕晓峰等. 基于面向对象编程的Java语言程序设计方法分析 [J]. 集成电路应用, 2024, 41 (01): 228-229..
[4]谭光兴,甘景,戚秋晨. 基于Java语言的远程数据采集系统设计与实现 [J]. 科技与创新, 2024, (01): 19-22.
[5]袁爱平,陈畅,孙士兵等. 基于SSM框架的高校学生信息管理系统设计与实现 [J]. 工业控制计算机, 2023, 36 (12): 127-129.
[6]刘方磊. 基于SSM框架的旅游大数据分析系统设计与实现 [J]. 中国新技术新产品, 2023, (21): 22-25.
[7]请求不公布姓名. 一种基于JAVA语言的Excel表格导入方法和系统[P]. 四川省: CN116757170B, 2023-10-20.
[8]赵进步,袁慧. 基于SSM框架的“云节”系统设计与实现 [J]. 电脑编程技巧与维护, 2023, (10): 90-92.
[9]Liang C . School Vehicle Management System Based on JAVA Language [J]. Academic Journal of Computing & Information Science, 2023, 6 (9):
[10]李亚君. 基于SSM框架的B2C电子商城系统的设计与实现[D]. 合肥工业大学, 2022.
[11]夏健强, 基于Java语言的在线网络视频聊天系统V1.0. 湖北省, 武汉东湖学院, 2021-11-01.
[12]Liu S . Explore Java Language and Android Mobile Software Development [J]. International Journal of Frontiers in Engineering Technology, 2021, 3.0 (2.0):
[13]Kline K . The Java Language Extension for SQL Server Is Now Open Source [J]. Database Trends and Applications, 2020, 34 (4): 31-31.
[14]熊禹. 针对Java语言的源代码同源性分析技术研究与实现[D]. 北京邮电大学, 2020.
[15]GB/T 34944-2019, Java语言源代码漏洞测试规范[S].
致 谢
至此论文结束,感谢您的阅读。在此我要感谢我的导师,虽然我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。虽然我在实习期间很忙,以至于很晚才开始进行论文撰写和编写程序的工作,但是在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。也从导师身上看到了自己的不足,不论是在即使层面上还是在对待工作的态度上,倒数如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于框架及JQuery和BootSatrp方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。