1、- 1 - 模拟旅馆管理系统的一个功能-床位的分配与回收 一、一、问题描述问题描述 1.11.1 问题的描述问题的描述 某旅馆有 n 个等级的房间,第 i 等级有 ai个房间,每个等级有 bi床位(1in) 。 试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离 店便回收床位(供下次分配)的算法。 1.21.2 输入数据输入数据 对房间信息进行初始化,包括房间的类别、数量以及房间和床位的计费标准; 分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级; 回收时,输入房间等级、房间号和床位号。 1.31.3 输出数据输出数据 分配成功时打印旅客姓名、年龄、到达日期、房
2、间等级、房间号码和床位号码。 分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空 床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关 信息,再进行分配,否则分配工作结束。 二、需求分析二、需求分析 2 2.1.1 需求分析需求分析 经过分析,程序要有以下几个功能: 程序启动的时候应该能够对旅馆的信息进行初始化,并且可以让不同的进行手动初始化; 当客户到来的时候,可以登录客户的信息,并且根据旅馆的情况和客 户的要求进行分配床位; 当客户结账的时候,可以打印其账单,并且将床位回收; 在进行输入信息的时候,应该有检查错误的功能,防止输入的信息超出正
3、常范 围。 - 2 - 三、概要设计三、概要设计 3.13.1 功能模块的划分功能模块的划分 3.23.2 功能模块的描述功能模块的描述 (1)初始化模块:应该包括两种初始化,第一种是每次打开程序的时候,自动完成对旅馆 信息的初始化。第二种是由用户输入旅馆的信息,完成旅馆信息的初始化。 (2)显示模块:显示模块是人机交互的必要模块,用于显示主菜单、旅馆的当前住宿情况、 床位分配情况、账单等等,方便用户进行下一步操作。 (3)客户登记及床位分配模块:用来登记客户的信息以及床位的分配。 (4)客户退房及床位回收模块:用来登记退房客户的信息以及床位的回收,住宿费的计算。 (5)保存信息模块:用来保存
4、旅馆的相关信息,包括手动初始化之后的客房信息,以及退 出程序之前的保存工作。 (6)退出:退出程序。 3.33.3 数据结构数据结构 3.3.1 主要采用的数据结构:链表和栈。 (1)链表 ADT LisADT List 数据对象数据对象:D ai | ai ElemSet, i=1,2,.,n, n0 数据关系数据关系:R1 | ,D, i=2,.,n 基本操作基本操作: InitList( /每个级别可以分配的女床数目 int men_num; /每个级别可以分配的男床数目 int a; /每个级别含有的房间数目,头结点此处用来存储房间级别数目 int b; /每个房间含有的床位数 int price; /每一级别房间的价格 room * TTOP; /空房栈的栈顶 room * RLINK; /指向已住房间的栈顶 roomhead; (3)房间节点的结构: 性别 房间号 剩余空床数目 BTOP BTOP1 RILNK typedef struct ROOM /