zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于Java+vue实现(Web)酒店管理系统【100010132】

JAVAVue管理系统Web 实现 基于 酒店
2023-09-11 14:17:50 时间

酒店管理系统

需求规格

1. 引言

1.1 目的

本文档描述了互联网酒店预订系统的功能需求和非功能需求。

1.2 范围

互联网酒店预订系统的开发目标是解决传统的线下酒店预订模式的诸多缺点。包括辅助酒店掌握客户行程变化、帮助酒店和客户的长途沟通、减少客户恶意预订、帮助客户了解酒店信息和为客户保存过去的酒店体验历史。

该互联网酒店预订系统,期望为提高酒店的订单处理效率、降低人力资源消耗、提高酒店的订单量和利润、减少客户异地预订酒店所需的时间并简化预订流程。

1.3 参考文献

(1)互联网酒店预订系统用例文档。

2. 总体描述

2.1 项目前景

2.1.1 背景与机遇

在过去,线下预订构成了预订酒店的主要模式,而在如今已经不能适应它的业务发展要求。首先,随着人们对于出行前规划时间的日益看重,线下预订酒店这种传统模式无法提前预定,导致损失客源。再者随着酒店规模的不断扩大,入住客户及客房数量的增加,有关酒店的各种信息也在成倍的增长。传统的信息管理模式同样无法满足处理大量信息的要求。因此需要开发一个系统,能实现提前预定和管理酒店和用户信息的功能,从而方便客户,提高管理效率。

通过开发的互联网酒店预订系统,实现客户提前预定酒店的需求并方便酒店对于信息的管理,提高管理效率,降低管理成本。它包括一个数据集中服务器和多个客户端。数据集中服务器将所有的数据存储起来进行维护。用户通过客户端实现酒店房间的预订,客户端与数据集中服务器采取实时通信的方式完成数据交换。酒店工作人员通过客户端进行工作人员个人信息的管理、客房录入与酒店基本信息的维护。

2.1.2 业务需求
BR1: 在系统使用6个月后,酒店运营成本要降低20%
		范围:人力成本
		度量:管理酒店全部数据所需工作人员数量
BR2: 在系统使用3个月后,酒店工作人员效率要提高15%
BR3: 在系统使用6个月后,线上预订营业额要占到50%
		最好情况:60%
		最可能情况:50%
		最差情况:30%
BR4:在系统使用6个月后,线上预订营业额要提高20%
		最好情况:30%
		最可能情况:20%
		最差情况:10%

2.2 项目功能

BF1: 客户个人基本信息管理
BF2: 客户浏览酒店详细信息
BF3: 客户生成订单
BF4: 客户查看订单
BF5: 注册普通会员
BF6: 客户评价酒店
BF7: 酒店工作人员个人基本信息管理
BF8:酒店工作人员浏览订单
BF9:执行订单
BF10: 维护酒店基本信息
BF11: 管理可用客房
BF12: 提前退房
BF13: 制定酒店促销策略
BF14: 制定网站促销策略
BF15: 浏览异常订单执行情况
BF16: 充值信用值
BF17: 用户管理
BF18: 添加酒店
BF19: 修改管理员密码

2.3 用户特征

客户所有客户出于旅游或出差等其他理由有提前预定酒店的需求。客户的信用良好,有资金用来支付房费。客户的计算机操作技能一般,对于系统界面往往无法及时适应,希望新系统尽可能帮助客户预定酒店。
酒店工作人员每一个酒店有 1~2 个在本系统上负责自己所属酒店的酒店工作人员。他们的工作是维护酒店的基本信息、可用客房和促销策略。由于酒店每天的客户有许多,所以他们的工作量往往很大,希望新系统不要太占用他们的时间。酒店工作人员的计算机操作技能较好。
网站营销人员本系统有 2~3 个网站营销人员。他们负责网站的促销策略,处理异常订单的执行情况和客户的信用充值。网站营销人员往往需要花费大量时间用来制定合理的促销策略。希望新系统能够帮助他们更好地执行促销策略和做其他工作。网站营销人员的计算机操作技能较好。
网站管理人员整个系统有 1 个网站管理员。他的工作是管理用户和添加酒店及其工作人员、查询更改酒店工作人员信息。网站管理人员是计算机专业维护人员,计算机技能很好。

2.4 约束

CON1: 本系统利用酒店数据和保存用户个人隐私符合中国法律法规
CON2: 本系统需要运行在联网的电脑上
CON3: 团队必须保证个人用户信息不被泄露
CON4: 本系统采用 Java 语言和 Web 技术进行开发
CON5: 项目要使用持续集成方法进行开发
CON6: 在开发中,开发者要提交软件需求规格说明文档、设计描述文档和测试报告

2.5 假设与依赖

AE1: 防止个人信息泄露
AE2: 每一天的预定酒店房间情况较稳定。

详细设计

1. 引言

1.1 编制目的

本文档完成对互联网酒店预订系统的详细设计,用以指导后续软件开发,同时实现和测试人员和用户的沟通。

1.2 词汇表

词汇名称词汇含义备注

1.3 参考资料

1)互联网酒店预订系统软件体系结构文档
2)互联网酒店预订系统需求用例文档
3)互联网酒店预订系统需求规格文档

2. 产品概述

参考互联网酒店预订系统需求用例文档和互联网酒店预订系统需求规格文档中对产品的概括描述。

3. 体系结构设计概述

参考互联网酒店预订系统软件体系结构文档中对体系结构设计的概述。

4. 结构视角

4.1 展示层的分解

4.1.1 views.admin 模块

(1)模块概述

views.admin 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

views.admin 模块的职责及接口参见软件体系结构文档表 5,6,7。

(2)整体结构

根据体系结构的设计,我们将系统分为展示层,业务逻辑层和数据层。为了提高每一层的灵活性,我们在相邻两层之间添加了接口。对于 views.admin,其通过接口 api.admin 与服务器端进行数据交流。manageUser.vue 是网站管理人员查看用户基本信息页面,从该页面可以进入添加酒店管理人员页面(addManagerModal.vue)。

                                                           图	views.admin模块的构件设计

                                                           表	views.admin模块的构件的职责
构件职责
manageUser.vue负责展示网站管理人员的主页面,可以展示用户信息
addManagerModal.vue负责网站管理人员添加新的酒店管理人员
addHotelModal.vue负责添加酒店的信息填写
amendUser.vue负责修改各类用户的信息
addMarketerModal.vue负责添加网站营销人员
addHotel.vue负责展示酒店列表,提供添加酒店和删除酒店的入口

(3)模块内部类的接口规范

提供的服务(供接口)由 vue 框架提供,无需自行定义。

需要的服务(需接口)如下表:

                                                           表	views.admin模块需要的服务
服务名服务
api.admin.js.getManagerListAPI()从服务器获得所有酒店管理人员的列表
api.admin.js.addManagerAPI(data)将新增加的酒店管理人员信息发送给服务器
api.admin.js.getClientListAPI()从服务器获得所有客户列表
api.admin.js.getMarketerListAPI()从服务器获得所有网站营销人员列表
api.admin.js.renewAPI(data)将修改的用户信息发送给服务器
api.admin.js.addHotelAPI(data)将增加新的酒店的信息发送给服务器
api.admin.js.addMarketerAPI(data)将增加新的网站营销人员的信息发送给服务器
api.admin.deleteHotelAPI(data)删除酒店
api.admin.updateUserInfoAPI(data)将更新的用户信息发送给服务端
api.admin.removeUserAPI(userId)删除某个账号

(4)展示层的动态模型

图 views.admin 模块的页面跳转状态图

(5)展示层的设计原理
采用 Vue 框架,实现页面数据的集中管理和界面的构件化。

4.1.2 views.hotel 模块

(1)模块概述

views.hotel 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

views.hotel 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

根据需求,存在两个页面,酒店列表页和酒店详细信息页。其中页面跳转是

可以分解为 hotelList、hotelDetail、hotelCard、ordermodal、roomList

(3)模块内部类的接口规范

提供的服务

接口名语法
APP.vue前置条件:无
后置条件:显示界面

需要的服务

服务名服务
api.hotel.js酒店界面向后端发起数据请求的服务接口
api.coupin.js优惠券界面向后端发起数据请求的服务接口
api.order.js订单界面向后端发起数据请求的服务接口
服务名服务
bl.hotel.HotelService酒店界面的业务逻辑接口
bl.hotel.RoomService酒店房间界面的业务逻辑接口
bl.order.OrderService订单界面的业务逻辑接口
bl.coupon.CouponMatchStrategy优惠券匹配的业务逻辑接口
bl.coupon.CouponService优惠券界面的业务逻辑接口

(4)展示层的设计原理

根据单一职责原则, 将每个页面的职责从类中分离。利用集中式控制的原理,进行页面的跳转。

4.1.3 views.order 模块

(1)模块概述

views.order 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

views.order 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

根据需求,存在三个页面,订单列表页、订单填写页和订单详细信息页。其中页面跳转是

订单页面关系图.png

(3)模块内部类的接口规范

提供的服务

接口名语法
APP.vue前置条件:无
后置条件:显示界面

需要的服务

服务名服务
api.user.js客户界面向后端发起数据请求的服务接口
api.VIP.jsVIP 界面向后端发起数据请求的服务接口
api.hotel.js酒店界面向后端发起数据请求的服务接口
服务名服务
bl.vip.VIPServiceVIP 的业务逻辑接口
bl.user.AccountService客户界面的业务逻辑接口
bl.hotel.HotelService酒店界面的业务逻辑接口

(4)展示层的设计原理

根据单一职责原则, 将每个页面的职责从类中分离。利用集中式控制的原理,进行页面的跳转。

4.1.4 views.user 模块

(1)模块概述

views.user 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

views.user 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

根据需求,存在一个页面,用户信息页。

(3)模块内部类的接口规范

提供的服务

接口名语法
APP.vue前置条件:无
后置条件:显示界面

需要的服务

服务名服务
api.user.js客户界面向后端发起数据请求的服务接口
api.VIP.jsVIP 界面向后端发起数据请求的服务接口
api.order.js订单界面向后端发起数据请求的服务接口
服务名服务
bl.vip.VIPServiceVIP 的业务逻辑接口
bl.user.AccountService客户界面的业务逻辑接口
bl.order.OrderService订单界面的业务逻辑接口

(4)展示层的设计原理

根据单一职责原则, 将每个页面的职责从类中分离。利用集中式控制的原理,进行页面的跳转。

4.1.5 views.marketer 模块

(1)模块概述

views.marketer 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

views.marketer 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

根据需求,存在四个页面,网站营销人员主界面、制定网站促销策略界面、异常订单界面、信用充值界面。其中页面跳转是

(3)模块内部类的接口规范

提供的服务

接口名语法
APP.vue前置条件:无
后置条件:显示界面

需要的服务

服务名服务
api.marketer.js酒店营销人员相关界面向后端发起数据请求的服务接口
服务名服务
bl.marketer.MarketerService酒店界面的业务逻辑接口

(4)展示层的设计原理

根据单一职责原则, 将每个页面的职责从类中分离。利用集中式控制的原理,进行页面的跳转。

4.2 业务逻辑层的分解

4.2.1 blImpl.admin 模块

(1)模块概述

blImpl.admin 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.admin 模块的职责及接口参见软件体系结构文档表 10,11。

(2)整体结构

根据体系结构的设计,我们将系统分为展示层,业务逻辑层和数据层。为了提高每一层的灵活性,我们在相邻两层之间添加了接口。对于 blImpl.admin,我们在业务逻辑层和展示层之间添加了 bl.admin.AdminService 接口,在业务逻辑层和数据层之间添加了 data.admin.adminMapper 接口。blImpl.admin 内只有一个类 AdminServiceImpl,是接口的实现类,提供了用户管理有关的功能。

blImpl.admin 模块类的职责如下表:

职责
AdminServiceImpl帮助网站管理人员进行用户管理。

(3)模块内部类的接口规范

接口名
bl.admin.AdminService.addHotel语法: public ResponseVO addHotel(HotelVO hotelVO, int adminId)
前置条件: adminid 对应的用户是网站管理人员
后置条件: 以 hotelVO 中的信息添加酒店,返回新酒店 ID
bl.admin.AdminService.removeHotel语法: public ResponseVO removeHotel(Integer hotelId, Integer adminId)
前置条件: adminid 对应的用户是网站管理人员,且 hotelId 对应的酒店存在
后置条件: 删除对应的酒店
bl.admin.AdminService.addManager语法: public ResponseVO addManager(UserForm userForm, Integer hotelId)
前置条件: userForm 中 email 与 password 符合输入规则
后置条件: 以 userForm 中的信息添加酒店工作人员,返回添加结果
bl.admin.AdminService.addMarketer语法: public ResponseVO addMarketer(UserForm userForm)
前置条件: userForm 中 email 与 password 符合输入规则
后置条件: 以 userForm 中的信息添加网站营销人员,返回添加结果
bl.admin.AdminService.getAllManagers语法: public List<User> getAllManagers()
前置条件:
后置条件: 返回所有酒店管理人员信息
bl.admin.AdminService.getAllMarketers语法: public List<User> getAllMarketers()
前置条件:
后置条件: 返回所有网站营销人员信息
bl.admin.AdminService.getAllClients语法: public List<User> getAllClients()
前置条件:
后置条件: 返回所有客户信息
bl.admin.AdminService.updateUserInfo语法: ResponseVO updateUserInfo(int userId, String password, String username, String phonenumber)
前置条件: 输入信息均符合格式
后置条件: 根据输入查找用户并更新其信用值,返回更新成功与否的结果
bl.admin.AdminService.removeUser语法: ResponseVO removeUser(int userId)
前置条件:
后置条件: 删除根据输入查找到用户,返回删除成功与否的结果
                                                                                           表	blImpl.admin模块的接口规范

需要的服务(需接口):

服务名服务
bl.hotel.HotelService.addHotel(HotelVO hotelVO)添加酒店
bl.hotel.HotelService.removeHotel(Integer hotelId)根据 ID 删除酒店
bl.hotel.HotelService.addHotelManager(Integer hotelId, Integer managerId)修改指定酒店的工作人员 Id
bl.hotel.HotelService.retrieveHotels()获取所有酒店信息
bl.hotel.HotelService.retrieveHotelDetails(Integer hotelId)根据 ID 查找酒店详细信息
data.admin.AdminMapper.addManager(User user)插入单一持久化对象
data.admin.AdminMapper.addMarketer(User user)插入单一持久化对象
data.admin.AdminMapper.getAllManagers()查找多个持久化对象
data.admin.AdminMapper.getAllMarketers()查找多个持久化对象
data.admin.AdminMapper.getAllClients()查找多个持久化对象
data.user.AccountMapper.getAccountByName(String email)根据 email 查找单一持久化对象
data.user.AccountMapper.getAccountById(int id)根据 ID 查找单一持久化对象
data.user.AccountMapper.deleteAccountById(int id)删除根据 id 查找到的单一持久化对象
data.user.AccountMapper.updateAccount(int id, String password, String username, String phonenumber)改变根据 ID 查找到的单一持久化对象的属性
                                                                                           表	blImpl.admin需要的服务

(4)业务逻辑层的动态模型

下图表明了互联网酒店预订系统中,当网站管理人员选择添加酒店工作人员时,添加酒店工作人员相关对象之间的协作。


图 添加酒店工作人员的顺序图

下图表明了互联网酒店预订系统中,当网站管理人员需要得到客户信息列表时时,得到客户信息列表相关对象之间的协作。


图 得到客户信息列表的顺序图

(5)业务逻辑层的设计原理

bl.admin 是服务器端提供的业务逻辑接口,blImpl.admin 是接口的实现,blImpl 通过数据层接口 data.admin.AdminMapper 来访问数据库,从而实现数据读取和持久化存储。

(6)重要的数据结构及算法

po.User: 持久化数据对象 User,里面包含了

    private Integer id;
    private String email;
    private String password;
    private String userName;
    private String phoneNumber;
    private double credit;
    private UserType userType;
4.2.2 blImpl.coupon 模块

(1)模块概述

blImpl.coupon 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.coupon 模块的职责及接口参见软件体系结构文档表 12,13。

(2)整体结构

根据体系结构的设计,我们将系统分为展示层,业务逻辑层和数据层。为了提高每一层的灵活性,我们在相邻两层之间添加了接口。对于 blImpl.coupon,我们在业务逻辑层和展示层之间添加了 bl.coupon.CouponService 和 bl.coupon.CouponMatchStategy 接口,在业务逻辑层和数据层之间添加了 data.coupon.CouponMapper 接口。*PO 是作为 coupon 的持久化对象被加入到设计模型中去的。

blImpl.coupon 模块的设计如下图所示

                                                           图	blImpl.coupon模块类的设计

blImpl.coupon 模块类的职责如下表:

职责
CouponServiceImpl负责 coupon 的添加、获取
RoomsCouponStrategyImpl判断某个订单是否满足多间优惠策略
TargetMoneyCouponStrategyImpl判断某个订单是否满足某种满减金额优惠策略
TimeCouponStrategyImpl判断某个订单是否满足某种限时优惠策略
VIPCouponStrategyImpl判断某个订单是否满足 VIP 生日优惠策略
                                                                                           表	blImpl.coupon模块类的职责

(3)模块内部类的接口规范

提供的服务(供接口):

接口名
bl.coupon.CouponService.getMatchOrderCoupon语法: List<Coupon> getMatchOrderCoupon(OrderVO orderVO)
前置条件: 订单填写完整
后置条件: 根据订单信息,返回该订单可用的优惠策略列表
bl.coupon.CouponService.getHotelAllCoupon语法: List<Coupon> getHotelAllCoupon(Integer hotelId)
前置条件:
后置条件: 根据 ID 查找并返回某个酒店提供的所有优惠策略(包括失效的)
bl.coupon.CouponService.addTargetMoneyCoupon语法: CouponVO addTargetMoneyCoupon(TargetMoneyCouponVO couponVO) throws ServiceException
前置条件: couponVO 中的策略信息均符合规范
后置条件: 添加满减优惠策略,返回添加结果
bl.coupon.CouponService.addTimeCoupon语法: CouponVO addTimeCoupon(TimeCouponVO couponVO) throws ServiceException
前置条件: couponVO 中的策略信息均符合规范
后置条件: 添加限时优惠策略,返回添加结果
bl.coupon.CouponService.addRoomsCoupon语法: CouponVO addRoomsCoupon(RoomsCouponVO couponVO) throws ServiceException
前置条件: couponVO 中的策略信息均符合规范
后置条件: 添加多间优惠策略,返回添加结果
bl.coupon.CouponService.addVIPCoupon语法: CouponVO addVIPCoupon(VIPCouponVO couponVO)) throws ServiceException
前置条件: couponVO 中的策略信息均符合规范
后置条件: 添加会员优惠策略,返回添加结果
bl.coupon.CouponService.deleteCoupon语法: ResponseVO deleteCoupon(Integer couponId))
前置条件:
后置条件: 删除指定优惠策略,返回删除结果
bl.coupon.CouponMatchStrategy.isMatch语法: boolean isMatch(OrderVO orderVO, Coupon coupon)
前置条件:
后置条件: 返回订单与优惠策略是否适配的结果
                                                                                           表	blImpl.coupon模块的接口规范

需要的服务(需接口):

服务名服务
bl.hotel.HotelService.retrieveHotelDetails(Integer hotelId)获取指定酒店的详细信息
data.coupon.CouponMapper.insertCoupon(Coupon coupon)插入单一持久化对象
data.coupon.CouponMapper.selectByHotelId(Integer hotelId)根据 ID 进行查找多个持久化对象
data.coupon.CouponMapper.deleteCoupon(Integer id)根据 ID 删除单一持久化对象
data.vip.VIPMapper.getVIPById(int userId)根据 userId 进行查找单一持久化对象
                                                                                           表	blImpl.coupon需要的服务

(4)业务逻辑层的动态模型

下图表明了互联网酒店预订系统中,当客户在预订酒店需要获取订单匹配的优惠策略时,相关对象之间的协作。


图 获取订单匹配的优惠策略的顺序图

下图表明了互联网酒店预订系统中,当酒店管理人员或网站营销人员需要添加满减优惠策略时,相关对象之间的协作。


图 添加满减优惠策略的顺序图

(5)业务逻辑层的设计原理

bl.coupon 是服务器端提供的业务逻辑接口,blImpl.coupon 是接口的实现,blImpl 通过数据层接口 data.coupon.CouponMapper 来访问数据库,从而实现数据读取和持久化存储。

(6)重要的数据结构及算法

couponVO: coupon 的展示层对象。包含的数据有

private Integer hotelId;
private Integer id;
private String description;
private Integer status;
private String name;
private Integer type;
4.2.3 blImpl.hotel 模块

(1)模块概述

blImpl.hotel 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.hotel 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

业务逻辑层分为 2 个子层: 一个是 bl 层, 一个是 blImpl 层。bl 层主要负责向界面层提供服务, 并且利用具体的 blImpl 来实现各个服务。

(3)模块内部类的接口规范

提供的服务

接口名
bl.hotel.HotelService.addHotel语法: Integer addHotel(HotelVO hotelVO,int adminId) throws ServiceException
前置条件: hotelVO 中信息格式均无误且由管理人员操作
后置条件: 以 hotelVO 中信息添加酒店
bl.hotel.HotelService.deleteHotel语法: ResponseVO deleteHotel(Integer hotelId, Integer adminId)
前置条件: 由管理人员操作
后置条件: 删除指定酒店
bl.hotel.HotelService.addHotelManager语法: ResponseVO addHotelManager(Integer hotelId, Integer managerId)
前置条件:
后置条件: 修改指定酒店的工作人员 Id
bl.hotel.HotelService.updateHotelDetail语法: ResponseVO updateHotelDetail(HotelDetail hotelDetail,int hotelId)
前置条件:
后置条件: 修改指定酒店的信息
bl.hotel.HotelService.updateRoomInfo语法: void updateRoomInfo(Integer hotelId, String roomType,Integer rooms) throws ServiceException
前置条件: 线上预订成功或线下入住或线下退房
后置条件: 查找指定酒店中指定类型的客房,修改其剩余客房信息
bl.hotel.HotelService.retrieveHotels语法: List<HotelVO> retrieveHotels()
前置条件:
后置条件: 列表获取酒店信息
bl.hotel.HotelService.retrieveHotelDetails语法: HotelVO retrieveHotelDetails(Integer hotelId)
前置条件:
后置条件: 查找指定酒店,返回其详细信息
bl.hotel.HotelService.getRoomCurNum语法: int getRoomCurNum(Integer hotelId,String roomType) throws ServiceException
前置条件:
后置条件: 查找指定酒店的指定类型房间,返回其剩余数量
bl.hotel.HotelService.insertRoomInfo语法: ResponseVO insertRoomInfo(HotelRoom hotelRoom)
前置条件:
后置条件: 添加指定的酒店客房信息
bl.hotel.RoomService.retrieveHotelRoomInfo语法: List<HotelRoom> retrieveHotelRoomInfo(Integer hotelId)
前置条件:
后置条件: 查找指定酒店,返回其全部房间信息
bl.hotel.RoomService.insertRoomInfo语法: void insertRoomInfo(HotelRoom hotelRoom)
前置条件:
后置条件: 添加指定的酒店客房信息
bl.hotel.RoomService.updateRoomInfo语法: void updateRoomInfo(Integer hotelId, String roomType, Integer rooms)
前置条件: 线上预订成功或线下入住或线下退房
后置条件: 查找指定酒店的指定类型客房,更新其数量
bl.hotel.RoomService.updateRoomBase语法: ResponseVO updateRoomBase(HotelRoom Base) throws ServiceException
前置条件: 酒店工作人员需要修改酒店房间的信息
后置条件: 查找指定酒店的指定类型客房,更新其基本信息
bl.hotel.RoomService.deleteRoomInfo语法: void deleteRoomInfo(Integer hotelId, String roomType)
前置条件:
后置条件: 删除指定酒店的指定类型客房
bl.hotel.RoomService.getRoomCurNum语法: int getRoomCurNum(Integer hotelId, String roomType)
前置条件:
后置条件: 查找指定酒店的指定类型房间,返回其剩余数量

需要的服务

服务名服务
data.hotel.HotelMapper.insertHotel(Hotel hotel)插入单一持久化对象
data.hotel.HotelMapper.deletehotel(int hotelId)删除根据 id 查找到的单一持久化对象
data.hotel.HotelMapper.updateHotelManager(Integer hotelId, Integer managerId)改变根据 hotelID 查找到的单一持久化对象的属性
data.hotel.HotelMapper.updateHotelDetail(Integer hotelId, String address, String bizRegion, String hotelStar, String hotelService, String description, String phoneNum)改变根据 hotelID 查找到的单一持久化对象的属性
data.hotel.HotelMapper.selectAllHotel()查找多个持久化对象
data.hotel.HotelMapper.selectById(Integer id)根据 ID 进行查找单一持久化对象
data.hotel.RoomMapper.selectRoomsByHotelId(Integer hotelId)根据 ID 进行查找多个持久化对象
data.hotel.RoomMapper.insertRoom(HotelRoom hotelRoom)插入单一持久化对象
data.hotel.RoomMapper.updateRoomInfo(Integer hotelId, RoomType roomType, Integer curNum)根据 curNum 改变根据 hotelID 与 roomType 查找到的单一持久化对象的属性
data.hotel.RoomMapper.updateRoomBase(HotelRoom hotelRoom)根据 curNum、total、price 改变根据 hotelID 与 roomType 查找到的单一持久化对象的属性
data.hotel.RoomMapper.getRoomCurNum(Integer hotelId, RoomType roomType)得到根据 hotelId 与 roomType 查找到的单一持久化对象的属性
data.hotel.RoomMapper.deleteRoom(Integer hotelId, RoomType roomType)删除单一持久化对象

(4)业务逻辑层的动态模型

下图举例当获得酒店详细信息时,业务逻辑处理的相关对象之间的协作。

(5)业务逻辑层的设计原理

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

4.2.4 blImpl.order 模块

(1)模块概述

blImpl.order 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.order 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

业务逻辑层分为 2 个子层: 一个是 bl 层, 一个是 blImpl 层。bl 层主要负责向界面层提供服务, 并且利用具体的 blImpl 来实现各个服务。

(3)模块内部类的接口规范

提供的服务

接口名
bl.order.OrderService.addOrder语法: ResponseVO addOrder(OrderVO orderVO)
前置条件: 订单信息填写完整
后置条件: 添加订单并更新酒店剩余房间信息,并开始异常订单的计时,返回预订成功与否的结果
bl.order.OrderService.getAllOrders语法: List<Order> getAllOrders()
前置条件:
后置条件: 获得所有订单信息
bl.order.OrderService.getUserOrders语法: List<Order> getUserOrders(int userid)
前置条件:
后置条件: 查找用户,返回其所有订单信息
bl.order.OrderService.annulBookedOrder语法: ResponseVO annulBookedOrder(int orderid)
前置条件: 客户在最晚执行时间前撤销未执行订单
后置条件: 撤销订单并更新酒店剩余房间等信息,按条件更新用户信用,返回撤销成功与否的结果
bl.order.OrderService.annulOrder语法: void annulOrder(int orderid) throws ServiceException
前置条件:
后置条件: 撤销订单并更新酒店剩余房间等信息
bl.order.OrderService.abnormalOrder语法: void abnormalOrder(int orderid) throws ServiceException
前置条件: 订单预订成功后在超过最晚订单执行时间后还没有执行
后置条件: 将订单状态置为“异常”,并为用户扣除等于订单总价值的信用值
bl.order.OrderService.solveAbnormalOrder语法: ResponseVO solveAbnormalOrder(int orderid)
前置条件: 异常订单在离店时间时仍未被置为已执行或已撤销
后置条件: 将订单状态置为“过期异常”,并恢复房间
bl.order.OrderService.excuteOrder语法: ResponseVO excuteOrder(int orderid)
前置条件: 酒店工作人员要为入住客户执行“未执行”或“异常”的订单
后置条件: 执行订单,并为用户加上等同于订单总价值的信用值,返回执行成功与否的结果
bl.order.OrderService.leaveEarly语法: ResponseVO leaveEarly(int orderid)
前置条件: 当前日期早于订单结束日期
后置条件: 修改订单的结束日期为当前日期,重新计算并更改价格,返回执行成功与否的结果
bl.order.OrderService.getHotelOrders语法: List<Order> getHotelOrders(Integer hotelId)
前置条件:
后置条件: 查找指定酒店,返回其所有订单

需要的服务

服务名服务
bl.hotel.HotelService.getRoomCurNum(Integer hotelId,String roomType)查看指定酒店的指定房间的剩余数量
bl.hotel.HotelService.updateRoomInfo(Integer hotelId, String roomType,Integer rooms)修改指定酒店的指定类型客房的剩余数量
bl.user.AccountService.getUserInfo(int id)获取用户个人信息
bl.vip.VIPService.updateClientCredit(int userId, double credit)增减用户信用值
data.order.OrderMapper.addOrder(Order order)插入单一持久化对象
data.order.OrderMapper.updateOrder(Integer orderId, String checkOutDate, Double price)改变根据 order 中的 ID 查找到的单一持久化对象的属性
data.order.OrderMapper.getAllOrders()查找多个持久化对象
data.order.OrderMapper.getUserOrders(int userid)根据 ID 进行查找多个持久化对象
data.order.OrderMapper.getOrderById(int orderid)根据 ID 进行查找单一持久化对象
data.order.OrderMapper.annulOrder(int orderid)改变根据 ID 查找到的单一持久化对象的属性
data.order.OrderMapper.excuteOrder(int orderid)改变根据 ID 查找到的单一持久化对象的属性
data.order.OrderMapper.abnormalOrder(int orderid)改变根据 ID 查找到的单一持久化对象的属性
data.order.OrderMapper.solveAbnormalOrder(int orderid)改变根据 ID 查找到的单一持久化对象的属性

(4)业务逻辑层的动态模型

下图举例当获得订单详细信息时,业务逻辑处理的相关对象之间的协作。

(5)业务逻辑层的设计原理

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

4.2.5 blImpl.user 模块

(1)模块概述

blImpl.user 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.user 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

业务逻辑层分为 2 个子层: 一个是 bl 层, 一个是 blImpl 层。bl 层主要负责向界面层提供服务, 并且利用具体的 blImpl 来实现各个服务。

(3)模块内部类的接口规范

提供的服务

接口名
bl.user.AccountService.registerAccount语法: ResponseVO registerAccount(UserVO userVO)
前置条件: UserVO 中信息均符合格式
后置条件: 以 UserVO 中信息注册账号,返回注册成功与否的结果
bl.user.AccountService.login语法: User login(UserForm userForm)
前置条件: userForm 中信息均符合格式
后置条件: 根据 userForm 查找用户并验证,登录成功会将用户信息保存在 session 中,返回登陆验证的结果
bl.user.AccountService.getUserInfo语法: User getUserInfo(int id)
前置条件:
后置条件: 查找用户,返回其个人信息
bl.user.AccountService.updateUserInfo语法: ResponseVO updateUserInfo(int id, String password,String username,String phonenumber)
前置条件: 输入信息均符合格式
后置条件: 根据输入查找用户并更新其个人信息,返回更新成功与否的结果
bl.user.AccountService.updateUserCredit语法: void updateUserCredit(int id, double credit)
前置条件: 输入信息均符合格式
后置条件: 根据输入查找用户并更新其信用值,返回更新成功与否的结果

需要的服务

服务名服务
data.user.AccountMapper.createNewAccount(User user)插入单一持久化对象
data.user.AccountMapper.getAccountByName(String email)根据 email 查找单一持久化对象
data.user.AccountMapper.getAccountById(int id)根据 ID 进行查找单一持久化对象
data.user.AccountMapper.updateAccount(int id, String password, String username, String phonenumber)改变根据 ID 查找到的单一持久化对象的属性
data.user.AccountMapper.updateAccountCredit(int id, double credit)改变根据 ID 查找到的单一持久化对象的属性

(4)业务逻辑层的动态模型

下图举例当获得用户详细信息时,业务逻辑处理的相关对象之间的协作。

(5)业务逻辑层的设计原理

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

4.2.6 blImpl.VIP 模块

(1)模块概述

blImpl.VIP 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.VIP 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

业务逻辑层分为 2 个子层: 一个是 bl 层, 一个是 blImpl 层。bl 层主要负责向界面层提供服务, 并且利用具体的 blImpl 来实现各个服务。

(3)模块内部类的接口规范

提供的服务

接口名
bl.vip.VIPService.registerVIP语法: ResponseVO registerVIP(VIPVO vipVO)
前置条件: VIPUserVO 中信息均符合格式
后置条件: 以 VIPUserVO 中信息注册会员,返回注册成功与否的结果
bl.vip.VIPService.getVIPInfo语法: VIP getVIPInfo(int userId)
前置条件:
后置条件: 以 userId 查找会员,返回会员信息
bl.vip.VIPService.updateClientCredit语法: void updateClientCredit(int userId, double credit) throws ServiceException
前置条件:
后置条件: 根据输入查找用户并更新其信用值
bl.vip.VIPService.updateVIPLevel语法: void updateVIPLevel(int userId)
前置条件:
后置条件: 根据会员用户当前信用值更新其会员等级
bl.vip.VIPService.setVIPLevel语法: void setVIPLevel(int vipId, VIPLevel level)
前置条件:
后置条件: 设置会员用户的等级

需要的服务

服务名服务
bl.user.AccountService.getUserInfo(int id)根据 ID 查找用户信息
bl.user.AccountService.updateUserCredit(int id, double credit)根据 ID 与 credit 更新用户的信用值
data.vip.VIPMapper.createNewVIP(VIP vip)插入单一持久化对象
data.vip.VIPMapper.getVIPByUserId(int userId)根据 userId 进行查找单一持久化对象
data.vip.VIPMapper.setVIPLevel(int vipId, VIPLevel level)改变根据 ID 查找到的单一持久化对象的属性

(4)业务逻辑层的动态模型

下图举例当获得 VIP 详细信息时,业务逻辑处理的相关对象之间的协作。

(5)业务逻辑层的设计原理

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

4.2.7 blImpl.marketer 模块

(1)模块概述

blImpl.marketer 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.marketer 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

业务逻辑层分为 2 个子层: 一个是 bl 层, 一个是 blImpl 层。bl 层主要负责向界面层提供服务, 并且利用具体的 blImpl 来实现各个服务。

(3)模块内部类的接口规范

提供的服务

接口名
bl.marketer.MarketerService.getAbnormalOrders语法: List<Order> getAbnormalOrders()
前置条件:
后置条件: 查找所有异常订单
bl.marketer.MarketerService.annulAbnormalOrder语法: ResponseVO annulAbnormalOrder(int orderid, double percent)
前置条件: 订单异常
后置条件: 撤销订单,并为用户恢复订单总价值乘以 percent 的信用值,恢复房间,返回撤销成功与否的结果
bl.marketer.MarketerService.buyCredit语法: ResponseVO buyCredit(String email, double credit)
前置条件: 输入的账号存在
后置条件: 根据账号查找用户并增加其信用值,返回更新成功与否的结果

需要的服务

服务名服务
bl.order.OrderService.annulOrder(int orderid)撤销订单以及恢复房间
bl.vip.VIPService.updateClientCredit(int userId, double credit)增减用户信用值
data.order.OrderMapper.getOrderById(int orderid)根据 ID 进行查找单一持久化对象
data.user.AccountMapper.getAccountByName(String email)根据 email 查找单一持久化对象
data.marketer.MarketerMapper.getAllAbnormalOrders()查找多个持久化对象

(4)业务逻辑层的动态模型

下图举例当获取所有异常订单时,业务逻辑处理的相关对象之间的协作。

(5)业务逻辑层的设计原理

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

4.2.8 blImpl.rar 模块

(1)模块概述

blImpl.rar 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

blImpl.rar 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

业务逻辑层分为 2 个子层: 一个是 bl 层, 一个是 blImpl 层。bl 层主要负责向界面层提供服务, 并且利用具体的 blImpl 来实现各个服务。

(3)模块内部类的接口规范

提供的服务

接口名
bl.rar.RARService.rateAndReview语法: ResponseVO rateAndReview(Integer orderId, double rate, String review)
前置条件:
后置条件: 为每个订单添加评论
bl.rar.RARService.calHotelRate语法: void calHotelRate(Integer hotelId)
前置条件:
后置条件: 为指定酒店更新评分
bl.rar.RARService.getHotelRAR语法: List<Judgment> getHotelRAR(Integer hotelId)
前置条件:
后置条件: 为指定酒店获取评价列表

需要的服务

服务名服务
data.order.OrderMapper.getOrderById(int orderid)根据 ID 进行查找单一持久化对象
data.order.OrderMapper.orderRAR(int orderid)改变根据 ID 进行查找到的单一持久化对象的属性
data.rar.RARMapper.insertRAR(Judgment judgment)插入单一持久化对象
data.rar.RARMapper.updateHotelRate(Integer hotelId, Double rate)改变根据 hotelID 查找到的单一持久化对象的属性
data.rar.RARMapper.selectRARByHotelId(Integer hotelId)根据 hotelID 进行查找多个持久化对象

(4)业务逻辑层的动态模型

下图举例当客户评价时,业务逻辑处理的相关对象之间的协作。

(5)业务逻辑层的设计原理

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

4.3 数据层的分解

4.3.1 data.admin 模块

(1)模块概述

data.admin 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.admin 模块的职责及接口参见软件体系结构文档表 26,27

(2)整体结构

根据体系结构的设计,我们将系统分为展示层,业务逻辑层和数据层。为了提高每一层的灵活性,我们在相邻两层之间添加了接口。对于 dataImpl.admin,我们在业务逻辑层和数据层之间添加了 data.admin.AdminMapper 接口。po.*是作为 admin 的持久化对象被加入到设计模型中去的。

data.admin 模块的设计如下图所示

                                                           图	data.admin模块的设计

data.admin 模块的职责如下表:

模块职责
data.admin负责新加酒店工作人员、获得用户信息列表、增加酒店、修改客户信息的数据持久化
                                                                                           表	data.admin模块的职责

(3)模块内部类的接口规范

提供的服务(供接口):

接口名
data.admin.AdminMapper.addManager语法: int addManager(User user)
前置条件: 同样 ID 的 user 在数据库中不存在
后置条件: 在数据库中增加一个 user 记录并返回 id 属性
data.admin.AdminMapper.addMarketer语法: int addMarketer(User user)
前置条件: 同样 ID 的 user 在数据库中不存在
后置条件: 在数据库中增加一个 user 记录
data.admin.AdminMapper.getAllManagers语法: List<User> getAllManagers()
前置条件:
后置条件: 查找数据库返回相应的 List<User>结果
data.admin.AdminMapper.getAllMarketers语法: List<User> getAllMarketers()
前置条件:
后置条件: 查找数据库返回相应的 List<User>结果
data.admin.AdminMapper.getAllClients语法: List<User> getAllClients()
前置条件:
后置条件: 查找数据库返回相应的 List<User>结果
                                                                                           表	data.admin模块的接口规范

(4)数据层的设计原理

数据持久化采用 MySQL 数据库,采用 MySQL 来实现数据库操作。

4.3.2 data.coupon 模块

(1)模块概述

data.coupon 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.coupon 模块的职责及接口参见软件体系结构文档表 26,28。

(2)整体结构

根据体系结构的设计,我们将系统分为展示层,业务逻辑层和数据层。为了提高每一层的灵活性,我们在相邻两层之间添加了接口。对于 dataImpl.coupon,我们在业务逻辑层和数据层之间添加了 data.coupon.CouponMapper 接口。po.*是作为 coupon 的持久化对象被加入到设计模型中去的。

data.coupon 模块的设计如下图所示

                                                           图	datat.coupon模块的设计

data.coupon 模块的职责如下表:

模块职责
data.coupon负责新加优惠策略,获取某酒店的所有优惠券
                                                                                           表	data.coupon模块的职责

(3)模块内部类的接口规范

提供的服务(供接口)

接口名
data.coupon.CouponMapper.insertCoupon语法: int insertCoupon(Coupon coupon)
前置条件: 同样 ID 的 coupon 在数据库中不存在
后置条件: 在数据库中增加一个 coupon 记录
data.coupon.CouponMapper.selectByHotelId语法: List<Coupon> selectByHotelId(Integer hotelId)
前置条件:
后置条件: 按 hotelID 进行查找返回相应的 List<Coupon>结果
data.coupon.CouponMapper.deleteCoupon语法: int deleteCoupon(Integer id)
前置条件: 同样 ID 的 coupon 在数据库中不存在
后置条件: 在数据库中删除一个 coupon 记录
                                                                                           表	data.coupon模块的接口规范

(4)数据层的设计原理

数据持久化采用 MySQL 数据库,采用 MySQL 来实现数据库操作。

4.3.3 data.hotel 模块

(1)模块概述

data.hotel 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.hotel 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

数据层主要提供给数据映射层服务。 对于持久化数据的集体载入、 集体保存、 增、 删、改、 查。 这些服务由 data.hotel 接口提供。

(3)模块内部类的接口规范

提供的服务

接口名
data.hotel.HotelMapper.insertHotel语法: int insertHotel(Hotel hotel)
前置条件: 同样 ID 的 hotel 在数据库中不存在
后置条件: 在数据库中增加一个 hotel 记录
data.hotel.HotelMapper.updateHotelManager语法: int updateHotelManager(Integer hotelId, Integer managerId)
前置条件: 在数据库中存在同样 hotelId 的 hotel 记录
后置条件: 更新该 hotel 记录的 manageId 属性
data.hotel.HotelMapper.updateHotelDetail语法: int updateHotelDetail(Integer hotelId, String address, String bizRegion, String hotelStar, String hotelServiice, String description, String phoneNum)
前置条件: 在数据库中存在同样 hotelId 的 hotel 记录
后置条件: 更新该 hotel 记录的 address、bizRegion、hotelStar、hotelService、description、phoneNum 属性
data.hotel.HotelMapper.selectAllHotel语法: List<HotelVO> selectAllHotel()
前置条件:
后置条件: 查找数据库返回相应的 List<HotelVO>结果
data.hotel.HotelMapper.selectById语法: HotelVO selectById(Integer id)
前置条件:
后置条件: 按 id 进行查找返回相应的 HotelVO 结果
data.hotel.HotelMapper.deleteHotel语法: int deleteHotel(Integer hotelId)
前置条件: 在数据库中存在同样 hotelId 的 hotel 记录
后置条件: 在数据库中删除一个 hotel 记录
data.hotel.RoomMapper.updateRoomInfo语法: int updateRoomInfo(Integer hotelId, RoomType roomType, Integer curNum)
前置条件: 在数据库中存在同样 hotelId 与 roomType 的 HotelRoom 记录
后置条件: 更新该 HotelRoom 记录的 curNum 属性
data.hotel.RoomMapper.updateRoomInfo语法: int updateRoomInfo(HotelRoom hotelRoom)
前置条件: 在数据库中存在同样 hotelId 与 roomType 的 HotelRoom 记录
后置条件: 更新该 HotelRoom 记录的 curNum、total、price 属性
data.hotel.RoomMapper.insertRoom语法: int insertRoom(HotelRoom hotelRoom)
前置条件: 同样 hotelId 与 roomType 的 HotelRoom 记录在数据库中不存在
后置条件: 在数据库中增加一个 hotelRoom 记录
data.hotel.RoomMapper.deleteRoom语法: int deleteRoom(Integer hotelId, RoomType roomType)
前置条件: 在数据库中存在同样 hotelId 与 roomType 的 HotelRoom 记录
后置条件: 在数据库中删除一个 hotelRoom 记录
data.hotel.RoomMapper.selectRoomsByHotelId语法: List<HotelRoom> selectRoomsByHotelId(Integer hotelId)
前置条件:
后置条件: 按 hotelId 进行查找返回相应的 List<HotelRoom>结果
data.hotel.RoomMapper.getRoomCurNum语法: int getRoomCurNum(Integer hotelId, RoomType roomType)
前置条件: 在数据库中存在同样 hotelId 与 roomType 的 HotelRoom 记录
后置条件: 返回该 HotelRoom 记录的 curNum 属性

(4)业务逻辑层的设计原理

利用 dataImpl 接口对数据库的实现提供很好的可修改性。

4.3.4 data.order 模块

(1)模块概述

data.order 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.order 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

数据层主要提供给数据映射层服务。 对于持久化数据的集体载入、 集体保存、 增、 删、改、 查。 这些服务由 data.order 接口提供。

(3)模块内部类的接口规范

提供的服务

接口名
data.order.OrderMapper.addOrder语法: int addOrder(Order order)
前置条件: 同样 ID 的 order 在数据库中不存在
后置条件: 在数据库中增加一个 order 记录
data.order.OrderMapper.updateOrder语法: int updateOrder(Integer orderId, String checkOutDate, Double price)
前置条件: 在数据库中存在同样 orderid 的 Order 记录
后置条件: 更新该 Order 记录的 checkOutDate、price 属性
data.order.OrderMapper.getAllOrders语法: List<Order> getAllOrders()
前置条件:
后置条件: 查找数据库返回相应的 List<Order>结果
data.order.OrderMapper.getUserOrders语法: List<Order> selectById(Integer userId)
前置条件:
后置条件: 按 userId 进行查找返回相应的 List<Order>结果
data.order.OrderMapper.getOrderById语法: Order getOrderById(int orderid)
前置条件:
后置条件: 按 orderid 进行查找返回相应的 Order 结果
data.order.OrderMapper.annulOrder语法: int annulOrder(int orderid)
前置条件: 在数据库中存在同样 orderid 的 Order 记录
后置条件: 更新该 Order 记录的 orderState 属性为“已撤销”
data.order.OrderMapper.excuteOrder语法: int excuteOrder(int orderid)
前置条件: 在数据库中存在同样 orderid 的 Order 记录
后置条件: 更新该 Order 记录的 orderState 属性为“已执行”
data.order.OrderMapper.abnormalOrder语法: int abnormalOrder(int orderid)
前置条件: 在数据库中存在同样 orderid 的 Order 记录
后置条件: 更新该 Order 记录的 orderState 属性为“异常”
data.order.OrderMapper.solveAbnormalOrder语法: int solveAbnormalOrder(int orderid)
前置条件: 在数据库中存在同样 orderid 的 Order 记录
后置条件: 更新该 Order 记录的 orderState 属性为“过期异常”

(4)业务逻辑层的设计原理

利用 dataImpl 接口对数据库的实现提供很好的可修改性。

4.3.5 data.user 模块

(1)模块概述

data.user 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.user 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

数据层主要提供给数据映射层服务。 对于持久化数据的集体载入、 集体保存、 增、 删、改、 查。 这些服务由 data.user 接口提供。

(3)模块内部类的接口规范

提供的服务

接口名
data.user.AccountMapper.createNewAccount语法: int createNewAccount(User user)
前置条件: 同样 ID 的 user 在数据库中不存在
后置条件: 在数据库中增加一个 user 记录
data.user.AccountMapper.getAccountByName语法: User getAccountByName(String email)
前置条件:
后置条件: 按 email 进行查找返回相应的 User 结果
data.user.AccountMapper.getAccountById语法: User getAccountById(int id)
前置条件:
后置条件: 按 id 进行查找返回相应的 User 结果
data.user.AccountMapper.deleteAccountById语法: int deleteAccountById(int id)
前置条件: 在数据库中存在同样 id 的 User 记录
后置条件: 在数据库中删除一个 User 记录
data.user.AccountMapper.updateAccount语法: int updateAccount(int id, String password, String username, String phonenumber)
前置条件: 在数据库中存在同样 id 的 User 记录
后置条件: 更新该 User 记录的 password、username、phonenumber 属性
data.user.AccountMapper.updateAccountCredit语法: int updateAccountCredit(int id, double credit)
前置条件: 在数据库中存在同样 id 的 User 记录
后置条件: 更新该 User 记录的 credit 属性

(4)业务逻辑层的设计原理

利用 dataImpl 接口对数据库的实现提供很好的可修改性。

4.3.6 data.VIP 模块

(1)模块概述

data.VIP 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.VIP 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

数据层主要提供给数据映射层服务。 对于持久化数据的集体载入、 集体保存、 增、 删、改、 查。 这些服务由 data.VIP 接口提供。

(3)模块内部类的接口规范

提供的服务

接口名
data.vip.VIPMapper.createNewVIP语法: int createNewVIP(VIP vip)
前置条件: 同样 ID 的 vip 在数据库中不存在
后置条件: 在数据库中增加一个 vip 记录
data.vip.VIPMapper.getVIPByUserId语法: VIP getVIPByUserId(int userId)
前置条件:
后置条件: 按 userId 进行查找返回相应的 VIP 结果
data.vip.VIPMapper.setVIPLevel语法: int setVIPLevel(int vipId, VIPLevel level)
前置条件: 在数据库中存在同样 id 的 VIP 记录
后置条件: 更新该 User 记录的 level 属性

(4)业务逻辑层的设计原理

利用 dataImpl 接口对数据库的实现提供很好的可修改性。

4.3.7 data.marketer 模块

(1)模块概述

data.marketer 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.marketer 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

数据层主要提供给数据映射层服务。 对于持久化数据的集体载入、 集体保存、 增、 删、改、 查。 这些服务由 data.marketer 接口提供。

(3)模块内部类的接口规范

提供的服务

接口名
data.marketer.MarketerMapper.getAllAbnormalOrders语法: List<Order> getAllAbnormalOrders()
前置条件:
后置条件: 查找数据库返回相应的 List<Order>结果

(4)业务逻辑层的设计原理

利用 dataImpl 接口对数据库的实现提供很好的可修改性。

4.3.8 data.rar 模块

(1)模块概述

data.rar 模块承担的需求参见需求规格文档功能需求和相关非功能需求。

data.rar 模块的职责及接口参见软件体系结构文档表。

(2)整体结构

数据层主要提供给数据映射层服务。 对于持久化数据的集体载入、 集体保存、 增、 删、改、 查。 这些服务由 data.rar 接口提供。

(3)模块内部类的接口规范

提供的服务

接口名
data.rar.RARMapper.insertRAR语法: int insertRAR(Judgment judgment)
前置条件: 同样 orderId 的 Judgment 记录在数据库中不存在
后置条件: 在数据库中增加一个 Judgment 记录
data.rar.RARMapper.updateHotelRate语法: int updateHotelRate(Integer hotelId, Double rate)
前置条件: 在数据库中存在同样 hotelId 的 hotel 记录
后置条件: 更新该 hotel 记录的 rate 属性
data.rar.RARMapper.selectRARByHotelId语法: List<Judgment> selectRARByHotelId(Integer hotelId)
前置条件:
后置条件: 按 hotelId 进行查找返回相应的 List<Judgment>结果
data.order.OrderMapper.orderRAR语法: int orderRAR(int orderid)
前置条件: 在数据库中存在同样 orderid 的 Order 记录
后置条件: 更新该 Order 记录的 rar 属性为 false

(4)业务逻辑层的设计原理

利用 dataImpl 接口对数据库的实现提供很好的可修改性。

5. 依赖视角

下图为客户端和服务器端各自的包之间的依赖关系


图 互联网预订酒店系统前端开发包图


图 互联网预订酒店系统后端开发包图

6. 功能介绍

(1)酒店预订
· 可选择筛选条件搜索酒店
· 可列表方式查看酒店房间信息
· 在预定面板,填写完信息后会自动显示可供使用的优惠券。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(2)酒店工作人员:管理酒店
· 修改酒店基本信息
· 房间管理
→可以浏览房间列表,不同房型对应的价格,总数,剩房数量等信息。并可进行添加、删除、修改。
· 优惠策略管理
→可以浏览酒店优惠策略列表,折扣值,达标条件等信息。并可进行添加、删除、修改。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)酒店工作人员:订单管理
· 可查看所有订单列表
· 对未执行的订单,可以选择置为执行(办理入住)
· 对异常订单(逾期未入住)可选择处理异常或执行,恢复房间数量。(技术点:如何自动将过期订单置为异常状态–檀潮)。
· 可以办理提前离店。
在这里插入图片描述
在这里插入图片描述
(4)网站营销人员:
· 信用充值
→查看、增加客户的信用值

· 网站促销策略管理
→网站促销策略的增,删,查

· 异常订单处理
→撤销该订单,恢复客户信用值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)网站管理人员:
· 账户管理
→查看、注册、删除、修改账号(包括客户、酒店工作人员、网站营销人员)

· 酒店管理
→添加、删除酒店
在这里插入图片描述

在这里插入图片描述

♻️ 资源

在这里插入图片描述

大小: 8.18MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87293553