文章目录
- 摘 要
- 目 录
- 系统设计
- 开发环境
摘 要
随着我国市场经济的快速发展和人们生活水平的不断提高,简单的房屋出租服务已经不能满足人们的需求。如何利用先进的管理手段,提高房屋出租的管理水平,是当今社会所面临的一个重要课题。
本文采用结构化分析的方法,详细阐述了一个功能比较强大的中信房屋出租管理系统的前后台开发、操作流程和涉及的一些关键技术。首先进行了可行性分析,然后是系统分析,通过实际的业务流程调研,分析业务流程和系统的组织结构,完成了数据流分析和数据字典;然后是系统设计阶段主要完成了功能模块的划分、阐述了系统设计的思想、数据库的设计和系统设计的工具及技术。该阶段对本系统各个模块的功能进行了详细设计,形成了本系统的功能模块图;数据库设计时先进行了概念结构设计,然后进行了逻辑结构设计,最后完成了数据表的设计。
目前在本课题范围内,分析了房屋出租管理人员对房屋的管理现状和现有的用户对房屋管理人员的服务的要求。针对两者的要求,设计了一套基于SpringMVC的公寓出租管理系统。本系统的集成开发环境是Eclipse,使用MySQL作为数据库管理系统,Web服务器采用Tomcat,运用SpringMVC及Spring3.0框架技术实现。为了充分利用网络信息化的优势,本系统采用B/S结构。系统具有专门的供用户使用的前台和专门供公寓出租管理人员使用的后台。
在房屋出租管理系统的实现下,网站管理人员能够充分发挥信息化处理的优势,提高日常管理的处理速率。用户一方可以更好的享受信息化处理带来的便利。系统运行能够稳定且高效。并且人机友好程度能够显著提升。
关键词:公寓出租管理,SpringMVC,B/S
目 录
摘 要… I
Abstract… II
第1章 项目概述… 1
1.1 问题描述… 1
1.2 项目目标… 1
1.3 项目适用范围… 1
1.4 项目应遵守的规范与标准… 1
1.5 涉众… 1
第2章 需求分析… 2
2.1 业务需求… 2
2.1.1 业务流程… 2
2.1.2 业务对象… 4
2.2 功能性需求… 4
2.2.1 用例概述… 4
2.2.2 用例细化描述… 5
2.3 非功能性需求… 11
2.4 运行环境… 11
第3章 系统设计… 13
3.1 技术路线… 13
3.2 软件体系结构设计… 14
3.2.1 功能结构… 14
3.2.2 系统架构… 14
3.3 数据库设计… 15
3.3.1 概念结构设计… 15
3.3.2 表的详细设计… 16
3.4 对象设计… 18
3.4.1 房屋管理人员更改房屋信息用例对象设计… 18
3.4.2 房屋管理人员管理租赁用例对象设计… 21
3.4.3 房屋管理人员搜索房屋信息用例对象设计… 22
3.4.4 用户在线租赁房屋用例对象设计… 24
3.4.5 登录用例对象设计… 25
3.4.6 房屋管理人员更改密码用例对象设计… 27
第4章 系统实现… 29
4.1 核心功能实现… 29
4.2 关键技术难点与解决方案… 32
4.3 编码规范… 33
第5章 系统测试… 34
5.1 功能测试… 34
5.2 测试总结… 36
第6章 结论与展望… 38
参考文献… 39
致 谢… 40
系统设计
在房屋出租管理系统中,核心业务用例的实现效果如下所示。受篇幅所限,将只会显示和租赁、房屋管理相关的三个模块核心功能。
(1) 用户对房屋租赁模块实现
用户对房屋进行租赁操作,采用 Ajax发送异步请求将租赁信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行插入并返回结果,实现效果如图4.1所示。
@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;
}
房屋管理人员对房屋的基本信息进行增删改查操作,采用Ajax发送异步请求将房屋信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行更改并返回结果。实现效果如图4.2所示。
房屋管理人员对用户前台下的订单信息进行增删改查操作,采用Ajax发送异步请求将租赁信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行更改并返回结果。实现效果如图4.3所示。
开发环境
开发工具:idea、Navicat
数据库:MySQL8.0
环境配置:jdk1.8 、Tomcat8.5
开发人员:IT012201