基于Java+SpringBoot+vue+element实现前后端分离房屋租赁系统详细设计

Posted java李杨勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Java+SpringBoot+vue+element实现前后端分离房屋租赁系统详细设计相关的知识,希望对你有一定的参考价值。

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

公众号:java李杨勇   简历模板、学习资料、面试题库等都给你💪

🍅文末获取源码联系🍅

🍅CSDN官方推荐10W+JAVA技术人文章发布打卡社区🍅

前言介绍:

       2021年处于信息科技高速发展的大背景之下。在今天,缺少手机和电脑几乎已经成为不可能的事情,人们生活中已经难以离开手机和电脑。针对增加的成本管理和操作,各大商家非常必要建立自己的网上房屋租赁平台系统,这既可以让更多的人体验到网络所带来的方便,也有助于提高房屋的租赁。在经过几十年的高速发展后,互联网已成为最流行、最普及的媒体,每天的信息流量甚至能比得上过去十年。其以便捷的信息交换、快速的沟通速度,悄然地改变着会员的消费方式。简单、快捷、成本较低是互联网的特点,在互联网中,买家卖家不需要谋面也可以进行各种各样的交易活动,互联网商业化已经是当代经济的新趋势。 “电子商务”(电子商务或电子商务)的概念是在1996年前后在美国学术界提出的。经过数十年的经营,这个概念已经被广泛接受。B2B、C2C、C2B和B2C是电子商务的四类型型,但目前占据主流的是B2B和B2C两种。其中面向商家的管理模式称为B2B,它对商务系统的性能、安全和服务质量都要求十分严格;而直接面向消费者的模式称为B2C,也是我们所普遍接触的。到目前为止,电子商务的发展经历十余年仍然活力十足,电商应用就像雨后春笋一样冒出。

        我国已经成为世界第二大经济体,经济实力高速发展以及百姓生活水平的普遍提高,因此对房屋租赁也提出了更加严格的要求,如管理更加妥当、服务更加舒适等。而现在我们所能看到的房屋租赁数量也越来越多,信息量巨大,房屋租赁平台系统快速发展使得管理成本不断扩大。然而,传统的手工统计方式有许多缺点:实际时间差异、超负荷、高成本和信息0共享。而在网上房屋租赁平台系统正是当下各大商家为了适应时代发展所推出的互联网服务,以其方便高效的服务,在降低工作人员的劳动强度,也减少了很多繁琐事情

        本文所设计的在线房屋租赁平台系统就是在这种客观条件下进行的,是一项利民利国的、非常有价值的工作。在房屋租赁平台系统管理方面,传统的管理方式显然无法与在线房屋租赁平台系统相比,在线房屋租赁平台系统正发挥着越来越重要的作用。在线房屋租赁平台系统的速度快、信息量大、安全、简单都是传统模式难以企及的优点,正在发挥着越来越重要的作用。在本文中的在线房屋租赁平台系统是一个基于mysql数据库和Java语言的。

功能设计:

主要功能实现首页、个人中心、房屋类型管理、房屋租赁管理、会员管理、订单信息管理、合同信息管理、退房评价管理、管理员管理,系统管理等基本功能

系统结构设计: 整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计

本房屋租赁平台系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要会员能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图所示: 

功能截图:

系统首页:在系统首页可以查看首页、房屋租赁、公告信息、个人中心、后台管理、客服中心等内容

房租租赁:房屋租赁页面通过填写房屋名称、类型、图片、城市、地区、位置、朝向、楼层、楼号、设施、租金、押金、点击次数等信息进行提交

租赁详情:

公告信息:

个人中心:

客服管理:

订单信息:

合同信息:

后台管理员:管理员登录进入房屋租赁平台系统可以查看首页、个人中心、房屋类型管理、房屋租赁管理、会员管理、订单信息管理、合同信息管理、退房评价管理、管理员管理,系统管理等信息

房屋类型:房屋类型管理页面中可以通过填写类型等内容进行修改

房屋租赁:

会员管理:会员管理页面中可以查看用户名、密码、姓名、性别、头像、手机、邮箱、身份证等信息,并可根据需要对已有会员管理进行修改或删除等操作

订单管理:订单信息管理,在订单信息管理页面中可以查看订单编号、房屋名称、类型、图片、位置、朝向、楼层、楼号、租金、押金、总价格、租房日期、租房时长、信息备注、用户名、姓名、手机、身份证等信息,并可根据需要对已有订单信息管理进行修改或删除等详细操作


合同管理:合同信息管理,在合同信息管理页面中可以查看合同编号、房屋名称、类型、图片、位置、楼号、租金、押金、租房日期、租房时长、合同日期、用户名、姓名、手机、身份证等内容,并且根据需要对已有合同信息管理进行详情,修改或删除等详细操作

系统资讯:


客服轮播图等

数据设计:

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

表4-1 allusers表

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

 default NULL

pwd

varchar

50

 default NULL

cx

varchar

50

 default NULL

表4-2dingdanxinxi

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

dingdanbianhao

varchar

50

default NULL

fangwumingcheng

varchar

50

default NULL

leixing

varchar

50

default NULL

tupian

varchar

50

default NULL

weizhi

varchar

50

default NULL

chaoxiang

varchar

50

default NULL

louceng

varchar

50

default NULL

louhao

varchar

50

default NULL

zujin

varchar

50

default NULL

yajin

varchar

50

default NULL

zongjiage

varchar

50

default NULL

zufangriqi

varchar

50

default NULL

zufangshizhang

varchar

50

default NULL

xinxibeizhu

varchar

50

default NULL

yonghuming

varchar

50

default NULL

xingming

varchar

50

default NULL

shouji

varchar

50

default NULL

shenfenzheng

varchar

50

default NULL

sfsh

varchar

50

default NULL

shhf

varchar

50

default NULL

表4-3fangwuleixing

列名

数据类型

长度

约束

id

 int

11

NOT NULL

addtime

varchar

50

default NULL

leixing

varchar

50

default NULL

表4-4huiyuan

列名

数据类型

长度

约束

id

 int

11

NOT NULL

addtime

varchar

50

default NULL

yonghuming

varchar

50

default NULL

mima

varchar

50

default NULL

xingming

varchar

50

default NULL

xingbie

varchar

50

default NULL

touxiang

varchar

50

default NULL

shouji

varchar

50

default NULL

youxiang

varchar

50

default NULL

shenfenzheng

varchar

50

default NULL

代码实现:


/**
 * 房屋租赁
 * 后端接口
 * @author 
 * @email 
 * @date 2022-01-30 08:44:55
 */
@RestController
@RequestMapping("/fangwuzulin")
public class FangwuzulinController 
    @Autowired
    private FangwuzulinService fangwuzulinService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,FangwuzulinEntity fangwuzulin, HttpServletRequest request)

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

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( FangwuzulinEntity fangwuzulin)
       	EntityWrapper<FangwuzulinEntity> ew = new EntityWrapper<FangwuzulinEntity>();
      	ew.allEq(MPUtil.allEQMapPre( fangwuzulin, "fangwuzulin")); 
        return R.ok().put("data", fangwuzulinService.selectListView(ew));
    

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(FangwuzulinEntity fangwuzulin)
        EntityWrapper< FangwuzulinEntity> ew = new EntityWrapper< FangwuzulinEntity>();
 		ew.allEq(MPUtil.allEQMapPre( fangwuzulin, "fangwuzulin")); 
		FangwuzulinView fangwuzulinView =  fangwuzulinService.selectView(ew);
		return R.ok("查询房屋租赁成功").put("data", fangwuzulinView);
    
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/id")
    public R info(@PathVariable("id") Long id)
        FangwuzulinEntity fangwuzulin = fangwuzulinService.selectById(id);
		fangwuzulin.setClicknum(fangwuzulin.getClicknum()+1);
		fangwuzulin.setClicktime(new Date());
		fangwuzulinService.updateById(fangwuzulin);
        return R.ok().put("data", fangwuzulin);
    

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/id")
    public R detail(@PathVariable("id") Long id)
        FangwuzulinEntity fangwuzulin = fangwuzulinService.selectById(id);
		fangwuzulin.setClicknum(fangwuzulin.getClicknum()+1);
		fangwuzulin.setClicktime(new Date());
		fangwuzulinService.updateById(fangwuzulin);
        return R.ok().put("data", fangwuzulin);
    
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody FangwuzulinEntity fangwuzulin, HttpServletRequest request)
    	fangwuzulin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fangwuzulin);

        fangwuzulinService.insert(fangwuzulin);
        return R.ok();
    
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody FangwuzulinEntity fangwuzulin, HttpServletRequest request)
    	fangwuzulin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fangwuzulin);

        fangwuzulinService.insert(fangwuzulin);
        return R.ok();
    

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody FangwuzulinEntity fangwuzulin, HttpServletRequest request)
        //ValidatorUtils.validateEntity(fangwuzulin);
        fangwuzulinService.updateById(fangwuzulin);//全部更新
        return R.ok();
    
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids)
        fangwuzulinService.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<FangwuzulinEntity> wrapper = new EntityWrapper<FangwuzulinEntity>();
		if(map.get("remindstart")!=null) 
			wrapper.ge(columnName, map.get("remindstart"));
		
		if(map.get("remindend")!=null) 
			wrapper.le(columnName, map.get("remindend"));
		


		int count = fangwuzulinService.selectCount(wrapper);
		return R.ok().put("count", count);
	
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,FangwuzulinEntity fangwuzulin, HttpServletRequest request,String pre)
        EntityWrapper<FangwuzulinEntity> ew = new EntityWrapper<FangwuzulinEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) 
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) 
				newMap.put(pre + newKey, entry.getValue());
			 else if (StringUtils.isEmpty(pre)) 
				newMap.put(newKey, entry.getValue());
			 else 
				newMap.put(pre + "." + newKey, entry.getValue());
			
		
		params.put("sort", "clicknum");
        
        params.put("order", "desc");
		PageUtils page = fangwuzulinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fangwuzulin), params), params));
        return R.ok().put("data", page);
    



论文参考:

第1章 绪   

1.1课题背景

1.2 课题意义

1.3 开发工具及技术

1.4 国内外现状

第2章 系统分析

2.1 可行性分析

2.2总体设计原则

2.3系统需求分析

2.4 业务流程分析

2.5 数据流图

第3章 系统设计

3.1 系统功能设计

3.2 数据库设计

第4章 系统实现

4.1前台首页功能模块

4.2管理员功能模块

4.3会员功能模块

第5章 软件测试

5.1软件测试的重要性

5.2测试实例的研究与选择

5.3测试环境与测试条件

5.4系统运行情况

5.5系统评价

6 总结

参考文献:

致谢

获取源码:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

打卡 文章 更新 251/  365天

 精彩专栏推荐订阅下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例《100套》

web前端期末大作业网页实战《100套》

以上是关于基于Java+SpringBoot+vue+element实现前后端分离房屋租赁系统详细设计的主要内容,如果未能解决你的问题,请参考以下文章

Vue项目安装流程(vue+ele+mongodb+axios)

Java+MySQL 基于Springboot+vue的旧物置换网站#毕业设计

Java+MySQL 基于Springboot+vue的疫情网课管理系统#毕业设计

Java+MySQL基于Springboot+vue的酒店民宿管理系统前后台#毕业设计

计算机毕业设计之java+springboot基于vue的学习平台

java基于springboot+vue的汉服交流网站