ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:176.71KB ,
资源ID:23829003      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23829003.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(床位的分配与回收.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

床位的分配与回收.docx

1、床位的分配与回收洛 阳 理 工 学 院课 程 设 计 说 明 书课程名称 数据结构 设计课题 模拟旅店管理系统床位的分配与回收 专 业 计算机科学与技术专业 班 级 B120506 学 号 B12050606 姓 名 翟 完成日期 2014年6月13号 课 程 设 计 任 务 书设计题目:模拟旅馆管理系统的一个功能床位的分配与回收 _设计内容与要求:某旅馆有n个等级的房间,第I等级有ai个房间,每个等级有bi个床位(1in)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。基本要求(1)输入数据分配时,输入旅客姓名、年龄、性别、到达日

2、期和所需房间等级。回收时,输入房间等级、房间号和床位号。(2)输出数据分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 指导教师:张 新 颜 2014 年 6 月 3 日课 程 设 计 评 语 成绩: 指导教师:张 新 颜 年 月 日一、【问题描述】 某旅馆有n个等级的房间,第I等级有ai个房间,每个等级有bi个床位(1in)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分

3、配床位,在其离店便回收床位(供下次分配)的算法。二、【基本与要求】(1)输入数据分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。回收时,输入房间等级、房间号和床位号。(2)输出数据分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。三、【测试数据】 首先,初始化旅馆,定义为旅馆:房间等级为两个(1和2);定义级别为1的房间为一个,床位个数为一个;定义级别为2的房间个数为两个,其中1

4、号房有床位2个,2号房间床位个数也为2;然后开始测试。输入:分别输入信息如下表:房间级别姓名年龄性别(0女/1男)入住时间1Zhang2502014 06 082Wang2402014 06 082Li2502014 06 082Zhao2402014 06 092Liu2612014 06 10输出:每输入一个旅客的信息都会输出下表(第一位房客)旅客房间分配表姓名性别年龄等级房号床位时间zhang0251112014 06 08输入第二位房客后输出:旅客房间分配表姓名性别年龄等级房号床位时间wang0242112014 06 08输入第三位房客后输出:旅客房间分配表姓名性别年龄等级房号床位时

5、间li0252122014 06 08输入第四个房客后输出:旅客房间分配表姓名性别年龄等级房号床位时间zhao0242212014 06 09输入第五个房客后输出:旅客房间分配表姓名性别年龄等级房号床位时间liu1262222014 06 10如果再次输入功能选项“1”,则会输出“旅店客满,不能入住”退房操作:输入功能选项“2”执行退房操作,输入退房的等级“2”,输入房号“1”,输入床号“2”。则输出以下内容:此等级、此房间、此床位旅客的信息为:该名旅客的信息:姓名 性别 年龄 入住时间Li 0 25 2014-6-8输入功能选项“2”,继续退房,等级“2”,房号“2”,床号“1”,则输出以下

6、内容:此等级、此房间、此床位旅客的信息为:该名旅客的信息:姓名 性别 年龄 入住时间zhao 0 24 2014-6-9再次入住操作:输入功能键“1”,房间等级“2”然后输入以下表格信息:姓名年龄性别入住日期chen2402014 06 11则输出:旅客房间分配表姓名性别年龄等级号房号床位时间chen0242122014 06 11继续入住操作:输入功能键“1”,房间等级“2” 然后输入以下表格信息:姓名年龄性别入住时间hu2202014 06 12则输出旅客房间分配表姓名性别年龄等级号房号床位时间hu0222212014 06 12查询房客信息:输入“3”,然后输入查询房客的名字“zhao

7、” 输出“未找到该旅客,请核实后再输入” 再次, 输入“3”,然后输入查询房客的名字“hu” 输出以下表格:旅客房间分配表姓名性别年龄等级号房号床位入住时间hu0222212014 06 12统计旅客信息:输入“4”,则输出:等级为1的房间入住人数为1 等级为2的房间入住人数为4退出本程序:输入“0”,则可以退出本程序。四、【算法思想】客人入住旅店是否已满所需房间等级房间是否已满打印客户信息房间分配成功打印房客表N重新输入结束1、客人入住:当入住的是某房间的第一个旅客,需要对其特别处理,以其客户信息作为本房间旅客链的第一个结点。若非第一位乘客,则要对空的床号进行查找,首先设置一变量“i”,初始

8、化i=1,使其与现有空房的旅客链的每位旅客的床号比较,若发现有床号与i相等,则i自加1,再进行与本房间所有旅客床号比较,若无旅客床号与i的值相等,则返回i,作为本次入住旅客的床号。2、旅客退房退房要退的房的等级等级?房间号房间?床号床号?旅客信息退房?退房成功重输入N重入N重入N返回菜单N退房,若是某房间第一个乘客退房,因为首位旅客信息单元是旅客链的第一的链单元,所以删除时应将下一位旅客的地址赋给本房间存储单元中存放客户指针的单元中,以防止客户链的丢失。 若非第一个旅客退房,则只需要将本旅客的下一位旅客的地址放到这位旅客的前一位旅客的next域里面,然后释放退出旅客的信息单元就行了。五、【模块

9、划分】重要模块:主要功能函数:初始化函数: void Init(hotel_lv *L)(逐级进行初始化) 判断是否客满:int full(hotel_lv *L)(主机进行查询直到发现空床位截止)打印旅客信息:void Pr_divide(cus* p,fangjian* q )旅客住宿函数:void Pr_divide(cus* p,fangjian* q )(首先调用full()函数,若非满,相应级别查找,有空床位则入住)旅客退房函数:cus* Delete(hotel_lv *L)(逐级查询直至床位,有次床位则删除)查询旅客信息:void cx_customer(hotel_lv *L

10、)(按名字逐级顺序查询)统计旅店当前入住人数:void Tongji_cus(hotel_lv *L)(逐级按房间顺序统计)主函数:void main()(调用各功能函数)六、【数据结构】本次数据结构课程设计,做的是旅店管理系统,定义了三个结构体链表,给等级链表设置了一个头结点,采用链表嵌套方法,等级链表嵌套房间链表,房间链表再嵌套旅客链表。(1)对旅店结构体定义typedef struct hotel_lv int lv_num; /旅店等级号 struct hotel_lv *next; /指向下一等级 struct fangjian *fj_next; /指向房间hotel_lv;(2)

11、房间结构体定义typedef struct fangjian int fj_num; /房间号 int max; /房间的最大床位数目 int mem_num; /房间内的当前人数 struct fangjian *next; /指向下一房间 struct customer *cus_next; /指向旅客fangjian;(3)对旅客结构体定义typedef struct customer char name15; /旅客姓名 int age; /旅客年龄 int sex; /旅客性别 int lv; /旅客住宿时的等级号 int bed_num; /旅客的床位号 int year; /住宿

12、日期 int month; /住宿日期 int day; /住宿日期 struct customer* next; /指向下一旅客cus;七、【测试情况】八、【心得】 在开始这个课题之初,自己感觉对这个题目自己应该可以很好地完成这以课题,但到后来自己深入的研究了一下发现,这道题目还是很难得至少对于我来说,自己也曾有放弃的想法,但后来在指导老师的指导和帮助下最终完成了这个程序。首先,定义的结构体数组,进行编写。如果用顺序表的话对于不同的旅馆是不适用的,因为各个旅馆的房间的级别、房间的个数、房间的床位都是不相同的,如果用链表就不一样了,所以改用链表来编写。对后面的处理在旅客进行入住情况中,在床位分

13、配的时候,因为没有设置床位的头结点,所以要对第一个床位进行特别判断。然后经过多次调试与修改,最终能实现旅客的入住情况。旅客退房跟入住时一样,在床位回收的时候,因没有设置床位的头结点,所以要对第一个床位进行特别判断。再次对非空非满的房间进行入住的时候要进行判断,哪些床位是空的,对空的床位可以分配给相应的旅客。对退房的旅客同样需要对是否是第一位房客和非第一位房客区别开来进行修改指针。完成了这些,本程序的基本重要的问题都已解决了。九、【源程序】#include#include#includetypedef struct hotel_lv /旅店结构体 int lv_num; struct hotel

14、_lv *next; struct fangjian *fj_next;hotel_lv;typedef struct fangjian /房间结构体 int fj_num; int max; int mem_num; struct fangjian *next; struct customer *cus_next;fangjian;typedef struct customer /旅客结构体 char name15; int age; int sex; int lv; int bed_num; int year; int month; int day; struct customer* ne

15、xt;cus;void Init(hotel_lv *L) /初始化函数 int i,j,k,l; hotel_lv *p,*q; fangjian *p1,*p2,*p3; printf(请输入房间分为几个等级:n); scanf(%d,&j); /输入房间共分为几个等级 q=L; for(i=1;inext=p; p-lv_num=i; /给房间等级赋值 printf(请输入房间等级为%d的房间个数:n,p-lv_num); scanf(%d,&l); /输入该等级的房间数目 if(l=0) continue; else /初始化该房间内的床位 p2=(fangjian*)malloc(s

16、izeof(fangjian); p2-fj_num=1; printf(请输入房间等级为%d房间号为1的床位个数的最大值:n,p-lv_num,k); scanf(%d,&(p2-max); /输入房间1的床位数目 p2-mem_num=0; /该房间内当前人数赋为零 p-fj_next=p2; p3=p2; for(k=2;knext=p1; p1-fj_num=k; printf(请输入房间等级为%d房间号为%d的床位个数的最大值:n,p-lv_num,k); scanf(%d,&(p1-max); /输入房间k的床位数目 p1-mem_num=0; /该房间内的当前人数赋为零 p3=p

17、1; p3-next=NULL; /房间链表尾指针赋为空 q=q-next; q-next=NULL; /等级链表尾指针域赋为int full(hotel_lv *L) /判是否客满 hotel_lv *l;fangjian *f; l=L-next; while(l!=NULL) f=l-fj_next; while(f!=NULL) if(f-mem_num!=f-max) /如果有房间的当前人数不等于房间的最大人数,则返回0 return 0; else f=f-next; l=l-next; if(!l) /否则返回1 return 1;void Pr_divide(cus* p,fa

18、ngjian* q ) /打印旅客信息 printf( n); printf( 旅客房间分配表 n); printf( n); printf( 姓名 性别年龄等级号房间号床位号 入住时间 n); printf( n); printf( %12s %d %2d %2d %2d %2d %4d-%2d-%2d n, p-name,p-sex,p-age,p-lv,q-fj_num,p-bed_num,p-year,p-month,p-day); printf( n); printf(n);void input(hotel_lv *L) /旅客入住函数 char c; int lv; static

19、int i; cus *s,*p2,*p3;fangjian *p1; hotel_lv *l; l=L-next; if(full(L) /判断是否旅店客满 printf(旅店客满,不能入住。n); else printf(请输入旅客所需的房间等级:); /输入旅客所需的等级 scanf(%d,&lv); while(l!=NULL) /等级不为空时 if(l-lv_num!=lv) l=l-next; else /有此等级时 p1=l-fj_next; while(p1!=NULL) /房间不为空 if(p1-mem_num=p1-max) /是否有空床位 p1=p1-next; if(p

20、1=NULL) getchar(); printf(此等级为%d的所有房间均无空位n是否愿意更换等级y/n,lv); scanf(%c,&c); /做出选择 if(c=y) input(L); else return ; else /进行旅客登记 /第一个结点要特别判断 if(p1-mem_num=0) s=(cus*)malloc(sizeof(cus); printf(n-n); printf(n 旅客的信息: ); printf(n 请输入旅客姓名:); scanf(%s,s-name); printf(n 请输入旅客年龄:); scanf(%d,&(s-age); printf(n 请

21、输入旅客性别(如:男1:女0):); scanf(%d,&(s-sex); printf(n 请输入旅客住宿开始日期;”); scanf(%d %d %d,&s-year,&s-month,&s-day); s-lv=lv; /修改指针 p1-cus_next=s; p1-mem_num+; /房间当前人数加1 s-bed_num=1; s-next=NULL; /尾指针置为空 Pr_divide(s,p1); /打印房间分配表 break; else p2=p1-cus_next; p3=p2; i=1; for(;p3!=NULL;p3=p3-next) if(i=p3-bed_num)

22、+i; p3=p2; for(;p2-next!=NULL;p2=p2-next); s=(cus*)malloc(sizeof(cus); printf(n-n); printf(n 旅客的信息: ); printf(n 请输入旅客姓名:); scanf(%s,s-name); printf(n 请输入旅客年龄:); scanf(%d,&s-age); printf(n 请输入旅客性别); scanf(%d,&s-sex); printf(n 请输入旅客住宿开始日期); scanf(%d %d %d,&s-year,&s-month,&s-day); s-lv=lv; p2-next=s;

23、s-next=NULL; p1-mem_num+; s-bed_num=i; Pr_divide(s,p1); break; break; cus* Delete(hotel_lv *L) /旅客退房函数 int lv,hotel_num,bed_num; char c; cus *p,*q; fangjian *f; hotel_lv *l; l=L-next; printf(请输入该退房人房间的等级号码:n); scanf(%d,&lv); /输入退房人的房间等级 getchar(); while(l!=NULL) if(l-lv_num!=lv) l=l-next; else /找到该等

24、级 f=l-fj_next; printf(请输入该退房人房间的房间号码:n); scanf(%d,&hotel_num); /输入退房人的房间号码 getchar(); while(f!=NULL) if(f-fj_num!=hotel_num) f=f-next; else /找到该房间 p=f-cus_next; q=f-cus_next; printf(请输入该退房人的床位号码:n); scanf(%d,&bed_num); /输入退房人的床位号码 getchar(); while(q!=NULL) if(q-bed_num!=bed_num) q=q-next; else /查找该床位 if(bed_num=p-bed_num) /第一结点特别判断 /

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1