技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。
🍅文末获取源码联系🍅
🍅文末获取源码联系🍅
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
《课程设计专栏》
《Java专栏》
《Python专栏》
⛺️心若有所向往,何惧道阻且长
在软件开发的学习与实践中,通过参与功能完善的实战项目,能够有效提升技术能力。
推荐采用 SpringBoot+MyBatis+Vue+ElementUI+MySQL 技术栈,该组合适用于课程设计、大作业、毕业设计、项目练习等多种场景,可帮助开发者系统掌握前后端开发流程与数据库设计,快速积累项目经验。
一、运行环境与开发工具
- 运行环境
Java:版本需≥8,建议使用 Java JDK 1.8,该版本经过实测运行稳定,其他版本理论上也能兼容。
MySQL:版本需≥5.7,5.7 或 8.0 版本均可正常使用。
Node.js:版本需≥14,特别提醒,若未学习过 Node.js,不建议尝试该前后端分离项目,以免在搭建和运行过程中遇到困难。 - 开发工具
后端: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));
}
}