1、五、详细设计说明书1引言21.1编写目的21.2项目背景21.3定义21.4参考资料22总体设计32.1需求概述32.2软件结构32.2.1网上用户预定系统模块32.2.2酒店前台管理系统模块43程序描述53.1酒店前台管理系统模块53.1.1功能53.1.2性能133.1.3输入项目133.1.4输出项目153.1.5算法173.1.6程序逻辑193.1.7接口243.1.8存储分配243.1.9限制条件243.1.10测试要点253.2在线预定系统模块263.2.1总体功能263.2.2账户管理模块273.2.3联系人管理模块313.2.4订单管理模块353.2.5房间管理模块403.2.
2、6实时提醒系统431引言1.1编写目的为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。本文档供项目经理、设计人员、开发人员参考。1.2项目背景随着旅游业的兴起,以酒店等为主的服务型第三产业飞速发展;因此,规划外出计划,提前确定住处对游客就显得尤为重要。为了解决人们的出行入住问题,同时提高酒店运作效率和规范性,节约酒店的成本;在充分了解调研酒店的运营、管理模式后,我们开发了此酒店预订和管理系统。本系统分为在线预订子系统和酒店方的预订与管理子系统,在线预订子系统提供顾客在线预订房间等功能,争取在最终版本实现顾客足不出户完成预订;酒店方的预订与管理子系统提供给酒店服务员处理订单、
3、办理入住、结帐退房等一系列管理功能。在真正意义上,实现了计算机高效办公,起到了方便顾客与酒店的双重作用。我们会根据技术发展、设备升级、业务需求等进行对本系统的扩展、升级与维护。1.3定义酒店前台管理系统:是运行在酒店前台电脑的系统。酒店人员可以使用本系统来对用户的订单进行处理,并且可以使用管理宾馆入住、消费、日记月结等基本酒店日常管理功能。网上客户预定系统:是运行在一般用户电脑上的程序。网上用户可以通过本系统来对本酒店房间的预定信息进行查询,并预定房间。1.4参考资料1) 用户的需求信息Project for the Course Object Oriented Design with UML
4、-Analysis and Design of a Hotel Reservation and Management System2) 美萍酒店管理系统3) 美萍酒店管理系统的功能使用说明书2总体设计2.1需求概述1. 在线预订系统主要提供以下功能:2. 允许顾客注册、登录账户、完善预订所需信息、查看和修改账户信息。3. 允许顾客查看、预订酒店房间,并且可以对已有的订单进行修改(更改房间等)和取消。4. 酒店预订管理系统主要提供以下功能:5. 员工登录并拥有不同权限。6. 允许服务员为“拨打xx进行预订”的顾客预订酒店房间。7. 查看、处理(确认、修改、取消)订单;查看全部和单个房间状态。8.
5、 服务员可通过系统为预订过的顾客和散客(walk_in)办理入住。9. 服务员可以为已入住看顾客添加额外消费(物品、服务),进行结账退房。10. HeadWaiter可通过系统为已入住的顾客更换房间,对房间、物品和服务的属性进行修改,查看员工信息和日、月结、历史交易记录。2.2软件结构2.2.1网上用户预定系统模块2.2.2酒店前台管理系统模块本程序在部署上的结构图:3程序描述3.1酒店前台管理系统模块3.1.1功能本系统根据功能的需求以及底层数据结构的设计,主要分成了三个层次9大模块。还有一个附加功能而添加的计时器子模块。可以实现提醒有新订单未处理的功能,还有12点提醒退房和刷新房间状态的功
6、能。根据概要分析得到的功能,以及对时序图的总结,可以得到以下类图:总的类图:一般接线员拥有的功能:而高级服务员应该有的功能:登录子系统模块:(与系统的联系比较少,所以划分出一个子系统)本子系统拥有的功能:1) 得到用户信息:应该根据名字查找数据库并判断是否存在该该用户public Employee getEmployee(String username);2) 判断密码是否正确boolean checkLogin(String username, String key);订单管理模块和网上预定管理模块:这个模块功能主要包括:1) 查看全部订单2) 查看某个订单3) 创建订单4) 修改订单5)
7、取消订单6) 查看临时订单7) 处理临时订单:包括接受或者拒绝网上用户的预定、修改、取消请求房间信息状态管理模块:这个模块的功能主要包括:1) 查看全部房间:不同的房间在界面显示的图标不同,而且12点以后会把有订单的房间设置成已订,把没订单的房间设置成空房。打扫和已入住不改变。2) 修改房间属性3) 修改房间信息:界面根据不同的房间状态打开不同的窗口,展示不同的内容4) 开房(只修改状态)5) 打扫(只修改状态)6) 退房(只修改状态)入住信息管理模块:本模块主要包括以下功能:1) 开房2) 退房3) 查看历史账单4) 查询某个已入住房间全部信息消费管理模块(包括商品管理模块和服务管理模块,都
8、是继承与本模块)本模块主要包括以下功能:1) 查看管理商品:可以管理商品的价格、库存2) 查看管理服务:可以管理服务的价格3) 添加消费:可以选择已入住的房间增加消费4) 取消消费:可以选择已入住的房间删除消费员工管理模块:本模块主要包括以下功能:1) 登陆:对员工等级进行功能限制2) 修改员工信息客人信息管理模块:本模块主要包括以下功能:1) 查看客人信息:假如在预定或者开房时,输入相同的证件号,但是其他信息不同,就会更新客人信息。也可以在预定或者开房时,输入证件号直接查询自动填入资料。2) 查看网上用户3.1.2性能1) 程序打开时间应该在1s以内。2) 由登录界面进入到主界面应该在2s以
9、内。3) 点击主界面的按钮展示子界面的时间应该在1s内。4) 查找或者读取数据库的时间最多不能超过3s。5) 程序的时间应该和系统的时间保持一致。6) 可以更换数据库的文件位置,只要重新配置,不影响功能的实现。7) 程序的精度全部只控制在整数,即使用Integer作为所有数字数据的储存基本单位。3.1.3输入项目模块名称登陆模块输入项目名称数据类型输入方式数据来源有效范围调用的函数帐号String界面输入长度20以内getEmployee()checkLogin()密码String界面输入长度20以内checkLogin()模块名称员工管理模块输入项目名称数据类型输入方式数据来源有效范围调用的
10、函数员工Employee界面传入manageEmployee ()模块名称网上订单请求模块输入项目名称数据类型输入方式数据来源有效范围调用的函数订单处理状态DealState界面传入NODEAL(0) ACCEPT(1) ONJECT(2)getNoDealOrders()未处理订单TempOrderLine界面传入ensureTempOrder()handleOnlineOrder()是否同意标志Booleantrue|falsehandleOnlineOrder()模块名称订单管理模块输入项目名称数据类型输入方式数据来源有效范围调用的函数员工Employee界面传入addOrderLine
11、()房间Room界面输入getOrderLine()getOrderDatesInRoom()checkIsEmptyInDate()addOrderLine()客人Customer界面输入addOrderLine()预定的日期Date界面选择getOrderLine()getOrders()checkIsEmptyInDate()已处理OrderLine界面选择changeOrderLine()cancelOrderLine()模块名称商品管理模块输入项目名称数据类型输入方式数据来源有效范围调用的函数消费项目Goods界面选择createConsume()cancelConsume()man
12、ageGoodsInfo()消费数量int界面输入小于等于库存createConsume()cancelConsume()模块名称服务管理模块输入项目名称数据类型输入方式数据来源有效范围调用的函数消费项目Service界面选择createConsume()cancelConsume()manageServiceInfo()模块名称入住信息管理模块输入项目名称数据类型输入方式数据来源有效范围调用的函数房间Room界面输入getBillLine()openRoom()changeRoomBill()addConsume()cancelConsume()checkout()员工Employee界面传
13、入openRoom()客人Customer界面输入openRoom()押金Integer界面输入065535openRoom()checkout()订单OrderLine界面选择openRoom()消费项ConsumeLine界面选择addConsume()入住信息BillLine界面选择deldteBillLine()历史入住信息HistoryBillLine界面传入createHisBillLine()入住时间int界面选择0(代表住一天)或者24(代表钟点房的入住时间)openRoom()模块名称客人管理模块输入项目名称数据类型输入方式数据来源有效范围调用的函数客人身份证String界面
14、传入长度为15或者18getCustomer()客人Customer界面传入changeCustomerInfo()模块名称房间信息管理模块输入项目名称数据类型输入方式数据来源有效范围调用的函数房间类型String界面传入A,B,C,DgetRoomsState()房间Room界面选择openRoomState()sweepRoomState()changeRoomState()clearRoomState()manageRoomInfo()房间号Integer界面输入现有的房间号getRoomByID()3.1.4输出项目模块名称登陆模块输出项目名称数据类型输出的函数员工Employeege
15、tEmployee()密码是否正确标记booleancheckLogin()模块名称员工管理模块输出项目名称数据类型输出的函数全部员工信息ArrayListgetEmployees ()模块名称网上订单请求模块输出项目名称数据类型输出的函数全部未处理订单信息ArrayListgetTempOrders ()getNoDealOrders()订单是否被处理标志Boolean(true表示成功,false表示房间已被预定)ensureTempOrder()模块名称订单管理模块输出项目名称数据类型输出的函数全部已处理订单信息ArrayListgetOrders ()单个订单信息OrderLinege
16、tOrderLine ()某个房间未来全部订单日期ArrayListgetOrderDatesInRoom()房间在某日是否为空标志booleancheckIsEmptyInDate()订单修改是否为成功标志booleanchangeOrderLine()模块名称入住信息管理模块输出项目名称数据类型输出的函数全部历史入住信息ArrayListgetHisBill ()单个入住信息BillLinegetBillLine ()结账余额floatcheckOut ()模块名称商品管理模块输出项目名称数据类型输出的函数全部商品信息ArrayListgetGoods ()消费信息ConsumeLinec
17、reateConsume ()模块名称服务管理模块输出项目名称数据类型输出的函数全部服务信息ArrayListgetServices ()消费信息ConsumeLinecreateConsume ()模块名称客人管理模块输出项目名称数据类型输出的函数全部客人信息ArrayListgetCustomers ()单个客人信息CustomergetCustomer ()全部网上帐号信息ArrayListgetOnlineAccounts()模块名称房间信息管理模块输出项目名称数据类型输出的函数全部房间信息ArrayListgetRoomsState ()单个房间信息RoomgetRoomByID (
18、)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);
19、结账:float checkOut(Room room, float discount, String note);商品管理模块从DAO读写商品的信息。服务管理模块从DAO读写服务的信息房间信息管理模块从DAO读写房间的信息更新当前全部房间的信息:ArrayList getRoomsState(String type);计时器模块实现12点报时并刷新全部房间状态。提醒有新订单,并且在打开提示窗口后,不会重复打开窗口知道窗口关闭。3.1.6程序逻辑对数据库的读写全部交给DAO执行,要做的只是把适当的参数传入DAO。因此,详细设计一些复杂核心函数的流程图:1) boolean handleOnli
20、neOrder(TempOrderLine tempOrderLine, Boolean isAgree, Employee employee);2) int openRoom(OrderLine orderLine, Employee employee, Integer deposit);3) float checkOut(Room room, float discount, String note);4) ArrayList getRoomsState(String type);5) 提醒有新订单,并且在打开提示窗口后,不会重复打开窗口知道窗口关闭。6) 实现12点报时并刷新全部房间状态。
21、计时器部分与(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/1
22、0操作系统下运行。由于没有网络编程基础,所以把MySQL数据库配置在本机上,所以把本机作为服务器,要先运行MySQL数据库的Server程序,才能打开本程序,否则会导致程序登录失败。3.1.10测试要点测试主要包括以下内容:1) 功能测试:a) 数据库测试(即数据库的连接以及内容增删改查等操作过程是否正确)。b) 界面测试(即从界面中是否能按正确格式输出、展示正确的内容、把输入的内容传递给逻辑层)。c) 逻辑层测试(即是否能把界面输入的内容进行处理,把正确而且符合需求以及格式的数据存入数据库)2) 性能测试:测试各个界面执行某个功能的时间、读写数据库的速度、连接速度测试(即时间特性要求)、压力
23、测试(单机使用)3) 可用性测试:图形测试、内容测试、整体界面测试(即图形用户界面的显示是否人性化,是否易于操作员操作,以及容错机制)4) 容错测试:本程序主要都把错误处理交给界面来进行。所以应该把全部错误都进行测试。5) 还要在不同的电脑上测试,从而确定程序执行所必须的系统环境的配置方法没有错误。3.2在线预定系统模块3.2.1总体功能本系统根据功能的需求以及底层数据结构的设计,主要分成了三个层次5大模块。根据概要分析得到的功能,以及对时序图的总结,可以得到以下类图:总的类图:3.2.2账户管理模块描述方面具体描述模块名称账户管理模块功能注册账户,登录账户,修改密码性能1. 时间特性要求:要
24、求等待时间0.5s;各个函数的输入项目名称类型数据来源附注用户名、密码String参数传入各个函数的输出项目输出项数据类型输出形式输出内容操作成功与否boolean参数返回True | false参数定义参数类型含义实现的功能AccountOnlineAccount账户注册&登录Account&passwardOnlineAccount、String账户、待修改密码修改密码算法创建账户 登录修改密码接口该模块为界面提供相应的接口。存储分配无测试要点测试主要包括以下内容:3.2.3联系人管理模块描述方面具体描述模块名称联系人管理模块功能负责对当前登录账户的联系人进行查看、增加、修改和删除。性能时
25、间特性要求:要求等待时间0.5s;各个函数的输入项目函数功能名称类型数据来源附注返回联系人无返回此账户的全部联系人增加联系人CusCustomer参数传入将联系人通过DAO加入数据库修改联系人Cus、name、sex、id、IDTypeCustome&String参数传入将当前的联系人的信息替换成输入的信息删除联系人CusCustomer参数传入将传入的联系人从数据库中删除各个函数的输出项目函数功能输出项数据类型输出内容上述所有函数无上述所有函数的参数定义参数名称类型含义所属CusCustomer联系人(顾客)参数传入namestring联系人姓名参数传入Sexstring联系人性别参数传入I
26、dstring证件号参数传入IDTypestring证件类型参数传入算法增加联系人修改联系人 删除联系人接口该模块在OnlineAccount.java中实现,为界面提供的调用接口。存储分配从数据库读取联系人信息,向数据库中写入联系人信息测试要点测试主要包括以下内容:3.2.4订单管理模块描述方面具体描述模块名称订单管理模块功能生成订单、查看已处理&未处理订单、修改(未处理|已处理)订单、删除(未处理|已处理)订单性能1. 时间特性要求:要求等待时间0.5s;所有函数的参数参数名称类型含义所属arriveTimeDate到达时间参数传入leaveTimeDate离开时间参数传入accountO
27、nlineAccount当前账户参数传入roomRoom所选房间参数传入cusCustomer所选联系人参数传入tOLArrayList订单数组参数传入各个函数的输入项目函数功能名称数据类型数据来源附注生成订单arriveTimeleaveTimeaccountroomcus同上参数传入根据用户输入信息,生成相应的订单,并将其存入数据库中,并发出添加请求。查看已处理&未处理订单无无根据订单是否处理的状态值,从数据库中返回相应类型的订单修改已处理订单调用添加、删除函数对旧的订单发出删除请求,请求确认后,根据用户新输入的信息生成新订单,并发出添加请求。修改未处理订单调用添加、删除函数删除旧订单,直
28、接从临时表中删除保存新订单(请求添加)删除已处理订单tOL同上参数传入将传入的订单列表置为请求删除,请求确认后,从临时表订单中将其删除。删除未处理订单参数传入直接删除临时订单表里的订单各个函数的输出项目输出项数据类型输出形式输出内容ListArrayList函数返回值相应订单列表算法查看已处理&未处理订单 &生成订单删除已确认订单删除未确认订单修改已确认订单修改已确认订单接口该模块为界面提供服务,并调用下层DAO模块完成相应任务。存储分配无测试要点测试主要包括以下内容:1.功能测试:数据库测试(即数据库内容增删改查等操作过程是否正确)2.性能测试:连接速度测试(即时间特性要求)、压力测试(单机
29、使用)3.可用性测试:图形测试、内容测试、整体界面测试(即图形用户界面的显示是否人性化,是否易于操作员操作,以及容错机制)3.2.5房间管理模块描述方面具体描述模块名称房间管理模块功能返回相应时间段的空房间、返回相应房型的房间各个函数的输入项目各函数功能名称数据类型输入方式数据来源附注返回相应时间段的空房间无系统自带数据库中的表查数据库中的返回相应房型的房间无系统自带数据库中的表查数据库中的各个函数的输出项目输出项数据类型输出形式输出内容房间列表ArrayList返回值相应时间段的空房间,分相应房型输出参数参数名称类型含义所属无 返回相应时间段(房型)的空房间算法/ 返回指定房型的房间列表/
30、返回指定时间段未被占用的房间列表接口该模块为上层UI模块提供服务,并调用DAO模块完成相应任务。存储分配获取某时间段的空房间,并分房型输出显示。测试要点测试主要包括以下内容:1.功能测试:数据库测试(即数据库内容增删改查等操作过程是否正确)2.性能测试:连接速度测试(即时间特性要求)、压力测试(单机使用)3.可用性测试:图形测试、内容测试、整体界面测试(即图形用户界面的显示是否人性化,是否易于操作员操作,以及容错机制)4.兼容性测试:平台测试(可跨平台)3.2.6实时提醒系统描述方面具体描述模块名称实时提醒系统功能对前台的订单处理给予用户实时的提醒参数参数名称类型含义所属secondsint检
31、查频率HotelTimeSystem方法public void run() 开启计时器; 从临时订单表中获取用户订单 取当前帐号的所有已确认订单 取当前帐号的所有被拒绝订单if (已确认订单列表不空) 弹窗显示相应信息删订单if (被拒绝订单订单列表不空) 弹窗显示相应信息删订单输入项目名称数据类型输入方式数据来源附注转账金额浮点数上一模块传入输出项目输入项数据类型输出形式输出内容请求结果无弹窗提醒请求确认|拒绝接口该模块为UI提供定时检测请求处理信息,以实时提醒用户。存储分配限制条件定时器按秒来查询请求相应信息。测试要点测试主要包括以下内容:1.功能测试:数据库测试(即数据库内容增删改查等操作过程是否正确)2.性能测试:连接速度测试(即时间特性要求)、压力测试(单机使用)3.可用性测试:图形测试、内容测试、整体界面测试(即图形用户界面的显示是否人性化,是否易于操作员操作,以及容错机制)4.兼容性测试:平台测试(可跨平台)