Java源码程序设计-房屋出租管理系统设计与实现

简介: Java源码程序设计-房屋出租管理系统设计与实现

摘 要

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

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

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

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

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


系统设计


系统实现

核心功能实现

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

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

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

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

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

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

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

@RequestMapping(value="/book_order",method=RequestMethod.POST)
  @ResponseBody
  public Map<String,String> bookOrderAct(BookOrder bookOrder,HttpServletRequest request){
    Map<String, String> ret = new HashMap<String, String>();
    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)
  @ResponseBody
  public Map<String, String> add(RoomType roomType){
    Map<String, String> ret = new HashMap<String, String>();
    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);//设置租赁数0
    roomType.setLivedNum(0);//设置已租赁数0
    if(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)
  @ResponseBody
  public Map<String, String> edit(RoomType roomType){
    Map<String, String> ret = new HashMap<String, String>();
    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


目录
相关文章
|
3天前
|
数据采集 人工智能 Java
Java产科专科电子病历系统源码
产科专科电子病历系统,全结构化设计,实现产科专科电子病历与院内HIS、LIS、PACS信息系统、区域妇幼信息平台的三级互联互通,系统由门诊系统、住院系统、数据统计模块三部分组成,它管理了孕妇从怀孕开始到生产结束42天一系列医院保健服务信息。
14 4
|
9天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
33 2
|
1月前
|
Java Apache Maven
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
60 6
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
|
13天前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
32 3
|
19天前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
55 3
|
24天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
27天前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
1月前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
138 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
1月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
509 1
|
2月前
|
传感器 监控 数据可视化
【Java】智慧工地解决方案源码和所需关键技术
智慧工地解决方案是一种新的工程全生命周期管理理念。它通过使用各种传感器、数传终端等物联网手段获取工程施工过程信息,并上传到云平台,以保障数据安全。
82 7
下一篇
无影云桌面