基于springboot的大学生租房平台系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。
🍅文末获取源码联系🍅
🍅文末获取源码联系🍅
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
《课程设计专栏》
《Java专栏》
《Python专栏》
⛺️心若有所向往,何惧道阻且长

在软件开发的学习与实践中,通过参与功能完善的实战项目,能够有效提升技术能力。
推荐采用 SpringBoot+MyBatis+Vue+ElementUI+MySQL 技术栈,该组合适用于课程设计、大作业、毕业设计、项目练习等多种场景,可帮助开发者系统掌握前后端开发流程与数据库设计,快速积累项目经验。

一、运行环境与开发工具​

  1. 运行环境​
    Java:版本需≥8,建议使用 Java JDK 1.8,该版本经过实测运行稳定,其他版本理论上也能兼容。​
    MySQL:版本需≥5.7,5.7 或 8.0 版本均可正常使用。​
    Node.js:版本需≥14,特别提醒,若未学习过 Node.js,不建议尝试该前后端分离项目,以免在搭建和运行过程中遇到困难。​
  2. 开发工具​
    后端:eclipse、idea、myeclipse、sts 等开发工具都可完成配置运行,其中 IDEA 凭借强大的功能和便捷的操作,是推荐使用的开发工具。​
    前端:WebStorm、VSCode、HBuilderX 等工具均适用,可根据个人使用习惯选择。​

二、环境要求​

运行环境:优先选择 Java JDK 1.8,系统在该平台上完成了大量测试,运行稳定性最佳。​
IDE 环境:IDEA、Eclipse、Myeclipse 等均能满足开发需求,IDEA 在智能代码补全、项目管理等方面表现出色,更受开发者青睐。​
硬件环境:Windows 7/8/10 系统,内存 1G 以上即可;Mac OS 系统同样支持。​
数据库:MySql 5.7 或 8.0 版本都能正常使用,可根据实际情况选择。​
项目类型:本项目是 Maven 项目,方便进行项目依赖管理和构建。​

三、技术栈​

后端:基于 SpringBoot 框架进行快速开发,结合 MyBatis 实现数据持久化操作,高效处理业务逻辑与数据库交互。​
前端:采用 Vue 构建用户界面,搭配 ElementUI 组件库,打造美观、易用的交互界面。​

四、功能页面展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、部分代码展示

<template>
  <div class="landlord-manage">
    <!-- 查询条件 -->
    <el-form :inline="true" :model="searchForm" class="search-form">
      <el-form-item label="房东账号">
        <el-input v-model="searchForm.landlordAccount" placeholder="请输入房东账号"></el-input>
      </el-form-item>
      <el-form-item label="房东姓名">
        <el-input v-model="searchForm.landlordName" placeholder="请输入房东姓名"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="handleSearch">查询</el-button>
      </el-form-item>
    </el-form>

    <!-- 操作按钮 -->
    <el-button type="success" @click="dialogVisible = true">新增</el-button>
    <el-button type="danger" @click="handleDelete">删除</el-button>

    <!-- 表格展示 -->
    <el-table :data="tableData" border style="width: 100%" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55"></el-table-column>
      <el-table-column prop="id" label="ID" width="80"></el-table-column>
      <el-table-column prop="landlordAccount" label="房东账号"></el-table-column>
      <el-table-column prop="landlordName" label="房东姓名"></el-table-column>
      <el-table-column prop="gender" label="性别"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="idNumber" label="身份证号"></el-table-column>
      <el-table-column prop="phone" label="联系电话"></el-table-column>
      <el-table-column prop="photo" label="照片">
        <template #default="scope">
          <el-image :src="scope.row.photo" width="80" height="80" fit="cover"></el-image>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="180">
        <template #default="scope">
          <el-button type="primary" icon="el-icon-view" @click="handleDetail(scope.row)"></el-button>
          <el-button type="success" icon="el-icon-edit" @click="handleEdit(scope.row)"></el-button>
          <el-button type="danger" icon="el-icon-delete" @click="handleDeleteOne(scope.row)"></el-button>
        </template>
      </el-table-column>
    </el-table>

    <!-- 分页 -->
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="pageNum"
      :page-sizes="[5, 10, 20, 50]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>

    <!-- 新增/编辑弹窗 -->
    <el-dialog title="房东信息" v-model="dialogVisible" width="600px">
      <el-form :model="form" label-width="120px">
        <el-form-item label="房东账号">
          <el-input v-model="form.landlordAccount"></el-input>
        </el-form-item>
        <el-form-item label="房东姓名">
          <el-input v-model="form.landlordName"></el-input>
        </el-form-item>
        <el-form-item label="性别">
          <el-radio-group v-model="form.gender">
            <el-radio label="男">男</el-radio>
            <el-radio label="女">女</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="年龄">
          <el-input v-model.number="form.age"></el-input>
        </el-form-item>
        <el-form-item label="身份证号">
          <el-input v-model="form.idNumber"></el-input>
        </el-form-item>
        <el-form-item label="联系电话">
          <el-input v-model="form.phone"></el-input>
        </el-form-item>
        <el-form-item label="照片">
          <el-upload
            class="upload-demo"
            :action="uploadUrl"
            :on-preview="handlePreview"
            :on-remove="handleRemove"
            :file-list="fileList"
            list-type="picture">
            <el-button type="primary">点击上传</el-button>
          </el-upload>
        </el-form-item>
      </el-form>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="dialogVisible = false">取消</el-button>
          <el-button type="primary" @click="handleSave">确定</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>

<script>
import {
  saveLandlord,
  deleteLandlord,
  updateLandlord,
  getLandlordById,
  getLandlordList,
  getLandlordPage
} from '@/api/landlord';

export default {
  name: 'LandlordManage',
  data() {
    return {
      searchForm: {
        landlordAccount: '',
        landlordName: ''
      },
      tableData: [],
      dialogVisible: false,
      form: {},
      fileList: [],
      uploadUrl: 'http://localhost:8080/api/upload', // 需后端实现文件上传接口
      selectedRows: [],
      pageNum: 1,
      pageSize: 10,
      total: 0
    };
  },
  created() {
    this.getList();
  },
  methods: {
    // 获取列表(分页)
    async getList() {
      const res = await getLandlordPage(this.pageNum, this.pageSize);
      this.tableData = res.records;
      this.total = res.total;
    },
    // 搜索
    handleSearch() {
      // 可扩展:根据 searchForm 条件调用后端接口查询
      this.getList();
    },
    // 分页 - 每页条数改变
    handleSizeChange(val) {
      this.pageSize = val;
      this.getList();
    },
    // 分页 - 当前页改变
    handleCurrentChange(val) {
      this.pageNum = val;
      this.getList();
    },
    // 多选事件
    handleSelectionChange(val) {
      this
import request from '@/utils/request';

// 新增房东
export function saveLandlord(data) {
  return request({
    url: '/landlord',
    method: 'post',
    data
  });
}

// 删除房东
export function deleteLandlord(id) {
  return request({
    url: `/landlord/${id}`,
    method: 'delete'
  });
}

// 修改房东
export function updateLandlord(data) {
  return request({
    url: '/landlord',
    method: 'put',
    data
  });
}

// 查询单个房东
export function getLandlordById(id) {
  return request({
    url: `/landlord/${id}`,
    method: 'get'
  });
}

// 查询房东列表
export function getLandlordList() {
  return request({
    url: '/landlord',
    method: 'get'
  });
}

// 分页查询
export function getLandlordPage(pageNum, pageSize) {
  return request({
    url: `/landlord/page?pageNum=${pageNum}&pageSize=${pageSize}`,
    method: 'get'
  });
}
package com.example.rentplatformbackend.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.rentplatformbackend.entity.Landlord;
import com.example.rentplatformbackend.service.LandlordService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/api/landlord")
public class LandlordController {

    @Resource
    private LandlordService landlordService;

    // 新增房东
    @PostMapping
    public boolean save(@RequestBody Landlord landlord) {
        return landlordService.save(landlord);
    }

    // 删除房东
    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Long id) {
        return landlordService.removeById(id);
    }

    // 修改房东
    @PutMapping
    public boolean update(@RequestBody Landlord landlord) {
        return landlordService.updateById(landlord);
    }

    // 根据ID查询房东
    @GetMapping("/{id}")
    public Landlord getById(@PathVariable Long id) {
        return landlordService.getById(id);
    }

    // 查询所有房东(可扩展分页)
    @GetMapping
    public List<Landlord> list() {
        return landlordService.list();
    }

    // 分页查询(示例)
    @GetMapping("/page")
    public Page<Landlord> page(@RequestParam Integer pageNum,
                               @RequestParam Integer pageSize) {
        return landlordService.page(new Page<>(pageNum, pageSize));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋野酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值