宾馆管理系统详细设计说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、详细设计说明书
1.引言 (3)
1.1编写目的 (3)
1.2项目背景 (3)
1.3定义 (3)
1.4参考资料 (4)
2.总体设计 (5)
2.1需求概述 (5)
2.2软件结构 (6)
2.2.1网上用户预定系统模块 (6)
2.2.2酒店前台管理系统模块 (7)
3.程序描述 (8)
3.1酒店前台管理系统模块 (8)
3.1.1功能 (8)
3.1.2性能 (22)
3.1.3输入项目 (22)
3.1.4输出项目 (26)
3.1.5算法 (30)
3.1.6程序逻辑 (33)
3.1.7接口 (41)
3.1.8存储分配 (41)
3.1.9限制条件 (41)
3.1.10测试要点 (43)
3.2在线预定系统模块 (44)
3.2.1总体功能 (44)
3.2.2账户管理模块 (45)
3.2.3联系人管理模块 (49)
3.2.4订单管理模块 (54)
3.2.5房间管理模块 (63)
3.2.6实时提醒系统 (67)
1.引言
1.1编写目的
为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。
本文档供项目经理、设计人员、开发人员参考。
1.2项目背景
随着旅游业的兴起,以酒店等为主的服务型第三产业飞速发展;因此,规划外出计划,提前确定住处对游客就显得尤为重要。
为了解决人们的出行入住问题,同时提高酒店运作效率和规范性,节约酒店的成本;在充分了解调研酒店的运营、管理模式后,我们开发了此酒店预订和管理系统。
本系统分为在线预订子系统和酒店方的预订与管理子系统,在线预订子系统提供顾客在线预订房间等功能,争取在最终版本实现顾客足不出户完成预订;酒店方的预订与管理子系统提供给酒店服务员处理订单、办理入住、结帐退房等一系列管理功能。
在真正意义上,实现了计算机高效办公,起到了方便顾客与酒店的双重作用。
我们会根据技术发展、设备升级、业务需求等进行对本系统的扩展、升级与维护。
1.3定义
酒店前台管理系统:是运行在酒店前台电脑的系统。
酒店人员可以使用本系统来对用户的订单进行处理,并且可以使用管理宾馆入住、消费、日记月结等基本酒店日常管理功能。
网上客户预定系统:是运行在一般用户电脑上的程序。
网上用户可以通过本系统来对本酒店房间的预定信息进行查询,并预定房间。
1.4参考资料
1)用户的需求信息Project for the Course Object Oriented Design with UML--Analysis
and Design of a Hotel Reservation and Management System
2)美萍酒店管理系统
3)美萍酒店管理系统的功能使用说明书
2.总体设计
2.1需求概述
1.在线预订系统主要提供以下功能:
2.允许顾客注册、登录账户、完善预订所需信息、查看和修改账户信息。
3.允许顾客查看、预订酒店房间,并且可以对已有的订单进行修改(更改房间等)和取消。
4.酒店预订管理系统主要提供以下功能:
5.员工登录并拥有不同权限。
6.允许服务员为“拨打电话进行预订”的顾客预订酒店房间。
7.查看、处理(确认、修改、取消)订单;查看全部和单个房间状态。
8.服务员可通过系统为预订过的顾客和散客(walk_in)办理入住。
9.服务员可以为已入住看顾客添加额外消费(物品、服务),进行结账退房。
10.HeadWaiter可通过系统为已入住的顾客更换房间,对房间、物品和服务的属性进行修改,查看员工信息和日、月结、历史交易记录。
2.2软件结构
2.2.1网上用户预定系统模块
2.2.2酒店前台管理系统模块
本程序在部署上的结构图:
3.程序描述
3.1酒店前台管理系统模块
3.1.1功能
本系统根据功能的需求以及底层数据结构的设计,主要分成了三个层次9大模块。
还有一个附加功能而添加的计时器子模块。
可以实现提醒有新订单未处理的功能,还有12点提醒退房和刷新房间状态的功能。
根据概要分析得到的功能,以及对时序图的总结,可以得到以下类图:总的类图:
一般接线员拥有的功能:
而高级服务员应该有的功能:
登录子系统模块:(与系统的联系比较少,所以划分出一个子系统)本子系统拥有的功能:
1)得到用户信息:应该根据名字查找数据库并判断是否存在该该用户
public Employee getEmployee(String username);
2)判断密码是否正确
boolean checkLogin(String username, String key);
订单管理模块和网上预定管理模块:
这个模块功能主要包括:
1)查看全部订单
2)查看某个订单
3)创建订单
4)修改订单
5)取消订单
6)查看临时订单
7)处理临时订单:包括接受或者拒绝网上用户的预定、修改、取消请求
房间信息状态管理模块:
这个模块的功能主要包括:
1)查看全部房间:不同的房间在界面显示的图标不同,而且12点以后会把有订单的房间
设置成已订,把没订单的房间设置成空房。
打扫和已入住不改变。
2)修改房间属性
3)修改房间信息:界面根据不同的房间状态打开不同的窗口,展示不同的内容
4)开房(只修改状态)
5)打扫(只修改状态)
6)退房(只修改状态)
入住信息管理模块:
本模块主要包括以下功能:
1)开房
2)退房
3)查看历史账单
4)查询某个已入住房间全部信息
消费管理模块(包括商品管理模块和服务管理模块,都是继承与本模块)
本模块主要包括以下功能:
1)查看管理商品:可以管理商品的价格、库存
2)查看管理服务:可以管理服务的价格
3)添加消费:可以选择已入住的房间增加消费
4)取消消费:可以选择已入住的房间删除消费
员工管理模块:
本模块主要包括以下功能:
1)登陆:对员工等级进行功能限制
2)修改员工信息
客人信息管理模块:
本模块主要包括以下功能:
1)查看客人信息:假如在预定或者开房时,输入相同的证件号,但是其他信息不同,就
会更新客人信息。
也可以在预定或者开房时,输入证件号直接查询自动填入资料。
2)查看网上用户
3.1.2性能
1)程序打开时间应该在1s以内。
2)由登录界面进入到主界面应该在2s以内。
3)点击主界面的按钮展示子界面的时间应该在1s内。
4)查找或者读取数据库的时间最多不能超过3s。
5)程序的时间应该和系统的时间保持一致。
6)可以更换数据库的文件位置,只要重新配置,不影响功能的实现。
7)程序的精度全部只控制在整数,即使用Integer作为所有数字数据的储存基本单位。
3.1.3输入项目
3.1.4输出项目
3.1.5算法
登陆模块
从DAO读写帐号密码,并进行比较。
员工管理模块
从DAO读写员工的信息。
网上订单请求模块
从DAO读写网上订单的信息。
处理订单:
boolean handleOnlineOrder(TempOrderLine tempOrderLine, Boolean isAgree, Employee
employee);
订单管理模块
从DAO读写订单的信息。
客人管理模块
从DAO读取客人的信息。
入住信息管理模块
从DAO读写入住的信息。
有预定的客人入住:
int openRoom(OrderLine orderLine, Employee employee, Integer deposit); 结账:
float checkOut(Room room, float discount, String note);
商品管理模块
从DAO读写商品的信息。
服务管理模块
从DAO读写服务的信息
房间信息管理模块
从DAO读写房间的信息
更新当前全部房间的信息:
ArrayList<Room> getRoomsState(String type);
计时器模块
实现12点报时并刷新全部房间状态。
提醒有新订单,并且在打开提示窗口后,不会重复打开窗口知道窗口关闭。
3.1.6程序逻辑
对数据库的读写全部交给DAO执行,要做的只是把适当的参数传入DAO。
因此,详细设计一些复杂核心函数的流程图:
1)boolean handleOnlineOrder(TempOrderLine tempOrderLine, Boolean isAgree,
Employee employee);
开始
传入参数TempOrderLine tempOrderLine,Boolean isAgree Employee employee
isAgree?
类型是CANCEL?类型是ADD?类型是CHANGE?
Y
N
N
Y
已处理订单表对应
的订单
拒绝请求,改临时
订单表
判断当天选择房间
是否为空?
Y
把临时订单加入到
已处理订单
判断新房间是否为空?
Y
修改已处理订单的
信息
Y
Y
N
接受请求,改临时
订单表
N
N
N
结束
输出是否成功标志
2) int openRoom(OrderLine orderLine, Employee employee, Integer deposit);
开始
传入参数
OrderLine orderLine Employee employee Integer deposit
预定的时间是否已经达到?
预定是否过
期?
Y
判断是否开钟
点房?
Y
设置离开时间为第二日的12点
判断当前时间是否在
12点前?
设置离开时间为今天的12点
N
Y
N
设置离开时间为当前时间加上入
住小时数
Y
存入住表存入住表存入住表
结束
N
N
3) float checkOut(Room room, float discount, String note);
开始
outTime>0?
Y
结束
计算超时时间outTime 罚款fine=0
计算超出的日数outDay=outTime/24outTime=outTime%24
outTime>0&&outTime<5?
罚款
fine=房价* outDay + 房价* 0.2f* outTime;
罚款
fine=房价* (outDay +1)
Y
N
结账金额cost=房价+fine
i<n?
i=0n=消费数目
cost=cost+消费物品金额*数量
i++
Y
余额
last=discount-cost
输出余额
N
N
传入参数Room room float discount String note
4) ArrayList<Room> getRoomsState(String type);
开始
传入参数String type
查找今天12点的房间预定状态
判断当前时间是否在
12点前?
查找昨天12点的房间预定状态
Y
N
结束
Y
房间状态是否为入住
或者打扫?
房间是否被预订?
N 房间状态改成已预订,存表
房间状态改成空房,存表
Y
5) 提醒有新订单,并且在打开提示窗口后,不会重复打开窗口知道窗口关闭。
开始
传入参数int seconds
程序是否关闭?
N
Y
结束
Y
是否超时?
设置计时器时间并启动计时器
重新启动计时器
N
提醒窗口是否
打开?
Y
是否有未处理
订单?
打开提醒窗口
Y
6) 实现12点报时并刷新全部房间状态。
计时器部分与(5)相似,对房间状态的刷新与(4)相似。
3.1.7接口
逻辑层提供给显示的接口:
数据访问层提供给逻辑层的接口就是由Hibernate自动生成的DAO提供的接口。
3.1.8存储分配
应该在Web服务器上,建立MySQL数据库,把数据都存放在数据库当中。
由于没有网络编程的知识,所以目前把数据库部署在本机上。
还有程序的图片等资源放到lib文件夹之下。
数据库驱动mysql-connector-java-5.1.21-bin.jar放到当前文件下。
log4j的配置文件log4j.properties也放在当前文件下。
3.1.9限制条件
本程序必须运行在配置好java环境的windows7/8/10操作系统下运行。
由于没有网络编程基础,所以把MySQL数据库配置在本机上,所以把本机作为服务器,要先运行MySQL数据库的Server程序,才能打开本程序,否则会导致程序登录失败。
3.1.10测试要点
测试主要包括以下内容:
1)功能测试:
a)数据库测试(即数据库的连接以及内容增删改查等操作过程是否正确)。
b)界面测试(即从界面中是否能按正确格式输出、展示正确的内容、把输入的
内容传递给逻辑层)。
c)逻辑层测试(即是否能把界面输入的内容进行处理,把正确而且符合需求以
及格式的数据存入数据库)
2)性能测试:测试各个界面执行某个功能的时间、读写数据库的速度、连接速度测
试(即时间特性要求)、压力测试(单机使用)
3)可用性测试:图形测试、内容测试、整体界面测试(即图形用户界面的显示是否
人性化,是否易于操作员操作,以及容错机制)
4)容错测试:本程序主要都把错误处理交给界面来进行。
所以应该把全部错误都进
行测试。
5)还要在不同的电脑上测试,从而确定程序执行所必须的系统环境的配置方法没有
错误。
3.2在线预定系统模块
3.2.1总体功能
本系统根据功能的需求以及底层数据结构的设计,主要分成了三个层次5大模块。
根据概要分析得到的功能,以及对时序图的总结,可以得到以下类图:
总的类图:
3.2.2账户管理模块
开始
传入账户
查询数据库表
存在该账户?
Return false 在账户表中添加该账户
Return true
结束
开始
传入账户
查询数据库表
存在该账户?
Return false Return true
结束
已登录
传入账户和新密
码
更新数据库表
成功?
Return true
Return false 结束
3.2.3联系人管理模块。