基于SpringBoot+Vue的前后端分离的房屋租赁系统2

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

开发过程中,我们注意到目前租房市场存在一些问题,如信息不对称、租金纠纷、租赁合同管理不规范等。为了解决这些问题,我们决定开发一个全新的房屋租赁系统。

首先,我们选择了SpringBoot作为后端框架。SpringBoot是一个快速开发、简化配置的Java开发框架,它提供了丰富的功能和强大的生态系统,可以帮助我们快速搭建稳定、高效的后端服务。同时,SpringBoot也具有良好的扩展性和可维护性,方便后期系统的升级和维护。

其次,为了提供良好的用户体验和友好的界面,我们选择了Vue作为前端框架。Vue是一种轻量级、渐进式的JavaScript框架,它具有简单易学、灵活高效的特点,可以帮助我们快速构建交互式的前端页面。通过Vue的组件化开发方式,我们可以更好地管理和复用前端代码,提高开发效率。

在系统的设计中,我们注重用户体验和功能完善。用户可以通过系统浏览各种房源信息,并进行筛选、比较和预订。同时,系统还提供了租赁合同管理、支付结算和评价反馈等功能,以保证租房过程的安全和顺利进行。

总之,基于SpringBoot+Vue的前后端分离架构,该房屋租赁系统具有稳定、高效的性能,同时提供了丰富的功能和良好的用户体验。我们希望通过这个系统,能够为用户提供一个便捷、安全的房屋租赁服务平台,促进租房市场的健康发展。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
    Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  4. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  5. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  6. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

三、系统功能模块介绍:

444

四、数据库设计:

1:apply(apply)

字段名类型默认值列注释
apply_idintNULL申请看房
house_idvarcharNULL
addressvarcharNULL
areadoubleNULL
pricedoubleNULL
apply_datedatetimeNULL
statusvarcharNULL
user_idintNULL

2:applyout(applyout)

字段名类型默认值列注释
aoidintNULL退租申请
house_idvarcharNULL
addressvarcharNULL
statusvarcharNULL
user_idintNULL

3:checkout(checkout)

字段名类型默认值列注释
cidintNULL退租申请
house_idvarcharNULL
addressvarcharNULL
statusvarcharNULL
user_idintNULL

4:hetong(hetong)

字段名类型默认值列注释
idintNULL
chuzuvarcharNULL
chuzu_idcardvarcharNULL
zukevarcharNULL
zuke_idcardvarcharNULL
fromdatevarcharNULL
todatevarcharNULL
pricedoubleNULL
addressvarcharNULL
house_idvarcharNULL
paydayintNULL

5:houselist(houselist)

字段名类型默认值列注释
idintNULL
houseidvarcharNULL
addressvarcharNULL
areadoubleNULL
pricedoubleNULL
statusvarcharNULL

6:music(music)

字段名类型默认值列注释
namevarcharNULL
urlvarcharNULL
artistvarcharNULL
covervarcharNULL

7:paid(paid)

字段名类型默认值列注释
idintNULL已缴租金
house_idvarcharNULL
addressvarcharNULL
pricedoubleNULL
datedateNULL
paydatedateNULL
namevarcharNULL
user_idintNULL
statusvarcharNULL

8:schedule(schedule)

字段名类型默认值列注释
idintNULL
datevarcharNULL
contenttextNULL

9:solve(solve)

字段名类型默认值列注释
idintNULL
house_idvarcharNULL
addressvarcharNULL
datetimestampNULL
detailtextNULL
namevarcharNULL
user_idintNULL
statusvarcharNULL

10:topaid(topaid)

字段名类型默认值列注释
idintNULL
house_idvarcharNULL
addressvarcharNULL
pricedoubleNULL
datedateNULL
namevarcharNULL
user_idintNULL
statusvarcharNULL

11:user(user)

字段名类型默认值列注释
idintNULL
usernamevarcharNULL
passwordvarcharNULL
typevarcharNULL
nicknamevarcharNULL

12:userlist(userlist)

字段名类型默认值列注释
idintNULL
namevarcharNULL
idcardvarcharNULL
phonevarcharNULL
user_idintNULL
nicknamevarcharNULL昵称

13:wrong(wrong)

字段名类型默认值列注释
idintNULL
house_idvarcharNULL
addressvarcharNULL
datetimestampNULL
detailtextNULL
namevarcharNULL
user_idintNULL
statusvarcharNULL

14:zulist(zulist)

字段名类型默认值列注释
zidintNULL
house_idvarcharNULL
pricedoubleNULL
addressvarcharNULL
user_idintNULL
contract_idintNULL

五、功能模块:

登录:在登录界面用户可以选择当前登录的权限是房东还是租客,选在对应的权限然后输入账号密码进入到的系统所能使用的功能是不一致的

登录

房东首页-日程提醒:

房东首页-日程提醒

房源菜单:房源列表用于管理房源,添加房源菜单用于添加房源

image-20231201150003639

租赁及合同信息:在租列表可以查看合同/修改合同打印合同/终止合同

image-20231201150205035

image-20231201150215049

看房及退租记录:

image-20231201150324245

image-20231201150331947

保障模块:

image-20231201150351561

租金信息:我要收租/租客待缴租金/租客已经缴租金

image-20231201150450775

租金信息:查看日程/ 添加日程

image-20231201150523669

房源菜单:房源列表

image-20231201150554880

租赁及合同信息:在租列表/已退租列表

image-20231201150616006

看房及退租记录:看房记录/退租记录

image-20231201150630772

保障模块:我要保障/待处理保障/已经处理保障

image-20231201150716242

租金信息:待缴租金/已缴租金

image-20231201150743470

六、代码示例:


@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
 AjaxResult ajax = AjaxResult.success();
 boolean captchaEnabled = configService.selectCaptchaEnabled();
 ajax.put("captchaEnabled", captchaEnabled);
 if (!captchaEnabled)
 {
 return ajax;
 } // 保存验证码信息
 String uuid = IdUtils.simpleUUID();
 String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
 String capStr = null, code = null;
 BufferedImage image = null;

 String captchaType = RuoYiConfig.getCaptchaType();
 if ("math".equals(captchaType))
 {
 String capText = captchaProducerMath.createText();
 capStr = capText.substring(0, capText.lastIndexOf("@"));
 code = capText.substring(capText.lastIndexOf("@") + 1);
 image = captchaProducerMath.createImage(capStr);
 }
 else if ("char".equals(captchaType))
 {
 capStr = code = captchaProducer.createText();
 image = captchaProducer.createImage(capStr);
 }
 redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
 // 转换流信息写出
 FastByteArrayOutputStream os = new FastByteArrayOutputStream();
 try
 {
 ImageIO.write(image, "jpg", os);
 }
 catch (IOException e)
 {
 return AjaxResult.error(e.getMessage());
 }
 ajax.put("uuid", uuid);
 ajax.put("img", Base64.encode(os.toByteArray()));
 return ajax;

}
/**
通用的本地文件上传
@param multipartFile 文件对象@return 文件访问链接URL
 */
@PostMapping("/file")
public SimpleResponse uploadImg(@RequestParam("file") MultipartFile file) {
 // 文件后缀
 String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
 File savePathFile = new File(newTomcatFolder);
 if (!savePathFile.exists()) {
 // 若不存在该目录,则创建目录
 savePathFile.mkdir();
 }
 // 通过UUID生成唯一文件名
 String filename = UUID.randomUUID() + "." + suffix;
 try {
 // 将文件保存指定目录
 file.transferTo(new File(newTomcatFolder + filename));
 } catch (Exception e) {
 e.printStackTrace();
 return SimpleResponse.error("保存文件异常");
 }
 // 返回访问链接
 return SimpleResponse.success(newTomcatHost + filename);
}
/**用户登录
 */
@PostMapping("/login")
public ReturnMsg manageLogin(@RequestBody Map<String, String> param) {
 if (StrUtil.isEmpty(param.get("username")) || StrUtil.isEmpty(param.get("password"))) {
 return ReturnMsg.error("用户名或密码错误!");
 }
 ManageDTO manageDTO = new ManageDTO();
 manageDTO.setUserName(param.get("username"));
 manageDTO.setPassWord(param.get("password"));
 QueryWrapper<ManageDTO> manageDTOQueryWrapper = new QueryWrapper<>(manageDTO);
 manageDTOQueryWrapper.last("limit 1");
 ManageDTO adminDTOS = manageService.getOne(manageDTOQueryWrapper);
 if (adminDTOS == null) return ReturnMsg.error("用户名或密码错误!");
 Map<String, Object> map = new HashMap<>();
 map.put("avatar", StrUtil.isNotBlank(adminDTOS.getPhotoImg()) ? adminDTOS.getPhotoImg() : "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
 map.put("introduction", adminDTOS.getName() + ",你好!");
 map.put("name", adminDTOS.getName());
 map.put("roles", Arrays.asList("admin"));
 map.put("type", adminDTOS.getStatus());
 Map<String, String> returnMap = new HashMap<>();
 String uuid = UUID.randomUUID().toString();
 returnMap.put("token", uuid);
 userInfoMap.put(uuid, JSON.toJSONString(map));
 return ReturnMsg.ok(returnMap);
}

七、项目总结:

之前在教材内容读书过程中开发设计技术专业知识,对研究过程的认知,对开发设计设计课程学习,及其如何有效开展系统的市场分析和设计。老师还选了更具有标志性管理方案系统来解读教学过程,课下安排工作使们进行练习。在这段时间,老师还应当掌握系统地完成和测试。应对餐厅点餐管理系统的开发,的脑海里的确有一个清晰的认知。在系统制做及配套文本文件撰写中,按照软件开发流程一步步做好本职工作。

从系统的角度看,依据餐厅点餐管理系统生产,其艰难在于功能清楚、系统构造设计、设计使用性能数据库系统、挑选核心技术进行系统功能等,这种都是自己的难题。针对这一艰难,实行了一些防范措施。当也不知道系统的功能时,在网上找到很多相似的系统,做好记录了一些系统的一般功能,并用了这一系统的高效功能的一部分。除此之外,在在网络上得到了很多关于系统设计的前提知识,包含系统模块划分、设计规范、数据库表的设计和创建,及其程序流程编码的专业技能知识,包含撰写与使用数据和信息加上、删掉和变更编码控制器。在系统序号进行相关功能后,认真的试了系统中所有功能,最后发现自己研发的系统符合规定,能接受。系统功能与系统剖析设计高度一致,系统质量稳定。为应对客户的实际操作不正确,还设有不恰当反馈机制,系统性能稳定。唯一的最大的缺点是系统数据报表的设计不健全,字段名称相匹配的引用类型不正确,一部分系统编码很多地方并没有注解,编码不足简易。

从文本文件的角度看,依据基于SpringBoot+Vue的前后端分离的房屋租赁系统生产后,应叙述生产过程的需求,包含怎样进行数据分析报告、怎样进行系统设计及其系统功能的具体运作实际效果。在这期间,用了接近一个月的时间来做。要实现院校标准化的文档排版标准,多次在老师的建议下学习办公软件使用和排版设计设计。坚持就是收益。经过长时间的的撰写和优化,的文档终于完成。

总而言之,尽管制做经历了太多阶段,但如果认真完成这件事情,们将在每一个环节得到许多知识,在每一个环节的操作过程中锻练们自己的实践技能。根据该项目的制做,开始明白,许多知识不但来源于书籍,来源于教师在课堂教学中讲的知识,还来源于各种网络学习平台和社会实践。到现在为止,将继续努力,维持新知识的深入学习习惯性

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/210355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Django框架搭建的协同过滤算法电影推荐网站-爬取的豆瓣电影数据

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介概述技术栈实现流程 二、功能三、系统四. 总结 一项目简介 # 电影推荐网站介绍 概述 该电影推荐网站是基于Django框架搭建的&#xff0c;旨在为用户提供个…

前端文本省略号后面添加复制文字

前端文本省略号后面添加复制文字 1、效果图 2、代码展示 <div class"link-content-wrap" click"copyLinkText"><div class"link-content">{{ shareResult.url || }} </div><span class"show-ellipsis" click&…

Linux MIPI 调试中常见的问题

一、概述 做嵌入式工作的小伙伴知道&#xff0c;有时候程序编写没有调试过程中费时&#xff0c;之间笔记里有 MIPI 摄像头驱动开发的过程&#xff0c;有需要的小伙伴可以参考&#xff1a;Linux RN6752 驱动编写。而我也是第一次琢磨 MIPI 协议&#xff0c;其中有很多不明白的地…

本科毕业生个人简历23篇

刚毕业的本科生如何制作一份令招聘方印象深刻的简历&#xff1f;可以参考以下这23篇精选的本科毕业生应聘简历案例&#xff01;无论您的专业是什么&#xff0c;都能从中汲取灵感&#xff0c;提升简历质量&#xff0c;轻松斩获心仪职位&#xff01;小伙伴们快来看看吧&#xff0…

LeetCode刷题---合并两个有序链表

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏&#xff1a;http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回溯算法&#xff0c;所以下面题目主要也是这些算法做的 我讲述…

3D模型材质编辑

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 如今&#xff0c;3D 纹理、打印和建模都非常流行。使用可用的高级工具&#xff0c;创建 3D 模型…

24双非硕的秋招总结

24 双非硕的秋招总结 结果&#xff1a; 运气捡漏去了腾讯 想想自己整个研究生学习过程&#xff0c;还是挺坎坷的&#xff0c;记录一下&#xff0c;也给未来的同学提供一些参考。 研一 我是研一上开始学前端的&#xff0c;应该是21年10月份左右&#xff0c;我们实验室是专门…

Nacos多数据源插件

Nacos从2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件.本文档详细介绍一个多数据源插件如何实现以及如何使其生效。 注意:…

DOM 事件的传播机制

前端面试大全DOM 事件的传播机制 &#x1f31f;经典真题 &#x1f31f;事件与事件流 事件流 事件冒泡流 事件捕获流 标准 DOM 事件流 &#x1f31f;事件委托 &#x1f31f;真题解答 &#x1f31f;总结 &#x1f31f;经典真题 谈一谈事件委托以及冒泡原理 &#x1f3…

134. 加油站(贪心算法)

根据题解 这道题使用贪心算法&#xff0c;找到当前可解决问题的状态即可 「贪心算法」的问题需要满足的条件&#xff1a; 最优子结构&#xff1a;规模较大的问题的解由规模较小的子问题的解组成&#xff0c;规模较大的问题的解只由其中一个规模较小的子问题的解决定&#xff…

蓝桥第一期模拟总结

文章目录 1.动态的 Tab 栏2.地球漫游3.迷惑的this4.燃烧卡路里5.魔法失灵了6.年龄统计 所有题目链接 1.动态的 Tab 栏 本题要实现一个tab栏固定效果&#xff0c;看见题目就想到css中的 position: fixed; 尝试了很久都没能实现效果&#xff0c;后来又想到了粘性定位 position: …

【深度学习】深度学习框架的环境配置

目录 1. 配置cuda环境 1.1. 安装cuda和cudnn 1.1.1. 显卡驱动配置 1.1.2. 下载安装cuda 1.1.3. 下载cudnn&#xff0c;将解压后文件复制到cuda目录下 1.2. 验证是否安装成功 2. 配置conda环境 2.1. 安装anaconda 2.2. conda换源 2.3. 创建conda环境 2.4. pip换源 3…

封装员工头像组件

创建image-upload组件 <template><el-uploadclass"avatar-uploader"action"":show-file-list"false":before-upload"beforeAvatarUpload"><!-- (自动上传)action是上传地址 --><img v-if"value" :s…

第二次量子化

专栏目录: 高质量文章导航-持续更新中 前置复盘: 玻色子和费米子: 首先,我们希望把描述单粒子态的量子力学推广到全同多粒子体系。我们的做法是从单粒子态的希尔伯特空间(Hilbert Space)出发,构造全同多粒子态的态空间——福克空间(Fock Space),它实际上就是无穷个…

20231202 VCSA 7.0 日志清理及空间扩容

日志清理 ssh 到 VCSA 上&#xff0c;输入 shell 进入控制台 df -lh 查看空间大小&#xff0c;发现 /storage/archive 占据空间比较大&#xff0c;这里应该是备份日志的地方&#xff0c;里边文件不大但很多&#xff0c;查找并删除 30 天以前的日志 cd /storage/archive/vpostgr…

对于Windows就是找不到 环境变量 的解决

我认为将“我的电脑”从桌面上隐藏掉纯粹是傻逼行为 说下解决办法&#xff1a; 1. 找到文件资源管理器&#xff0c; 2. 右键点击“此电脑” -- 选择属性&#xff1a; 3. 进入属性界面&#xff0c;应该进入的是“关于”界面&#xff1a;选择“高级系统设置”&#xff1a; 4. 终…

更有效的问卷发布方法与必备问卷工具推荐

问卷怎么发&#xff1f;通过哪些渠道发&#xff1f;怎么发收集的数量更多&#xff1f;怎么获得有效数据&#xff1f;这些是做问卷的调查人员经常会遇到的问题。的确&#xff0c;问卷的发放是否有效不仅会影响到收集数据的体量&#xff0c;更会影响到最终结论的真实性。所以&…

ssm+vue的罪犯信息管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的罪犯信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

12月02日每日信息差

_灵感 &#x1f396; 六国入境免签首日2029人次享便利 &#x1f384; 国内首个超大规模“光伏气膜”项目在江苏投运 &#x1f30d; 东京将推出氢气交易市场 &#x1f30b; 中国疾控中心&#xff1a;建议尽早接种流感疫苗&#xff0c;尤其是老年人和儿童 &#x1f381; 偏高1.…

CCC联盟数字车钥匙(七)——BLE连接流程

本文接上一篇CCC数字钥匙BLE概述&#xff0c;介绍BLE中相关连接流程的实现。 2、BLE流程 2.1 所有者配对连接建立 CCC中使用Bluetooth OOB&#xff08;Out of Band, 带外&#xff09;配对完成所有者配对、连接建立的流程。BLE设置分为以下两个子部分&#xff1a; BLE链路层连…