基于Web+SpringBoot+MySQL的互联网酒店预订系统设计与实现

资源下载地址:https://download.csdn.net/download/sheziqiong/87913000
资源下载地址:https://download.csdn.net/download/sheziqiong/87913000

酒店管理系统

用例文档

1. 引言

1.1 前提背景

随着工作和生活节奏的加快,人们的差旅出行需要迅速提升,但是传统上的线下酒店预订模式有着很多不方便之处:

  • 因为目的地往往是外地,无法全面了解当地的酒店情况,选择范围大大受限,难以选择到最适合的酒店;
  • 提前预订的双方都有险,酒店担心恶意预订,顾客担心酒店不符合预期;
  • 酒店要及时掌握预订顾客的行程变化也会比较麻烦,需要频繁的途联系;
  • 虽然过去的体验能够给未来带来参考,但是时间一很多信息就会被遗忘掉,过去的参考作用就受到限制。(事实上,过去的出行体验会大大影响人们未来的选择)。

为了解决上述问题,方便人们出行中的酒店预订,一家创业公司决定开发一个互联网酒店预订系统,包括下列功能:

  • 全面展现任一个地域内的酒店信息,帮助顾客进行更好地比较与选择; 执行信用累计制度,防范恶意预订;
  • 进行房客评价,反映酒店与描述的相符程度;
  • 让酒店可以及时了解到所有预订订单的变化动态; 帮助顾客建立历史记录,在顾客预订时发挥历史记录的作用。
  • 为了进行网站推广,吸引酒店和顾客的入驻,该网站会在系统中补贴费用帮助酒店进行促销。

1.2 目的

此文档暂时包含了互联网酒店预订系统的预订酒店功能的用例

1.3 参考文献

软件工程与计算(卷二) 和 迭代功能需求简述

2. 用例图

3. 用例列表

参与者 用例
客户 1. 个人基本信息管理
2. 浏览酒店信息
3. 预定酒店
4. 查看订单(客户)
5. 撤销订单
6. 评价
17. 信用记录查看
酒店工作人员 1. 个人基本信息管理
7. 维护酒店信息
8. 录入可用客房
9. 制定酒店促销策略
10. 浏览订单(酒店)
5. 撤销订单
11. 订单执行
12. 更新入住和退房信息
网站工作人员 13. 制定网站促销策略
14. 信用充值
15. 浏览订单(网站)
管理员 16. 用户管理
18. 添加酒店

4. 详细用例描述

4.1 个人信息管理

用例编号 UC1
名称 个人信息管理
创建者 XXX
创建日期 20XX/03/17
更新记录 20XX/03/17/ XXX 确定个人信息管理的基本流程
20XX/03/17/ XXX 删除注册部分,详细描述个人信息维护
20XX/03/21/ XXX 修改后置条件,删除正常流程 5
20XX/03/27/ XXX 修改用例编号
参与者 客户, 目的是查看并维护基本信息
酒店工作人员, 目标是查看且维护基本信息
触发条件 用户点击”我的账户“查看个人信息
前置条件 用户已注册且登录酒店预订网站
后置条件 系统更新用户个人信息
优先级
正常流程
1. 系统显示个人信息和修改功能。客户信息包括昵称,姓名,手机号,个人邮箱,信誉积分等;酒店工作人员信息包括昵称,姓名,密码,手机号,酒店名称,酒店编号,工作邮箱等
2. 用户打开修改个人信息界面
3. 系统显示个人信息修改界面。客户修改内容包括昵称,手机号,个人邮箱,密码,实名认证等;酒店工作人员修改内容包括昵称,手机号,密码等
4. 用户修改个人信息并保存
扩展流程 1a. 客户部分信息不完善
1. 系统在该信息右侧提醒客户完善该信息
4a. 当修改昵称和修改手机号,邮箱和密码等
1. 昵称可直接修改,无需验证
2. 手机号或邮箱在修改后需要通过验证短信或验证邮箱确认修改
3. 修改密码需通过验证短信或验证邮箱来验证,之后输入新密码并确认新密码
4b. 修改个人信息时,手机号,邮箱或实名认证与现有账户信息重复
1. 系统提示手机号,邮箱或实名身份已被绑定
特殊需求 1. 密码包括字母和数字以确保安全性
2. 姓名通过实名认证获得,无法修改。酒店工作人员账户在注册时通过实名认证,客户在注册成功后可选择进行实名认证
3. 系统显示个人信息修改界面的同时,显示其他无法被修改的信息
4. 酒店工作人员账号部分信息无法由酒店工作人员修改,包括酒店名称,酒店编号,工作邮箱等

4.2 浏览酒店信息

用例编号 UC2
名称 浏览酒店信息
创建者 XXX
创建日期 20XX/03/18
更新记录 20XX/03/18/ XXX 确定浏览酒店详细信息的基本流程
20XX/03/20/ XXX 修改酒店基本信息和详细信息的内容
20XX/03/27/ XXX 修改用例编号
20XX/03/27/ 陈彦泽 修改用例名称
20XX/05/24/ XXX 添加查看预定过的酒店内容,修改触发条件、后置条件、正常流程 2 和正常流程 5
20XX/05/24/ XXX 修改正常流程 5
参与者 客户, 目的是查看酒店的详细信息
触发条件 客户选择地址和商圈
前置条件 客户已注册且登录酒店预订网站
后置条件
优先级
正常流程
1. 系统列表显示酒店基本信息,酒店基本信息包括酒店名称,酒店地址,酒店评分和预定起价等
2. 客户选择筛选项,筛选项包括地理位置、价格区间和是否曾经预定等
3. 系统列表显示筛选后的酒店基本信息
4. 客户选择某酒店查看酒店详细信息
5. 系统显示相关酒店详细信息,酒店详细信息包括酒店名称,酒店简介,酒店地址,附近商圈,酒店设施,酒店星级,酒店评分,详细价格和过往订单等
扩展流程
特殊需求 1. 客户可选择酒店的列表排序方式,例如评分高低,价格高低等
2. 查看酒店过往订单时,正常订单、异常订单和撤销订单要分别标记

4.3 预定酒店

用例编号 UC3
名称 预定酒店
创建者 XXX
创建日期 20XX/03/06
更新记录 20XX/03/06/ XXX 确定预定酒店的基本流程
20XX/03/07/ XXX 修改用例流程
20XX/03/19/ XXX 修改错误的用例编号并且添加预订酒店所需要的信誉积分的下限
20XX/03/27/ XXX 修改用例编号
20XX/05/24/ XXX 修改用例编号,删除特殊需求 2,修改特殊需求 3,修改扩展流程 5~6c
参与者 客户,目标是快捷、正确地填写入住某酒店的相关信息
触发条件 客户在网站浏览酒店信息准备预定
前置条件 1. 客户登录并且浏览酒店预订网站
2. 相关酒店已经被相关酒店工作人员添加入库
后置条件 1. 存储预订信息,并生成相关订单信息
2. 将订单信息发送给相关酒店工作人员
3. 更新库存
优先级
正常流程
1. 客户选择基本入住信息,基本入住信息包括相关酒店、入住时间、退房时间等
2. 系统显示相关酒店在入住时间和退房时间之间房间信息,房间信息包括房间类型、房间数量、宜住人数、是否适合儿童入住等
3. 客户选择详细入住信息,详细入住信息包括预定房间种类和数量、入住人数、入住客户个人信息、有无儿童以及儿童人数等
4. 客户提交订单
5. 系统更新房间信息和订单信息,计算定金总额
6. 系统结束预定过程,生成有效订单信息并且更新库存
扩展流程 1a. 客户填写的入住时间和订单时间间隔超过一个月
1. 系统提示无法进行该预定
3a. 儿童人数占总人数 90% 以上
1. 系统提示无法进行该预定,并提供相关酒店工作人员电话,建议客户通过电话预定
3b. 入住人信息少于预定房间数量
2. 系统提示无法进行该预定,要求客户完善具体入组信息
3c. 客户使用优惠券
4. 系统计算订单价格时使用优惠策略
4a. 客户申请修改预定信息
1. 系统更新房间信息,回到步骤 2,再次请求入住信息填写
4b. 客户取消预订酒店
2. 系统更新房间信息,取消该预定,生成无效订单信息
6a. 历史记录
1. 系统将订单信息更新至客户的历史记录
2. 系统将订单信息发送给相关酒店工作人员,并根据补贴额度向相关酒店支付补贴金
特殊需求 1. 入住时间和退房时间通过日历来选择,先选择入住时间后选择退房时间,并且选择退房时间时无法选择入住时间前的日期
2. 信誉积分低于 0 则无法预订酒店

4.4 浏览订单(客户)

用例编号 UC4
名称 浏览订单(客户)
创建者 XXX
创建日期 20XX/03/19
更新记录 20XX/03/19/ XXX 确定查看订单的基本流程
20XX/03/27/ XXX 修改用例编号
20XX/05/24/ XXX 修改用例编号
20XX/05/28/ XXX 修改用例名称
参与者 客户, 目的是浏览自己预定的订单
触发条件 客户点击“我的订单”浏览订单信息
前置条件 客户已注册且登录酒店预订网站
后置条件
优先级
正常流程
1. 系统按照时间顺序列表显示客户的订单基本信息,基本信息包括酒店名称,入住时间,退房时间,订单价格,是否支付
2. 客户点击某订单了解详细信息
3. 系统显示相关订单详细信息,详细信息包括酒店名称,酒店介绍,预订房间类型,酒店联系方式,入住时间,退房时间,订单价格,是否支付,入住客户个人信息,入住客户联系方式
扩展流程
特殊需求 1. 客户可选择关键词“全部订单”,“未支付”,“未执行”,“异常”,“已撤销”等列表查看不同类型的订单
2. 当显示未支付订单时,系统在是否支付信息栏下方添加“去支付”提醒
3. 通过订单列表可以查看相关订单详情

4.5 撤销订单

用例编号 UC5
名称 撤销订单
创建者 XXX
创建日期 20XX/05/24
更新记录 20XX/05/24/ XXX 确定“撤销订单”的基本流程
参与者 客户或酒店工作人员, 目的是撤销未执行的正常订单
触发条件 客户想要改变自己的订单
前置条件 客户将要撤销订单还未被酒店工作人员执行
后置条件 更新入住和退房信息
优先级
正常流程
1. 客户或酒店工作人员选择撤销某未被执行的订单
2. 系统将相关订单状态置为已撤销状态,记录撤销状态
3. 系统更新客户信息和酒店房间信息
扩展流程 3a. 撤销订单时间距离最晚订单执行时间不足 6 小时
1. 若客户与酒店工作人员协商撤销订单,客户不会被扣除信用值
2.若客户未与酒店工作人员协商撤销订单,客户被扣除信用值,额度是订单的 1/2
特殊需求 1. 撤销的订单不会被系统删除数据

4.6 评价

用例编号 UC6
名称 评价
创建者 XXX
创建日期 20XX/05/24
更新记录 20XX/05/24/ XXX 确定“评价”的基本流程
参与者 客户, 目的是评价已经执行的订单
触发条件 客户结束酒店入住并对此次入住做出评价
前置条件 相关订单被正常执行
后置条件
优先级
正常流程
1. 客户选择对本次入住的评分,并输入评论文本
2. 系统记录客户评价并更新酒店评分
扩展流程
特殊需求 1. 客户在结束入住七天后不评价默认 5 分评价
2. 评分等于或小于 2 分为差评,其余为好评

4.7 维护酒店信息

用例编号 UC7
名称 维护酒店信息
创建者 XXX
创建日期 20XX/03/20
更新记录 20XX/03/20/ XXX 确定维护酒店信息的基本流程
20XX/03/21/ XXX 修改后置条件,删除正常流程 5
20XX/03/27/ XXX 修改用例编号
20XX/03/27/ XXX 修改参与者目的
20XX/03/27/ 陈彦泽 修改用例名称
20XX/05/24/ XXX 修改用例编号
20XX/05/28/ XXX 修改:酒店工作人员不能添加酒店
参与者 酒店工作人员, 目的和删除和修改酒店信息
触发条件 酒店工作人员点击“酒店管理”准备维护酒店基本信息
前置条件 酒店工作人员已注册且登录酒店预订网站
后置条件 系统更新酒店信息
优先级
正常流程
1. 酒店工作人员选择添加酒店,删除酒店或修改酒店信息
2.1 删除酒店
2.2 修改酒店信息,酒店信息包括酒店名称,酒店简介,酒店地址,附近商圈,酒店设施和酒店星级等
3. 系统生成酒店信息表格并显示或提示是否删除酒店
4. 酒店工作人员确认维护酒店信息
扩展流程 3a. 酒店工作人员发现酒店信息错误
1. 酒店工作人员撤销本次维护并回到步骤 2
特殊需求 1. 酒店作员只能处理其所指定酒店的作

4.8 录入可用客房

用例编号 UC8
名称 录入可用客房
创建者 XXX
创建日期 20XX/03/21
更新记录 20XX/03/21/ XXX 确定录入可用客房的基本流程
20XX/03/27/ XXX 修改用例编号
20XX/05/25/ XXX 修改用例编号
参与者 酒店工作人员, 目的是设置酒店房间信息
触发条件 酒店工作人员得到一批可用房间信息并点击“房间管理”
前置条件 1. 酒店工作人员已注册且登录酒店预订网站
2. 相关酒店已被添加
后置条件 系统更新相关酒店可用房间信息
优先级
正常流程
1. 酒店工作人员输入房间信息和房间数量,房间信息包括房间号,房间类型,房间原始价格,房间宜住人数,房间是否适合儿童等
2. 系统显示已输入的房间信息
重复 1~2 步,直到所有的房间信息均被录入
3. 酒店工作人员结束房间信息录入
扩展流程 1a. 酒店工作人员输入错误房间信息
1. 酒店工作人员在步骤 2 取消此次房间录入,回到步骤 1
1b. 录入房间信息时房间号重复
2. 系统提示该房间已被录入,提示酒店工作人员确认房间信息
特殊需求

4.9 制定酒店促销策略

用例编号 UC9
名称 制定酒店促销策略
创建者 XXX
创建日期 20XX/05/25
更新记录 20XX/05/25/ XXX 确定“制定酒店促销策略”的基本流程
参与者 酒店工作人员,目的是发布酒店促销策略
触发条件 酒店工作人员获得一份制定完善的促销策略
前置条件 酒店工作人员已注册,酒店已被添加
后置条件 客户生成订单时使用促销策略
优先级
正常流程
1. 酒店工作人员选择添加促销策略
2. 系统显示添加促销策略界面
3. 酒店工作人员填写券名,优惠劵类型,优惠简介,折扣和优惠状态等
4. 系统更新酒店促销策略信息
扩展流程 3a. 酒店工作人员录入满减优惠策略
1. 酒店工作人员输入达标金额
3b. 酒店工作人员录入节日优惠策略
2. 酒店工作人员输入有效日期
特殊需求 1. 达标金额和优惠金额以数字为有效输入

4.10 浏览订单(酒店)

用例编号 UC10
名称 浏览订单(酒店)
创建者 XXX
创建日期 20XX/05/25
更新记录 20XX/05/25/ XXX 确定“浏览订单(酒店)”的基本流程
参与者 酒店工作人员,目的是浏览旗下酒店的订单
触发条件 酒店工作人员选择订单管理
前置条件 酒店工作人员已注册,相关酒店已被添加
后置条件
优先级
正常流程
1. 系统列表显示酒店工作人员管理下酒店的所有订单
2. 酒店工作人员选择“未执行”,“已执行”,“已撤销”和“异常”等筛选项
3. 系统列表显示符合筛选条件的订单
扩展流程
特殊需求 1. 通过订单列表可以查看相关订单详情

4.11 订单执行

用例编号 UC11
名称 订单执行
创建者 XXX
创建日期 20XX/05/25
更新记录 20XX/05/25/ XXX 确定“订单执行”的基本流程
参与者 酒店工作人员,目的是在客户入住之后执行订单
触发条件 客户办理入住手续
前置条件 相关订单已经生成
后置条件 更新入住和退房信息
优先级
正常流程
1. 酒店工作人员将相关订单状态置为已执行
2. 系统更新相关订单状态并且更新客户的信用值
扩展流程 1a. 客户超过最晚订单执行时间后还没有办理入住
1. 系统自动将相关订单状态置为异常并扣除客户的信用值,额度为订单金额的 1/2
1b. 酒店工作人员查看异常订单,并手工修改订单状态为已执行
2. 系统将订单状态置为已执行,恢复被扣除的信用值
特殊需求

4.12 更新入住和退房信息

用例编号 UC12
名称 更新入住和退房信息
创建者 XXX
创建日期 20XX/05/25
更新记录 20XX/05/25/ XXX 确定“更新入住和退房信息”的基本流程
20XX/05/28/ XXX 暂时没有退房功能
参与者 酒店工作人员,目的是修改酒店的房间信息
触发条件 酒店的房间信息发生改变
前置条件 订单被正常执行
后置条件
优先级
正常流程
1.1 相关订单被执行后,酒店人员选择入住信息,入住信息包括房间号,入住时间、预计离开时间等
2. 系统更新房间信息
扩展流程
特殊需求 1. 房间只有在实际退房后才可以被再次预定
2. 如果有非订单(线下)的入住/退房导致的可用房间发生变化,也要及时更新信息

4.13 制定网站促销策略

用例编号 UC13
名称 制定网站促销策略
创建者 XXX
创建日期 20XX/05/26
更新记录 20XX/05/26/ XXX 确定“制定网站促销策略”的基本流程
参与者 网站工作人员,目的是发布网站促销策略
触发条件 酒店的房间信息发生改变
前置条件
后置条件 客户预定酒店时可以使用相关促销策略
优先级
正常流程
1. 网站工作人员选择添加优惠策略
2. 系统显示添加优惠策略界面
3. 网站工作人员填写优惠券名称,优惠类型,优惠简介,折扣和优惠状态等信息
4. 系统更新网站优惠策略信息
扩展流程
特殊需求 1. 优惠金额以数字为有效输入

4.14 信用充值

用例编号 UC14
名称 信用充值
创建者 XXX
创建日期 20XX/05/26
更新记录 20XX/05/26/ XXX 确定“信用充值”的基本流程
参与者 网站工作人员,目的是提供面向客户的线下充值服务
触发条件 客户选择线下为信用值充值
前置条件 该用户已注册
后置条件
优先级
正常流程
1. 网站工作人员选择信用充值
2. 系统请求输入客户的邮箱
3. 网站工作人员输入客户的邮箱
4. 系统显示信用充值界面
5. 网站工作人员输入信用充值额度
6. 系统更新相关客户信用值
扩展流程 3a. 网站工作人员输入邮箱格式不正确或输入邮箱无对应账号
1. 系统提示输入错误并结束此次充值
特殊需求 1. 信用充值额度以数字为有效输入

4.15 浏览订单(网站)

用例编号 UC15
名称 浏览订单(网站)
创建者 XXX
创建日期 20XX/05/26
更新记录 20XX/05/26/ XXX 确定“浏览异常订单执行情况”的基本流程
20XX/05/28/ XXX 修改用例名称
参与者 网站工作人员,目的是浏览订单
触发条件 网站工作人员选择浏览订单
前置条件 网站已经可以生成订单
后置条件
优先级
正常流程
1. 网站工作人员选择“订单管理”
2. 系统列表显示订单信息
扩展流程
特殊需求 1. 系统显示订单信息时,以执行时间近远为排序标准
2. 通过订单列表可以查看相关订单详情

4.16 用户管理

用例编号 UC16
名称 用户管理
创建者 XXX
创建日期 20XX/03/27
更新记录 20XX/03/27/ XXX 确定用户管理的基本流程
20XX/05/25/ XXX 修改用例编号
20XX/05/28/ XXX 改动基本内容
参与者 管理员, 目标是管理客户、酒店工作人员和网站工作人员的账号
触发条件 管理员打开酒店预订系统,选择用户管理
前置条件 管理员登录酒店预订网站
后置条件
优先级
正常流程
1. 系统列表显示客户、酒店工作人员和网站工作人员的信息
2. 管理员通过筛选项查询特定用户信息
3. 系统列表显示符合筛选项的用户信息
4. 管理员进入用户详细信息界面,并做出修改
5. 系统更新修改后的用户信息
扩展流程
特殊需求 1. 网站工作人员的账号由管理员直接发放

4.17 信用记录查看

用例编号 UC17
名称 信用记录查看
创建者 XXX
创建日期 20XX/05/26
更新记录 20XX/05/26/ XXX 确定“信用记录查看”的基本流程
参与者 客户,目的是查看信用值变更记录
触发条件 客户想要了解信用值变更记录
前置条件 客户已注册
后置条件
优先级
正常流程
1. 客户选择进入信用记录界面
2. 系统列表显示客户每一次信息变化情况,详细信息包括时间,订单号,动作(订单执行、订单异常、订单撤销、充值),信用度变化、信用度结果等
扩展流程
特殊需求 1. 通过订单号链接查看订单详细信息

4.18 添加酒店

用例编号 UC18
名称 添加酒店
创建者 XXX
创建日期 20XX/05/28
更新记录 20XX/05/28/ XXX 确定“添加酒店”的基本流程
参与者 管理员, 目的是添加酒店及其工作人员
触发条件 酒店和网站达成入驻协议
前置条件
后置条件 客户通过网站预订相关网站的房间
优先级
正常流程
1. 管理员选择添加酒店
2. 系统显示添加酒店界面
3. 管理员输入酒店信息和酒店工作人员信息,酒店信息包括店名称,酒店简介,酒店地址,附近商圈,酒店设施和酒店星级等,酒店工作人员信息包括姓名, 身份证号,密码,手机号,酒店名称,酒店编号,工作邮箱等
4. 系统显示确认添加酒店界面
5. 管理员确认信息正确
6. 系统更新酒店及其工作人员信息
扩展流程 5a. 管理员发现信息错误
1. 取消本次添加酒店
特殊需求 1. 酒店和酒店工作人员一一对应

5. 需求分析模型

5.1 系统顺序图

更新记录

时间 更新内容
20XX/03/10/陈彦泽 完成 UC4
20XX/03/17/陈彦泽 创建 UC1、UC2
20XX/03/18/陈彦泽 更新 UC1,加入了酒店工作人员
20XX/03/19/陈彦泽 创建 UC3、UC5
20XX/03/23/陈彦泽 更新 UC2、UC3、UC5,使交互由参与者发起
20XX/03/23/陈彦泽 添加 UC6 录入可用客房
20XX/03/27/XXX 修改用例编号
20XX/03/27/XXX 删除“更改管理员密码”
20XX/03/27/陈彦泽 添加 UC7 用户管理、UC5 维护酒店基本信息

UC1 个人信息管理

UC2 浏览酒店信息

UC3 预定酒店

UC4 浏览订单(客户)

UC5 撤销订单

UC6 评价

UC7 维护酒店信息

UC8 录入可用客房

UC9 制定酒店促销策略

UC10 浏览订单(酒店工作人员)

UC11 订单执行

UC12 更新入住和退房信息

UC13 制定网站促销策略

UC14 信用充值

UC15 浏览酒店(网站工作人员)

UC16 用户管理

UC17 信用记录查看

UC18 添加酒店

5.2 概念类图

更新记录

时间 更新内容
20XX/03/11/XX 完成 UC4
20XX/03/18/XX 完成 UC1 和 UC2
20XX/03/19/XX 完成 UC3 和 UC5
20XX/03/21/XX 完成 UC6 和 UC7
20XX/03/26/XX 完成 UC8
20XX/03/27/XXX 修改用例编号
20XX/03/27/XXX 删除“更改管理员密码”
20XX/03/28/XX 更改 UC1,UC2;添加 UC7

UC1 个人账户管理

UC2 浏览酒店信息

UC3 预定酒店

UC4 浏览订单(客户)

UC5 撤销订单

UC6 评价

UC7 维护酒店信息

UC8 录入可用客房

UC9 制定酒店促销策略

UC10 浏览订单(酒店)

UC11 订单执行

UC12 更新入住和退房信息

UC13 制定网站促销策略

UC14 信用充值

UC15 浏览订单(网站)

UC16 用户管理

UC17 信用记录查看

UC18 添加酒店

5.3 状态图

更新记录

时间 更新内容
20XX/03/11/XX 完成 UC4
20XX/03/23/XX 完成 UC1-3 UC5
20XX/03/25/XX 完成 UC6-8
20XX/03/27/XXX 修改用例编号
20XX/03/27/XXX 删除更改管理员密码

UC1 个人信息管理

UC2 浏览酒店信息

UC3 预定酒店

UC4 浏览订单(客户)

UC5 撤销订单

UC6 评价

UC7 维护酒店基本信息

UC8 录入可用客房

UC9 制定酒店促销策略

UC10 浏览订单(酒店)

UC11 订单执行

UC12 更新入住和退房信息

UC13 制定网站促销策略

UC14 信用充值

UC15 浏览订单(网站)

UC16 用户管理

UC17 信用记录查看

UC18 添加酒店

需求规格

1. 引言

1.1 目的

    本文档描述了互联网酒店预订系统的功能需求和非功能需求。5267开发小组的软件系统实现和验证都以此文档为依据。
   除特殊说明之外,本文档包括的需求都是高优先级需求。

1.2 范围

互联网酒店预订系统的开发目的是为了解决传统上的线下酒店预定模式所存在的种种弊端,开发目的是

  • 帮助酒店处理日常业务,包括维护酒店基本信息、录入可用客房、指定酒店促销策略、浏览订单、执行订单等。
  • 帮助客户实现在线酒店预订,功能包括注册会员、搜索酒店信息、浏览酒店详细信息、生成订单、评分和评论等。

通过互联网酒店预订系统,期望为使用该系统的酒店提高工作效率,了解到所有预订订单的变化动态;也期望帮助客户全面了解酒店情况,进行更好地比较与选择,并且能够进行房客评价,反映酒店与描述的相符程度,从而在在差旅出行获取更好的体验。

1.3 参考文献

  1. 软件工程与计算(卷二) 和 迭代功能需求简述
  2. 互联网酒店预订系统用例文档 v1.0
  3. IEEE 标准
  4. 大作业需求 v3

2. 总体描述

2.1 项目前景

2.1.1 背景与机遇

随着中国社会经济的发展,人民消费水平的提高,人民对旅游的需求日益增长。酒店作为旅游中的重要一环,酒店经营的范围也随之更规范和扩大化。

酒店各方面的增长呼唤着更优质的预定服务的需求。通过在线查看酒店,预定酒店已经成了人们向酒店订购服务的重要途径。在线酒店预定积累了大量的顾客体验和入住反馈的数据,可以指导酒店方的品牌提升、宣传策略和服务优化;展示的顾客评价等数据可以指导其他顾客做出更便捷更优异的预定选择。

该酒店预订系统正是为满足当下酒店的业务发展需求和顾客的便捷需求而开发的。面对日益激烈的市场竞争和不断增长的需求,酒店必须建立起自己的在线平台,才能在新一轮的竞争当中,提高自身经营效率和盈利率,占据有利地位,保障企业的良性循环和快速发展。

2.1.2 业务需求

BR1:1 个月内,酒店管理人员工作效率提升 40% 

BR2:6 个月后,运营成本要降低 15%

BR3:1 年内,线上平台预定量将占酒店总预定量的 70%

BR4:1 年内,平台使用客户数量增加 50%

2.2 项目功能

1:允许客户按搜索自己想预定的酒店

2:帮助客户全面了解酒店详情信息

3:帮助管理员处理预定订单和更新库存操作

4:为客户提供方便的查询和搜索酒店的方式。

5:加大酒店宣传力度,增加预定的客户数量

2.3 用户特征

观众 客户具有一定的计算机操作技能,可以完成输入、点击这些简单的操作。客户希望通过本预定系统简化预定酒店操作和获取更多酒店信息,避免线下预定的盲目和繁杂。客户希望操作简单,且搜索时以关键字等形式,避免长篇的纯文字列表。客户对于酒店的价格,位置,房间类型这些筛选条件都很敏感,因此希望可以有一个比较好的筛选策略帮助完成选择。客户对于界面的美观度非常重视,界面应当简洁美观化。客户可以接受支付宝、微信支付等常见支付方式。
网站管理员 系。管理员需要获取各酒店的预定情况以供分析。系统管理人员没有专业的计算机知识,仅可以进行一些图形界面的操作。管理员需要及时进行酒店库存的更新,工作繁忙,希望系统不要太多的浪费他们的时间。
酒店工作人员 酒店工作人员负责处理通过订单,并更新事实更新酒店的库存。酒店工作人员具有查看客户信誉的权限。酒店工作人员繁忙,希望操作能够简单,快捷。酒店工作人员不需要具备复杂的计算机知识。
酒店营销人员 酒店营销人员负责制定酒店的营销策略,拥有获取酒店最近预定情况和用户反馈的权限。酒店营销人员可以制定和修改酒店的营销政策。酒店营销人员繁忙,希望操作能够简单,快捷。酒店营销人员无需具备复杂的计算机知识。

2.4 约束

CON1: 系统将运行在网页浏览器上。

CON2: 系统使用 Web 界面。

CON3: 项目要使用持续集成方法进行开发。

CON4: 在开发中,开发这要提交软件需求规格说明文档、设计描述文档和测试报告。

CON5: 本项目将使用 Spring Boot 作为后端框架,使用 HTML, CSS, JavaScript,Vue 进行前端开发。

2.5 假设与依赖

1.线下业务会与线上系统进行数据同步,因此线上线下数据不存在冲突(不存在线上客户和线下客户同时预定了同一家酒店同一间房的情况)

2.超出本系统范围产生的异常均由线下处理(例如:支付宝等第三方支付系统产生异常)。

3 详细需求描述

3.1 对外接口需求

3.1.1 用户界面

UI1:系统母版

本系统为图形用户界面,采用扁平化设计风格。

本系统采用水平顶部导航栏,布局为:[网站 logo]+[可选]+[头像下拉框]

可选内容根据使用系统的角色为:

客户:[可选] = [酒店] + [订单] + [个人中心]

酒店工作人员:[可选] = [酒店] + [酒店管理] + [个人中心]

网站营销人员:[可选] = [酒店] + [营销管理] + [个人中心]

网站管理人员:[可选] = [酒店] + [网站管理] + [个人中心]

UI2:登录注册页

登录注册为卡片式的表单设计,可通过 tab 标签切换登录/注册。登录时候需要选择登录身份。

UI2:搜索酒店

采用系统母版,搜索酒店页为网站默认路由,顶部边栏下方并列放置酒店卡片及对应的详情链接。

可在页面上方进行筛选及搜索。

UI3:酒店详情页

采用系统母版,顶部边栏下方为酒店图片、酒店评分、酒店简介。

下方有房间信息、酒店详情,点击页面中的预订按钮进行预定。

UI4:订单页

采用客户系统母版,顶部边栏下方为所有历史订单列表。点击列表项和跳转至订单详情页面。

UI5:订单详情页

采用客户系统母版,顶部边栏下方为订单信息。

UI6:个人中心页

采用系统母版,顶部边栏下方为表格,表格展示当前登录账号的个人信息,点击修改按钮可进行个人信息修改。

UI7:营销管理页

采用网站营销人员系统母版,在侧边栏可选择需要进行的营销管理操作,如制定网站促销策略、信用充值等。

UI8:网站管理页

采用网站管理人员系统母版,在侧边栏可选择需要进行的网站管理操作,如用户管理、添加酒店及其工作人员,查询、更改酒店工作人员信息等。

3.1.2 通信接口

CI:客户端与服务器使用 HTTP 的方式进行通信。

3.2 功能需求

3.2.1 浏览订单

3.2.1.1 特征描述

客户可以浏览与其相关的订单,酒店工作人员可以浏览与其旗下酒店相关的订单,网站工作人员可以浏览所有订单

3.2.1.2 刺激/响应序列

刺激:用户请求浏览订单

响应:系统根据用户的具体身份显示相应的订单列表

刺激:用户选择筛选项

响应:系统显示符合筛选项的订单列表

3.2.1.3 相关功能需求
BROWSE ORDER SYSTEM
BrowseOrder.Start
BrowseOrder.ToBeExecuted
BrowseOrder.Executed
BrowseOrder.AbnormalAndCancelled
BrowseOrder.End
系统根据用户的具体身份显示相应的订单列表
系统筛选未被执行的订单
系统筛选已执行的订单
系统筛选异常订单和已撤销订单
系统退出浏览订单界面

3.2.2 撤销订单

3.2.2.1 特征描述

在客户浏览自己未执行的正常订单时,客户可以撤销自己未执行的正常订单,完成订单状态修改,信用值修改等

3.2.2.2 刺激/响应序列

刺激:客户选择撤销自己未执行的正常订单

响应:系统向客户发起确认

刺激:客户确认撤销自己的未执行的正常订单

响应:系统将订单置为已撤销状态,记录撤销时间

刺激:撤销时间与最晚订单执行时间距离不足 6 个小时

响应:系统扣除客户的信用值,扣除额度为订单的(总价值 * 1/2)

3.2.2.3 相关功能需求
CANCEL ORDER SYSTEM
CancelOrder.Start
CancelOrder.Check
CancelOrder.End
系统向客户发起是否撤销订单的确认
系统计算时间差判断是否会扣除信用值
系统收到客户的确认将订单置为已撤销状态并根据时间差选择是否扣除信用值

3.2.3 浏览酒店详细信息

3.2.3.1 特征描述

客户查看所有酒店的基本信息并查看某酒店的详细信息

3.2.3.2 刺激/响应序列

刺激:客户打开酒店预订网站首页

响应:系统显示酒店列表

刺激:客户选择酒店排序和筛选方式

响应:系统根据客户选择的排序和筛选方式重新显示酒店列表

刺激:客户选择某酒店查看详细信息

响应:系统显示相关酒店详细信息

3.2.3.3 相关功能需求
BROWSE HOTEL SYSTEM
BrowseHotel.Start
BrowseHotel.RateFirst
BrowseHotel.StarFliter
BrowseHotel.Booked
BrowseHotel.AddressFliter
BrowseHotel.Detail
系统列表显示所有酒店
系统根据酒店评分高低排序
系统根据酒店星级筛选
系统根据客户是否曾经预定筛选
系统根据地址筛选酒店
系统显示相关酒店详细信息

3.2.4 生成订单

3.2.4.1 特征描述

在客户浏览酒店时,客户可以选择预定酒店并生成订单

3.2.4.2 刺激/响应序列

刺激:客户选择预定某酒店

响应:系统请求预定酒店的详细信息

刺激:客户填写生成订单所需要的详细信息

响应:系统生成相关订单

3.2.4.2 相关功能需求
RESERVE SYSTEM
Reserve.Input
Reserve.CreditCheck
Reserve.Order
系统请求预定酒店的详细信息
系统查看客户信用值,如果信用值小于 0 无法生成订单
系统根据客户填写的详细信息生成订单

3.2.5 促销策略

3.2.5.1 特征描述

在客户生成订单时,网站根据可用的促销策略向客户提供优惠

3.2.5.2 刺激/响应序列

刺激:客户正在生成新的订单

响应:系统根据订单信息和促销策略提供优惠,修改定金

3.2.5.3 相关功能需求
PROMOTION SYSTEM
Promotion.BirthdayDiscount
Promotion.DoubleElevenDiscount
Promotion.TargetMoneyDiscount
Promotion.MultiDiscount
系统根据生日促销策略为客户提供优惠
系统根据双十一策略为客户提供优惠
系统根据满减策略为客户提供优惠
系统根据多间优惠策略为客户提供优惠

3.2.6 订单执行

3.2.6.1 特征描述

在客户入住后,酒店工作人员对相关订单状态进行修改

3.2.6.2 刺激/响应序列

刺激:酒店工作人员修改客户入住后的订单状态为已执行

响应:系统更新相关订单状态

3.2.6.3 相关功能需求
EXECUTE ORDER SYSTEM
ExecuteOrder.Change
ExecuteOrder.Exception
系统将入住后的订单置为已执行
系统将逾期未入住的订单置为异常

3.2.7 用户管理

3.2.7.1 特征描述

管理员对用户信息进行管理

3.2.7.2 刺激/响应序列

刺激:管理员查询用户

响应:系统返回相应用户信息

刺激:管理员添加用户并输入用户信息

响应:系统添加新的用户

刺激:管理员输入修改后的用户信息

响应:系统更新相关用户信息

刺激:管理员删除某用户信息

响应:系统删除相关用户信息

3.2.7.3 相关功能需求
ADMIN SYSTEM
Admin.search
Admin.addUser
Admin.update
Admin.delete
系统返回相应用户信息
系统添加新的用户
系统更新相关用户信息
系统删除相关用户信息

3.2.8 维护个人信息

3.2.8.1 特征描述

用户修改个人信息

3.2.7.2 刺激/响应序列

刺激:用户输入需要修改的个人信息

响应:系统更新该用户的相关信息

3.2.7.3 相关功能需求
USERINFO SYSTEM
UserInfo.update 系统更新该用户的相关信息

3.3 非功能需求

3.3.1 安全性

Safety1: 用户只能查看和维护自己的信息

Safety2: 酒店工作人员只能处理其所指定酒店的工作

Safety3: 网站管理人员不能修改用户的信用值

Safety4: 为防信息泄露,用户的账号、密码、姓名(名称)、联系方式必须密文存储

3.3.2 可维护性

Modifiability1: 本项目需要有注释和软件开发文档说明。

3.3.3 易用性

Usability1: 所有类型人员都不需要专门的培训,就可以在 10 分钟内完成任一个操作任务。

3.3.4 可靠性

Reliability1: 网络畅通,不会发生故障

Reliability2: 所有操作任务的完成时间不会超过 1 个小时,即使用暂停与中断不会超过 1 个小时

Reliability3: 地址中的城市和商圈比较固定,事先被预置在系统数据中,且少量修改直接在后台数据中进行,不需要系统提供维护功能

3.3.5 业务规则

BR1: 适用(入住时间,退房时间,生日)的酒店促销策略

			 (入住时间 <= 生日)而且(生日 <= 退房时间)

BR2: 适用(订单生成时间)的网站促销策略

			 (订单生成时间 = 特定时间)

3.3.6 约束

IC1: 系统不需要处理费用问题,完全由线下完成

IC2: 用户的异常订单申诉不需要系统处理,完成线下进行

IC3: 系统功能不包括酒店的房间管理(例如房间布局、门号、线下入住与退房等等),只需要完成订单操作和更新线下导致的可用房间类型数量变化。

3.4 数据需求

3.4.1 数据定义

DR1:系统需要存储客户的基本信息(昵称,姓名,手机号,个人邮箱,信誉积分),酒店工作人员基本信息(昵称,姓名,密码,手机号,酒店名称,酒店编号,工作邮箱),网站管理人员基本信息(账号,密码)。

DR2:系统需要储存酒店的基本信息(酒店名称,酒店简介,酒店地址,附近商圈,酒店设施和酒店星级),客房的基本信息(房间类型、房间数量、宜住人数、是否适合儿童入住)。

DR3:系统需要储存订单的基本信息(预定房间种类和数量、相关酒店、入住时间、退房时间、入住人数、入住客户个人信息、有无儿童以及儿童人数)。

3.4.2 默认数据

默认数据用于以下两种情况:

  • 系统中新增加数据时。

  • 编辑数据不小心将相关内容清空时:

    Default1:客户的信誉积分默认为 1000。

    Default2:房间价格的数据默认为 0。

    Default3:用户的默认身份是酒店工作人员。

    Default4:时间默认为当天。

    Default5:订单入住人数默认为 1。

    Default6:异常订单原因默认为超时。

3.4.3 数据格式要求

Format1:日期或时间的格式必须是:yyyy-mm-dd,即:年-月-日。

Format2:房间价格的格式必须是大于等于 0,精确到小数点后 2 位的浮点数,单位为元。

Format3:数量的格式必须是正整数。

3.5 其他需求

3.5.1 部署要求

Deploy1:分布式部署:用户、酒店工作人员、网站营销人员、网站管理人员分布在不同的地方,所以要提供各自的应用部署。

体系结构

1. 引言

1.1 编制目的

本报告详细完成对互联网酒店预定系统的概要设计,达到指导详细设计和开发的目的,同时实现和测试人员及用户的沟通。

本报告面向开发人员、测试人员及最终用户编写,是了解系统的导航。

1.2 词汇表

词汇名称 词汇含义 备注
用户 客户、酒店工作人员和网站工作人员 管理员不算是用户

1.3 参考资料

1.IEEE 标准

2.互联网酒店预订系统需求规格说明文档

3.互联网酒店预订系统用例描述文档

4.互联网酒店预订系统用例文档

5.软件工程与计算(卷二)软件开发的技术基础

2. 产品概述

互联网酒店预订系统是为酒店的在线预定系统,开发的目的是帮助顾客能在线上直接完成酒店的预定和酒店在线上处理订单,为顾客提供的服务包括搜索酒店、选择酒店、预定酒店、查看个人相关记录信息,为酒店提供的服务包括处理订单,查看顾客信息,更新库存,实现优惠促销等。

互联网酒店预订系统,希望可以为上线酒店减少线下工作、经营成本,吸引更多顾客,提高顾客满意度和盈利率。

3. 逻辑视图

    互联网酒店预订系统中,选择了分层体系结构风格,将系统分为4层(展示层、控制层、业务逻辑层、数据层)能够很好地示意整个高层抽象。

    展示层采用MVVM架构风格的Vue作为框架,完成页面的实现;业务逻辑层包含业务逻辑处理的实现;数据层负责数据的持久化和访问。

    分层逻体系结构的逻辑视图和逻辑设计方案如下图所示。

4. 组合视图

4.1 开发包图

    互联网酒店预订系统的最终开发包设计如表1所示。

表 1 互联网酒店预订系统的最终开发包设计

开发包 依赖的其他开发包
views.main views.admin、views.user、views.hotel、views.hotelManager、vo
views.admin controller.admin、axios、界面类库包、vo
controller.admin bl.admin、vo、axios
bl.admin data.admin、po、vo
data.admin databseutility
views.user controller.user、controller.order、axios、界面类库包、vo
controller.user bl.user、vo、axios
bl.user data.user、po、vo
data.user databseutility
views.hotel controller.hotel、controller.order、controller.coupon、axios、界面类库包、vo
controller.hotel bl.hotel、vo、axios
bl.hotel bl.user、data.hotel、po、vo
data.hotel databseutility
views.hotelManager controller.hotel、controller.order、controller.coupon、axios、界面类库包、vo
controller.order bl.order、vo、axios
bl.order bl.user、bl.hotel、data.order、po、vo
data.order databseutility
controller.coupon conponbl、vo、axios
bl.coupon data.coupon、po、vo
data.coupon databseutility
vo
po
config
界面类库包
axios HTTP
databaseutility MyBatis
    由于Web开发的特殊性, 互联网酒店预订系统的客户端程序为浏览器,只需用户自行安装浏览器即可。在本文档中的客户端开发包图为前端开发包图。客户端和服务器端开发包图如下图所示。

互联网酒店预订系统客户端开发包图:

互联网酒店预订系统服务端开发包图:

4.2 运行时进程

    互联网酒店预订系统中,会有多个客户端进程和一个服务器端进程。结合部署图,客户端进程在客户端机器上运行,服务器端进程在服务器端机器上运行。进程图如下所示。

4.3 物理部署

    互联网酒店预订系统中,客户端构件是放在客户端机器上的,服务器端构件是放在服务器端机器上的。在客户端节点上,只需要安装现代浏览器(即支持HTML、XHTML、CSS、ECMAScript及W3C DOM标准的浏览器)即可。具体部署图如下所示。

5. 架构设计

  • 描述功能分解和如何在不同的层中安排软件模块
    • 描述架构中的对象,包含架构图
    • 描述组件接口信息
      • 包括:语法、前置条件、后置条件

5.1 模块职责

由于 Web 开发的特殊性, 互联网酒店预订系统的客户端程序为浏览器,只需用户自行安装浏览器即可。

服务器端模块视图:

表 2 服务器端各层的职责

职责
启动模块 负责启动系统,初始化网络通信机制和数据服务的连接
展示层 基于 Web 的互联网酒店预订系统的客户端用户界面
接口模块 负责客户端和服务器端的通信及数据传递
业务逻辑层 对用户界面的输入进行响应并执行业务处理逻辑
数据服务层 负责业务逻辑层和数据层的数据传递
数据层 负责数据的持久化和数据的访问

每一层只是使用下方直接接触的层。层与层之间仅仅是通过接口的调用来完成的。层之间调用的接口如表 3 所示。

表 3 层之间调用的接口

接口 服务调用方 服务提供方
API 服务器端展示层 服务器端接口模块
AdminService
CouponService
HotelService
RoomService
OrderService
AccountService
服务器端接口模块 服务器端业务逻辑层
AdminMapper
CouponMapper
HotelMapper
RoomMapper
OrderMapper
AccountMapper
CreditMapper
CommentMapper
服务器端业务逻辑层 服务器端数据服务层
XML 服务器端数据服务层 服务器端数据层

借用增加订单用例来说明层之间的调用,如图所示。每一层之间都是由上层依赖了一个接口(需接口),而下层实现这个接口(供接口)。OrderService 提供了 OrderUI 界面所需要的所有业务逻辑功能。OrderMapper 提供了对数据库的增、删、改、查等操作。这样的实现就大大降低了层与层之间的耦合。

添加订单用例层之间调用的接口:

5.2 用户界面层分解

根据需求,系统能在 20 个用户界面:登录界面、用户界面、网站管理员界面、网站营销人员页面、酒店工作人员界面、注册会员、个人信息页面、搜索酒店页面、浏览酒店页面、生成订单页面、浏览订单页面、取消订单页面、添加酒店及其工作人员页面、用户管理、制定网站促销策略页面、浏览异常订单页面、维护酒店信息页面、录入客房信息页面、制定酒店促销策略页面、浏览订单页面。

5.2.1 职责

服务名 服务
manageUser 负责管理系统管理员的账户
hotelList 负责展示酒店列表和特定酒店详细信息
header 负责页面的跳转
manageHotel 负责管理酒店列表,显示优惠政策
Info 负责修改用户信息,用户订单
login 负责显示登录界面
hotelDetail 负责显示酒店详细信息

5.2.2 接口规范

5.2.2.1 manageUser 模块的接口规范

提供的服务(供接口)

manageUser.addManager
语法 addManager();
前置条件 以管理员的身份登录
后置条件 调用 addManagerAPI

需要的接口(需接口)

服务名 服务
AdminService.registerAccount 在数据库 User 表中加入新管理人员数据
5.2.2.2 hotelList 模块的接口规范

提供的服务(供接口)

hotelList.pageChange
语法 pageChange(page,pagesize);
前置条件
后置条件 酒店工作人员添加成功或失败
hotelList.jumptoDetails
语法 jumptoDetails(id);
前置条件
后置条件 跳转至酒店详情显示

需要的接口(需接口)

服务名 服务
HotelService.retrieveHotels 新建一个酒店工作人员对象
HotelService.retrieveHotelDetails 查找所有的酒店工作人员
5.2.2.3 header 模块的接口规范

提供的服务(供接口)

header.selectMenu
语法 List getMatchOrderCoupon(OrderVO orderVO);
前置条件
后置条件 跳转至指定页面
header.jumpToHome
语法 jumpToHome();
前置条件 酒店 ID 符合输入规则
后置条件 根据酒店 ID 查找相应的优惠策略
header.jumpToUserInfo
语法 jumpToUserInfo;
前置条件
后置条件 添加酒店满减优惠策略
5.2.2.4 manageHotel 模块的接口规范

提供的服务(供接口)

manageHotel.addHotel
语法 addHotel();
前置条件
后置条件 查看是否存在相应的酒店工作人员;酒店创建成功或失败
manageHotel.addRoom
语法 void updateRoomInfo(Integer hotelId, String roomType,Integer rooms);
前置条件
后置条件 显示添加后的结果,更新 fangjian 库存
manageHotel.showCoupon
语法 showCoupon();
前置条件
后置条件 查找是否存在相应的酒店,恢复某类型的房间数量
manageHotel.deleteHotel
语法 deleteHotel();
前置条件
后置条件 查找所有的酒店信息
manageHotel.deleteOrder
语法 deleteOrder();
前置条件
后置条件 查找是否存在相应的酒店,返回酒店信息

需要的接口(需接口)

服务名 服务
HotelService.addHotel 添加一个酒店
RoomService.insertRoomInfo 添加客房信息
CouponService.getHotelAllcoupon 返回某个酒店所有优惠策略
HotelService.updateRoomInfo 更新客房信息
5.2.2.5 info 模块的接口规范

提供的服务(供接口)

Info.saveModify
语法 saveModify();
前置条件 修改内容符合输入规则、数据要求
后置条件 查找是否有足够多相应类型的房间;订单创建成功或失败
Info.modifyInfo
语法 modifyInfo();
前置条件
后置条件 modify 的状态设置为 true
Info.cancelModify
语法 cancelModify();
前置条件
后置条件 modify 的状态设置为 false
Info.confirmCancelOrder
语法 confirmCancelOrder(order);
前置条件 用户选择撤销订单
后置条件 根据订单 ID 查找相应的订单并撤销订单
Info.cancelCancelOrder
语法 cancelCancelOrder();
前置条件 用户选择取消撤销订单
后置条件 根据酒店 ID 查找相应酒店的订单

需要的接口(需接口)

服务名 服务
AccountService.updateUserInfo 调用数据层接口更新个人信息并返回 ResponseVO
OrderService.annulOrder 调用数据层接口撤销订单,更新客房信息并返回 ResponseVO
5.2.2.6 login 模块的接口规范

提供的服务(供接口)

login.addManager
语法 addManager();
前置条件 以管理员身份登录
后置条件 调用 addManagerAPI

需要的接口(需接口)

服务名 服务
AdminService.addManager 向数据库 User 表中插入新管理人员的数据
5.2.2.7 hotelDetail 模块的接口规范

提供的服务(供接口)

hotelDetail.beforeMount
语法 beforeMount()
前置条件
后置条件 检查用户输入的邮箱是否有效
hotelDetail.beforeRouteUpdate
语法 beforeRouteUpdate(to, from, next)
前置条件 用户输入密码
后置条件 modify 的状态设置为 true

5.3 业务逻辑层分解

业务逻辑层包含多个针对界面的业务逻辑处理对象

5.3.1 职责

模块 职责
AccountService 负责实现客户登录注册以及维护个人信息所需要的服务
AdminService 负责实现注册和查看酒店工作人员信息所需要的服务
CouponService 负责实现增删改查酒店和网站的优惠策略所需要的服务
HotelService 负责实现添加、查看和维护酒店信息所需要的服务
OrderService 负责生成、查看或撤销订单信息所需要的服务
RoomService 负责实现添加、查看和维护酒店房间信息所需要的服务

5.3.2 接口规范

业务逻辑层的模块 AccountService、模块 AdminService、模块 CouponService、模块 HotelService、模块 OrderService 和 RoomService 的接口规范如下所示

5.3.2.1 AccountService 模块的接口规范

提供的服务(供接口)

AccountService.registerAccount
语法 ResponseVO registerAccount(UserVO userVO);
前置条件 用户输入注册账号所需的信息
后置条件 客户创建成功或失败
AccountService.login
语法 User login(UserForm userForm);
前置条件 用户输入登录信息
后置条件 根据用户名和密码匹配返回相应的用户
AccountService.getUserInfo
语法 User getUserInfo(int id);
前置条件
后置条件 查找是否存在相应的用户,返回用户
AccountService.updateUserInfo
语法 ResponseVO updateUserInfo(int id, String password,String username,String phonenumber);
前置条件 用户输入想要修改的个人信息
后置条件 查找是否存在相应的用户,更新用户信息
AccountService.updateCredit
语法 ResponseVO updateCredit(CreditVO creditVO);
前置条件 用户的信用值发生变化
后置条件 更新相关用户的信用值
AccountService.checkAllCredit
语法 ResponseVO checkAllCredit(int id);
前置条件
后置条件 查找是否存在相应的用户,返回用户信用变化记录
AccountService.updatePassword
语法 ResponseVO updatePassword(PasswordForm passwordForm);
前置条件 用户输入想要修改的密码信息
后置条件 查找相关用户,并更新该用户的密码

需要的接口(需接口)

服务名 服务
AccountMapper.createNewAccount 数据库中新建一个客户对象
AccountMapper.getAccountByName 数据库中根据用户名查找用户
AccountMapper.getAccountById 数据库中根据用户 ID 查找用户
AccountMapper.updateAccount 数据库中更新用户信息
AccountMapper.updateCredit 数据库中更新用户信用值
AccountMapper.updatePassword 数据库中更新用户的密码
CreditMapper.insertCredit 数据库中插入信用变更记录
CreditMapper.checkAllCredit 数据库中查找所有的信用变更记录
5.3.2.2 AdminService 模块的接口规范

提供的服务(供接口)

AdminService.getAllUsers
语法 List getAllUsers();
前置条件
后置条件 返回所有用户
AdminService.getAllManagers
语法 List getAllManagers();
前置条件
后置条件 返回所有酒店工作人员
AdminService.addManager
语法 ResponseVO addManager(UserVO userVO);
前置条件 管理员输入网站工作人员信息
后置条件 添加网站工作人员
AdminService.addHotelManager
语法 ResponseVO addHotelManager(UserVO userVO);
前置条件 管理员输入酒店工作人员信息
后置条件 添加酒店工作人员
AdminService.resetPassword
语法 ResponseVO resetPassword(int userId);
前置条件
后置条件 重置相关用户的密码

需要的接口(需接口)

服务名 服务
AdminMapper.getAllUsers 数据库中查找所有的用户
AdminMapper.getAllManagers 数据库中查找所有的酒店工作人员
AdminMapper.resetPassword 数据库中重置某用户的密码
AdminMapper.addUser 数据库中新建一个用户
5.3.2.3 CouponService 模块的接口规范

提供的服务(供接口)

CouponService.getMatchOrderCoupon
语法 List getMatchOrderCoupon(OrderVO orderVO);
前置条件 生成新的订单信息
后置条件 根据订单信息查找相应的优惠策略
CouponService.getHotelAllCoupon
语法 List getHotelAllCoupon(Integer hotelId);
前置条件
后置条件 根据酒店 ID 查找相应的优惠策略
CouponService.addHotelTargetMoneyCoupon
语法 CouponVO addHotelTargetMoneyCoupon(HotelTargetMoneyCouponVO hotelTargetMoneyCouponVO);
前置条件 酒店工作人员输入新的满减优惠策略信息
后置条件 添加酒店满减优惠策略
CouponService.updateHotelTargetMoneyCoupon
语法 CouponVO updateHotelTargetMoneyCoupon(HotelTargetMoneyCouponVO hotelTargetMoneyCouponVO);
前置条件 酒店满减优惠策略已存在
后置条件 修改酒店满减优惠策略
CouponService.addHotelTimeCoupon
语法 CouponVO addHotelTimeCoupon(HotelTimeCouponVO hotelTimeCouponVO);
前置条件 酒店工作人员输入新的节日优惠策略信息
后置条件 添加酒店节日优惠策略
CouponService.updateHotelTimeCoupon
语法 CouponVO updateHotelTimeCoupon(HotelTimeCouponVO hotelTimeCouponVO);
前置条件 酒店节日优惠策略已存在
后置条件 修改酒店节日优惠策略
CouponService.addHotelOfMultiCoupon
语法 CouponVO addHotelOfMultiCoupon(HotelOfMultiCouponVO hotelOfMultiCouponVO);
前置条件 酒店工作人员输入新的多间优惠策略信息
后置条件 添加酒店多间优惠策略
CouponService.updateHotelOfMultiCoupon
语法 CouponVO updateHotelOfMultiCoupon(HotelOfMultiCouponVO hotelOfMultiCouponVO);
前置条件 酒店多间优惠策略已存在
后置条件 修改酒店多间优惠策略
Coupon.getHotelCouponById
语法 Coupon getHotelCouponById(Integer couponId);
前置条件 优惠策略 ID 符合输入规则
后置条件 根据优惠策略 ID 查找优惠策略
Coupon.getWebAllCoupons
语法 List getWebAllCoupons();
前置条件
后置条件 返回网站所有的优惠策略

需要的接口(需接口)

服务名 服务
CouponMapper.selectByHotelId 数据库中根据酒店 ID 查找优惠策略
CouponMapper.insertCoupon 数据库中新建一个优惠策略对象
CouponMapper.updateCoupon 数据库中更新一个优惠策略对象
CouponMapper.selectById 数据库中根据优惠策略 ID 查找优惠策略
CouponMatchStrategy.isMatch 判断某个订单是否符合某个优惠策略
CouponMapper.getWebAllCoupon 数据库中查找网站的优惠策略
5.3.2.4 HotelService 模块的接口规范

提供的服务(供接口)

HotelService.addHotel
语法 void addHotel(HotelVO hotelVO) throws ServiceException;
前置条件 酒店信息输入符合输入规则、数据要求
后置条件 查看是否存在相应的酒店工作人员;酒店创建成功或失败
HotelService.updateHotel
语法 void updateHotel(HotelVO hotelVO)
前置条件 酒店工作人员修改酒店的信息
后置条件 更新相关酒店信息
HotelService.retrieveHotels
语法 List retrieveHotels();
前置条件
后置条件 查找所有的酒店信息
HotelService.retrieveHotelDetails
语法 HotelVO retrieveHotelDetails(Integer hotelId);
前置条件
后置条件 查找是否存在相应的酒店,返回酒店信息
HotelService.getHotelRooms
语法 List getHotelRooms(HotelRoomsVO hotelRoomsVO)
前置条件
后置条件 返回相关酒店剩余房间信息
HotelService.addComment
语法 ResponseVO addComment(CommentVO commentVO);
前置条件 客户填写评论信息
后置条件 更新相关酒店评论信息
HotelService.checkComment
语法 ResponseVO checkComment(int hotelId);
前置条件
后置条件 返回相关酒店所有评论信息
HotelService.retrieveHotelsByManager
语法 List retrieveHotelsByManager(int managerId);
前置条件
后置条件 返回相关酒店工作人员旗下酒店的信息

需要的接口(需接口)

服务名 服务
HotelMapper.insertHotel 数据库中新建一个酒店对象
HotelMapper.selectAllHotel 数据库中查找所有的酒店
HotelMapper.selectById 数据库中根据酒店 ID 查找酒店
HotelMapper.updateHotel 数据库中更新酒店信息
HotelMapper.updateRate 数据库中更新酒店的评分
HotelMapper.retrieveHotelsByManager 数据库中根据酒店工作人员查找酒店
OrderMapper.getOrderNumByDate 数据库中根据日期查找订单数
OrderMapper.updateOrderState 数据库中更新订单状态
AccountService.getUserInfo 获取用户个人信息
RoomService.retrieveHotelRoomInfo 获取某个酒店的全部房间信息
CommentMapper.addComment 数据库中新建评论对象
CommentMapper.checkComment 数据库中查找酒店的所有评论
5.3.2.5 OrderService 模块的接口规范

提供的服务(供接口)

OrderService.addOrder
语法 ResponseVO addOrder(OrderVO orderVO);
前置条件 订单信息符合输入规则、数据要求
后置条件 查找是否有足够多相应类型的房间;订单创建成功或失败
OrderService.getAllOrders
语法 List getAllOrders();
前置条件
后置条件 查找所有的订单信息
OrderService.getUserOrders
语法 List getUserOrders(int userid);
前置条件
后置条件 根据用户 ID 查找相应的订单
OrderService.getManagerOrders
语法 List getManagerOrders(int managerId);
前置条件
后置条件 根据酒店管理人员查找订单
OrderService.annulOrder
语法 ResponseVO annulOrder(int orderid);
前置条件
后置条件 根据订单 ID 查找相应的订单并撤销订单
OrderService.getHotelOrders
语法 List getHotelOrders(Integer hotelId);
前置条件
后置条件 根据酒店 ID 查找相应酒店的订单
OrderService.getOrderDetail
语法 Order getOrderDetail(int orderId);
前置条件
后置条件 根据订单 ID 查找订单
OrderService.executeOrder
语法 ResponseVO executeOrder(int orderId);
前置条件
后置条件 更新相关订单状态为已执行
OrderService.checkException
语法 void checkException();
前置条件
后置条件 更新相关订单状态为异常

需要的接口(需接口)

服务名 服务
OrderMapper.addOrder 数据库中新建一个订单对象
OrderMapper.getAllOrders 数据库中查找所有的订单
OrderMapper.getUserOrders 数据库中根据用户 ID 查找订单
OrderMapper.getManagerOrders 数据库中根据酒店工作人员 ID 查找订单
OrderMapper.getOrderById 数据库中根据订单 ID 查找订单
OrderMapper.annulOrder 数据库中根据订单 ID 查找并撤销订单
OrderMapper.updateOrderState 数据库中更新订单状态
AccountService.updateCredit 更新用户的信用值
AccountMapper.getAccountById 数据库中查找用户
5.3.2.6 RoomService 模块的接口规范

提供的服务(供接口)

RoomService.retrieveHotelRoomInfo
语法 List retrieveHotelRoomInfo(Integer hotelId);
前置条件
后置条件 根据酒店 ID 查找相应的酒店房间信息
RoomService.insertRoomInfo
语法 void insertRoomInfo(HotelRoom hotelRoom);
前置条件 酒店房间信息输入符合输入规则、数据要求
后置条件 酒店房间创建成功

需要的接口(需接口)

服务名 服务
RoomMapper.insertRoom 数据库中新建一个房间对象
RoomMapper.selectRoomsByHotelId 数据库中根据酒店 ID 查找房间信息

5.4 数据层分解

数据层主要给业务逻辑层提供数据访问服务,包括对于持久化数据的增、删、改、查。

模块设计和各个模块所提供的服务分别如下图所示。

5.4.1 数据层模块的职责

数据层模块的职责如下表 xx 所示。

表 数据层模块的职责

模块 职责
AdminMapper 基于 SQL 数据库的持久化数据库的接口,提供酒店工作人员信息相关的增删改查服务
CouponMapper 基于 SQL 数据库的持久化数据库的接口,提供优惠券信息相关的增删改查服务
HotelMapper 基于 SQL 数据库的持久化数据库的接口,提供酒店信息相关的增删改查服务
RoomMapper 基于 SQL 数据库的持久化数据库的接口,提供酒店房间信息相关的增删改查服务
OrderMapper 基于 SQL 数据库的持久化数据库的接口,提供预定订单信息相关的增删改查服务
AccountMapper 基于 SQL 数据库的持久化数据库的接口,提供客户信息相关的增删改查服务
CommentMapper 基于 SQL 数据库的持久化数据库的接口,提供订单评论信息相关的增删改查服务
CreditMapper 基于 SQL 数据库的持久化数据库的接口,提供客户信用信息相关的增删改查服务

5.4.2 接口规范

5.4.2.1 AdminMapper 模块的接口规范
提供的接口
AdminMapper.addManager 语法
前置条件
后置条件
int addManager(User user)
获得一份酒店工作人员的信息
添加一个酒店工作人员
AdminMapper.getAllManagers 语法
前置条件
后置条件
List<User> getAllManagers()

获取所有酒店工作人员
AdminMapper.getAllUsers 语法
前置条件
后置条件
List getAllUsers();

获取所有用户
AdminMapper.resetPassword 语法
前置条件
后置条件
void resetPassword(int userId);

重置相关用户密码
5.4.2.2 CouponMapper 模块的接口规范
提供的接口
CouponMapper.insertCoupon 语法
前置条件
后置条件
int insertCoupon(Coupon coupon)

添加一个优惠券
CouponMapper.updateCoupon 语法
前置条件
后置条件
int updateCoupon(Coupon coupon)

更新一个优惠券内容
CouponMapper.selectByHotelId 语法
前置条件
后置条件
List<Coupon> selectByHotelId(Integer hotelId)

查看某酒店所有优惠券
CouponMapper.getWebAllCoupon 语法
前置条件
后置条件
List getWebAllCoupon();

查找网站所有的优惠策略
CouponMapper.selectById 语法
前置条件
后置条件
Coupon selectById(Integer id)

根据 id 查看优惠券内容
5.4.2.3 HotelMapper 模块的接口规范
提供的接口
HotelMapper.insertHotel 语法
前置条件
后置条件
int insertHotel(Hotel hotel)

添加一家酒店
HotelMapper.selectAllHotel 语法
前置条件
后置条件
List<HotelVO> selectAllHotel()

获取所有酒店
HotelMapper.selectById 语法
前置条件
后置条件
HotelVO selectById(Integer id)

根据 id 获取酒店信息
HotelMapper.updateRate 语法
前置条件
后置条件
void updateRate(Integer hotelId);

更新酒店评分
HotelMapper.retrieveHotelByManager 语法
前置条件
后置条件
List retrieveHotelsByManager(int managerId);

根据酒店工作人员查找酒店
Hotel.updateHotel 语法
前置条件
后置条件
void updateHotel(Hotel hotel);
获得修改的酒店信息
更改相关酒店信息
5.4.2.4 RoomMapper 模块的接口规范
提供的接口
RoomMapper.insertRoom 语法
前置条件
后置条件
int insertRoom(HotelRoom hotelRoom)
获得新的酒店房间信息
添加酒店房间
RoomMapper.selectRoomsByHotelId 语法
前置条件
后置条件
List<HotelRoom> selectRoomsByHotelId(Integer hotelId)

根据 id 获取酒店房间信息
5.4.2.5 OrderMapper 模块的接口规范
提供的接口
OrderMapper.addOrder 语法
前置条件
后置条件
int addOrder(Order order)
获得新的订单信息
添加一个订单
OrderMapper.getAllOrders 语法
前置条件
后置条件
List<Order> getAllOrders()

获取所有订单
OrderMapper.getUserOrders 语法
前置条件
后置条件
List<Order> getUserOrders( int userid)

获取某客户的所有订单
OrderMapper.updateOrderState 语法
前置条件
后置条件
int updateOrderState(int orderId, OrderStateType stateType);
获得新的订单状态信息
更新相关订单的状态
OrderMapper.getOrderById 语法
前置条件
后置条件
Order getOrderById( int orderid)

获取订单信息
OrderMapper.getHotelAllOrders 语法
前置条件
后置条件
List getHotelAllOrders(int hotelId);

根据酒店 ID 获取订单信息
OrderMapper.getOrderNumByDate 语法
前置条件
后置条件
Integer getOrderNumByDate(int hotelId, RoomType roomType, String date);

根据酒店 ID、房间类型和日期获取订单的数量
OrderMapper.checkException 语法
前置条件
后置条件
void checkException();

检查异常订单
OrderMapper.getManagerOrders 语法
前置条件
后置条件
List getManagerOrders(int managerId);

根据酒店工作人员 ID 查找订单
5.4.2.6 AccountMapper 模块的接口规范
提供的接口
AccountMapper.createNewAccount 语法
前置条件
后置条件
int createNewAccount(User user)

添加一个客户
AccountMapper.getAccountByName 语法
前置条件
后置条件
User getAccountByName( String email)

根据邮箱获取客户信息
AccountMapper.getAccountById 语法
前置条件
后置条件
User getAccountById( int id)

根据 id 获取客户信息
AccountMapper.updateAccount 语法
前置条件
后置条件
int updateAccount( int id, String password, String username, String phonenumber)

更新一个客户信息
AccountMapper.updateCredit 语法
前置条件
后置条件
int updateCredit(int userId, double result);

更新客户的信用值
Account.updatePassword 语法
前置条件
后置条件
int updatePassword(int userId, String password);

更新用户的密码
5.4.2.7 CommentMapper 模块的接口规范
提供的接口
Comment.addComment 语法
前置条件
后置条件
int addComment(CommentVO commentVO);
获得新的评论信息
添加一个评论
Comment.checkComment 语法
前置条件
后置条件
List checkComment(int hotelId);

根据酒店 ID 获取评论
5.4.2.8 CreditMapper 模块的接口规范
提供的接口
CreditMapper.insertCredit 语法
前置条件
后置条件
int insertCredit(CreditVO creditVO);
获得新的信用值信息
更新相关客户的信用值
CreditMapper.checkAllCredit 语法
前置条件
后置条件
List checkAllCredit(int id);

查看某客户所有的信用值变化

6.信息视角

6.1 数据持久化对象

在此对系统的实体类 PO 做简单的介绍:

  • coupon:

    描述、可优惠酒店、类型、名称、达标金额、优惠金额、折扣、状态、有效开始日期、截止日期

    • id(键)
    • description(描述)
    • hotelId(可优惠酒店的 id,-1 代表所有酒店)
    • couponType(优惠券类型,1 为多间优惠,2 为节日优惠、3 为满减优惠)
    • couponName(优惠券名称)
    • target_money(达标金额)
    • multiThreshold(多件优惠使用标准)
    • discount_money(优惠金额)
    • discount(折扣,满减优惠为 0)
    • status(状态,1 有效,0 失效)
    • start_time(有效开始日期)
    • end_time(截止日期)
  • hotel

    名称、描述、地址、区域、星级、联系电话、评分、酒店管理人员

    • id(键)
    • hotelName
    • description
    • address
    • bizRegion(区域)
    • hotelStar
    • phoneNum
    • rate(评分)
    • manager_id(唯一的酒店管理人员 id)
  • HotelRoom

    价格、剩余房间数、总房间数、所属酒店、房间类型

    • id
    • price
    • total
    • hotelId
    • roomType
  • user

    名称、密码、邮箱地址、联系电话、信用值、用户类型

    • id
    • email
    • password
    • username
    • phonenumber
    • credit
    • usertype
  • order

    客户、酒店、酒店名、入住时间、退房时间、房间类型、房间数量、入住人数、是否带儿童、订单创建时间、订单价格、客户名称、客户电话、订单状态

    • id
    • userId
    • hotelId
    • hotelName
    • checkInDate
    • checkOutDate
    • roomType
    • roomNum
    • peopleNum
    • haveChild
    • createDate
    • price
    • clientName
    • phoneNumber
    • orderState
  • comment

    评论时间、酒店、订单、客户、分数、评价内容

    • id
    • createTime
    • hotelId
    • orderId
    • username
    • grade
    • content
  • credit

    用户、信用值变化原因、时间、订单、加减、改变数量、结果

    • id
    • userId
    • actionType
    • time
    • orderId
    • sign
    • changeNum
    • result

例如,持久化用户 User 的定义如下所示

public class User {
    
    
    private Integer id;
    private String email;
    private String password;
    private String userName;
    private String phoneNumber;
    private double credit;
    private UserType userType;

    public Integer getId() {
    
    
        return id;
    }

    public void setId(Integer id) {
    
    
        this.id = id;
    }

    public String getUserName() {
    
    
        return userName;
    }

    public void setUserName(String userName) {
    
    
        this.userName = userName;
    }

    public String getPhoneNumber() {
    
    
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
    
    
        this.phoneNumber = phoneNumber;
    }

    public double getCredit() {
    
    
        return credit;
    }

    public void setCredit(double credit) {
    
    
        this.credit = credit;
    }

    public String getEmail() {
    
    
        return email;
    }

    public void setEmail(String email) {
    
    
        this.email = email;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }

    public UserType getUserType() {
    
    
        return userType;
    }

    public void setUserType(UserType userType) {
    
    
        this.userType = userType;
    }
}


6.2 数据库表

数据库中包含 coupon 表、hotel 表、orderlist 表、room 表、user 表

详细设计

1. 引言

1.1 编制目的

本报告详细完成对互联网酒店预定系统的概要设计,达到指导详细设计和开发的目的,同时实现和测试人员及用户的沟通。本报告面向开发人员、测试人员及最终用户编写,是了解系统的导航。

1.2 词汇表

词汇名称 词汇含义 备注
用户 客户、酒店工作人员和网站工作人员 不包括管理员

1.3 参考资料

  1. IEEE 标准
  2. 互联网酒店预订系统需求规格说明文档
  3. 互联网酒店预订系统用例描述文档
  4. 互联网酒店预订系统用例文档
  5. 互联网酒店预订系统体系结构文档
  6. 软件工程与计算(卷二)软件开发的技术基础

2. 产品概述

互联网酒店预订系统是为酒店的在线预定系统,开发的目的是帮助顾客能在线上直接完成酒店的预定和酒店在线上处理订单,为顾客提供的服务包括搜索酒店、选择酒店、预定酒店、查看个人相关记录信息,为酒店提供的服务包括处理订单,查看顾客信息,更新库存,实现优惠促销等。

互联网酒店预订系统,希望可以为上线酒店减少线下工作、经营成本,吸引更多顾客,提高顾客满意度和盈利率。

3. 体系结构设计概述

互联网酒店预订系统中,选择了分层体系结构风格,将系统分为4层(展示层、控制层、业务逻辑层、数据层)能够很好地示意整个高层抽象。

展示层采用MVVM架构风格的Vue作为框架,完成页面的实现;业务逻辑层包含业务逻辑处理的实现;数据层负责数据的持久化和访问。

4. 结构视角

部分模块省略部分可参见 Order 模块

4.1 Admin 模块

4.1.1 模块概述

admin模块承担的需求主要为用户管理及相关非功能需求。

admin模块的职责及接口参见体系结构文档业务逻辑层AdminService相关内容。

4.1.2 整体结构

根据体系结构的设计,系统将分为展示层、业务逻辑层、数据层。为了每一层之间增加灵活性,系统添加了接口。展示层和业务逻辑层之间添加了AdminService接口,业务逻辑层和数据层之间添加了AdminMapper接口。为了隔离业务逻辑职责和逻辑控制职责,系统增加了AdminController,AdminController会将用户管理的业务逻辑处理委托给AdminServiceImpl对象。User作为管理员(UserType为admin)、用户的持久化对象被添加到设计模型中。

admin模块各个类的职责如下所示
职责
AdminController 负责实现用户管理所需要的服务
User 系统用户的领域模型对象,拥有用户数据,可以帮助完成用户管理所需要的服务

4.1.3 模块内部类的接口规范

提供的接口
AdminController.addManager 语法
前置条件
后置条件
ResponseVO addManager(UserVO user);
已创建一个网站工作人员对象
调用 AdminService 的 addManager 方法
AdminController.addHotelManager 语法
前置条件
后置条件
ResponseVO addHotelManager(UserVO user);
已创建一个酒店工作人员对象
调用 AdminService 的 addHotelManager 方法
AdminController.getAllManagers 语法
前置条件
后置条件
ResponseVO getAllManagers();

调用 AdminService 的 getAllManagers 方法
AdminController.getAllUsers 语法
前置条件
后置条件
ResponseVO getAllUsers();

调用 AdminService 的 getAllUsers 方法
AdminController.resetPassword 语法
前置条件
后置条件
ResponseVO resetPassword(int userId);

调用 AdminService 的 resetPassword 方法
需要的接口 服务
AdminService.addManager 添加一个网站工作人员对象
AdminService.addHotelManager 添加一个酒店工作人员对象
AdminService.getAllManagers 查找所有酒店工作人员
AdminService.getAllUsers 查找所有用户
AdminService.resetPassword 重置相关用户的密码

4.1.4 动态模型

4.1.5 设计原理

利用委托式控制风格,每个界面需要访问的业务逻辑由各自的控制器委托给不同的领域对象。

4.2 Coupon 模块

4.2.1 模块概述

coupon模块承担的需求主要为促销策略及相关非功能需求。

coupon模块的职责及接口参见体系结构文档业务逻辑层CouponService相关内容。

4.2.2 整体结构

根据体系结构的设计,系统将分为展示层、业务逻辑层、数据层。为了每一层之间增加灵活性,系统添加了接口。展示层和业务逻辑层之间添加了CouponService、CouponMatchStrategy接口,业务逻辑层和数据层之间添加了CouponMapper接口。为了隔离业务逻辑职责和逻辑控制职责,系统增加了CouponController,CouponController会将促销策略的业务逻辑处理委托给CouponService对象。Coupon作为优惠策略的持久化对象、MultiCouponStrategyImpl、TargetMoneyCouponStrategyImpl和TimeCouponStrategyImpl作为三种不同的优惠策略匹配方式被添加到设计模型中。

coupon模块各个类的职责如表所示
职责
CouponController 负责实现促销策略界面所需要的服务
MultiCouponStrategyImpl 负责实现多件优惠策略所需要的服务
TargetMoneyCouponStrategyImpl 负责实现满减优惠策略所需要的服务
TimeCouponStrategyImpl 负责实现限时优惠策略所需要的服务
Coupon 促销策略的领域模块对象,拥有促销策略的信息,可以帮助完成促销策略匹配所需要的服务

4.2.3 模块内部类的接口规范

提供的接口
CouponController.addHotelTargetMoneyCoupon 语法
前置条件
后置条件
ResponseVO addHotelTargetMoneyCoupon( HotelTargetMoneyCouponVO hotelTargetMoneyCouponVO);
已创建一个满减优惠策略对象
调用 CouponService 的 addHotelTargetMoneyCoupon 方法
CouponController.updateHotelTargetMoneyCoupon 语法
前置条件
后置条件
ResponseVO updateHotelTargetMoneyCoupon(HotelTargetMoneyCouponVO hotelTargetMoneyCouponVO);
已作出对现有满减优惠策略对象的修改
调用 CouponService 的 updateHotelTargetMoneyCoupon 方法
CouponController.addHotelTimeCoupon 语法
前置条件
后置条件
ResponseVO addHotelTimeCoupon(HotelTimeCouponVO hotelTimeCouponVO);
已创建一个限时优惠策略对象
调用 CouponService 的 addHotelTimeCoupon 方法
CouponController.updateHotelTimeCoupon 语法
前置条件
后置条件
ResponseVO updateHotelTimeCoupon(HotelTimeCouponVO hotelTimeCouponVO);
已作出对现有限时优惠策略对象的修改
调用 CouponService 的 updateHotelTimeCoupon 方法
CouponController.addHotelOfMultiCoupon 语法
前置条件
后置条件
ResponseVO addHotelOfMultiCoupon(HotelOfMultiCouponVO hotelOfMultiCouponVO);
已创建一个多件优惠策略对象
调用 CouponService 的 addHotelOfMultiCoupon 方法
CouponController.updateHotelOfMultiCoupon 语法
前置条件
后置条件
ResponseVO updateHotelOfMultiCoupon(HotelOfMultiCouponVO hotelOfMultiCouponVO);
已作出对现有多件优惠策略对象的修改
调用 CouponService 的 updateHotelOfMultiCoupon 方法
CouponController.getHotelAllCoupons 语法
前置条件
后置条件
ResponseVO getHotelAllCoupons(Integer hotelId);

调用 CouponService 的 getHotelAllCouponService 方法
CouponController.getWebAllCoupons 语法
前置条件
后置条件
ResponseVO getWebAllCoupons();

调用 CouponService 的 getWebAllCouponService 方法
CouponController.getOrderMatchCoupons 语法
前置条件
后置条件
ResponseVO getOrderMatchCoupons(Integer userId, Integer hotelId, Double orderPrice, Integer roomNum, String checkIn, String checkOut);
正在生成一个新的订单对象
调用 CouponService 的 getOrderMatchCoupons 方法
CouponController.getCouponById 语法
前置条件
后置条件
ResponseVO getCouponById(Integer id);

调用 CouponService 的 getCouponById 方法

4.2.4 动态模型

4.2.5 设计原理

利用委托式控制风格,每个界面需要访问的业务逻辑由各自的控制器委托给不同的领域对象。

4.3 Hotel 模块

4.3.1 模块概述

hotel模块承担的需求主要为添加酒店、浏览酒店信息及相关非功能需求。

hotel模块的职责及接口参见体系结构文档业务逻辑层HotelService、RoomService相关内容。

4.3.2 整体结构

根据体系结构的设计,系统将分为展示层、业务逻辑层、数据层。为了每一层之间增加灵活性,系统添加了接口。展示层和业务逻辑层之间添加了HotelService、RoomService接口,业务逻辑层和数据层之间添加了HotelMapper、RoomMapper、CommentMapper接口。为了隔离业务逻辑职责和逻辑控制职责,系统增加了HotelController,HotelController会将用浏览酒店、酒店管理等业务逻辑处理委托给HotelService对象、RoomService对象。Hotel作为酒店的持久化对象、HotelRoom作为房间的持久化对象、Comment作为评论的持久化对象被添加到设计模型中。

hotel模块各个类的职责如表所示
职责
HotelController 负责实现浏览酒店、酒店管理等界面所需要的服务
Hotel 酒店的领域模块对象,拥有酒店的信息,可以帮助完成浏览酒店、酒店管理所需要的服务
HotelRoom 酒店房间的领域模块对象,拥有酒店房间的信息,可以帮助完成浏览酒店、酒店管理所需要的服务
Comment 酒店评论的领域模块对象,拥有酒店评论的信息。可以帮助完成浏览酒店所需要的服务

4.3.3 模块内部类的接口规范

提供的接口
HotelController.createHotel 语法
前置条件
后置条件
ResponseVO createHotel(HotelVO hotelVO);
已创建一个酒店对象
调用 HotelService 的 addHotel 方法
HotelController.updateHotel 语法
前置条件
后置条件
ResponseVO updateHotel(HotelVO hotelVO);
已作出对现有酒店对象的修改
调用 HotelService 的 updateHotel 方法
HotelController.retrieveHotels 语法
前置条件
后置条件
ResponseVO retrieveAllHotels();

调用 HotelService 的 retrieveHotels 方法
HotelController.addRoomInfo 语法
前置条件
后置条件
ResponseVO addRoomInfo(HotelRoom hotelRoom);
已创建一个酒店房间的对象
调用 RoomService 的 insertRoomInfo 方法
HotelController.retrieveHotelDetail 语法
前置条件
后置条件
ResponseVO retrieveHotelDetail(Integer hotelId);

调用 HotelService 的 getHotelRooms 方法
HotelController.getHotelRooms 语法
前置条件
后置条件
ResponseVO getHotelRooms(HotelRoomsVO hotelRoomsVO);

调用 HotelService 的 getHotelRooms 方法
HotelController.addComment 语法
前置条件
后置条件
ResponseVO addComment(CommentVO commentVO);
已创建一个评论对象
调用 HotelService 的 addComment 方法
HotelController.checkComment 语法
前置条件
后置条件
ResponseVO checkComment(Integer hotelId);

调用 HotelService 的 checkComment 方法
HotelController.retrieveHotelsByManager 语法
前置条件
后置条件
ResponseVO retrieveHotelsByManager(int managerId);

调用 HotelService 的 retrieveHotelByManagerId 方法
HotelController.updateRoomInfo 语法
前置条件
后置条件
ResponseVO updateRoomInfo(RoomVO roomVO);
已作出对现有酒店房间对象的修改
调用 RoomService 的 updateRoomInfo 方法
HotelController.deleteRoom 语法
前置条件
后置条件
ResponseVO deleteRoom(int roomId);

调用 RoomService 的 deleteRoom 方法

4.3.4 动态模型

4.3.5 设计原理

利用委托式控制风格,每个界面需要访问的业务逻辑由各自的控制器委托给不同的领域对象。

4.4 Order 模块

4.4.1 模块概述

order模块承担的需求主要为生成订单、浏览订单、撤销订单、执行订单及相关非功能需求。

order模块的职责及接口参见体系结构文档业务逻辑层OrderService相关内容。

4.4.2 整体结构

根据体系结构的设计,系统将分为展示层、业务逻辑层、数据层。为了每一层之间增加灵活性,系统添加了接口。展示层和业务逻辑层之间添加了OrderService接口,业务逻辑层和数据层之间添加了OrderMapper接口。为了隔离业务逻辑职责和逻辑控制职责,系统增加了OrderController,OrderController会将与订单相关的业务逻辑处理委托给OrderService对象。Order作为酒店的持久化对象被添加到设计模型中。

order模块各个类的职责如表所示
职责
OrderController 负责实现与订单相关所需要的服务
Order 订单的领域模块对象,拥有订单的信息,可以帮助完成与订单相关所需要的服务

4.4.3 模块内部类的接口规范

提供的接口
OrderController.reserveHotel 语法
前置条件
后置条件
ResponseVO reserveHotel(OrderVO orderVO);
已创建一个订单对象
调用 OrderService 的 addOrder 方法
OrderController.retrieveAllOrders 语法
前置条件
后置条件
ResponseVO retrieveAllOrders();

调用 OrderService 的 getAllOrders 方法
OrderController.retrieveUserOrders 语法
前置条件
后置条件
ResponseVO retrieveUserOrders(int userId);

调用 OrderService 的 getUserOrders 方法
OrderController.retrieveManagerOrders 语法
前置条件
后置条件
ResponseVO retrieveManagerOrders(int managerId);

调用 OrderService 的 getManagerOrders 方法
OrderController.annulOrder 语法
前置条件
后置条件
ResponseVO annulOrder(int orderId);

调用 OrderService 的 annulOrder 方法
OrderController.retrieveHotelOrders 语法
前置条件
后置条件
ResponseVO retrieveHotelOrders(Integer hotelId);

调用 OrderService 的 getHotelOrders 方法
OrderController.getOrderDetail 语法
前置条件
后置条件
ResponseVO getOrderDetail(int orderId);

调用 OrderService 的 getOrderDetail 方法
OrderController.executeOrder 语法
前置条件
后置条件
ResponseVO executeOrder(Integer orderId);

调用 OrderService 的 executeOrder 方法

4.4.4 设计原理

利用委托式控制风格,每个界面需要访问的业务逻辑由各自的控制器委托给不同的领域对象。

4.5 User 模块

4.5.1 模块概述

User模块承担的需求主要为维护个人信息及相关非功能需求。

User模块的职责及接口参见体系结构文档业务逻辑层AccountService相关内容。

4.5.2 整体结构

根据体系结构的设计,系统将分为展示层、业务逻辑层、数据层。为了每一层之间增加灵活性,系统添加了接口。展示层和业务逻辑层之间添加了AccountService接口,业务逻辑层和数据层之间添加了AccountMapper接口、CreditMapper接口。为了隔离业务逻辑职责和逻辑控制职责,系统增加了AccountController,AccountController会将用户信息的业务逻辑处理委托给AccountService对象。Account作为用户的持久化对象、Credit作为信用值变化的持久化对象(客户)被添加到设计模型中。

order模块各个类的职责如表所示
职责
AccountController 负责用户界面所需要的服务
Account 用户的领域模块对象,拥有用户的信息,可以帮助完成用户有关的服务
Credit 客户信用变化的领域模块对象,拥有信用变化的信息,可以帮助完成客户信用有关的服务

4.5.3 模块内部类的接口规范

提供的服务
AccountController.login 语法
前置条件
后置条件
ResponseVO login(UserForm userForm);
已经有用户的信息输入
调用 AccountService 的 login 方法
AccountController.registerAccount 语法
前置条件
后置条件
ResponseVO registerAccount(UserVO userVO);
已创建一个用户对象
调用 AccountService 的 registerAccount 方法
AccountController.getUserInfo 语法
前置条件
后置条件
ResponseVO getUserInfo(int id);

调用 AccountService 的 getUserInfo 方法
AccountController.updateInfo 语法
前置条件
后置条件
ResponseVO updateInfo(UserInfoVO userInfoVO,int id);
已作出对现有用户信息的修改
调用 AccountService 的 updateUserInfo 方法
AccountController.updateCredit 语法
前置条件
后置条件
ResponseVO updateCredit(CreditVO creditVO);
已创建一个信用变化对象
调用 AccountService 的 updateCredit 方法
AccountController.checkAllCredit 语法
前置条件
后置条件
ResponseVO checkAllCredit(int id);

调用 AccountService 的 checkAllCredit 方法
AccountController.updatePassword 语法
前置条件
后置条件
ResponseVO updatePassword(PasswordForm passwordForm);
已作出对现有用户密码的修改
调用 AccountService 的 updatePassword 方法

4.5.4 动态模型

4.5.5 设计原理

利用委托式控制风格,每个界面需要访问的业务逻辑由各自的控制器委托给不同的领域对象。

5. 依赖视角

互联网酒店预订系统客户端开发包图:

互联网酒店预订系统服务端开发包图:

测试报告

1. 引言

1.1 编制目的

本报告详细完成对互联网酒店预定系统的概要设计,达到指导详细设计和开发的目的,同时实现和测试人员及用户的沟通。本报告面向开发人员、测试人员及最终用户编写,是了解系统的导航。

1.2 词汇表

词汇名称 词汇含义 备注
用户 客户、酒店工作人员和网站工作人员 不包括管理员

1.3 参考资料

  1. IEEE 标准
  2. 互联网酒店预订系统需求规格说明文档
  3. 互联网酒店预订系统用例描述文档
  4. 互联网酒店预订系统用例文档
  5. 互联网酒店预订系统体系结构文档
  6. 互联网酒店预订系统详细设计文档
  7. 软件工程与计算(卷二)软件开发的技术基础

2. 概述

2.1 产品概述

互联网酒店预订系统是为酒店的在线预定系统,开发的目的是帮助顾客能在线上直接完成酒店的预定和酒店在线上处理订单,为顾客提供的服务包括搜索酒店、选择酒店、预定酒店、查看个人相关记录信息,为酒店提供的服务包括处理订单,查看顾客信息,更新库存,实现优惠促销等。

互联网酒店预订系统,希望可以为上线酒店减少线下工作、经营成本,吸引更多顾客,提高顾客满意度和盈利率。

2.2 测试目标

本测试是针对互联网酒店预订系统的测试,目的是判断该系统是否满足体系结构文档和详细设计文档和设计以及用例文档所要求的功能。

2.3 测试方法

序号 测试范围 测试方法 测试工具
1 单元测试 黑盒/白盒测试 MybatisTest
2 集成测试 黑盒测试 SpringBootTest
3 Web 功能测试 手工测试

2.4 测试环境

详见互联网酒店预订系统体系结构文档

3. 测试过程

3.1 单元测试

测试时间 测试包 测试单元 测试结果 负责人
20XX/06/24 data.user AccountMapper
CreditMapper
通过 陈彦泽
20XX/06/24 data.admin AdminMapper 通过 陈彦泽
20XX/06/24 data.order OrderMapper 通过 陈彦泽
20XX/06/24 data.coupon CouponMapper 通过 陈彦泽
data.hotel CommentMapper
HotelMapper
RoomMapper
通过 陈彦泽

3.2 集成测试

3.2.1 测试记录

测试时间 测试模块 测试结果 负责人
20XX/06/19 AdminService 通过 陈彦泽
20XX/06/19 AccountService 通过 陈彦泽
20XX/06/22 CouponService 通过 XX
20XX/06/22 HotelService 通过 XX
20XX/06/22 RoomService 通过 XX
OrderService 通过 陈彦泽

3.2.2 总体概况

测试时间 测试模块 测试功能
20XX/06/19 AdminService 1.添加网站管理人员
2.添加酒店工作人员
3.用户重置密码
20XX/06/19 AccountService 1.客户注册
2.登录
3.修改用户信息
4.修改密码
5.信用变化
6.查看账户的信用变化情况
20XX/06/22 CouponService 1.添加多间优惠优惠券
2.修改多间优惠优惠券
3.添加节日优惠优惠券
4.修改节日优惠优惠券
5.添加满减优惠优惠券
6.修改满减优惠优惠券
7.获取所有优惠券
8.获取网站优惠券
9.根据 id 获取优惠券
10.根据订单匹配可用优惠券
20XX/06/22 HotelService 1.添加酒店
2.更新酒店信息
3.查看酒店基本信息
4.查看酒店详细信息
5.根据 managerId 查看酒店基本信息
6.获取特定时期获取某酒店全部房间信息
7.添加酒店评论
8.查看酒店所有评论
20XX/06/22 RoomService 1.添加房间信息
2.更新房间信息
3.删除房间信息
20XX/06/24 OrderService 1.添加订单
2.查询订单
3.取消订单
4.执行订单
5.订单详情

3.2.3 测试用例执行率

测试时间 测试模块 测试功能 测试用例通过率 负责人
20XX/06/19 AdminService 1.添加网站管理人员
2.添加酒店工作人员
3.用户重置密码
4/4 陈彦泽
20XX/06/19 AccountService 1.客户注册
2.登录
3.修改用户信息
4.修改密码
5.信用变化
6.查看账户的信用变化情况
7/7 陈彦泽
20XX/06/22 CouponService 1.添加多间优惠优惠券
2.修改多间优惠优惠券
3.添加节日优惠优惠券
4.修改节日优惠优惠券
5.添加满减优惠优惠券
6.修改满减优惠优惠券
7.获取所有优惠券
8.获取网站优惠券
9.根据 id 获取优惠券
10.根据订单匹配可用优惠券
5/5 XX
20XX/06/22 HotelService 1.添加酒店
2.更新酒店信息
3.查看酒店基本信息
4.查看酒店详细信息
5.根据 managerId 查看酒店基本信息
6.获取特定时期获取某酒店全部房间信息
7.添加酒店评论
8.查看酒店所有评论
2/2 XX
20XX/06/22 RoomService 1.添加房间信息
2.更新房间信息
3.删除房间信息
1/1 XX
20XX/06/24 OrderService 1.添加订单
2.查询订单
3.取消订单
4.执行订单
5.订单详情
5/5 陈彦泽

3.2.4 缺陷

测试时间 测试模块 遗留缺陷 负责人
20XX/06/19 AdminService 陈彦泽
20XX/06/19 AccountService 陈彦泽
20XX/06/22 CouponService XX
20XX/06/22 HotelService XX
20XX/06/22 RoomService XX
20XX/06/24 OrderService 订单异常功能于功能测试中进行测试 陈彦泽

3.3 功能测试

3.3.1 客户端

功能点 页面链接测试 表单测试 功能点 测试结果
登录、注册 /login 注册、登录 通过
个人信息管理 /user/info/{userId} 1.查看个人信息
2.修改用户名、手机号
通过
修改密码 /user/password 修改密码 通过
查看信用变化记录 /user/credit/57 查看信用变化记录 通过
浏览酒店信息 /hotel/hotelList
/hotel/hotelDetail/{hotelId}
1.筛选
2.排序
3.显示酒店卡片
4.显示详细信息
5.查看剩余房间
6.查看酒店评价
通过
预订酒店 /hotel/hotelDetail/{hotelId} 1.是否选择优惠
2.成功后提示
3.信用值为 0 不可预订
通过
浏览订单 /order/orderList/{userId} 1.筛选、排序
2.查看详情
3.撤销
4.评价
通过
撤销订单 /order/orderList/{userId} 1.撤销订单
2.扣除信用值
通过
评价酒店 /order/orderList/{userId} 添加评价 通过

3.3.2 酒店工作人员端

功能点 页面链接测试 表单测试 功能点 测试结果
浏览酒店信息 /hotel/hotelList
/hotel/hotelDetail/{hotelId}
同客户端,略 通过
管理酒店 /hotelManager/manageHotel 1.查看优惠策略
2.查看房间
3.录入房间
4.修改酒店信息
通过
维护酒店信息 /hotelManager/manageHotel 修改酒店信息 通过
制定酒店促销策略 /hotelManager/manageHotel 查看、修改 通过
浏览订单(酒店) /order/orderList/{userId} 1.筛选、排序
2.查看详情
3.撤销
4.入住
通过
个人信息管理 /user/info/{userId} 1.查看个人信息
2.修改用户名、手机号
通过
修改密码 /user/password 修改密码 通过

3.3.3 网站工作人员端

功能点 页面链接测试 表单测试 功能点 测试结果
浏览酒店信息 /hotel/hotelList
/hotel/hotelDetail/{hotelId}
同客户端,略 通过
个人信息管理 /user/info/{userId} 1.查看个人信息
2.修改用户名、手机号
通过
修改密码 /user/password 修改密码 通过
信用充值 /admin/manage 信用充值 通过
制定酒店促销策略 /admin/manage 查看、修改 通过

3.3.4 管理员端

*管理员端界面可进行上述所有功能,在此仅列出管理员特有功能

功能点 页面链接测试 表单测试 功能点 测试结果
添加网站工作人员 /hotel/hotelList
/hotel/hotelDetail/{hotelId}
同客户端,略 通过
添加酒店 /admin/manage 1.添加酒店
2.添加酒店工作人员
通过
添加网站工作人员 /admin/manage 添加网站工作人员账户 通过
删除账户 /admin/manage 1.酒店管理人员账户,连同酒店一起删除
2. 管理员账户,不允许删除
3. 其他账户,直接删除
通过

4. 测试结论

综合上述数据,本次发布版本的程序测试结论:通过。

资源下载地址:https://download.csdn.net/download/sheziqiong/87913000
资源下载地址:https://download.csdn.net/download/sheziqiong/87913000

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/131233464