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月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
3月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
6月前
|
存储 安全 Java
Java 集合面试题从数据结构到 HashMap 源码剖析详解及长尾考点梳理
本文深入解析Java集合框架,涵盖基础概念、常见集合类型及HashMap的底层数据结构与源码实现。从Collection、Map到Iterator接口,逐一剖析其特性与应用场景。重点解读HashMap在JDK1.7与1.8中的数据结构演变,包括数组+链表+红黑树优化,以及put方法和扩容机制的实现细节。结合订单管理与用户权限管理等实际案例,展示集合框架的应用价值,助你全面掌握相关知识,轻松应对面试与开发需求。
310 3
|
7月前
|
JavaScript Java 关系型数据库
家政系统源码,java版本
这是一款基于SpringBoot后端框架、MySQL数据库及Uniapp移动端开发的家政预约上门服务系统。
220 6
家政系统源码,java版本
|
7月前
|
供应链 JavaScript 前端开发
Java基于SaaS模式多租户ERP系统源码
ERP,全称 Enterprise Resource Planning 即企业资源计划。是一种集成化的管理软件系统,它通过信息技术手段,将企业的各个业务流程和资源管理进行整合,以提高企业的运营效率和管理水平,它是一种先进的企业管理理念和信息化管理系统。 适用于小微企业的 SaaS模式多租户ERP管理系统, 采用最新的技术栈开发, 让企业简单上云。专注于小微企业的应用需求,如企业基本的进销存、询价,报价, 采购、销售、MRP生产制造、品质管理、仓库库存管理、财务应收付款, OA办公单据、CRM等。
412 23
|
8月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
515 7
|
8月前
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
175 4
|
8月前
|
消息中间件 算法 安全
JUC并发—1.Java集合包底层源码剖析
本文主要对JDK中的集合包源码进行了剖析。
|
8月前
|
Java
【源码】【Java并发】【ConcurrentHashMap】适合中学体质的ConcurrentHashMap
本文深入解析了ConcurrentHashMap的实现原理,涵盖JDK 7与JDK 8的区别、静态代码块、构造方法、put/get/remove核心方法等。JDK 8通过Node数组+链表/红黑树结构优化并发性能,采用CAS和synchronized实现高效锁机制。文章还详细讲解了hash计算、表初始化、扩容协助及计数更新等关键环节,帮助读者全面掌握ConcurrentHashMap的工作机制。
194 6
【源码】【Java并发】【ConcurrentHashMap】适合中学体质的ConcurrentHashMap
|
8月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
278 5