基于SSM的小型房屋租赁系统-老师满意

本文详细描述了一个小型房屋租赁系统的架构,包括系统功能模块划分(管理员、房东和租户)、数据库设计(E-R模型和数据表)、以及Java、小程序和Python项目的实战部分。介绍了系统登录、注册和主要操作流程,以及后台管理员的功能权限。
摘要由CSDN通过智能技术生成

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

 

4  系统的设计

4.1 系统总功能模块设计

小型房屋租赁系统分三大部分,即管理员管理、房东管理和租户管理。系统按照用户的实际需求开发而来,贴近生活。从管理员出拿到分配好的账号密码可以进入系统,使用相关的系统应用,管理员权限最大,紧接的是房东和租户。管理员总体负责整体系统的运行维护,统筹协调。

系统整体模块设计:系统分为管理员、房东和租户三大用户角色,系统管理员有最大的权限,整体功能展示如图4-1所示。

图4-1 系统整体功能图

4.2 系统数据库设计

4.2.1 数据库系统概要设计

从设计到制作研发一个系统,需要用到的技术很多,对于开发程序语言、数据库和框架布局都有严格的要求[5]。该系统数据存放使用MySql的数据库,该数据库轻便快速,日常使使用系统十分稳定,更容易维护运行[6]。

4.2.2 E-R模型结构设计

E-R图由实体与有关实体关联相结合构成的图,利用E-R图对清楚地表达出系统内的实体之间的关联。在系统中对一些主要的几个关键实体如下图。

4.3数据表设计

系统创建数据库和表之间关联,期间花费了不少时间,尽力把表格完善,更好的呈现出来,让表更加明了,更加清晰。系统在MySql的可视化软件Navicat premium创建的数据表,简洁明了的设计让数据库的创建操作更加快捷,数据表的详情情况如下表所示。

表4-1:房源信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangyuanmingcheng

varchar

200

房源名称

dizhi

varchar

200

地址

fangyuanchengshi

varchar

200

房源城市

shifouzhuangxiu

varchar

200

是否装修

mianji

varchar

200

面积/㎡

yuezu

float

月租/元

yajin

float

押金/元

chaoxiang

varchar

200

朝向

fengmian

longtext

4294967295

封面

fangyuanleixing

varchar

200

房源类型

fangdongzhanghao

varchar

200

房东账号

fangdongxingming

varchar

200

房东姓名

lianxidianhua

varchar

200

联系电话

peitaoxiangqing

longtext

4294967295

配套详情

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

clicktime

datetime

最近点击时间

clicknum

int

点击次数

0

表4-2:预定房子

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangyuanmingcheng

varchar

200

房源名称

dizhi

varchar

200

地址

fangyuanleixing

varchar

200

房源类型

fangyuanchengshi

varchar

200

房源城市

fengmian

longtext

4294967295

封面

mianji

varchar

200

面积/㎡

yajin

float

押金/元

yuezu

varchar

200

月租/元

fangdongzhanghao

varchar

200

房东账号

fangdongxingming

varchar

200

房东姓名

zuhuzhanghao

varchar

200

租户账号

zuhuxingming

varchar

200

租户姓名

shouji

varchar

200

手机

yudingshijian

datetime

预定时间

表4-3:退租信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangyuanmingcheng

varchar

200

房源名称

dizhi

varchar

200

地址

fangyuanleixing

varchar

200

房源类型

fangyuanchengshi

varchar

200

房源城市

fengmian

longtext

4294967295

封面

mianji

varchar

200

面积/㎡

fangdongzhanghao

varchar

200

房东账号

fangdongxingming

varchar

200

房东姓名

zuhuzhanghao

varchar

200

租户账号

zuhuxingming

varchar

200

租户姓名

shouji

varchar

200

手机

yajin

float

押金

tuizushijian

datetime

退租时间

qingkuangshuoming

longtext

4294967295

情况说明

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-4:房源信息评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

longtext

4294967295

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-5:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-6:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-7:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-8:关于我们

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

subtitle

varchar

200

副标题

content

longtext

4294967295

内容

picture1

longtext

4294967295

图片1

picture2

longtext

4294967295

图片2

picture3

longtext

4294967295

图片3

表4-9:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

4294967295

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

表4-10:系统公告

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表4-11:合同信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangyuanmingcheng

varchar

200

房源名称

dizhi

varchar

200

地址

fangyuanleixing

varchar

200

房源类型

fangyuanchengshi

varchar

200

房源城市

fengmian

longtext

4294967295

封面

mianji

varchar

200

面积/㎡

yuezu

float

月租/元

zuqi

int

租期/月

yajin

float

押金/元

zongjine

float

总金额/元

fangdongzhanghao

varchar

200

房东账号

fangdongxingming

varchar

200

房东姓名

zuhuzhanghao

varchar

200

租户账号

zuhuxingming

varchar

200

租户姓名

shouji

varchar

200

手机

qiandingshijian

datetime

签订时间

hetongxinxi

longtext

4294967295

合同信息

qixiaoshijian

date

起效时间

jiezhishijian

date

截止时间

ispay

varchar

200

是否支付

未支付

表4-12:交流论坛

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

帖子标题

content

longtext

4294967295

帖子内容

parentid

bigint

父节点id

userid

bigint

用户id

username

varchar

200

用户名

avatarurl

longtext

4294967295

头像

isdone

varchar

200

状态

表4-13:房源类型

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangyuanleixing

varchar

200

房源类型

表4-14:房源城市

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangyuanchengshi

varchar

200

房源城市

表4-15:租户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zuhuzhanghao

varchar

200

租户账号

mima

varchar

200

密码

zuhuxingming

varchar

200

租户姓名

xingbie

varchar

200

性别

shouji

varchar

200

手机

shenfenzheng

varchar

200

身份证

touxiang

longtext

4294967295

头像

表4-16:房东

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fangdongzhanghao

varchar

200

房东账号

fangdongxingming

varchar

200

房东姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

shenfenzhenghao

varchar

200

身份证号

lianxidianhua

varchar

200

联系电话

5  系统的实现

5.1系统功能实现

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到小型房屋租赁系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示:

图5-1 系统首页界面

系统注册:在注册页面的输入栏中输入用户注册信息进行注册操作,房东注册页面如图5-2所示:

图5-2房东注册页面

系统登录:在系统登录页面的输入栏中输入账号和密码进行登录;系统登录页面如图5-3所示:

图5-3系统登录页面

房源信息:在房源信息页面通过输入是否装修、月租/元、房源类型和联系电话进行搜索,并根据需要对房源信息详情信息进行预定、收藏或评论操作;房源信息详情页面如图5-4所示:

图5-4房源信息详情页面

个人中心:在个人中心页面通过填写个人详情信息进行信息更新操作,还可以对我的发布和我的收藏进行详情操作;如图5-5所示:

图5-5个人中心界面

5.2后台模块实现

后台用户登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-6所示。                               

图5-6 后台登录界面

5.2.1管理员模块实现

管理员进入主页面,主要功能包括对个人中心、房东管理、租户管理、房源城市管理、房源类型管理、房源信息管理、预定房子管理、合同信息管理、退租信息管理、交流论坛、系统管理等进行操作。管理员主界面如图5-7所示:

图5-7 管理员主界面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~

👇下方有我的微信名片👇

  • 38
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值