Java源码程序设计-房屋出租管理系统设计与实现
创始人
2024-05-24 13:52:52
0

    • 摘 要
    • 系统设计
    • 系统实现
    • 开发环境

摘 要

随着我国市场经济的快速发展和人们生活水平的不断提高,简单的房屋出租服务已经不能满足人们的需求。如何利用先进的管理手段,提高房屋出租的管理水平,是当今社会所面临的一个重要课题。

本文采用结构化分析的方法,详细阐述了一个功能比较强大的中信房屋出租管理系统的前后台开发、操作流程和涉及的一些关键技术。首先进行了可行性分析,然后是系统分析,通过实际的业务流程调研,分析业务流程和系统的组织结构,完成了数据流分析和数据字典;然后是系统设计阶段主要完成了功能模块的划分、阐述了系统设计的思想、数据库的设计和系统设计的工具及技术。该阶段对本系统各个模块的功能进行了详细设计,形成了本系统的功能模块图;数据库设计时先进行了概念结构设计,然后进行了逻辑结构设计,最后完成了数据表的设计。

目前在本课题范围内,分析了房屋出租管理人员对房屋的管理现状和现有的用户对房屋管理人员的服务的要求。针对两者的要求,设计了一套基于SpringMVC的公寓出租管理系统。本系统的集成开发环境是Eclipse,使用MySQL作为数据库管理系统,Web服务器采用Tomcat,运用SpringMVC及Spring3.0框架技术实现。为了充分利用网络信息化的优势,本系统采用B/S结构。系统具有专门的供用户使用的前台和专门供公寓出租管理人员使用的后台。

在房屋出租管理系统的实现下,网站管理人员能够充分发挥信息化处理的优势,提高日常管理的处理速率。用户一方可以更好的享受信息化处理带来的便利。系统运行能够稳定且高效。并且人机友好程度能够显著提升。

关键词:公寓出租管理,SpringMVC,B/S

系统设计

img

系统实现

核心功能实现

在房屋出租管理系统中,核心业务用例的实现效果如下所示。受篇幅所限,将只会显示和租赁、房屋管理相关的三个模块核心功能。

(1) 用户对房屋租赁模块实现

用户对房屋进行租赁操作,采用 Ajax发送异步请求将租赁信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行插入并返回结果。

image-20230209101505543

(2) 房屋管理员对房屋管理功能模块

房屋管理人员对房屋的基本信息进行增删改查操作,采用Ajax发送异步请求将房屋信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行更改并返回结果。image-20230209101618919

(3) 房屋管理人员对租赁订单管理功能模块

房屋管理人员对用户前台下的订单信息进行增删改查操作,采用Ajax发送异步请求将租赁信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行更改并返回结果。

image-20230209101739226

@RequestMapping(value="/book_order",method=RequestMethod.POST)@ResponseBodypublic Map bookOrderAct(BookOrder bookOrder,HttpServletRequest request){Map ret = new HashMap();if(bookOrder == null){ret.put("type", "error");ret.put("msg", "请填写正确的出租订单信息!");return ret;}Account account = (Account)request.getSession().getAttribute("account");if(account == null){ret.put("type", "error");ret.put("msg", "客户不能为空!");return ret;}bookOrder.setAccountId(account.getId());if(bookOrder.getRoomTypeId() == null){ret.put("type", "error");ret.put("msg", "房屋不能为空!");return ret;}if(StringUtils.isEmpty(bookOrder.getName())){ret.put("type", "error");ret.put("msg", "出租订单联系人名称不能为空!");return ret;}if(StringUtils.isEmpty(bookOrder.getMobile())){ret.put("type", "error");ret.put("msg", "出租订单联系人手机号不能为空!");return ret;}if(StringUtils.isEmpty(bookOrder.getIdCard())){ret.put("type", "error");ret.put("msg", "联系人身份证号不能为空!");return ret;}
//		if(StringUtils.isEmpty(bookOrder.getArriveDate())){
//			ret.put("type", "error");
//			ret.put("msg", "租赁时间不能为空!");
//			return ret;
//		}
//		if(StringUtils.isEmpty(bookOrder.getLeaveDate())){
//			ret.put("type", "error");
//			ret.put("msg", "结算时间不能为空!");
//			return ret;
//		}bookOrder.setCreateTime(new Date());bookOrder.setStatus(0);if(bookOrderService.add(bookOrder) <= 0){ret.put("type", "error");ret.put("msg", "添加失败,请联系管理员!");return ret;}RoomType roomType = roomTypeService.find(bookOrder.getRoomTypeId());//出租成功后去修改该房屋的出租数if(roomType != null){roomType.setBookNum(roomType.getBookNum() + 1);roomType.setAvilableNum(roomType.getAvilableNum() - 1);roomTypeService.updateNum(roomType);//如果可用的房间数为0,则设置该房屋状态已租赁if(roomType.getAvilableNum() == 0){roomType.setStatus(0);roomTypeService.edit(roomType);}}ret.put("type", "success");ret.put("msg", "出租成功!");return ret;}
@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Map add(RoomType roomType){Map ret = new HashMap();if(roomType == null){ret.put("type", "error");ret.put("msg", "请填写正确的房屋类型信息!");return ret;}if(StringUtils.isEmpty(roomType.getName())){ret.put("type", "error");ret.put("msg", "房屋类型名称不能为空!");return ret;}roomType.setAvilableNum(roomType.getRoomNum());//默认房屋数等于可用房屋数roomType.setBookNum(0);//设置租赁数0roomType.setLivedNum(0);//设置已租赁数0if(roomTypeService.add(roomType) <= 0){ret.put("type", "error");ret.put("msg", "添加失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "添加成功!");return ret;}/*** 房屋类型信息编辑操作* @param roomType* @return*/@RequestMapping(value="/edit",method=RequestMethod.POST)@ResponseBodypublic Map edit(RoomType roomType){Map ret = new HashMap();if(roomType == null){ret.put("type", "error");ret.put("msg", "请填写正确的房屋类型信息!");return ret;}if(StringUtils.isEmpty(roomType.getName())){ret.put("type", "error");ret.put("msg", "房屋类型名称不能为空!");return ret;}RoomType existRoomType = roomTypeService.find(roomType.getId());if(existRoomType == null){ret.put("type", "error");ret.put("msg", "未找到该数据!");return ret;}int offset = roomType.getRoomNum() - existRoomType.getRoomNum();roomType.setAvilableNum(existRoomType.getAvilableNum() + offset);if(roomType.getAvilableNum() <= 0){roomType.setAvilableNum(0);//没有可用房屋roomType.setStatus(0);//房型已满if(roomType.getAvilableNum() + existRoomType.getLivedNum() + existRoomType.getBookNum() > roomType.getRoomNum()){ret.put("type", "error");ret.put("msg", "房屋数设置不合理!");return ret;}}if(roomTypeService.edit(roomType) <= 0){ret.put("type", "error");ret.put("msg", "修改失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "修改成功!");return ret;}

开发环境

开发工具:idea、Navicat

数据库:MySQL8.0

环境配置:jdk1.8 、Tomcat8.5

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...