基于SSM的房屋租赁出售网站-JAVA.VUE

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

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

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

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

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

 基于SSM的房屋租赁出售网站-JAVA.VUE_第1张图片

4 系统设计

一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专业。

4.1 设计原则

本系统在设计过程中需要依照一定的设计原则进行,目的就是为了让开发的系统具备高质量,齐全完备的功能,方便简单的操作,如此才可以最大限度的满足使用者的要求。系统设计原则除了基本的易操作原则外,还有安全性原则,准确性原则。

第一个设计原则:易操作原则,针对本系统设计的功能要完备齐全,编码时,设计的各个接口要具备友好性,使用者一旦使用本系统时,要能够轻松上手,操作本系统处理数据时,要具备便利性。此外,也需要设计一些必要提示,引导使用者操作系统。

第二个设计原则:安全性原则,本系统在登录模块要对各个访问者进行身份验证,系统会通过访问者输入的信息进行判断,使用提前编写的安全验证代码进行数据比对,引导匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者窃取系统的数据。

第三个设计原则:准确性原则,为了保证使用者登记的数据是正确的,需要提前设计数据纠错机制,让使用者可以通过系统的报错提示,仔细检查登记的错误信息,并及时纠正错误,填写规范正确的信息。比如设置密码时,要求密码的长度不能低于6个字符,且数据类型要求不能全部是数字等都能进行规范。

4.2 功能结构设计

在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员管理房东与用户,管理房屋出租出售,管理房屋的租赁与购买的订单,管理留言板与轮播图。

基于SSM的房屋租赁出售网站-JAVA.VUE_第2张图片

图4.1 管理员功能结构图

在前面分析的房东功能的基础上,进行接下来的设计工作,最终展示设计的房东结构图(见下图)。房东审核房屋购买订单与租赁订单,管理房屋信息,在线出租或出售房屋。

基于SSM的房屋租赁出售网站-JAVA.VUE_第3张图片

图4.2 房东功能结构图

在前面分析的用户功能的基础上,进行接下来的设计工作,最终展示设计的用户结构图(见下图)。用户查看房屋信息,购买出售的房屋,租赁出租的房屋,收藏房屋信息,管理购买房屋的订单和租赁房屋的订单。

基于SSM的房屋租赁出售网站-JAVA.VUE_第4张图片

图4.3 用户功能结构图

4.3 数据库设计

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

4.3.1 数据库概念设计

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

4.3.2 数据库物理设计

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

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

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

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

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

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

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

表4.1 房东信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangdonghao

varchar(200)

房东号

mima

varchar(200)

密码

fangdongxingming

varchar(200)

NULL

房东姓名

fangdongshouji

varchar(200)

NULL

房东手机

xingbie

varchar(200)

NULL

性别

nianling

int(11)

NULL

年龄

touxiang

varchar(200)

NULL

头像

表4.2 房屋出售信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangwumingcheng

varchar(200)

房屋名称

fangwuleixing

varchar(200)

房屋类型

tupian

varchar(200)

NULL

图片

chengshi

varchar(200)

城市

mianji

varchar(200)

面积

dizhi

varchar(200)

地址

chaoxiang

varchar(200)

NULL

朝向

louceng

varchar(200)

NULL

楼层

louhao

varchar(200)

NULL

楼号

fangwusheshi

longtext

NULL

房屋设施

fangwujieshao

longtext

NULL

房屋介绍

chushoujiage

int(11)

出售价格

fangdonghao

varchar(200)

NULL

房东号

fangdongxingming

varchar(200)

NULL

房东姓名

fangdongshouji

varchar(200)

NULL

房东手机

表4.3 房屋出租信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangwumingcheng

varchar(200)

NULL

房屋名称

fangwuleixing

varchar(200)

NULL

房屋类型

tupian

varchar(200)

NULL

图片

chengshi

varchar(200)

NULL

城市

mianji

varchar(200)

NULL

面积

dizhi

varchar(200)

NULL

地址

chaoxiang

varchar(200)

NULL

朝向

louceng

varchar(200)

NULL

楼层

louhao

varchar(200)

NULL

楼号

fangwusheshi

varchar(200)

NULL

房屋设施

fangwujieshao

longtext

NULL

房屋介绍

chuzujiage

int(11)

出租价格

fangdonghao

varchar(200)

NULL

房东号

fangdongxingming

varchar(200)

NULL

房东姓名

fangdongshouji

varchar(200)

NULL

房东手机

表4.4 房屋类型信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangwuleixing

varchar(200)

房屋类型

表4.5 房屋信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fangwumingcheng

varchar(200)

房屋名称

fangwuleixing

varchar(200)

房屋类型

tupian

varchar(200)

NULL

图片

chengshi

varchar(200)

城市

dizhi

varchar(200)

地址

mianji

varchar(200)

NULL

面积

chaoxiang

varchar(200)

NULL

朝向

louceng

varchar(200)

NULL

楼层

louhao

varchar(200)

NULL

楼号

fangwusheshi

varchar(200)

NULL

房屋设施

fangdonghao

varchar(200)

NULL

房东号

fangdongxingming

varchar(200)

NULL

房东姓名

fangdongshouji

varchar(200)

NULL

房东手机

表4.6 房屋资讯信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

zixunbiaoti

varchar(200)

NULL

资讯标题

fengmiantupian

varchar(200)

NULL

封面图片

zixunneirong

longtext

NULL

资讯内容

fabushijian

date

NULL

发布时间

faburen

varchar(200)

NULL

发布人

wenzhanglaiyuan

varchar(200)

NULL

文章来源

表4.7 购买订单信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

dingdanbianhao

varchar(200)

NULL

订单编号

fangwumingcheng

varchar(200)

NULL

房屋名称

fangwuleixing

varchar(200)

NULL

房屋类型

tupian

varchar(200)

NULL

图片

chengshi

varchar(200)

NULL

城市

mianji

varchar(200)

NULL

面积

dizhi

varchar(200)

NULL

地址

chushoujiage

varchar(200)

NULL

出售价格

fangdonghao

varchar(200)

NULL

房东号

fangdongxingming

varchar(200)

NULL

房东姓名

fangdongshouji

varchar(200)

NULL

房东手机

yonghuming

varchar(200)

NULL

用户名

yonghuxingming

varchar(200)

NULL

用户姓名

yonghushouji

varchar(200)

NULL

用户手机

goumaishijian

date

NULL

购买时间

beizhu

varchar(200)

NULL

备注

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付

表4.8  留言信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

留言人id

username

varchar(200)

NULL

用户名

content

longtext

留言内容

reply

longtext

NULL

回复内容

表4.9 收藏信息表

字段

类型

默认

注释

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.10 管理员信息表

字段

类型

默认

注释

id

bigint(20)

主键

username

varchar(100)

用户名

password

varchar(100)

密码

role

varchar(100)

管理员

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增时间

表4.11 用户信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yonghuming

varchar(200)

用户名

mima

varchar(200)

密码

touxiang

varchar(200)

NULL

头像

yonghuxingming

varchar(200)

用户姓名

nianling

int(11)

NULL

年龄

yonghushouji

varchar(200)

NULL

用户手机

表4.12 租赁订单信息表

字段

类型

默认

注释

id

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

dingdanbianhao

varchar(200)

NULL

订单编号

fangwumingcheng

varchar(200)

NULL

房屋名称

fangwuleixing

varchar(200)

NULL

房屋类型

tupian

varchar(200)

NULL

图片

chuzujiage

varchar(200)

NULL

出租价格

fangdonghao

varchar(200)

NULL

房东号

fangdongxingming

varchar(200)

NULL

房东姓名

fangdongshouji

varchar(200)

NULL

房东手机

yonghuming

varchar(200)

NULL

用户名

yonghuxingming

varchar(200)

NULL

用户姓名

yonghushouji

varchar(200)

NULL

用户手机

beizhu

varchar(200)

NULL

备注

zulinshijianshijian

date

NULL

租赁时间时间

sfsh

varchar(200)

是否审核

shhf

longtext

NULL

审核回复

ispay

varchar(200)

未支付

是否支付


5 系统实现

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

5.1 管理员功能实现

5.1.1 房东管理

管理员进入指定功能操作区之后可以管理房东。其页面见下图。管理员可以增删改查房东信息。

基于SSM的房屋租赁出售网站-JAVA.VUE_第5张图片

图5.1 房东管理页面

5.1.2 房屋信息管理

管理员进入指定功能操作区之后可以管理房屋信息。其页面见下图。管理员管理房东添加的房屋信息,管理员在页面内只能修改,删除,查询房屋信息。

基于SSM的房屋租赁出售网站-JAVA.VUE_第6张图片

图5.2 房屋信息管理页面

5.1.3 房屋资讯管理

管理员进入指定功能操作区之后可以管理房屋资讯。其页面见下图。管理员负责房屋资讯的管理,包括房屋资讯发布,房屋资讯的修改与删除。

基于SSM的房屋租赁出售网站-JAVA.VUE_第7张图片

图5.3 房屋资讯管理页面

5.1.4 用户管理

管理员进入指定功能操作区之后可以管理用户。其页面见下图。本功能就是为了方便管理员增加用户,修改用户,批量删除用户而设置的。

基于SSM的房屋租赁出售网站-JAVA.VUE_第8张图片

图5.4 用户管理页面

5.1.5 留言板管理

管理员进入指定功能操作区之后可以管理留言。其页面见下图。管理员批量删除留言,回答用户的留言。

基于SSM的房屋租赁出售网站-JAVA.VUE_第9张图片

图5.5 留言板管理页面

5.2 房东功能实现

5.2.1 房屋信息管理

房东进入指定功能操作区之后可以管理房屋信息。其页面见下图。房东登记房屋信息,在页面内可以选择出租房屋或者出售房屋。

基于SSM的房屋租赁出售网站-JAVA.VUE_第10张图片

图5.6 房屋信息管理页面

5.2.2 房屋出租管理

房东进入指定功能操作区之后可以管理房屋出租信息。其页面见下图。房东在页面内查询,修改,删除房屋的出租信息。

基于SSM的房屋租赁出售网站-JAVA.VUE_第11张图片

图5.7 房屋出租管理页面

5.2.3 租赁订单管理

房东进入指定功能操作区之后可以管理租赁订单。其页面见下图。房东审核用户租赁房屋的订单,查询租赁订单。

基于SSM的房屋租赁出售网站-JAVA.VUE_第12张图片

图5.8 租赁订单管理页面

5.2.4 购买订单管理

房东进入指定功能操作区之后可以管理购买订单。其页面见下图。房东亲自审核用户购买房屋的订单,查询房屋的购买订单信息。

基于SSM的房屋租赁出售网站-JAVA.VUE_第13张图片

图5.9 购买订单管理页面

5.3 用户功能实现

5.3.1 留言反馈

用户进入指定功能操作区之后可以提交留言。其页面见下图。用户的留言在提交之后,管理员会及时接收并回复。

基于SSM的房屋租赁出售网站-JAVA.VUE_第14张图片

图5.10 留言反馈页面

5.3.2 房屋出售

用户进入指定功能操作区之后可以查看房屋出售信息。其页面见下图。用户可以收藏本页面的房屋信息,也能购买房屋。

基于SSM的房屋租赁出售网站-JAVA.VUE_第15张图片

图5.11 房屋出售页面

5.3.3 房屋出租

用户进入指定功能操作区之后可以查看房屋出租信息。其页面见下图。用户查看出租房屋的介绍信息,可以收藏或租赁房屋。

基于SSM的房屋租赁出售网站-JAVA.VUE_第16张图片

图5.12 房屋出租页面

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().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().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().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 params,UserEntity user){
        EntityWrapper ew = new EntityWrapper();
    	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 ew = new EntityWrapper();
      	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().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().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实战项目持续更新中~

下方有我的微信名片

你可能感兴趣的:(Java实战项目,java,开发语言)