- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模拟旅馆管理系统的一个功能-----床位的分配与回收
一、问题描述
1.1问题的描述
某旅馆有n个等级的房间,第i等级有ai个房间,每个等级有bi床位(1≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。
1.2输入数据
对房间信息进行初始化,包括房间的类别、数量以及房间和床位的计费标准;
分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级;
回收时,输入房间等级、房间号和床位号。
1.3输出数据
分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。
分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。
二、需求分析
2.1需求分析
经过分析,程序要有以下几个功能:
= 1 \* GB2 ⑴程序启动的时候应该能够对旅馆的信息进行初始化,并且可以让不同的进行手动初始化;
= 2 \* GB2 ⑵当客户到来的时候,可以登录客户的信息,并且根据旅馆的情况和客
户的要求进行分配床位;
= 3 \* GB2 ⑶当客户结账的时候,可以打印其账单,并且将床位回收;
= 4 \* GB2 ⑷在进行输入信息的时候,应该有检查错误的功能,防止输入的信息超出正常范围。
三、概要设计
3.1功能模块的划分
主函数
主函数
初始化
显示
客户登记
床位分配
客户退房
床位回收
保存信息
退出
3.2功能模块的描述
(1)初始化模块:应该包括两种初始化,第一种是每次打开程序的时候,自动完成对旅馆信息的初始化。第二种是由用户输入旅馆的信息,完成旅馆信息的初始化。
(2)显示模块:显示模块是人机交互的必要模块,用于显示主菜单、旅馆的当前住宿情况、床位分配情况、账单等等,方便用户进行下一步操作。
(3)客户登记及床位分配模块:用来登记客户的信息以及床位的分配。
(4)客户退房及床位回收模块:用来登记退房客户的信息以及床位的回收,住宿费的计算。
(5)保存信息模块:用来保存旅馆的相关信息,包括手动初始化之后的客房信息,以及退出程序之前的保存工作。
(6)退出:退出程序。
3.3数据结构
3.3.1主要采用的数据结构:链表和栈。
(1)链表
ADT List {
数据对象:D={ ai | ai∈ ElemSet, i=1,2,...,n, n≥0 }
数据关系:R1={ ai-1 ,ai | ,∈D, i=2,...,n }
基本操作:
InitList( L )
操作结果:构造一个空的线性表 L 。
DestroyList( L )
初始条件:线性表 L 已存在。
操作结果:销毁线性表 L 。
ListEmpty( L )
初始条件:线性表L已存在。
操作结果:若 L 为空表,则返回 TRUE,否则返回 FALSE。
ListLength( L )
初始条件:线性表 L 已存在。
操作结果:返回 L 中元素个数。
PriorElem( L, cur_e, pre_e )
初始条件:线性表 L 已存在。
操作结果:若 cur_e 是 L 中的数据元素,则用 pre_e 返回它的前驱,
否则操作失败,pre_e 无定义。
NextElem( L, cur_e, next_e )
初始条件:线性表 L 已存在。
操作结果:若 cur_e 是 L 中的数据元素,则用 next_e 返回它的后继,
否则操作失败,next_e 无定义。
GetElem( L, i, e )
初始条件:线性表 L 已存在,1≤i≤LengthList(L)。
操作结果:用 e 返回 L 中第 i 个元素的值。
LocateElem( L, e, compare( ) )
初始条件:线性表 L 已存在,compare( ) 是元素判定函数。
操作结果:返回 L 中第1个与 e 满足关系 compare( ) 的元素的位序。
若这样的元素不存在,则返回值为0。
ListTraverse(L, visit( ))
初始条件:线性表 L 已存在,visit( ) 为元素的访问函数。
操作结果:依次对 L 的每个元素调用函数 visit( )。
一旦 visit( ) 失败,则操作失败。
ClearList( L )
初始条件:线性表 L 已存在。
操作结果:将 L 重置为空表。
PutElem( L, i, e )
初始条件:线性表L已存在,1≤i≤LengthList(L)。
操作结果:L 中第 i 个元素赋值同 e 的值。
ListInsert( L, i, e )
初始条件:线性表 L 已存在,1≤i≤LengthList(L)+1。
操作结果:在
文档评论(0)