当前位置: 首页 > news >正文

基于java酒店管理系统_课内资源 - 基于JAVA实现的互联网酒店管理系统

1 逻辑视角

互联网酒店管理系统中,选择了分层体系结构的风格,将系统分为3层(展示层、业务逻辑层、数据层)能够很好的示意整个高层抽象。展示层包括GUI页面的实现,业务逻辑层包含业务逻辑处理的实现,数据层负责数据的持久化和访问。分层体系结构的逻辑视角和逻辑设计方案如图1和图2所示。

eedbdee094f2c423e97c4d37cba80fc3.png

847fdf3e9f3fe57bfeb98a3fd27521e7.png

2 组合视角

2.1 开发包图

互联网酒店管理系统的最终开发包设计如表1所示:

开发(物理包)

依赖的其他开发包

mainui

orderui, hotelui, userInfoui, accountui, promotionui

orderui

orderblservice, 界面类库包

orderblservice

orderbl

orderblservice, hotelbl, userInfobl, promotionbl, po

orderdataservice

Java RMI, po

orderdata

orderdataservice, databaseutility

hotelui

hotelblservice, 界面类库包

hotelblservice

hotelbl

hotelblservice, orderbl, userInfobl, promotionbl, po

hoteldataservice

Java RMI, po

hoteldata

hoteldataservice, databaseutility

userInfoui

userInfoblservice, 界面类库包

userInfoblservice

userInfobl

userInfoblservice, accountbl, orderbl, hotelbl, po

userInfodataservice

Java RMI, po

userInfodata

userInfodataservice, databaseutility

accountui

accountblservice, 界面类库包

accountblservice

accountbl

accountblservice, userInfobl, hotelbl, po

accountdataservice

Java RMI, po

accountdata

accountdataservice, databaseutility

promotionui

promotionblservice, 界面类库包

promotionblservice

promotionbl

promotionblservice, orderbl, hotelbl, po

promotiondataservice

Java RMI, po

promotiondata

promotiondataservice, databaseutility

vo

po

utilitybl

界面类库包

Java RMI

database utility

客户端开发包图

1bf53cf5d7719cf911a2488562508e0a.png

服务器端开发包图

03e6206d529e18eebe3147a0683d3237.png

2.2 运行时进程

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

0a01e1bf53b8a031bd20af6da1bd6a47.png

2.3 物理部署

互联网酒店管理系统中客户端构件是放在客户端机上,服务器端构件是放在服务器端机器上。在客户端节点上,还要部署RMIStub构件。由于Java RMI 构件属于JDK 1.8的一部分。所以,在系统JDK环境已经设置好的情况下,不需要独立部署。部署图如图6所示。

eebc2177aa02c1ad645439457255c97a.png

3 接口视角

3.1 模块的职责

客户端模块和服务器端模块视图分别如图和图所示。客户端各层和服务器端各层的职责分别如表和表所示。

客户端模块视图

4eb67897ba4727c71a76dbd1e053341a.png

服务器端模块视图

9af3783c7837c25145c4e41fa8b34ce3.png

客户端各层的职责

职责

启动模块

负责初始化网络通信机制,启动用户界面

用户界面层

基于窗口的互联网酒店管理系统客户端用户界面

业务逻辑层

对于用户界面的输入进行响应并进行业务处理逻辑

客户端网络模块

利用Java RMI机制查找RMI服务

服务器端各层的职责

职责

启动模块

负责初始化网络通信机制,启动用户界面

数据层

负责数据的持久化及数据访问接口

服务器端网络模块

利用Java RMI机制开启RMI服务,注册RMI服务

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

层之间调用的接口

接口

服务调用方

服务提供方

OrderBLService; HotelBLService; UserInfoBLService; AccountBLService; PromotionBLService

客户端展示层

客户端业务逻辑层

OrderDataService; HotelDataService; UserInfoDataService; AccountDataService; PromotionDataService; DatabaseFactory

客户端业务逻辑层

服务器端数据层

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

dd9d621e58306b19a9d7fe4fdeb8aeef.png

3.2 用户界面层的分解

根据需求,系统存在23个用户界面:登陆界面、客户主界面、酒店主界面、网站营销人员主界面、网站管理人员主界面、个人基本信息界面、评价酒店服务界面、订单信息界面、提交订单界面、撤销订单界面、注册会员界面、获取酒店信息界面、酒店基本信息、执行客户订单界面、恢复客户订单界面、更新退房信息界面、更新入住信息界面、制定酒店促销策略界面、制定网站促销策略界面、信用充值界面、撤销异常订单界面、分析未执行订单情况界面、调整用户界面。界面跳转如图所示。

6a7a1ccfafb0512ef00cccfd974c2f33.png

服务器端和客户端的用户界面设计接口是一致的,只是具体的页面不一样。用户界面类如图所示。

d60248cd79d951c1e002f9c205bb4b45.png

3.2.1 用户界面层模块的职责

如表所示为用户界面层模块的职责。

模块

职责

MainFrame

界面Frame,负责界面的显示和界面的跳转

3.2.2 用户界面层模块的接口规范

用户界面层模块的接口规范如表所示。

MainFrame

语法

Init(args:String[])

前置条件

后置条件

显示Frame以及LoginPanel

用户界面层需要的服务接口如表所示。

服务名

服务

businesslogicservice.LoginBLService

登陆界面的业务逻辑接口

businesslogicservice.*BLService

每个界面都有一个相应的业务逻辑接口

3.2.3 用户界面模块设计原理

用户界面利用JavaFX的API来实现。

3.3 业务逻辑层的分解

业务逻辑层包括多个针对界面的业务逻辑处理对象。例如,Order对象负责处理订单界面的业务逻辑。业务逻辑层的设计如图所示。

ed2962f1476c17cd6441bb7081e0b084.png

业务逻辑层模块职责如表所示。

模块

职责

orderbl

负责处理和订单相关的服务

hotelbl

负责处理和酒店退订房相关的服务

userInfobl

负责处理和用户信息相关的服务

accountbl

负责处理和用户账号相关的服务

promotionbl

负责处理和促销策略相关的服务

3.4 数据层的分解

数据层主要给业务逻辑层提供数据访问服务,包括对于持久化数据的增、删、改、查。数据层模块的描述具体如下图所示。

85efbe5f98dbbf9032c8cf3883a428e6.png

4 信息视角

4.1 数据持久化对象

系统的PO类就是对应的相关的实体类,如下所示。

OrderPO类包括订单的编号(订单号为13位0~9的数字,前8位为当前日期,后5位由系统随机生成,日期格式为:yyyy-mm-dd,因此一天最多可以生成100,000条订单),开始时间,退房时间,最晚订单执行时间,房间类型,房间数量,预计入住人数,儿童数,订单状态(包括已执行、未执行、已撤销、异常),价格(大于等于0、精确到小数点后2位的浮点数),折扣,折扣后总额

HotelPO类包括酒店名称,地址,所属商圈,联系方式,简介,评分,评价,空余房间数,房间总数

UserInfoPO类包括客户的编号(格式为一个字母加5位0~9数字,普通客户以“N”开头,企业客户以“E”开头),用户名,密码,分类(普通客户、企业客户),联系方式,信用值,企业名称,生日(日期格式为:yyyy-mm-dd)

AccountPO类包括用户的编号(用户账号统一采用一个字母加5位0~9数字格式,网站管理人员账号以“A”开头,网站营销人员账号以“M”开头,酒店以“H”开头,普通会员账号以“N”开头,企业会员账号以“E”开头),密码

PromotionPO类是HotelPromotionPO和MarketPromotionPO的父类

HotelPromotionPO类包括促销类型,开始日期,结束日期(日期格式为:yyyy-mm-dd),活动名称,活动折扣;生日折扣;房间数,房间数折扣;企业折扣

MarketPromotionPO类包括促销类型,开始日期,结束日期(日期格式为:yyyy-mm-dd),活动名称,活动折扣,活动简介;商圈名称,商圈等级,商圈折扣;会员等级,每次升级所需的信用值,每个等级对应的折扣

4.2 Txt持久化格式

统一用*.ser格式

4.3 数据库表

数据库中包含Order表,Hotel表,UserInfo表,Account表,HotelPromotion表,MarketPromotion表

5 原型设计

个人基本信息界面

efd489277fb3e53abd49feb3d7076174.png

客户主界面

8de8dbf65719429bd4d87697dde119be.png

提交订单界面

238cff0192512021c8e6924e73f1baec.png

网站管理人员主界面

a2a8e56d3efdb6f07402be18a1bc5d37.png

网站营销人员主界面

dcc9046206f82c279acfd849d1c840a9.png

订单列表界面

2204a9c1bdc3d368775b605940a696cf.png

酒店主界面

56af5b91c986a7518eab425a06cf7eeb.png

酒店基本信息界面

56a9a6cb70c3d5f5381e43b43c1110a9.png

相关文章:

  • 在win2000下配置php,cgi,asp运行环境
  • 传统java io_Java IO编程全解(二)——传统的BIO编程
  • 喝啤酒可测出性格
  • java. new对象 堆栈_Java 堆内存与栈内存详细介绍
  • 最有用的网络命令
  • 手机谜语
  • app指纹登录 java后端_Android应用实现指纹登录
  • 有一家银行每天早上都在我的帐户里存入¥86,400
  • java 解析 树_java-斯坦福大学nlp:解析树
  • mysql 行号 hibernate_Web项目从Oracle转为Mysql,fluentnhibernate-1.0和NHibernate2.1.0升级到NHibernate3.3的注意事项...
  • 快速访问系统文件夹
  • 让“龙头”与“长尾”共舞 - 长尾理论在Web2.0网站中的应用
  • mysql数据库部署回退文档_mysql数据库主从复制部署笔记
  • 感谢Candy
  • java包装类转换12_JAVA_包装类的使用与包装类数据类型转换
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 345-反转字符串中的元音字母
  • 5、React组件事件详解
  • Apache Spark Streaming 使用实例
  • Apache Zeppelin在Apache Trafodion上的可视化
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript设计模式与开发实践系列之策略模式
  • JS笔记四:作用域、变量(函数)提升
  • js写一个简单的选项卡
  • Mac转Windows的拯救指南
  • Mocha测试初探
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • October CMS - 快速入门 9 Images And Galleries
  • Phpstorm怎样批量删除空行?
  • v-if和v-for连用出现的问题
  • Vim Clutch | 面向脚踏板编程……
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 检测对象或数组
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 普通函数和构造函数的区别
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 携程小程序初体验
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 用mpvue开发微信小程序
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (6)添加vue-cookie
  • (C语言)fgets与fputs函数详解
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (转) Face-Resources
  • .bat批处理出现中文乱码的情况
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net打印*三角形
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解