信息工程学院
《数据库课程设计》论文
题 目:酒店管理系统数据库设计
学 号: 2013013115 专业班级: 软件工程133 姓 名: 洪吕彬 指导老师: 朱珊娜
完成日期: 2015年6月28日
酒店管理系统数据库设计
洪吕彬
(信息工程学院软件工程13级3班)
摘 要 200-300字为限
关键字:酒店;管理;效率(三到五个,之间用分号分隔)
随着我国经济体制改革的不断深化和我国经济的快速发展,我国人民的收入不断提高,消费观念也有提高,对服务质量的要求也有很大的提高。各地把旅游业当作本 地经济发展的重要支柱之一。酒店作为人们食宿、娱乐、休闲的场所而得到了快速的发展。社会上也成立了各种类型,不同规模的酒店服务企业。如何为客户提供更 加准确及时的服务,成为各个酒店竞争关键。所以酒店业务信息化建设就成为了客户衡量酒店提供商服务标准的一个准则,信息系统成为了基础。
对酒店整个来说,对酒店经营状况起决定作用的是酒店的服务管理水平。如何利用先进的管理手段来提高酒店的管理水平成为酒店业务发展的当务之急。面对信息时代的机遇和挑战,利用科技手段提高酒店的管理无疑是一条行之有效的途径。虽然计算机管理并不是酒店管理走向成功的关键元素,但它可以最大限度地发挥准确、快捷、高效等作用,对酒店的业务管理提供强有力的支持。因此,采用全新的计算机网络和酒店业务管理系统,已成为提高酒店的管理效率,使作业人员与管理系统之间灵活互动,实现流畅的工作流衔接,帮助酒店有效地进行业务管理,释放最大价值。酒店业务管理系统在达到在节省人力资源成本的同时,可以提高业务效率,并能够及时、准确、迅速地满足顾客服务的需求。
随着Internet技术的进一步发展和普及,不能很好的适应世界经济发展的形式和我国国民经济建设的需要,市场现有的产品化的酒店业务软件系统在不断发展中的酒店的需求。基于WEB的酒店管理系统的总体设计目标能够建立完善、高效、可靠的酒店业务信息系统,为酒店提供良好的信息环境。
1
目 录
1.需求分析 ...................................................................................................................................1 2.数据库结构设计 .......................................................................................................................9
2.1 概念设计 ..........................................................................................................................9
2.1.1 分E-R图建立 .......................................................................................................9 2.1.2 全局/整体E-R图 ................................................................................................ 11 2.2 逻辑设计 ........................................................................................................................ 11
2.2.1 建立关系模式...................................................................................................... 11 2.2.2 关系模式规范化处理 .......................................................................................... 12 2.2.3 用户子模式建立 .................................................................................................. 13 2.2.4 关系模式逻辑结构定义 ...................................................................................... 13
3. 数据库物理设计 ................................................................................................................... 13 4.数据库实施与测试 ................................................................................................................. 14
4.1 SQL Server 2008数据库实施与测试 ............................................................................. 14
4.1.1 数据库及数据库对象建立 .................................................................................. 14 4.1.2 数据入库 ............................................................................................................. 15 4.1.3 数据库测试 ......................................................................................................... 15 4.2 Oracle数据库实施与测试 .............................................................................................. 17
4.2.1 数据库及数据库对象建立 .................................................................................. 17 4.2.2 数据入库 ............................................................................................................. 19 4.2.3 数据库测试 ......................................................................................................... 19
5.总结 ........................................................................................................................................ 19 6.附录 ........................................................................................................................................ 20
I
13级软工专业3班数据库应用系统课程设计课程论文
小型酒店管理涉及前台、客房服务、餐厅三个部分,每个部分都需要录入信息,
所以建立管理系统的数据库是必不可少的。本数据库目的便是实习酒店的基本信息管理。
1.需求分析
系统功能:能够处理小型酒店前台、客房服务部、餐厅的基本信息管理 数据库系统环境要求:支持Sql Server 2008及以上版本、Oracle 11g及以上版本的运行
数据流程图部分: ①数据流程总图:
图1-1 数据流程总图
②数据流程分图P0:
1
13级软工专业3班数据库应用系统课程设计课程论文
图1-2数据流程分图P0
③数据流程图P1:
图1-3 数据流程图P1
2
13级软工专业3班数据库应用系统课程设计课程论文
④数据流程图P2:
图1-4 数据流程图P2
⑤数据流程图P3:
图1-5 数据流程图P3
3
13级软工专业3班数据库应用系统课程设计课程论文
数据字典部分: ①数据项:
表1-1 数据项
数据项编号 数据项名 DI-1 DI-2 DI-3 DI-4 DI-5 DI-6 DI-7 DI-8 DI-9 DI-10 DI-11 DI-12 DI-13 DI-14 DI-15 DI-16 DI-17 DI-18 DI-19 DI-20 DI-21 DI-22 DI-23 DI-24 DI-25 DI-26 DI-27 DI-28 DI-29 DI-30 DI-31 DI-32 DI-33
数据项含义 房间号 房间类型 房间单价 房间清洁情况 顾客姓名 顾客身份证号 顾客年龄 客户流水号 客户姓名 客户身份证号 客户年龄 餐厅消费额 送餐消费额 入住天数 入住房间号 预定编号 预定客户姓名 预定客户电话 预定房间号 预定房间类型 预定房间单价 删除预定编号 删除预订姓名 清洁编号 清洁房间号 餐品编号 餐品单价 送餐编号 送餐下单时间 送餐客户号 预计送达时间 送餐消费单编号 送餐结账时间 4
与其它数据项关系 类型 char char float char char char int char char char int float float int char char char char char char char char char char char char float char date char date char date 长度 10 10 10 20 20 10 20 20 10 10 20 20 10 10 10 10 20 10 10 10 10 10 10 RoomNo RoomType RoomPrice CleanCondition Name IDNo Age CtmNo CtmName CtmIDNo CtmAge DiningCost MoWCost Days CheckInNo PreNo PreCtmName PreCtmPhone PreRoomNo PreRoomType PreRoomPrice DelNo DelName CleanNo CleanRoomNo FoodNo FoodPrice MoWNo MoWOrderTime MoWCtmNo MoWExpectTime MoWBillNo MoWBillTime 13级软工专业3班数据库应用系统课程设计课程论文
数据项编号 数据项名 DI-34 DI-35 DI-36 DI-37 DI-38 DI-39 DI-40 DI-41 DI-42 DI-43 DI-44 DI-45 DI-46 DI-47 DI-48 MoWBillTotal MoWBillCtmNo LodgerMealNo LodgerMealTable LodgerBillNo LodgerBillTable LodgerBillTime LodgerBillTotal LodgerRoomNo CheckOutNo CheckOutTotal OrderNo OrderFoodNo OrderNum 数据项含义 送餐餐品总额 送餐客户号 房客点餐编号 房客点餐餐桌号 房客消费单编号 房客消费桌号 房客结账时间 房客消费总额 房客房间号 退房结账单编号 退房结账总额 点餐单编号 餐品编号 餐品数量 与其它数据项关系 类型 float char char char date char char date float char char float char char int 长度 10 10 10 LodgerMealOrderTime 房客点餐时间 10 10 10 10 10 10 ②数据结构:
表1-2 数据结构
数据结构编号 DS-1 DS-2 DS-3 DS-4 DS-5 DS-6 DS-7 DS-8 DS-9 DS-10 数据结构名 RoomInfo PersonInfo CtmInfo PreInfo DelPre CleanList MTList MTBillList 数据结构含义 组成 房间信息 顾客信息 客户信息 预订信息 删除预订 清洁单 送餐单 送餐消费单 RoomNo RoomType RoomPrice CleanCondition Name IDNo Age CtmNo CtmName CtmIDNo CtmAge DiningCost MoWCost Days CheckInNo PreNo PreCtmName PreCtmPhone PreRoomNo PreRoomType PreRoomPrice DelNo DelName CleanNo CleanRoomNo MoWNo MoWOrderTime MoWCtmNo MoWExpectTime MoWBillNo MoWBillTime MoWBillTotal MoWBillCtmNo LodgerMealNo LodgerMealTable LodgerMealOrderTime LodgerBillNo LodgerBillTable LodgerBillTime LodgerBillTotal LodgerMealList 房客点餐单 LodgerBill 餐厅消费单
5
13级软工专业3班数据库应用系统课程设计课程论文
数据结构编号 DS-11 DS-12 数据结构名 数据结构含义 组成 LodgerRoomNo CheckOutBill OrderDetail 退房结账单 订单明细 CheckOutNo CheckOutTotal OrderNo OrderFoodNo OrderNum ③数据流:
表1-3 数据流
数据流编号 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F17 F18 F19 预定请求 客房信息 退订请求 退订反馈 入住请求 客房信息 退房请求 退房结账单 清洁房号 清洁反馈 送餐单 送餐消费单 房客点餐单 餐厅消费单 客房信息 清洁反馈 客房点餐信息 送餐消费单 数据流名称 简述 数据流来源 数据流去向 数据流组成 房客 预订接待 房客 退订接待 房客 入住接待 房客 退房结账 房客 客房清洁 房客 客房服务 房客 餐厅结账 退房接待 客房清洁 客房服务 预订接待 房客 退订接待 房客 入住接待 房客 退房接待 房客 客房服务 房客 客房服务 房客 点菜台 房客 客房清洁 客户姓名+客户电话+房间类型 房间类型+房间单价 客户姓名+客户电话 删除预订编号 客户姓名+客户身份证号+客户性别+客户年龄+客户电话+入住天数+房间类型 入住房间号 客户姓名+入住房间号 退房结账总额 清洁房间号 清洁编号 送餐下单时间+送餐餐品数+送餐房间号 送餐餐品总价+预计送达时间 房客点餐餐桌号+房客点餐餐品数 房客结账时间+房客结账总额 房间号 房客点餐餐桌号+房客点餐餐品数 送餐编号+送餐下单时间+送餐餐品数+送餐餐品总价+送餐房间号 送餐编号+送餐下单时间+送餐餐厅结账 送餐 餐品数+送餐餐品总价+送餐房间号+预计送达时间 客房信息表 房间号+房间清洁情况 烹饪请求 F20 客房服务 退房接待 F21 送餐消费单
6
13级软工专业3班数据库应用系统课程设计课程论文
数据流编号 F22 F23 F24 F25 F26 餐厅消费单 查询客房 客房信息 客户信息 预订信息 数据流名称 简述 数据流来源 数据流去向 数据流组成 房客结账单编号+房客结账桌号 餐厅结账 预订接待 退房接待 +房客结账时间+房客结账总额+房客房间号 客房信息表 房间类型 房间号+房间单价+房间清洁情况 预定编号+预定客户姓名+预定客房信息表 预订接待 预订接待 预订接待 客户信息表 客户姓名+客户电话 预订信息表 客户电话+预定房间号+预定房间类型+预定房间单价 预定客户姓名+预定客户电话+F27 F28 F29 F30 F31 查询预订信息 删除客户 删除预订 查询客房 客房信息 入住接待 退订接待 退订接待 入住接待 预订信息表 预定房间号+预定房间类型+预定房间单价 客户信息表 客户姓名+客户电话 预订信息表 删除预订编号+删除预订姓名 客房信息表 房间类型 房间号+房间单价+房间清洁情况 客户姓名+客户身份证号+客户客房信息表 预订接待 F32 客户信息 入住接待 客户信息表 性别+客户年龄+客户电话+入住天数+入住房间号 入住天数+房间单价+餐厅消费额+送餐消费额 退房结账单编号+退房结账总额 送餐餐品数 房间号 点餐单编号+餐品数+餐桌号 点餐单编号+餐品数+餐桌号 点餐单编号+餐品数+餐桌号 点餐单编号+餐品数+餐品总价 房间号+餐厅消费额+送餐消费额 F33 F34 F35 F36 F37 F38 F39 F40 F41 F42 消费清单 房客结账单 点餐信息 清洁房号 点餐信息 消费信息 上菜信息 消费单 消费信息 查询消费情况 退房接待 消费流水账 消费流水账 退房结账 烹饪请求 客房服务 点菜台 点菜台 制作食品 餐厅消费清单 退房接待 退房接待 点菜台 客房清洁 制作食品 餐厅消费清单 上菜 餐厅结账 客户信息表 客户信息表 客户姓名+入住房间号
7
13级软工专业3班数据库应用系统课程设计课程论文
数据流编号 F43 消费信息 数据流名称 简述 数据流来源 数据流去向 数据流组成 入住房间号+餐厅消费额+送餐消费额 送餐编号+送餐下单时间+送餐餐品数+送餐餐品总价+送餐房间号 客户信息表 退房接待 F44 送餐消费单 烹饪请求 客房服务 ④处理逻辑的描述:
表1-4 处理逻辑的描述
处理逻辑编号 P1.1 P1.2 P1.3 P1.4 P1.5 P2.1 P2.2 P2.3 P2.4 P3.1 P3.2 P3.3 P3.4 处理逻辑名称 预订接待 退订接待 入住接待 退房接待 退房结账 客房服务 客房清洁 烹饪请求 送餐 点菜台 制作食品 上菜 餐厅结账 简述 输入的数据流 F1 F24 F3 F5 F31 F7 F20 F34 F9 F11 F44 F17 F36 F19 F21 F37 F39 F40 处理 处理客户预订房间的信息 处理客户退订房间的信息 办理入住手续 办理退房手续、接收餐厅结向客户提供结账单 接收客户的服务请求 接收客房清洁请求、客房清洁 接收来自客房服务的送餐请求、向餐厅发送餐品需求 向房客送餐 烹饪 上菜 向顾客提供结账单 输出的数据流 F2 F23 F25 F26 F4 F28 F29 F6 F27 F30 F32 F17 F33 F41 F42 F8 F12 F19 F20 F36 F10 F18 F35 F44 F37 F38 F39 F14 F21 F22 F22 F43 账单、发送退房清洁信息 F13 F35 点菜 ⑤数据存储的描述:
表1-5 数据存储的描述
数据存储编号 S1 S2 数据存储名称 客房信息表 客户信息表 简述 数据存储组成 RoomNo RoomType RoomPrice CleanCondition Days OrderDetail 相关联的处理 P1.1 P1.3 P1.3 CtmName CtmIDNo CtmAge DiningCost MoWCost P1.1 P1.2
8
13级软工专业3班数据库应用系统课程设计课程论文
数据存储编号 S3 数据存储名称 预订信息表 简述 数据存储组成 PreNo PreCtmName PreCtmPhone PreRoomNo 相关联的处理 P1.1 P1.2 P1.3 PreRoomType PreRoomPrice MoWNo MoWOrderTime MoWCtmNo MoWExpectTime LodgerBillNo LodgerBillTable S4 消费流水账 LodgerBillTime LodgerBillTotal LodgerRoomNo CheckOutNo CheckOutTotal MoWNo MoWOrderTime MoWCtmNo MoWExpectTime P1.4 P1.5 S5 餐厅消费清单 LodgerBillNo LodgerBillTable LodgerBillTime LodgerBillTotal LodgerRoomNo P3.1 P3.4 2.数据库结构设计
2.1 概念设计
2.1.1 分E-R图建立
前厅E-R图:
图2-1 前厅E-R图
9
13级软工专业3班数据库应用系统课程设计课程论文
客房服务E-R图:
餐厅E-R图:
图2-3 餐厅E-R图
图2-2 客房服务E-R图
10
13级软工专业3班数据库应用系统课程设计课程论文
2.1.2 全局/整体E-R图
图2-4 全局E-R图
2.2 逻辑设计
2.2.1 建立关系模式
顾客(姓名,身份证号,年龄)
顾客函数依赖集{身份证号→姓名,身份证号→年龄} 房间信息(房间号,房间类型,房间单价,房间清洁情况)
房间信息函数依赖集{房间号→房间类型,房间号→房间单价,房间号→房间清洁情况}
房客信息(房客流水号,姓名,身份证号,年龄,餐厅消费额,送餐消费额,入住天数,入住房间号)
房客信息函数依赖集{流水号→姓名,流水号→身份证号,流水号→年龄,流水号→餐厅消费额,流水号→送餐消费额,流水号→入住天数,流水号→入住房间号}
11
13级软工专业3班数据库应用系统课程设计课程论文
预订(预订编号,预订客户姓名,预订客户电话,预订房间号,预定房间类型,预订房间单价)
预订函数依赖集{预订编号→预订客户姓名,预订编号→预订客户电话,预订编号→预订房间号,预订编号→预定房间类型,预订编号→预订房间单价}
退订(退订编号,退订客户姓名,客户电话,房间号,房间类型,房间单价) 退订函数依赖集{退订编号→预订客户姓名,退订编号→退订客户电话,退订编号→房间号,编号→预定房间类型,编号→预订房间单价}
退房结账(结账单编号,房客流水号,结账总金额)
退房结账函数依赖集{结账单编号、房客流水号→结账总金额} 清洁单(清洁单编号,清洁房间号)
清洁单函数依赖集{清洁单编号→清洁房间号}
送餐单(送餐单编号,下单时间,房客流水号,预计送达时间)
送餐单函数依赖集{送餐单编号→下单时间,送餐单编号→房客流水号,送餐单编号→预计送达时间}
送餐消费单(送餐结账编号,送餐单编号,消费结算时间,餐品总额,房客流水号)
送餐消费单函数依赖集{送餐结账编号→消费结算时间,送餐结账编号→送餐单编号,送餐结账编号→餐品总额,送餐结账编号→房客流水号}
点餐单(点餐单编号,餐桌号,点餐时间,房客流水号)
点餐单函数依赖集{点餐单编号→餐桌号,点餐单编号→点餐时间,点餐单编号→房客流水号}
房客消费单(房客消费单编号,点餐单编号,结账时间,餐品总额,房客流水号)
房客消费单函数依赖集{房客消费单编号→点餐单编号,房客消费单编号→结账时间,房客消费单编号→餐品总额,房客消费单编号→房客流水号}
餐品(餐品编号,餐品名,餐品单价) 餐品函数依赖集{餐品编号→餐品单价}
订单细则(点餐单编号,餐品编号,餐品数量) 订单细则函数依赖集{点餐单编号 餐品编号→餐品数量} 2.2.2 关系模式规范化处理
根据F,可以得出关系“订单细则”不满足3NF,但是依据实际需要,2NF即
12
13级软工专业3班数据库应用系统课程设计课程论文
可。
2.2.3 用户子模式建立
房间信息(房间号,房间类型,房间单价,房间清洁情况)
房客信息(房客流水号,姓名,餐厅消费额,送餐消费额,入住天数,入住房间号)
点餐单(点餐单编号,餐桌号,点餐时间,房客流水号)
房客消费单(房客消费单编号,点餐单编号,结账时间,餐品总额,房客流水号)
餐品(餐品编号,餐品名,餐品单价)
订单细则(点餐单编号,餐品编号,餐品数量) 2.2.4 关系模式逻辑结构定义
表2-1 酒店管理系统关系模式汇总表
关系模式名称
Room Customer Lodger Reservation Unsubscribe CheckOut CleanOrder MealsOnWheels
MOWBill MealOrder LodgerBill
Food Order
含义 房间信息 顾客信息 房客详细信息 预订详细记录 退订详细记录 退房结账记录 清洁单记录 送餐单记录 送餐消费单记录 点餐单记录 房客消费单记录
餐品信息 订单明细
备注 附表1 附表2 附表3 附表4 附表5 附表6 附表7 附表8 附表9 附表10 附表11 附表12 附表13
3. 数据库物理设计
索引①
索引名称:房客查询 索引类型:聚簇索引
13
13级软工专业3班数据库应用系统课程设计课程论文
索引功能:快速查询入住房间为XXX的房客
4.数据库实施与测试
4.1 SQL Server 2008数据库实施与测试
4.1.1 数据库及数据库对象建立
表: Room Customer Lodger Reservation Unsubscribe CheckOut CleanOrder MealsOnWheels MOWBill MealOrder LodgerBill Food Order
(SQL语句见附录1) 视图: Room_view Lodger_view MealOrder_view LodgerBill_view Food_view OrderDetail_view (SQL语句见附录2)
14
13级软工专业3班数据库应用系统课程设计课程论文
索引: PK_Lodger
存储过程:
PROC_INSERT_Lodger PROC_INSERT_Reservation PROC_INSERT_Unsubscribe PROC_INSERT_MealOrder PROC_INSERT_MoW
PROC_INSERT_Orderdetail (SQL语句见附录3)
触发器:
OrderDetailInsert on OrderDetail OrderDetailInser_2 on OrderDetail LodgerCheckOut on Lodger CheckBill1 on LodgerBill CheckBill2 on MoWBill (SQL语句见附录4) 4.1.2 数据入库 4.1.3 数据库测试
一、存储过程测试 Exec PROC_INSERT_Lodger
'021','胡亚娟','61374119741205503066',41,0,0,1,'306'; 结果: Lodger表: CheckOut表:
二、触发器测试
15
13级软工专业3班数据库应用系统课程设计课程论文
更新OrderDetail表后 LodgerBill自动更新数据:
MoWBill表自动更新数据:
Lodger表自动更新数据:
16
13级软工专业3班数据库应用系统课程设计课程论文
CheckOut表自动更新数据:
4.2 Oracle数据库实施与测试
4.2.1 数据库及数据库对象建立
表: Room Customer
17
13级软工专业3班数据库应用系统课程设计课程论文
Lodger Reservation Unsubscribe CheckOut CleanOrder MealsOnWheels MOWBill MealOrder LodgerBill Food Order
(SQL语句见附录5) 视图: Room_view Lodger_view MealOrder_view LodgerBill_view Food_view OrderDetail_view 索引: PK_Lodger
存储过程:
PROC_INSERT_Lodger PROC_INSERT_Reservation PROC_INSERT_Unsubscribe PROC_INSERT_MealOrder PROC_INSERT_MoW
PROC_INSERT_Orderdetail
18
13级软工专业3班数据库应用系统课程设计课程论文
(SQL语句见附录6)
触发器:
OrderDetailInsert on OrderDetail OrderDetailInser_2 on OrderDetail LodgerCheckOut on Lodger CheckBill1 on LodgerBill CheckBill2 on MoWBill (SQL语句见附录7) 4.2.2 数据入库 4.2.3 数据库测试
右键proc_insert_lodger选择test,测试数据为'021','胡亚娟','61374119741205503066',41,0,0,1,'306'
Lodger表成功更新:
5.总结
一、看似简单,其实不然
以前没有过课程设计的经验,作为第一次课程设计课,我抱着试试看的态度去
19
13级软工专业3班数据库应用系统课程设计课程论文
写,一开始看了只有这么几个模块是心里挺高兴的,但是当我真正地去把一个操作写成功时,很多意想不到的情况发生了。有时候会为了一个操作不能调试成功而整个晚上都不能去安心做其他的作业。
二、冷静沉着、兢兢业业
编程是一个很繁琐的过程,要考虑到很多错误转移情况,在这期间会有很多以前不曾想过的问题出现,次数多了,不免会有觉得做不下去的感觉。但是我从中发现,只要一步一步调试、静下心来看待问题,再复杂再微小的问题都会迎刃而解,当一个程序被调试出来时,那时的快乐相比与任何困难都值得的。
三、立足程序、回归书本
在着手写程序时觉得思路一片混乱,无意间出现的问题会不知道怎么解决。这时,需要回归书本,书本是前人总结的经验,几乎所有情况都会有解决方法。只有把书本“吃透”,在遇到问题是才会反应快。 最后我要感谢我的同窗同学,在此次课程设计过程中与他们探讨深究,使我受益颇多,在此,我表示衷心的感谢。
6.附录
附录1
create table Room
(RoomNo varchar(10) not null, RoomType varchar(10), RoomPrice float,
CleanCondition varchar(10), primary key (RoomNo));
create table Customer
(Name varchar(20) not null, IDNo varchar(20) not null, Age int not null, primary key (IDNo));
create table Lodger
(CtmNo varchar(10) not null primary key, Name varchar(20) not null, IDNo varchar(20) not null,
20
13级软工专业3班数据库应用系统课程设计课程论文
Age int,
DiningCost float, MoWCost float, Days int,
RoomNo varchar(10),
FOREIGN KEY (IDNo) REFERENCES Customer(IDNo), FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo), check (Age>=18));
create table Reservation
(RNo varchar(10) not null primary key, RName varchar(20) not null, RPhone varchar(20),
RoomNo varchar(10) not null, RoomType varchar(10), RoomPrice float,
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));
create table Unsubscribe
(DNo varchar(10) not null primary key, DName varchar(20) not null, DPhone varchar(20),
RoomNo varchar(10) not null, RoomType varchar(10), RoomPrice float,
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));
create table CheckOut
(CheckOutNo varchar(10) not null primary key, CtmNo varchar(10) not null, CheckOutTotal float,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table CleanOrder
(CleanOrderNo varchar(10) not null, RoomNo varchar(10) not null,
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));
create table MealsOnWheels
(MoWNo varchar(10) not null primary key,
21
13级软工专业3班数据库应用系统课程设计课程论文
MoWOrderTime smalldatetime, CtmNo varchar(10) not null, ExpectTime smalldatetime,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table MoWBill
(MoWBillNo varchar(10) not null primary key, MoWNo varchar(10) not null, MoWBillTime smalldatetime, MoWBillTotal float,
CtmNo varchar(10) not null,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table MealOrder
(OrderNo varchar(10) not null primary key, TableNo varchar(10) not null, OrderTime date,
CtmNo varchar(10) not null,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table LodgerBill
(LodgerBillNo varchar(10) not null, OrderNo varchar(10) not null, LodgerBillTime smalldatetime, LodgerBillTotal float,
CtmNo varchar(10) not null,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table Food
(FoodNo varchar(10) not null primary key, FoodName varchar(20) not null, FoodPrice float);
create table OrderDetail
(OrderNo varchar(10) not null, FoodNo varchar(10) not null, FoodNum int); 附录2
22
13级软工专业3班数据库应用系统课程设计课程论文
create view Lodger_view as
select CtmNo,Name,RoomNo,Days,MoWCost,DiningCost from Lodger;
create view Room_view as
SELECT RoomNo, RoomType, RoomPrice, CleanCondition FROM Room;
create view MealOrder_view as
SELECT OrderNo, TableNo, OrderTime, CtmNo FROM MealOrder;
create view LodgerBill_view as
SELECT LodgerBillNo, OrderNo, LodgerBillTime, LodgerBillTotal, CtmNo
FROM LodgerBill;
create view Food_view as
SELECT FoodNo, FoodName, FoodPrice FROM Food;
create view OrderDetail_view as SELECT OrderNo, FoodNo, FoodNum FROM OrderDetail;
附录3
CREATE PROCEDURE PROC_INSERT_Lodger @CtmNo varchar(10), @Name varchar(20), @IDNo varchar(20), @Age int,
@DiningCost float, @MoWCost float, @Days int,
@RoomNo varchar(10) AS
insert Lodger (CtmNo,Name,IDNo,Age,DiningCost,MoWCost,Days,RoomNo) Values('C'+@CtmNo,@Name,@IDNo,@Age,@DiningCost,@MoWCost,@Days,@RoomNo)
23
13级软工专业3班数据库应用系统课程设计课程论文
insert CheckOut
values ('CO'+@CtmNo,'C'+@CtmNo,0) GO
CREATE PROCEDURE PROC_INSERT_MealOrder @OrderNo varchar(10), @TableNo varchar(10),
@OrderTime smalldatetime, @CtmNo varchar(10) AS
insert MealOrder(OrderNo,TableNo,OrderTime,CtmNo)
values('O'+@OrderNo,'T'+@TableNo,@OrderTime,'C'+@CtmNo) insert
LodgerBill(LodgerBillNo,OrderNo,LodgerBillTime,LodgerBillTotal,CtmNo)
values('LB'+@OrderNo,'O'+@OrderNo,DATEADD(hh,1,@OrderTime),0,'C'+@CtmNo) GO
CREATE PROCEDURE PROC_INSERT_MoW @MoWNo varchar(10),
@MoWOrderTime smalldatetime, @CtmNo varchar(10) AS
insert MealsOnWheels(MoWNo,MoWOrderTime,CtmNo,ExpectTime)
values('M'+@MoWNo,@MoWOrderTime,'C'+@CtmNo,DATEADD(hh,1,@MoWOrderTime))
insert MoWBill(MoWBillNo,MoWNo,MoWBillTime,MoWBillTotal,CtmNo)
values('MB'+@MoWNo,'M'+@MoWNo,DATEADD(hh,1,@MoWOrderTime),0,'C'+@CtmNo) GO
CREATE PROCEDURE PROC_INSERT_Reservation @RNo varchar(10), @RName varchar(20), @RPhone varchar(20), @RoomNo varchar(10),
24
13级软工专业3班数据库应用系统课程设计课程论文
@RoomType varchar(10), @RoomPrice float AS
insert Reservation(RNo,RName,RPhone,RoomNo,RoomType,RoomPrice) Values(@RNo,@RName,@RPhone,@RoomNo,@RoomType,@RoomPrice) GO
CREATE PROCEDURE PROC_INSERT_Unsubscribe @DNo varchar(10), @DName varchar(20) as
declare @RPhone varchar(20), @RoomNo varchar(10), @RoomType varchar(10), @RoomPrice float
select
@RPhone=RPhone,@RoomNo=RoomNo,@RoomType=RoomType,@RoomPrice=RoomPrice from Reservation where RName=@DName
insert Unsubscribe(DNo,DName,DPhone,RoomNo,RoomType,RoomPrice) Values(@DNo,@DName,@RPhone,@RoomNo,@RoomType,@RoomPrice) GO
CREATE PROCEDURE PROC_INSERT_OrderDetail @orderno varchar(10), @foodno varchar(10), @foodnum int AS
insert OrderDetail(OrderNo,FoodNo,FoodNum) values (@orderno,@foodno,@foodnum) GO
附录4
create trigger OrderDetailInsert on OrderDetail
for insert,update,delete
25
13级软工专业3班数据库应用系统课程设计课程论文
as
declare @orderno varchar(10), @foodno varchar(10), @foodnum int declare @foodprice float, @total1 float, @temp1 float
declare c1 cursor for select OrderNo,FoodNo,FoodNum from OrderDetail
open c1
update LodgerBill
set LodgerBillTotal=0
fetch next from c1 into @orderno,@foodno,@foodnum while(@@FETCH_STATUS=0) begin
select @foodprice=FoodPrice from Food where FoodNo=@foodno select @total1=LodgerBillTotal from LodgerBill where OrderNo=@orderno
set @temp1=@foodprice*@foodnum set @total1=@total1+@temp1 update LodgerBill
set LodgerBillTotal=@total1 where OrderNo=@orderno
fetch next from c1 into @orderno,@foodno,@foodnum end
close c1
deallocate c1 go
create trigger OrderDetailInsert_2 on OrderDetail
for insert,update,delete as
declare @mowno varchar(10), @foodno varchar(10), @foodnum int declare @foodprice float, @total2 float, @temp2 float
declare c2 cursor for select OrderNo,FoodNo,FoodNum from OrderDetail
open c2
26
13级软工专业3班数据库应用系统课程设计课程论文
update MoWBill
set MoWBillTotal=0
fetch next from c2 into @mowno,@foodno,@foodnum while(@@FETCH_STATUS=0) begin
select @foodprice=FoodPrice from Food where FoodNo=@foodno select @total2=MoWBillTotal from MoWBill where MoWNo=@mowno set @temp2=@foodprice*@foodnum set @total2=@total2+@temp2 update MoWBill
set MoWBillTotal=@total2 where MoWNo=@mowno
fetch next from c2 into @mowno,@foodno,@foodnum end
close c2
deallocate c2 go
create trigger CheckBill1 on LodgerBill for update as
declare @total float, @ctmno varchar(10)
declare c3 cursor for select LodgerBillTotal,CtmNo from LodgerBill
open c3
fetch next from c3 into @total,@ctmno while(@@FETCH_STATUS=0) begin
update Lodger
set DiningCost=@total where CtmNo=@ctmno
fetch next from c3 into @total,@ctmno end
27
13级软工专业3班数据库应用系统课程设计课程论文
close c3
deallocate c3 go
create trigger CheckBill2 on MoWBill for update as
declare @total float, @ctmno varchar(10)
declare c4 cursor for select MoWBillTotal,CtmNo from MoWBill
open c4
fetch next from c4 into @total,@ctmno while(@@FETCH_STATUS=0) begin
update Lodger
set MoWCost=@total where CtmNo=@ctmno
fetch next from c4 into @total,@ctmno end
close c4
deallocate c4 go
create trigger LodgerCheckOut on Lodger for update as
declare @cus varchar(10), @cost1 float, @cost2 float
declare c5 cursor for select CtmNo,DiningCost,MoWCost from Lodger
open c5
fetch next from c5 into @cus,@cost1,@cost2 while(@@FETCH_STATUS=0) begin
28
13级软工专业3班数据库应用系统课程设计课程论文
update CheckOut
set CheckOutTotal=@cost1+@cost2 where CtmNo=@cus
fetch next from c5 into @cus,@cost1,@cost2 end
close c5
deallocate c5 go 附录5
create table Room
(RoomNo varchar2(20) not null, RoomType varchar2(20), RoomPrice number,
CleanCondition varchar2(20), primary key (RoomNo));
create table Customer
(Name varchar2(40) not null, IDNo varchar2(40) not null, Age number not null, primary key (IDNo));
create table Lodger
(CtmNo varchar2(20) not null primary key, Name varchar2(40) not null, IDNo varchar2(40) not null, Age number,
DiningCost number, MoWCost number, Days number,
RoomNo varchar2(20),
FOREIGN KEY (IDNo) REFERENCES Customer(IDNo), FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo), check (Age>=18));
create table Reservation
(RNo varchar2(20) not null primary key, RName varchar2(40) not null,
29
13级软工专业3班数据库应用系统课程设计课程论文
RPhone varchar2(40),
RoomNo varchar2(20) not null, RoomType varchar2(20), RoomPrice number,
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));
create table Unsubscribe
(DNo varchar2(20) not null primary key, DName varchar2(40) not null, DPhone varchar2(40),
RoomNo varchar2(20) not null, RoomType varchar2(20), RoomPrice number,
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));
create table CheckOut
(CheckOutNo varchar2(20) not null primary key, CtmNo varchar2(20) not null, CheckOutTotal number,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table CleanOrder
(CleanOrderNo varchar2(20) not null, RoomNo varchar2(20) not null,
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo));
create table MealsOnWheels
(MoWNo varchar2(20) not null primary key, MoWOrderTime date,
CtmNo varchar2(20) not null, ExpectTime date,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table MoWBill
(MoWBillNo varchar2(20) not null primary key, MoWNo varchar2(20) not null, MoWBillTime date, MoWBillTotal number,
CtmNo varchar2(20) not null,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
30
13级软工专业3班数据库应用系统课程设计课程论文
create table MealOrder
(OrderNo varchar2(20) not null primary key, TableNo varchar2(20) not null, OrderTime date,
CtmNo varchar2(20) not null,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table LodgerBill
(LodgerBillNo varchar2(20) not null, OrderNo varchar2(20) not null, LodgerBillTime date, LodgerBillTotal number, CtmNo varchar2(20) not null,
FOREIGN KEY (CtmNo) REFERENCES Lodger(CtmNo));
create table Food
(FoodNo varchar2(20) not null primary key, FoodName varchar(40) not null, FoodPrice number);
create table OrderDetail
(OrderNo varchar2(20) not null, FoodNo varchar2(20) not null, FoodNum number);
附录6
CREATE OR REPLACE PROCEDURE PROC_INSERT_Lodger( CtmNo in String, Name in String, IDNo in String, Age in number,
DiningCost in number, MoWCost in number, Days in number, RoomNo in String ) AS begin
insert into Lodger (CtmNo,Name,IDNo,Age,DiningCost,MoWCost,Days,RoomNo)
31
13级软工专业3班数据库应用系统课程设计课程论文
Values('C'||CtmNo,Name,IDNo,Age,DiningCost,MoWCost,Days,RoomNo); commit;
insert into CheckOut(Checkoutno,Ctmno,Checkouttotal) values ('CO'||CtmNo,'C'||CtmNo,0); commit; END;
CREATE OR REPLACE PROCEDURE PROC_INSERT_Reservation( RNo in String, RName in String, RPhone in String, RoomNo in String, RoomType in String, RoomPrice in number ) AS begin
insert into Reservation(RNo,RName,RPhone,RoomNo,RoomType,RoomPrice) Values(RNo,RName,RPhone,RoomNo,RoomType,RoomPrice); END;
CREATE OR REPLACE PROCEDURE PROC_INSERT_Unsubscribe( DNo in String, DName in String ) is
phone varchar2(40); room varchar2(20); rtype varchar2(20); price number; begin
select RPhone,RoomNo,RoomType,RoomPrice into phone,room,rtype,price from Reservation where RName=DName;
insert into Unsubscribe(DNo,DName,DPhone,RoomNo,RoomType,RoomPrice) Values(DNo,DName,phone,room,rtype,price); END;
32
13级软工专业3班数据库应用系统课程设计课程论文
CREATE OR REPLACE PROCEDURE PROC_INSERT_MealOrder( OrderNo String, TableNo String, OrderTime date, CtmNo String) is begin
insert into MealOrder(OrderNo,TableNo,OrderTime,CtmNo) values('O'||OrderNo,'T'||TableNo,OrderTime,'C'||CtmNo); insert into
LodgerBill(LodgerBillNo,OrderNo,LodgerBillTime,LodgerBillTotal,CtmNo) values('LB'||OrderNo,'O'||OrderNo,OrderTime+1/24,0,'C'||CtmNo); end;
CREATE OR REPLACE PROCEDURE PROC_INSERT_MoW( MoWNo String, OrderTime date, CtmNo String) is begin
insert into MealsOnWheels(MoWNo,MoWOrderTime,CtmNo,ExpectTime) values('M'||MoWNo,OrderTime,'C'||CtmNo,OrderTime+1/24);
insert into MoWBill(MoWBillNo,MoWNo,MoWBillTime,MoWBillTotal,CtmNo) values('MB'||MoWNo,'M'||MoWNo,OrderTime+1/24,0,'C'||CtmNo); end;
CREATE OR REPLACE PROCEDURE PROC_INSERT_OrderDetail( orderno String, foodno date, foodnum String) is begin
insert into OrderDetail(OrderNo,FoodNo,FoodNum) values(orderno,foodno,foodnum); end;
附录7
33
13级软工专业3班数据库应用系统课程设计课程论文
create or replace trigger OrderDetailInsert after insert or update on OrderDetail for each row
declare
orderno varchar2(20); foodno varchar2(20); foodnum number; foodprice number; total1 number; temp1 number;
cursor c1 is
select OrderNo,FoodNo,FoodNum from OrderDetail; begin
open c1;
update LodgerBill set LodgerBillTotal=0;
fetch c1 into orderno,foodno,foodnum; while c1%FOUND loop
select FoodPrice into foodprice from Food where FoodNo=foodno;
select LodgerBillTotal into total1 from LodgerBill where OrderNo=orderno; temp1:=foodprice*foodnum; total1:=total1+temp1; update LodgerBill
set LodgerBillTotal=total1 where OrderNo=orderno;
fetch c1 into orderno,foodno,foodnum;
end loop; close c1; end;
34
13级软工专业3班数据库应用系统课程设计课程论文
附表1 客房信息关系模式(Room)
属性名 RoomNo RoomType RoomPrice
含义 房间号 房间类型 房间单价
数据类型 Varchar Varchar Float Varchar
长度 10 10 10
是否为主属性 是
是否为外键
约束条件 Not null null null null
CleanCondition 房间清洁情况
属性名 Name IDNo Age
含义 姓名 身份证号 年龄
数据类型 Varchar Varchar Int
长度 20 20
是否为主属性 是
是否为外键
约束条件 Not null Not null Not null
附表2 顾客信息关系模式(Customer)
附表3 房客信息关系模式(Lodger)
属性名 CtmNo Name IDNo Age DiningCost MoWCost Days RoomNo
含义 房客流水号 房客姓名 房客身份证号 房客年龄 餐厅消费额 送餐消费额 入住天数 入住房间号
数据类型 Varchar Varchar Varchar Int Float Float Int Varchar
长度 10 20 20 10
附表4 预订信息关系模式(Reservation)
是否为主属性 是
是否为外键 是 是
约束条件 Not null Not null Not null >=18 null null null Not null
属性名 RNo
含义 预订编号
数据类型 Varchar
长度 10
35
是否为主属性 是
是否为外键
约束条件 Not null
13级软工专业3班数据库应用系统课程设计课程论文
RName RPhone RoomNo RoomType RoomPrice
预订房客姓名 预订房客电话 预订房间号 房间类型 房间单价
Varchar Varchar Varchar Varchar Float
20 20 10 10
是
Not null null Not null null null
附表5 退订信息关系模式(Unsubscribe)
属性名 DNo DName DPhone RoomNo RoomType RoomPrice
附表6 退房结账关系模式(CheckOut)
属性名 CheckOutNo CtmNo CheckOutTotal
含义 退房结账单编
号 房客流水号 退房结账总额
数据类型 Varchar Varchar Float
附表7 清洁单关系模式(CleanOrder)
属性名 CleanOrderNo RoomNo
含义 清洁单编号 房间号
数据类型 Varchar Varchar
长度 10 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null
长度 10 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null null
含义 预订编号 预订房客姓名 预订房客电话 预订房间号 房间类型 房间单价
数据类型 Varchar Varchar Varchar Varchar Varchar Float
长度 10 20 20 10 10
是否为主属性 是
是否为外键 是
约束条件 Not null Not null null Not null null null
属性名 含义
数据类型
长度
是否为主属性
是否为外键
约束条件
36
13级软工专业3班数据库应用系统课程设计课程论文
MoWNo MoWOrderTime
CtmNo ExpectTime
订单编号 下单时间 房客流水号 预计送达时间
Varchar Date Varchar Date
10 10
是
是
Not null null Not null MoWOrderTime+1h
附表8 送餐单关系模式(MealsOnWheels)
附表9 送餐消费单关系模式(MoWBill)
属性名 MoWBillNo MoWNo MoWBillTime MoWBillTotal
CtmNo
附表10 点餐单关系模式(MealOrder)
属性名 OrderNo TableNo OrderTime CtmNo
含义 订单编号 餐桌号 点餐时间 房客流水号
数据类型 Varchar Varchar Date Varchar
长度 10 10 10
附表11 房客消费单关系模式(LodgerBill)
属性名 LodgerBillNo OrderNo LodgerBillTime LodgerBillTotal
CtmNo
含义 房客消费单编
号 订单号 结账时间 餐品总额 房客流水号
数据类型 Varchar Varchar Date Float Varchar
长度 10 10 10
37
含义 送餐消费单编
号 订单编号 消费结账时间 餐品总额 房客流水号
数据类型 Varchar Varchar Date Float Varchar
长度 10 10 10
是否为主属性 是
是否为外键 是 是
约束条件 Not null Not null null null Not null
是否为主属性 是
是否为外键 是
约束条件 Not null Not null null Not null
是否为主属性 是
是否为外键 是
约束条件 Not null Not null null null Not null
13级软工专业3班数据库应用系统课程设计课程论文
附表12 餐品关系模式(Food)
属性名 属性名 FoodNo FoodName OrderNo FoodPrice FoodNo FoodNum
含义 含义 餐品编号 餐品名 订单编号餐品单价 餐品编号餐品数量
数据类型 数据类Varchar 型 Varchar Float Varchar Int
长度 长度 10 20 10 10
是否为主属性 是否为主是 属性
是
是否为外键 是否为 外键
约束条件 约束条件 Not null Not null null Not null null
附表13 订单细则关系模式(OrderDetail)
38
因篇幅问题不能全部显示,请点此查看更多更全内容