该系统从需求分析、结构设计、数据库设计到系统实现,采用了 SSM 框架。系统分为前端实现和后端实现,力求结合实际需求找出切实可行的开发方案。通过借助 Java 编程语言和 MySQL 数据库,完成系统的各项功能,包括首页展示、个人信息管理、用户管理、房屋管理、预约信息管理、资讯管理、权限管理、密码修改等。
在系统设计与实现过程中,我们注重用户体验和系统稳定性,经过反复研究和学习,不断优化系统功能。通过系统测试,检测权限和漏洞,完善系统,确保符合标准,提供高效的房屋销售管理服务。
关键词:房屋销售管理系统;SSM 框架;Web 技术;Java 编程语言;MySQL 数据库。
Design and implementation of a web-based housing sales
management system
ABSTRACT
With the improvement of the national living standard, people increasingly attach importance to leisure tourism, and the popularity of the Internet has also brought new opportunities for housing sales management. Combining the housing rental industry with the Internet, building a housing sales management system using the SSM framework, realizing the networking of housing sales management, has a positive role in improving the level of national economic development and enriching people's spiritual life.
The system adopts the SSM framework from requirement analysis, structural design, database design to system implementation. The system is divided into front-end implementation and back-end implementation, striving to find practical and feasible development solutions based on actual needs. By utilizing Java programming language and MySQL database, various functions of the system are completed, including homepage display, personal information management, user management, housing management, appointment information management, information management, permission management, password modification, etc.
In the process of system design and implementation, we focus on user experience and system stability, and continuously optimize system functions through repeated research and learning. Through system testing, detect permissions and vulnerabilities, improve the system, ensure compliance with standards, and provide efficient housing sales management services.
Key words: Housing sales management system; SSM framework; Web technology; Java programming language; MySQL database.
目录
第1章 绪论
1.1研究背景与意义
1.2国内外发展现状
1.3 Java web技术及其发展前景
1.4系统设计概述
1.3本章小结
第2章 系统开发技术的介绍
2.1 系统开发技术
2.2 开发环境介绍
2.3 Java语言
2.4 SSM框架
2.5 MySQL数据库
第3章 系统分析
3.1可行性分析
3.1.1技术可行性
3.1.2经济可行性
3.1.3社会可行性
3.2系统功能需求
3.3系统性能需求
3.4数据流程分析
2.4.1 数据流程
2.4.2 业务流程
图3-4业务流程图
第4章 系统设计
4.1 系统体系结构
4.2系统结构设计
4.3开发流程设计
4.4 数据库设计原则
4.5 数据表
第5章 系统的实现
5.1前台首页的实现
5.2登录模块的实现
5.3新闻资讯模块的实现
5.4房屋信息模块的实现
5.5个人中心-预约信息模块的实现
5.6销售人员-房屋信息模块的实现
5.7管理员-公共管理模块的实现
5.8管理员-资讯管理模块的实现
5.8管理员-房屋信息管理模块的实现
第6章 系统测试
6.1系统测试的目的
6.2系统测试方法
6.3功能测试
第7章 总结
致 谢
参考文献
第1章 绪论
1.1研究背景与意义
随着全球经济的蓬勃发展,信息管理成为各经济领域提出的新管理理念,强调信息在决策中的重要性。随着社会的不断进步,管理信息系统作为利用计算机软硬件资源管理数据的关键人机系统变得日益普及。在当今时代,房屋作为人类生活的重要组成部分,城市中的流动人口增加为房屋销售产业带来了无限的发展空间。
然而,房屋销售领域存在诸多问题,如繁琐的数据处理、复杂的合同管理以及繁重的报表生成等挑战。为了适应社会发展的需要,经过对社会现状和现有问题的分析,我们提出了设计并实现基于 SSM 框架的房屋销售管理系统的课题。该系统旨在整合先进的信息管理理念,利用先进技术手段优化房屋销售流程,提高管理效率,满足市场需求,推动房屋销售行业的进步与发展。
1.2国内外发展现状
房屋销售管理系统在国内外的发展现状呈现出不同的特点。在国外,尤其是西方发达国家,房屋销售管理系统已经相当成熟,得益于先进的Web应用技术和跨地区、跨领域的扁平化管理模式,这些系统不仅提供了高效的楼盘信息录入、修改、查询和删除功能,还实现了客户管理、销售数据统计和分析等多元化服务。这些系统的运作模式已经日趋完善,为房产行业带来了显著的经济和社会效益。
相比之下,国内的房屋销售管理系统虽然随着房产行业的快速发展而有所进步,但仍存在不少挑战。虽然国内的中介网站数量众多,但大多数系统的信息化管理还不够成熟和完善,无法在提高效率、降低成本、共享资源等方面发挥至关重要的作用。传统的房屋销售管理方式仍然占据主导地位,信息孤岛现象普遍,难以为公众提供及时、互动的信息,这在一定程度上阻碍了房产交易市场的健康、快速发展。
因此,未来国内的房屋销售管理系统需要朝着更加信息化、智能化的方向发展,通过整合和优化各类资源,实现信息共享和高效管理,以提高整个房产行业的竞争力和市场适应性。同时,随着技术的不断进步和应用场景的扩大,房屋销售管理系统也将不断创新和完善,为公众提供更加便捷、智能的房屋交易服务。
。
1.3 Java web技术及其发展前景
Java Web技术是一种基于Java语言的Web应用程序开发技术,它将Java编程语言的强大功能与Web开发的灵活性相结合,为开发人员提供了高效、安全和可靠的方式来构建和部署Web应用程序。它使用JavaServer Pages(JSP)或JavaServer Faces(JSF)等技术来创建动态、交互式的Web页面,并支持与其他服务器端技术(如Servlet、Spring等)的集成,从而扩展了其功能和灵活性。
关于Java Web技术的发展前景,随着互联网的普及和数字化时代的来临,Web前端开发作为软件开发领域的重要组成部分,其市场需求持续增长。Java Web技术作为其中的重要一环,也将受益于这一趋势。此外,Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,因此Java Web技术在企业级应用开发和网站建设等领域也将持续发挥重要作用。
总的来说,Java Web技术凭借其强大的功能、灵活性和跨平台性,以及不断增长的市场需求,将继续在未来发挥重要作用,为开发人员和企业带来更高效、安全和可靠的Web应用程序解决方案。
1.4系统设计概述
系统设计主要围绕SSM框架展开,该框架由Spring、SpringMVC和MyBatis三个开源项目整合而成,旨在实现高效、灵活、可扩展的Web应用程序开发。SSM框架各个组件之间相互配合,提供了一套完整的解决方案,用于开发企业级的Java Web应用程序。其中,Spring负责提供IoC(控制反转)和AOP(面向切面编程)等功能,简化了企业级应用的开发流程;SpringMVC是基于MVC设计模式的Web框架,负责处理请求和响应;MyBatis则是持久层框架,用于数据库操作。
在系统设计中,我们充分考虑了房地产数据的安全性和隐私性,采用了多层次的安全措施,如加密传输数据、定义合适的表结构和索引等,以确保数据的安全性。同时,为了提高用户体验,我们采用了Ajax技术实现前后端数据的异步交互,使界面更加流畅。
在功能模块设计上,我们实现了房屋基础数据的管理、员工管理、客户管理、房屋管理、房屋收藏管理、订单管理、新闻管理、单页数据管理、基础数据管理等功能,满足了房屋销售管理的全面需求。界面设计上,我们追求简洁大方,易于操作,同时提供定制化的主题和样式,让用户可以根据自己的喜好进行设置。
总体来说,SSM基于Web的房屋销售管理系统的设计和实现,充分考虑了用户需求、数据安全和系统性能等方面,力求为用户提供高效、稳定、安全的房屋销售管理解决方案。
1.3本章小结
本章主要对该系统的选题背景、选题意义,分析本人为什么要做这个系统,和这个系统给人们带来什么好处,有什么作用,以及论文的组成部分,还总述了整个系统的组成及实现的功能。
第2章 系统开发技术的介绍
2.1 系统开发技术
这部分内容主要介绍本系统使用的技术,包括使用的工具,编程的语言等内容。
2.2 开发环境介绍
2. 操作系统方案:考虑到系统的稳定性和兼容性,我们选择使用Windows 7旗舰版操作系统。该系统不仅具备出色的运行速度,还提供了友好的用户界面,可以确保房屋销售管理系统的高效运行。
3. 后台数据库:为了确保数据的安全性和高效性,我们选用MySQL作为后台数据库。MySQL以其强大的数据库加密功能、更安全的默认设置、加强的密码政策、细化许可控制以及先进的安全模型等特性,为房屋销售管理系统提供了最高级别的数据安全性。
4. 开发工具:在开发过程中,我们选择使用MyEclipse 10作为主要的开发工具。MyEclipse 10提供了丰富的功能和强大的性能,可以帮助开发团队更加高效地进行代码编写、调试和部署。
5. 开发语言:考虑到系统的可扩展性和可维护性,我们选择使用Java语言进行开发。Java语言以其跨平台性、面向对象特性和丰富的类库,为房屋销售管理系统提供了稳定可靠的技术支持。
6. 开发技术:在开发过程中,我们将采用SSM(Spring、SpringMVC、MyBatis)框架作为核心技术。SSM框架具有轻量级、易于学习和使用的特点,能够提高开发效率并保证系统的稳定性。同时,结合HTML、CSS和JavaScript等前端技术,实现用户界面的美观和交互性。
2.3 Java语言
Java语言自公元1995年至今,已经超过25年了,依然在软件开发上面有很大的市场占有率。当年Sun公司发明Java就是为了发展一门跨平台的高级编程语言,让程序开发人员专注于程序开发过程,不需要关注服务器是属于哪个平台,因为跨平台的特性让语言发展的很迅速。Java的发展,吸收了C++这些语言的优点,因为新生事物一般就是解决老旧事物一些痛点的,虽然Java也有很多缺点,但是起码也算是一种发展方向。学习Java不需要太多的指针这些理念,也不用学习太过复杂的数据结构理论,比如什么堆栈这些概念,除非某些特殊行业对这些要求相当严谨之外,一般用Java开发程序是不用考虑各种各样的数据结构的。因为Java属于一种强类型语言,已经对各种数据定义了各种相应的类型。Java对数据类型定义分为两大种,一种是基本类型,含有8个基本属性,另一个是包装类。基本类和包装类从根本的定义上,都有很明显的区分,计算机运行也会有很明显的差别,如果用错了会编译错误还会影响运行效果的,Java的各种优点只需要按部就班的学习使用即可。
2.4 SSM框架
本课题开发的应用程序主要采用的框架技术是SSM,是Java语言的一种框架集合的简称,目前在Java语言方面,主要有两大分支,一个是主攻Java语言,学习了Java基础之后,会有很多Java进阶框架进行学习,主要是针对应用程序后台进行开发设计,另一方面是转行去学习安卓语言,主要是做安卓的前端设计方面,虽然也是Java语言,但是主要去学习安卓平台的各种架构和框架了。但是不管前端应用如何,SSM框架主要是针对服务端方面进行开发的一个主流框架集合。针对于传统的SSH框架的臃肿,配置繁琐,不管是开发还是二次开发都会造成时间上大量的浪费,并且学习上面也不能有效衔接,需要去适应框架的各种设计,而框架设计比较死板,容易出错。SSM框架是当前最流行的,告别了繁琐的配置,让配置更加灵活,让数据操作更加方便,选择SSM框架进行开发感觉是很合适的。
2.5 MySQL数据库
Mysql的语言是非结构化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用。
Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。
数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。
第3章 系统分析
3.1可行性分析
开发任何一个系统,都要对其可行性进行分析,对其时间和资源上的限制进行考虑,这样可以减少系统开发的风险。同时,分析之后不仅能够合理的运用人力,还能在各方面资源的消耗上得到节省。下面就对技术、经济和社会三个方面来介绍。
3.1.1技术可行性
技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Java开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Java编程语言,已无技术上的问题。
3.1.2经济可行性
该系统利用MyEclipse这一强大的开发平台和MySQL这一稳定可靠的后端数据库进行构建,这两者均为免费开发工具,因此显著降低了开发成本。主要的开销将集中在后续的推广和系统维护上。与传统的C/S模式相比,该系统选择了成本更低的B/S模式,从而在经济上几乎没有任何负担。此外,该系统还采用了SSM(Spring、SpringMVC、MyBatis)框架进行开发,这一框架提供了高效、灵活且易于维护的解决方案,进一步确保了系统的稳定性和可扩展性。
3.1.3社会可行性
本系统是自行开发的系统,以方便高效管理社团为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。
房屋销售管理系统我划分为了普通用户管理模块、销售用户管理模块和管理员模块这三大部分。
普通用户管理模块:
- 用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现房屋信息的收藏评论等,就必须有这个系统的账号,如果没有账号的话,可以注册成用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。
- 普通用户:账户与个人中心:普通用户可以轻松管理自己的账户信息,包括查看个人资料、修改密码等。同时,个人中心提供了用户与系统的交互记录,如预约看房、收藏房源等。
- 预约信息:用户可以查看自己的预约看房列表,包括已预约、待审核和已完成的记录。他们还可以根据房屋类型搜索房源,并随时重置搜索条件。待审核的预约信息可以查看详情,并等待管理员的回复。
- 收藏管理:对于心仪的房源,用户可以轻松收藏,并在个人中心随时查看。不再需要的收藏内容,也可以随时删除。
- 首页浏览:用户可以浏览首页的轮播图,了解最新的楼盘动态和优惠信息。同时,首页还展示了新闻资讯和公告信息,方便用户了解行业动态和系统更新。
- 公告信息:系统会发布各种公告,如优惠活动、系统维护等。用户可以随时查看这些公告,以便及时获取相关信息。
- 新闻资讯:用户可以浏览系统发布的新闻资讯,了解房地产市场的最新动态。他们可以通过关键词搜索感兴趣的资讯,并对喜欢的资讯进行点赞、收藏或评论。
- 房屋信息查询:用户可以查看详细的房屋信息,包括位置、面积、楼层、价格等。通过关键字、房屋类型或状态,用户可以快速筛选并搜索到心仪的房源。同时,他们还可以对喜欢的房屋进行点赞、收藏、预约看房,并发表评论或等待回复。
销售用户管理模块:
- 房屋信息管理:销售用户在后台可以对房屋信息进行全面的管理。他们可以轻松地添加新房源、编辑或删除已有房源信息,确保数据始终准确且最新。用户还可以查看每套房源的详细信息,包括位置、面积、价格等关键要素。此外,销售用户还可以查看用户对房源的评论,了解市场的反馈和潜在客户的需求。通过内置的搜索功能,销售用户可以迅速筛选出符合特定条件的房源,如房屋类型、位置或状态,从而更加高效地为客户推荐合适的房源。
- 预约信息管理:在预约信息方面,销售用户能够查询和管理所有的预约看房记录。他们可以查看每条预约的详细情况,包括预约的客户信息、看房时间和地点等。如果需要,销售用户还可以重置预约信息或对其进行修改。为了提升服务效率,系统还提供了通过房屋类型或位置进行搜索的功能,帮助销售用户快速定位到特定的预约记录。最重要的是,销售用户可以对用户的预约看房信息进行审核,并在必要时给予回复,确保客户得到及时且专业的服务。
- 退出:在完成所有管理工作后,销售用户可以选择退出系统,确保账户安全并结束当前的工作会话。这一功能有助于保护用户的隐私和数据安全,同时也有助于释放系统资源。
管理员模块:
在房屋销售管理系统中,管理员拥有全面的后台管理权限。具体来说,管理员可以:
- 公共管理:管理轮播图,包括增加、删除、修改和查看轮播图的详细信息。同时,管理员还能够发布、编辑、删除和查看公告信息,确保用户能够及时获取到最新的通知和消息。
- 用户管理:对系统中的用户进行全面管理,包括管路员、普通用户和销售人员的增删改查以及查看详情。管理员可以根据需要添加、修改或删除用户信息,确保用户数据的准确性和完整性。
- 资讯管理:管理新闻列表,包括新闻的发布、编辑、删除和查看详情。管理员还可以处理用户评论,确保信息交流的顺畅和合规。此外,管理员可以通过标题、标签或分类进行新闻搜索,提高信息管理效率。
- 权限管理:对系统中的权限进行精细管理,包括权限列表的查看、详情的修改以及权限的查询、重置、添加、修改和删除。管理员可以通过权限名、用户组或其他相关条件进行权限搜索,确保权限设置的合理性和安全性。
- 房屋信息管理:对房屋信息进行全面的增删改查和查看详情操作。管理员还可以处理用户评论,并通过房屋类型、位置或状态进行信息搜索,以便快速定位和管理特定房屋。
- 预约信息管理:管理预约信息,包括预约的增删改查和查看详情。管理员可以通过房屋类型或位置进行搜索,以便及时了解和处理用户的预约需求。
3.2系统功能需求
系统例界面图如下所示。
图3-1 系统用例图
3.3系统性能需求
评判一个系统好坏的一项重要指标就是性能,下面是对此系统的一些性能进行阐述。
1.系统的安全性和稳定性: 房屋销售管理系统在管理权限上有着严格的控制,即想登录此平台进行操作,则必须要有操作权限,没有权限的用户是不可能登录平台查看任何的信息和数据,从而确保了系统的安全性。
2.数据的完整性和准确性:第一个是各项记录信息的完整性,信息记录的内容可以为空;第二个是各项信息数据之间相互联系的准确性;第三个是数据在不同记录信息的一致性
3.用户操作系统简单方便
在系统开发中按照“简单易用”的原则,能够使用户对系统的使用一目了然,既能保证用户使用,同时又能保证维护人员方便维护。
3.4数据流程分析
对系统的数据流进行分析,系统的使用者分为两类,普通用户、销售用户和管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操作的响应做处理。
系统顶层数据流图如下图所示。
图3-2 顶层数据流图
要判断用户是是什么身份,是根据登录的数据来判断后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作,数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。
开发房屋销售管理系统最主要的一个目的就是实现用户对房屋的销售,图3-3就是系统的数据流图。
图3-3预约看房操作展开图
分析完房屋销售管理系统的数据流,那么接下来我们来看系统的业务流程,图3-4就是业务流程图:
第4章 系统设计
4.1 系统体系结构
本系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图4-1所示:
图4-1 系统工作原理图
4.2系统结构设计
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
本系统结构图如图4-2所示。
图4-2 系统功能结构图
4.3开发流程设计
系统流程的分析是通过调查系统所涉及问题的识别、可行性、可操作性、系统分析处理能力等具体环节来调节、整理系统的设计方案以确保系统能达到理想的状态。这些操作都要从注册、登录处着眼进行一系列的流程测试保证数据库的完整,从而把控系统所涉及信息管理的安全、保证信息输入、输出正常转换。然后,通过实际操作完成流程图的绘制工作。
房屋销售管理系统的开发对管理模块和系统使用的数据库进行分析,编写代码,系统测试,如图4-4所示。
图4-4开发系统流程图
4.4 数据库设计原则
学习编程,我们都知道数据库设计是基于需要设计的系统功能,我们需要建立一个数据库关系模型,用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率。数据库存储了很多信息,可以说是信息管理系统的核心和基础,数据库还提供了添加、删除、修改和检查,使系统能够快速找到自己想要的信息,而不是在程序代码中找到。数据库中信息表的每个部分根据一定的关系精确地组合,排列和组合成数据表。
通过房屋销售管理系统的功能进行规划分成几个实体信息,实体信息将通过ER图进行说明,本系统的主要实体图如下:
管理员信息属性图如图4-5所示。
图4-5 管理员信息实体属性图
系统的E-R图如下图所示:
图4-6系统E-R图
4.5 数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表appointment_information (预约信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | appointment_information_id | int | 10 | 0 | N | Y | 预约信息ID | |
2 | title_name | varchar | 64 | 0 | Y | N | 标题名称 | |
3 | house_type | varchar | 64 | 0 | Y | N | 房屋类型 | |
4 | location_of_the_house | varchar | 64 | 0 | Y | N | 房屋位置 | |
5 | house_floors | varchar | 64 | 0 | Y | N | 房屋楼层 | |
6 | publishing_personnel | int | 10 | 0 | Y | N | 0 | 发布人员 |
7 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
8 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
9 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
10 | appointment_time | datetime | 19 | 0 | Y | N | 预约时间 | |
11 | appointment_remarks | text | 65535 | 0 | Y | N | 预约备注 | |
12 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | housing_information_id | int | 10 | 0 | N | Y | 房屋信息ID | |
2 | title_name | varchar | 64 | 0 | Y | N | 标题名称 | |
3 | house_type | varchar | 64 | 0 | Y | N | 房屋类型 | |
4 | location_of_the_house | varchar | 64 | 0 | Y | N | 房屋位置 | |
5 | housing_area | varchar | 64 | 0 | Y | N | 房屋面积 | |
6 | house_floors | varchar | 64 | 0 | Y | N | 房屋楼层 | |
7 | house_pictures | varchar | 255 | 0 | Y | N | 房屋图片 | |
8 | housing_status | varchar | 64 | 0 | Y | N | 房屋状态 | |
9 | price_amount | int | 10 | 0 | Y | N | 0 | 价格金额 |
10 | publishing_personnel | int | 10 | 0 | Y | N | 0 | 发布人员 |
11 | introduction_to_the_house | longtext | 2147483647 | 0 | Y | N | 房屋简介 | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | praise_len | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_age | varchar | 64 | 0 | Y | N | 用户年龄 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | contact_information | varchar | 64 | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sales_personnel_id | int | 10 | 0 | N | Y | 销售人员ID | |
2 | personnel_name | varchar | 64 | 0 | Y | N | 人员姓名 | |
3 | age_of_personnel | varchar | 64 | 0 | Y | N | 人员年龄 | |
4 | gender_of_personnel | varchar | 64 | 0 | Y | N | 人员性别 | |
5 | contact_phone_number | varchar | 64 | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第5章 系统的实现
5.1前台首页的实现
本系统设计的是一个房屋销售管理系统。该系统总共分为首页、公告信息、新闻资讯、房屋信息等多个模块。通过对此系统的开发,达到了用户对了解。实现系统的实用性和易管理性。
系统首页如下图所示。
图5-1系统首页
前台首页集成了普通用户的注册页面,注册的独立页面为`userreg.jsp`。通过SSM框架嵌入系统前台首页。用户填写好注册信息后,通过`<form action="userreg.jsp?f=f" method="post" name="f1" οnsubmit="return checkform();">`方式提交表单,会通过JavaScript验证格式。如果格式有错误,则用户小窗口提示错误的地方;如果格式都正确,则跳转至DAO的注册方法,实现注册用户,并提示注册成功,并将注册的信息加入用户表中。
其中载入前台首页的主要代码如下:
package com.project.demo.constant;
/
*/
public class FindConfig {
public static String PAGE = "page";
public static String SIZE = "size";
public static String LIKE = "like";
public static String ORDER_BY = "orderby";
public static String FIELD = "field";
public static String GROUP_BY = "groupby";
public static String MIN_ = "_min";
public static String MAX_ = "_max";
}
用户注册流程图如下图所示。
图5-2用户注册流程图
用户注册的关键代码为:
注册
@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);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
5.2登录模块的实现
系统的登录是使用该系统的第一关卡,用户在登录界面输入账号和密码后,系统判断该账号密码是否能在数据库中存在并且匹配,返回登录成功或登录失败的信息,登录成功后才能使用系统的功能。
登录流程图如下图所示。
图5-3登录流程图
用户登录界面如下图所示。
图5-4用户登录界面
随着系统规模的壮大,系统发布更新的信息及对普通用户量会越来越多,只有超级管理员负责系统后台恐怕任务艰巨,本系统考虑到这一问题后开发了超级管理员有权限可以增加管理员的模块。管理员角色不同对应权限亦不相同。
用户管理界面如下图所示。
图5-5用户管理界面
用户登录的关键代码如下:
登录
@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, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.3新闻资讯模块的实现
用户可以浏览系统发布的新闻资讯,了解房地产市场的最新动态。他们可以通过关键词搜索感兴趣的资讯,并对喜欢的资讯进行点赞、收藏或评论。
新闻资讯展示如下图所示。
图5-6新闻资讯展示界面
新闻资讯发布的关键代码如下:
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.4房屋信息模块的实现
用户可以查看详细的房屋信息,包括位置、面积、楼层、价格等。通过关键字、房屋类型或状态,用户可以快速筛选并搜索到心仪的房源。同时,他们还可以对喜欢的房屋进行点赞、收藏、预约看房,并发表评论或等待回复。
房屋信息如下图所示。
图5-7房屋信息界面
5.5个人中心-预约信息模块的实现
用户可以查看自己的预约看房列表,包括已预约、待审核和已完成的记录。他们还可以根据房屋类型搜索房源,并随时重置搜索条件。待审核的预约信息可以查看详情,并等待管理员的回复。
预约信息界面如下图所示。
图5-8个人中心-预约信息界面
5.6销售人员-房屋信息模块的实现
销售用户在后台可以对房屋信息进行全面的管理。他们可以轻松地添加新房源、编辑或删除已有房源信息,确保数据始终准确且最新。用户还可以查看每套房源的详细信息,包括位置、面积、价格等关键要素。此外,销售用户还可以查看用户对房源的评论,了解市场的反馈和潜在客户的需求。通过内置的搜索功能,销售用户可以迅速筛选出符合特定条件的房源,如房屋类型、位置或状态,从而更加高效地为客户推荐合适的房源。
房屋信息如下图所示。
图5-9房屋信息界面
5.7管理员-公共管理模块的实现
管理轮播图,包括增加、删除、修改和查看轮播图的详细信息。同时,管理员还能够发布、编辑、删除和查看公告信息,确保用户能够及时获取到最新的通知和消息。
公共管理如下图所示。
图5-10公共管理界面
5.8管理员-资讯管理模块的实现
管理新闻列表,包括新闻的发布、编辑、删除和查看详情。管理员还可以处理用户评论,确保信息交流的顺畅和合规。此外,管理员可以通过标题、标签或分类进行新闻搜索,提高信息管理效率,资讯管理如下图所示。
图5-11资讯管理界面
5.8管理员-房屋信息管理模块的实现
对房屋信息进行全面的增删改查和查看详情操作。管理员还可以处理用户评论,并通过房屋类型、位置或状态进行信息搜索,以便快速定位和管理特定房屋,房屋信息如下图所示。
图5-12房屋信息管理界面
第6章 系统测试
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
房屋销售管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在房屋销售管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2系统测试方法
在对房屋销售管理系统进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让房屋销售管理系统开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个房屋销售管理系统开发所牵扯的该问题都必须一一解决,提高房屋销售管理系统平台的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
6.3功能测试
用户登录测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
修改密码测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,房屋销售管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
第7章 总结
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所相关技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是一个掌握了常用的性能和控制方法,我觉得挺容易的。从该系统中,系统的分析和设计的调查数据,并且已经经历了几个月,并努力几个月,该系统已经完成。很显然,该系统仍有很多不成熟的地方,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过咨询老师解决这些问题,对于毕业设计的圆满完成,需要感谢老师们的指导。系统的开发环境和配置都是可以自行安装的,系统使用Java开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
回顾毕业设计的整个过程,既付出汗水也收获了很多。虽然经历了各种各样的困难,自己的不断研究探索,系统的实现仍有不足之处。
在以后的学习及工作中,我仍然继续学习计算机方面的技术,让我在后期的平台开发中可以更好更快的实现需求功能。我相信我可以让更多的好工作,做出更大的贡献。
致 谢
大学的学习生活总是感觉短暂的,总感到知识还没有学够,但大学毕业就在我们面前,即毕业设计即将的结束,意味着我们的大学生涯即将结束。毕业设计是我们在大学所学知识的一次总结,更是对我们过去所学知识的提炼和升华,通过毕业设计,我们认识到大学学习过程中还有那些知识没有掌握,那些知识需要我们进入深入研究。这次毕业设计让我学到了很多新的知识,研究了一些新的以前自己不熟悉的领域,使我处理问题的能力得到了一定的提升,同时也为今后的继续深造或踏入社会大门提供了很好的锻炼机会。
在本次毕业设计过程中,得到了老师的指导与支持。在此特别感谢我的指导老师。指导老师的悉心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时根我提供了非常优越的设计环境,并对我在编程、数据库设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业设计起到了关键性的作用。
我还要感谢我的母校,以及在大学生活中给予我关心和帮助的老师和同学,是他们教会了我专业的知识和做人的道理。通过这次毕业设计我还明白了我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。我会在以后的工作和学习中不断完善自己,为我最热爱的母校争光,为自己翻开辉煌的新篇章。
参考文献
[1]Hasabeldaim E ,Swart H ,Kroon R . Web-based application software for Judd-Ofelt analysis of Eu3+ ion luminescence [J]. Results in Optics, 2024, 16 100688-.
[2]Han Y X ,Zhao M S ,Wang X , et al. B <sup>0</sup>— B¯0 mixing in the U(1)<sub> X </sub> SSM [J]. Journal of Physics G: Nuclear and Particle Physics, 2024, 51 (5):
[3]张小红. 基于WEB的在线自主学习平台设计与实现 [J]. 农机使用与维修, 2024, (04): 36-38.
[4]江国粹. 基于高阶思维能力培养的“MySQL数据库技术”课程教学改革研究 [J]. 安徽电子信息职业技术学院学报, 2024, 23 (01): 39-43.
[5]胡瑚. 基于MySQL的科研信息管理系统数据库设计 [J]. 信息与电脑(理论版), 2024, 36 (04): 169-171.
[6]Ghoshal A . Oracle’s MySQL HeatWave gets Vector Store, generative AI features [J]. InfoWorld.com, 2023,
[7]孙士兵. 基于SSM和虚拟现实的房屋装饰商务平台的设计[C]// 上海筱虞文化传播有限公司. Proceedings of 2022 Engineering Technology Innovation and Management Seminar(ETIMS 2022). 长沙民政职业技术学院软件学院;, 2022: 3.
[8]闫银娟. 基于SSM的房屋租赁系统的设计与实现 [J]. 电脑知识与技术, 2022, 18 (33): 38-41.
[9]翟炜,岳皓宇,白雪音. 基于谷歌街景影像的飓风后重建策略对房屋恢复的影响研究——以2018年美国佛州迈克尔飓风为例 [J]. 西部人居环境学刊, 2022, 37 (01): 9-14.
[10]吴桐. 房屋销售居间行为法律问题研究[D]. 贵州民族大学, 2021.
[11]闫振斌. 电商环境下视觉元素对销售的影响研究[D]. 中国科学技术大学, 2021.
[12]焦翔音. 房地产开发企业销售业务税收策划研究[D]. 东北财经大学, 2021.
[13]杨贤勇. 商品房销售广告引发的房屋买卖合同纠纷类案评析[D]. 湖南大学, 2021.
[14]师艺玮. 基于SSH框架的房地产销售管理系统的设计与实现[D]. 电子科技大学, 2021.
[15]黄泽欢, 房屋销售分销管理理系统. 湖北省, 湖北得一科技有限有限公司, 2021-01-05.
[16]张廷廷,李颖. 欺诈销售和房屋质量差是投诉热点 《中国质量万里行》发布2019年度房地产业投诉分析报告 [J]. 中国质量万里行, 2020, (Z1): 36-39.
[17]纪宏奎,赵辉,张国永. 继承房屋再销售如何纳税 [J]. 税收征纳, 2020, (Z1): 32-33.
[18]汤倩雯. 房屋团购的法律适用问题研究 [J]. 呼伦贝尔学院学报, 2019, 27 (05): 43-47.
[19]邓斯敏. 基于合同视角的房屋销售代理风险分析及防范 [J]. 中外企业家, 2019, (10): 42.
[20]李先耀. 基于SpringMVC房屋销售管理系统的设计与实现[D]. 电子科技大学, 2019.
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~