springboot007大学生租房平台的设计与实现(源码文档)

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

springboot007大学生租房平台的设计与实现录像(含源码文档)

4.2 功能结构设计

在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员管理房东和用户,对房东提交的信息审批信息进行审核,审核房东发布的房源信息。

图4.1 管理员功能结构图

在前面分析的房东功能的基础上,进行接下来的设计工作,最终展示设计的房东结构图(见下图)。房东提交信息审批信息,发布房源信息,审核用户租房订单。

图4.2 房东功能结构图

在前面分析的用户功能的基础上,进行接下来的设计工作,最终展示设计的用户结构图(见下图)。用户收藏房屋,租用房屋,支付租房订单。

图4.3 用户功能结构图

4.3 数据库设计

开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合,存储在一起的这些数据也是按照一定的组织方式进行的。目前,数据库能够服务于多种应用程序,则是源于它存储方式最佳,具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段时间的发展,从最初的不为人知,到现在的人尽皆知,其相关技术也越发成熟,同时也拥有着坚实的理论基础。

4.3.1 数据库概念设计

这部分内容需要借助数据库关系图来完成,也需要使用专门绘制数据库关系图的工具,比如Visio工具就可以设计E-R图(数据库关系图)。设计数据库,也需要按照设计的流程进行,首先还是要根据需求完成实体的确定,分析实体具有的特征,还有对实体间的关联关系进行确定。最后才是使用E-R模型的表示方法,绘制本系统的E-R图。不管是使用亿图软件,还是Visio工具,对于E-R模型的表示符号都一样,通常矩形代表实体,实体间存在的关系用菱形符号表示,实体的属性也就是实体的特征用符号椭圆表示。最后使用直线将矩形,菱形和椭圆等符号连接起来。接下来就开始对本系统的E-R图进行绘制。

  1. 下图为上述各实体间相互之间的关系。

图4.8 实体间关系E-R图

4.3.2 数据库物理设计

本数据库是关系型数据库,因此对二维表的结构设计也比较关键。毕竟二维表格模型就是关系型数据库中的关系模型。而一些常用的关系模型中的概念也需要了解,才可以对关系模型进行设计。下面就简单介绍关系,元组,属性,域,关键字等常用概念的含义。

关系:关系就是数据库中的一张数据表,每张数据表都有命名,也就是每个关系也有名字,那就是数据表名;

元组:元组就是数据表中的一行记录;

属性:属性就是数据表中的字段,也就是数据表中的一列;

域:域就是对数据表中属性的取值进行限定;

关键字:关键字就是数据表中的主键;

在了解了表结构设计的常用概念后,接下来就需要使用前面绘制的E-R模型完成表结构的设计工作,并在数据库中创建数据表,并为各个数据表进行命名。以下就对设计的结果通过表格形式进行展示。

表4.1 订单信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangyuanbianhao

varchar(200)

NULL

房源编号

fangyuanmingcheng

varchar(200)

NULL

房源名称

huxing

varchar(200)

NULL

户型

pingfangshu

varchar(200)

NULL

平方数

weizhi

varchar(200)

NULL

位置

xiangguantupian

varchar(200)

NULL

相关图片

chuzuleixing

varchar(200)

NULL

出租类型

zujin

int(11)

NULL

租金

fangdongzhanghao

varchar(200)

NULL

房东账号

fangdongxingming

varchar(200)

NULL

房东姓名

faburiqi

varchar(200)

NULL

发布日期

lianxidianhua

varchar(200)

NULL

联系电话

gerenzhanghao

varchar(200)

NULL

个人账号

xingming

varchar(200)

NULL

姓名

shenqingriqi

date

NULL

申请日期

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付

表4.2 房东信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangdongzhanghao

varchar(200)

房东账号

mima

varchar(200)

密码

fangdongxingming

varchar(200)

房东姓名

xingbie

varchar(200)

NULL

性别

nianling

int(11)

NULL

年龄

shenfenzhenghaoma

varchar(200)

NULL

身份证号码

lianxidianhua

varchar(200)

NULL

联系电话

xiangpian

varchar(200)

NULL

相片

表4.3 房源信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangyuanbianhao

varchar(200)

房源编号

fangyuanmingcheng

varchar(200)

房源名称

huxing

varchar(200)

NULL

户型

pingfangshu

varchar(200)

NULL

平方数

weizhi

varchar(200)

NULL

位置

jianjie

longtext

NULL

简介

xiangguantupian

varchar(200)

NULL

相关图片

chuzuleixing

varchar(200)

NULL

出租类型

zujin

int(11)

NULL

租金

zhuangxiuqingkuang

varchar(200)

NULL

装修情况

qitaxinxi

longtext

NULL

其它信息

fangdongzhanghao

varchar(200)

NULL

房东账号

fangdongxingming

varchar(200)

NULL

房东姓名

lianxidianhua

varchar(200)

NULL

联系电话

faburiqi

date

NULL

发布日期

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

表4.4 收藏信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

用户id

refid

bigint(20)

NULL

收藏id

tablename

varchar(200)

NULL

表名

name

varchar(200)

收藏名称

picture

varchar(200)

收藏图片

表4.5 管理员信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

username

varchar(100)

用户名

password

varchar(100)

密码

role

varchar(100)

管理员

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增时间

表4.6 信息审批信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangdongzhanghao

varchar(200)

NULL

房东账号

fangdongxingming

varchar(200)

NULL

房东姓名

shenfenzhenghaoma

varchar(200)

NULL

身份证号码

lianxidianhua

varchar(200)

NULL

联系电话

fangchanzheng

varchar(200)

NULL

房产证

shenfenzheng

varchar(200)

NULL

身份证

shenqingriqi

date

NULL

申请日期

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

表4.7 用户信息表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

gerenzhanghao

varchar(200)

个人账号

mima

varchar(200)

密码

xingming

varchar(200)

姓名

xingbie

varchar(200)

NULL

性别

nianling

int(11)

NULL

年龄

shenfenzhenghaoma

varchar(200)

NULL

身份证号码

shoujihaoma

varchar(200)

NULL

手机号码

xiangpian

varchar(200)

NULL

相片


5 系统实现

进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于一些不合理的设计需求,也是可以及时发现。因为设计的方案是完全指导系统的编码过程的。

5.1 管理员功能实现

5.1.1 房东管理

管理员进入指定功能操作区之后可以管理房东。其页面见下图。房东的资料需要管理员负责管理,包括修改,新增,删除等操作。

图5.1 房东管理页面

5.1.2 信息审批管理

管理员进入指定功能操作区之后可以管理信息审批信息。其页面见下图。房东上传房产证和身份证信息,管理员查看后进行审批,审批通过之后,房东才可以发布房源信息。

图5.2 信息审批管理页面

5.1.3 房源信息管理

管理员进入指定功能操作区之后可以管理房源信息。其页面见下图。房东发布的房源信息需要先通过管理员的审核,然后才能展示在前台进行出租。

图5.3 房源信息管理页面

5.2 房东功能实现

5.2.1 信息审批管理

房东进入指定功能操作区之后可以管理信息审批信息。其页面见下图。房东查看信息审批信息是否通过审核,只有通过审核之后,房东才可以发布房源信息。

图5.4 信息审批管理页面

5.2.2 房源信息管理

房东进入指定功能操作区之后可以管理房源信息。其页面见下图。房东发布的房源信息在进行正式出租前,也需要通过管理员的审核。

图5.5 房源信息管理页面

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.FangyuanxinxiEntity;
import com.entity.view.FangyuanxinxiView;

import com.service.FangyuanxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 房源信息
 * 后端接口
 * @author 
 * @email 
 * @date 2021-04-22 15:05:37
 */
@RestController
@RequestMapping("/fangyuanxinxi")
public class FangyuanxinxiController {
    @Autowired
    private FangyuanxinxiService fangyuanxinxiService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,FangyuanxinxiEntity fangyuanxinxi,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("fangdong")) {
			fangyuanxinxi.setFangdongzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<FangyuanxinxiEntity> ew = new EntityWrapper<FangyuanxinxiEntity>();
		PageUtils page = fangyuanxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangyuanxinxi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,FangyuanxinxiEntity fangyuanxinxi, 
		HttpServletRequest request){
        EntityWrapper<FangyuanxinxiEntity> ew = new EntityWrapper<FangyuanxinxiEntity>();
		PageUtils page = fangyuanxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangyuanxinxi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( FangyuanxinxiEntity fangyuanxinxi){
       	EntityWrapper<FangyuanxinxiEntity> ew = new EntityWrapper<FangyuanxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( fangyuanxinxi, "fangyuanxinxi")); 
        return R.ok().put("data", fangyuanxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(FangyuanxinxiEntity fangyuanxinxi){
        EntityWrapper< FangyuanxinxiEntity> ew = new EntityWrapper< FangyuanxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( fangyuanxinxi, "fangyuanxinxi")); 
		FangyuanxinxiView fangyuanxinxiView =  fangyuanxinxiService.selectView(ew);
		return R.ok("查询房源信息成功").put("data", fangyuanxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        FangyuanxinxiEntity fangyuanxinxi = fangyuanxinxiService.selectById(id);
        return R.ok().put("data", fangyuanxinxi);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        FangyuanxinxiEntity fangyuanxinxi = fangyuanxinxiService.selectById(id);
        return R.ok().put("data", fangyuanxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody FangyuanxinxiEntity fangyuanxinxi, HttpServletRequest request){
    	fangyuanxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fangyuanxinxi);
        fangyuanxinxiService.insert(fangyuanxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
	@IgnoreAuth
    @RequestMapping("/add")
    public R add(@RequestBody FangyuanxinxiEntity fangyuanxinxi, HttpServletRequest request){
    	fangyuanxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fangyuanxinxi);
        fangyuanxinxiService.insert(fangyuanxinxi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody FangyuanxinxiEntity fangyuanxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(fangyuanxinxi);
        fangyuanxinxiService.updateById(fangyuanxinxi);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        fangyuanxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<FangyuanxinxiEntity> wrapper = new EntityWrapper<FangyuanxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("fangdong")) {
			wrapper.eq("fangdongzhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = fangyuanxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

5.2.3 订单信息管理

房东进入指定功能操作区之后可以管理订单信息。其页面见下图。用户租房后,房东需要查看用户是否支付,而且还要审核用户的租房订单。

图5.6 订单信息管理页面

5.3 用户功能实现

5.3.1 房源信息

用户进入前台之后可以查看房源信息。其页面见下图。本页面显示所有要出租的房源信息,用户可以根据房源名称,户型,出租类型等字段查询所需房源信息。

图5.7 房源信息页面

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者