基于java,springboot和vue房屋租赁租房销售平台设计

摘要

在现代城市生活中,房屋租赁市场一直是一个活跃且复杂的领域。随着互联网技术的不断发展,基于Spring Boot和Vue的房屋租赁系统应运而生,旨在提供一个高效、方便、可靠的在线服务平台。该系统利用了前后端分离架构的优势,后端以Spring Boot为核心实现业务逻辑处理,并与数据库进行交互;前端则采用Vue.js构建动态用户界面。整合了Spring Security和JWT保证了交易的安全性。整个平台的设计注重提供流畅的用户交互体验和强大的房源管理功能,既满足了房东对房产管理的需求,也为租客寻找理想住所提供了便捷途径。

此房屋租赁系统的设计充分考虑了可维护性和扩展性,采用了模块化的开发方法,允许未来根据市场需求快速添加新功能。系统通过使用MySQL等现代数据库技术,保证了数据的稳定性和可靠性。整体而言,这个基于Spring Boot和Vue的房屋租赁系统为房屋的在线租赁提供了一个简洁而全面的解决方案,它不仅能够适应不断变化的市场需求,还能够保证用户体验的连贯性和系统的响应速度,为房东和租客之间搭建起一个值得信赖的桥梁。

主要技术

后端 JAVA语言、SpringBoot框架、maven依赖管理、mysql数据库等;

前端:Vue等。

主要功能

租房网站页可根据条件筛选房源
后台管理页面
用户登录注册功能
普通用户申请成为房东功能
房东用户上传个人房源功能
管理员通过后台页面管理所有用户账号
管理员审核申请房东身份的记录
管理员审核房东上传的房源信息
房源搜索、展示

部分代码展示

<template><div><!-- 搜索部分 --><div><el-input placeholder="请输入要查询用户的账号" v-model="userInfo.account" class="input-with-select"><!-- 搜索输入框 --><el-select v-model="userInfo.isOwner" slot="prepend" placeholder="请选择" class="el-select"><el-option label="所有用户" value='-1'></el-option><el-option label="普通用户" value='0'></el-option><el-option label="房东用户" value='1'></el-option></el-select><el-button slot="append" icon="el-icon-search" @click='getUserList()'></el-button></el-input></div><!-- 用户列表部分 --><div class="table"><el-table :data="userList" border stripe><el-table-column type="index"></el-table-column><el-table-column label="用户账号" prop="account"></el-table-column><el-table-column label="用户密码" prop="password"></el-table-column><el-table-column label="房东权限" prop="owner"><!-- 作用域插槽 --><template slot-scope="scope"><el-switch v-model="scope.row.owner" @change='changeOwner(scope.row)'></el-switch></template></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-button type="primary" icon="el-icon-edit" size="small" @click="editDialogVisible=true,editUserPwd=scope.row.password,editUserAccount=scope.row.account"></el-button><el-button type="danger" icon="el-icon-delete" size="small" @click='deleteUser(scope.row.account)'></el-button></template></el-table-column></el-table><!-- 修改密码的对话框 --><el-dialog title="修改用户密码" :visible.sync="editDialogVisible"><el-form><el-form-item label="用户账号" :label-width="editWidth"><el-input v-model="editUserAccount" disabled></el-input></el-form-item><el-form-item label="用户密码" :label-width="editWidth"><el-input v-model="editUserPwd" ></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="editUserPwd=editUserAccount">重设密码为账号</el-button><el-button @click="editDialogVisible = false">取 消</el-button><el-button type="primary" @click="editPwd(editUserAccount,editUserPwd)">确 定</el-button></div></el-dialog></div><!-- 分页 --><div><el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="1" :page-size="userInfo.pageSize"layout="total, prev, pager, next, jumper" :total="userCounts" style="padding-left: 30%;"></el-pagination></div></div>
</template><script>export default {created() {this.getUserList();},data() {return {//查询功能所需要的数据userInfo: {isOwner: '-1',account: '',pageStart: 1,pageSize: 8,},userList: [], //用户列表userCounts: 0, //总记录数editUserAccount:'',//存储要修改密码的账号editUserPwd: '', //存储修改用户的新密码editDialogVisible: false, // 显示/隐藏修改窗口flageditWidth:'100px',}},methods: {//获取所有用户async getUserList() {//console.log(this.userInfo.pageSize);const {data: res} = await this.$http.get("/api/getuser", {params: this.userInfo});this.userList = res.userList;this.userCounts = res.userCounts;//console.log(123);},//修改用户房东权限async changeOwner(currentLine) {var formData = new FormData();formData.append('account', currentLine.account);//查找当前用户是否已经进行过申请const {data:res0} = await this.$http.put("/api/findOAByac",formData);if(res0.toString() == "false"){currentLine.account = !currentLine.account;this.$message.error("该用户没有提交申请信息,无法设置为房东!");this.getUserList();return;}//修改申请记录为已经通过this.$http.put("/api/updateOARecord",formData);const {data: res} = await this.$http.put('/api/updateuserowner', formData);if (res != "success") {currentLine.account = !currentLine.account;return this.$message.error("修改权限失败!")}this.$message.success("修改权限成功!");},//页面长度handleSizeChange(newSize) {this.userInfo.pageSize = newSize;this.getUserList();},//分页获取指定页面handleCurrentChange(newPage) {this.userInfo.pageStart = newPage;this.getUserList();},//删除用户操作async deleteUser(account) {const confirRes = await this.$confirm('确认删除该用户?删除后不可恢复', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).catch(err => err)if (confirRes != 'confirm') {//取消return this.$message.info("已取消")}//删除该用户的所有记录let formData = new FormData();formData.append('account', account);const {data: searchRes} = await this.$http.put('/api/submitApply', formData);if(searchRes != "false"){this.$http.delete("/api/deleteRecordByaccount?account="+account);}//删除该用户const {data: res} = await this.$http.delete("/api/deleteuser?account=" + account);if (res != "success") {return this.$message.error("删除失败!");}this.$message.success("删除成功!");this.getUserList();},//修改用户密码async editPwd(account,pwd) {if(pwd==''){this.$message.error("密码不能为空,请重新设置");return false;}var formData = new FormData();formData.append('account',account);formData.append('password',pwd);const {data:res} = await this.$http.put("/api/edituser",formData);if(res != "success"){return this.$message.error("密码修改失败")}this.$message.success("密码修改成功!");this.getUserList();this.editDialogVisible = false;}}}
</script>

演示视频

基于SpringBoot和Vue房屋租赁租房系统设计

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLMChain使用 | RouterChain的使用 - 用本地大模型搭建多Agents

单个本地大模型搭建参考博客 单个Chain&#xff1a;面对一个需求&#xff0c;我们需要创建一个llmchain&#xff0c;设置一个prompt模板&#xff0c;这个chain能够接收一个用户input&#xff0c;并输出一个结果&#xff1b;多个Chain&#xff1a;考虑到同时面对多个需求&#x…

vue保留用户在列表的操作记录, beforeRouteLeave离开当前组件缓存数据即可

最近遇到一个需求,用户在列表页的查询输入框输入条件后,点击查询,然后此时切换菜单,再回到之前的页面,希望能停留在上一次输入的结果上,如下例子,用户管理页面,输入yangfan这个关键词搜索后,结果如下图: 当我此时点击权限管理后,再点击用户管理切回来,结果依旧如上…

【Webpack】处理字体图标和音视频资源

处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库open in new window选择想要的图标添加到购物车&#xff0c;统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体…

用 Python 自动化处理无聊的事情

“编程最棒的部分就是看到机器做一些有用的事情而获得的胜利。用 Python 将无聊的事情自动化将所有编程视为这些小小的胜利&#xff1b;它让无聊变得有趣。” Hilary Mason&#xff0c;数据科学家兼 Fast Forward Labs 创始人 “我很享受打破东西然后把它们重新组合起来的乐趣…

Studio One 6免费下载安装激活教程

一、Studio One 6安装 1.双击Studio One6安装包&#xff08;见文章尾部&#xff09;&#xff0c;如下图&#xff0c;可以切换语言&#xff0c;点击【OK】。 2.根据安装导航&#xff0c;点击【下一步】 3.阅读许可证协议后&#xff0c;点击【我接受】。 4.选择安装位置&#xf…

【C++】STL容器之string(一)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

SQL注入漏洞解析--less-2

首先我们进入第二关 思路&#xff1a; 1.先判断是什么类型的注入 2.根据类型我们在找注入点 步骤&#xff1a; 1.提示我们输入id数字&#xff0c;那我们先输入1猜一下 2.这里正常回显&#xff0c;当我们后边加上时可以看到报错&#xff0c;且报错信息看不到数字&#xff0…

五、使用脚手架

五、使用脚手架 5.1 简单的实现 创建一个 School 组件 <template> <div><h2>学校名称&#xff1a;{{name}}</h2><h2>学校地址&#xff1a;{{address}}</h2> </div> </template><script> export default {name: "S…

想高薪就业鸿蒙HarmonyOS 开发岗位,到底该学习些啥?

鸿蒙是什么&#xff1f; 经过十多年的发展&#xff0c;传统移动互联网的增长红利已渐见顶。万物互联时代正在开启&#xff0c;应用的设备底座将从几十亿手机扩展到数百亿 IoT 设备。GSMA 预测到 2025 年&#xff0c;全球物联网终端连接数量将达 246 亿个&#xff0c;其中消费物…

CSP-J 2023 T3 一元二次方程

文章目录 题目题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 题目传送门题解思路总代码 提交结果尾声 题目 题目背景 众所周知&#xff0c;对一元二次方程 a x 2 b x c 0 , ( a ≠ 0 ) ax ^ 2 bx c 0, (a \neq 0) ax2bxc0,(a0)&#xff0c;可…

React 事件处理 ( this问题 参数传递 ref)

React事件的命名采用小驼峰方式&#xff08;cameCase&#xff09;,而不是小写 使用JSX语法时你需要传入一个函数作为事件处理函数&#xff0c;而不是一个字符串 你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault 1 this 需要谨慎对待JSX回调函数中的…

HubSpot数据驱动的网站优化策略

当涉及到HubSpot数据驱动的网站优化策略时&#xff0c;下面是一些具体且详细的描述&#xff1a; 1. 数据收集与分析&#xff1a; HubSpot提供了一系列数据收集和分析工具&#xff0c;让客户能够深入了解外贸网站的表现。这些工具包括网站分析、访客追踪、转化追踪等。客户可以…