1、 课课 程程 设设 计计 报报 告告 课程名称 数据结构 设计题目 旅店管理系统床位的分配与回收 第 1 页 共 35 页 课课 程程 设设 计计 任任 务务 书书 设计题目:设计题目: 模拟旅馆管理系统的一个功能床位的分配与回收 _ 设计内容与要求:设计内容与要求: 1.【问题描述】 某旅馆有 n 个等级的房间,第 I 等级有 ai个房间,每个等级有 bi个床位 (1in)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客 分配床位,在其离店便回收床位(供下次分配)的算法。 2.【基本要求】 (1)输入数据 分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。 回收时,输入房
2、间等级、房间号和床位号。 (2)输出数据 分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。 分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等 级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则 重新输入有关信息,再进行分配,否则分配工作结束。 指导教师: 张新颜 2012年 6 月 8 日 课课 程程 设设 计计 评评 语语 成绩:成绩: 指导教师:_ 年 月 日 第 2 页 共 35 页 3. 3. 数据结构数据结构 本次数据结构课程设计,做的是旅店管理系统,定义了三个结构体链表,给等级链表 设置了一个头结点,采用链表嵌套方法,
3、等级链表嵌套房间链表,房间链表再嵌套旅客链 表。 (1)对旅客结构体定义 typedef struct customer char name15; /旅客姓名 int age; /旅客年龄 int sex; /旅客性别 int lv; /旅客住宿时的等级号 int bed_num; /旅客的床位号 int year; /开始住宿日期:年 int month; /开始住宿日期:月 int day; /开始住宿日期:日 struct customer* next; /指向下一旅客 cus; (2)对旅店结构体定义 typedef struct hotel_lv int lv_num; /旅店等级号
4、 struct hotel_lv *next; /指向下一等级 struct fangjian *fj_next; /指向房间 hotel_lv; (3)房间结构体定义 typedef struct fangjian int fj_num; /房间号 int max; /房间的最大床位数目 int mem_num; /房间内的当前人数 struct fangjian *next; /指向下一房间 struct customer *cus_next; /指向旅客 fangjian; 4.4. 总体设计总体设计 第 3 页 共 35 页 (1) 主函数 (2) 有旅客来住宿时: 初始化旅店 mai
5、n 主函数 旅 客 入 住 事 件 旅 客 住 宿 情 况 查 询 旅 客 退 房 事 件 统 计 旅 店 当 前 住 宿 人 数 退 出 管 理 系 统 第 4 页 共 35 页 (3) 有旅客来退房时: 重新输入 输入要退房的房间等级 旅客退房事件 否 否 是 打印旅客信息 姓名 性别 年龄 开始入住时间 分配房间成功 打印房间分配表 是 重新输入 旅客入住事件 是否有空床位 输入所需房间等级 是否客满 无法入住 返回主菜单 第 5 页 共 35 页 (4)查询旅客信息时: 旅客信息查询 第 6 页 共 35 页 (5)统计旅店当前入住人数: 遍历各房间 不为空 遍历各等级 统计旅店当前入住人数 第 7 页 共 35 页 (5)各函数名 初始化函数:void Init(hotel_lv *L) 判断是否客满:int full(hotel_lv *L) 打印旅客信息:void Pr_divide(cus* p,fangjian* q )