床位的分配与回收数据结构课程设计报告

上传人:zou****hua 文档编号:201137450 上传时间:2023-04-18 格式:DOCX 页数:39 大小:710.17KB
收藏 版权申诉 举报 下载
床位的分配与回收数据结构课程设计报告_第1页
第1页 / 共39页
床位的分配与回收数据结构课程设计报告_第2页
第2页 / 共39页
床位的分配与回收数据结构课程设计报告_第3页
第3页 / 共39页
资源描述:

《床位的分配与回收数据结构课程设计报告》由会员分享,可在线阅读,更多相关《床位的分配与回收数据结构课程设计报告(39页珍藏版)》请在装配图网上搜索。

1、模拟旅馆管理系统的一个功能床位的分配与回收一、问题描述1.1问题的描述某旅馆有n个等级的房间,第i等级有a个房间,每个等级有b床位(lWiWn)。ii 试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离 店便回收床位(供下次分配)的算法。1.2输入数据对房间信息进行初始化,包括房间的类别、数量以及房间和床位的计费标准; 分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级; 回收时,输入房间等级、房间号和床位号。1.3 输出数据分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。 分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等

2、级均无空 床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关 信息,再进行分配,否则分配工作结束。二、需求分析2.1需求分析经过分析,程序要有以下几个功能:程序启动的时候应该能够对旅馆的信息进行初始化,并且可以让不同的进行手动初始化; 当客户到来的时候,可以登录客户的信息,并且根据旅馆的情况和客 户的要求进行分配床位;当客户结账的时候,可以打印其账单,并且将床位回收;在进行输入信息的时候,应该有检查错误的功能,防止输入的信息超出正常范 围。三、概要设计3.1功能模块的划分3.2功能模块的描述1)初始化模块:应该包括两种初始化,第一种是每次打开程序的时候,自动完成对旅馆

3、 信息的初始化。第二种是由用户输入旅馆的信息,完成旅馆信息的初始化。2)显示模块:显示模块是人机交互的必要模块,用于显示主菜单、旅馆的当前住宿情况、 床位分配情况、账单等等,方便用户进行下一步操作。3)客户登记及床位分配模块:用来登记客户的信息以及床位的分配。4)客户退房及床位回收模块:用来登记退房客户的信息以及床位的回收,住宿费的计算。5)保存信息模块:用来保存旅馆的相关信息,包括手动初始化之后的客房信息,以及退 出程序之前的保存工作。6)退出:退出程序。3.3数据结构3.3.1主要采用的数据结构:链表和栈。(1)链表ADT List 数据对象: D= a | a W ElemSet, i=

4、l,2,.,n, n三0 ii数据关系:R1= a ,a.|, WD, i=2,,n i-1 i基本操作: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中的数据元素,则

5、用pre_e返回它的前驱, 否则操作失败,pre_e无定义。NextElem( L, cur_e, &next_e ) 初始条件:线性表 L 已存在。操作结果:若cur_e是L中的数据元素,则用next_e返回它的后继, 否则操作失败,next_e无定义。GetElem( L, i, &e )初始条件:线性表L已存在,lWiWLengthList(L)。 操作结果:用e返回L中第i个元素的值。LocateElem( L, e, compare( ) )初始条件:线性表L已存在,compare()是元素判定函数。操作结果:返回L中第1个与e满足关系compare()的元素的位序。 若这样的元素不

6、存在,则返回值为0。ListTraverse(L, visit( ) 初始条件:线性表L已存在,visit()为元素的访问函数。 操作结果:依次对 L 的每个元素调用函数 visit( )。 一旦 visit( )失败,则操作失败。ClearList( &L ) 初始条件:线性表 L 已存在。 操作结果:将L重置为空表。 PutElem( &L, i, &e ) 初始条件:线性表L已存在,lWiWLengthList(L)。 操作结果:L中第i个元素赋值同e的值。ListInsert( &L, i, e )初始条件:线性表L已存在,lWiWLengthList(L)+1。 操作结果:在L的第i

7、个元素之前插入新的元素e,L的长度增1。 ListDelete( &L, i, &e )初始条件:线性表L已存在且非空,lWiWLengthList(L)。 操作结果:删除L的第i个元素,并用e返回其值,L的长度减1。 ADT List(2)栈ADT Stack 数据对象: D= a | a WElemSet, i=1,2,.,n, n三0 ii数据关系:R1= a , a.| a , a. WD, i=2,.,n i-1 ii-1 i-约定a端为栈顶,a端为栈底。n1 基本操作:InitStack(&S)操作结果:构造一个空栈S。DestroyStack(&S)初始条件:栈S已存在。操作结果

8、:栈S被销毁。ClearStack(&S)初始条件:栈S已存在。操作结果:将S清为空栈。StackEmpty (S)初始条件:栈S已存在。操作结果:若栈S为空栈,则返回TRUE,否则返回FALSE。StackLength(S)初始条件:栈S已存在。操作结果:返回栈S中元素个数,即栈的长度。Get Top(S, &e)初始条件:栈S已存在且非空。操作结果:用e返回S的栈顶元素。Push(&S, e)初始条件:栈S已存在。操作结果:插入元素e为新的栈顶元素。Pop(&S, &e)初始条件:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。StackTraverse(S, visit()

9、初始条件:栈S已存在且非空,visit()为元素的访问函数。 操作结果:从栈底到栈顶依次对S的每个元素调用函数visi t(), 一旦visit()失败,则操作失败。 ADT Stack四、详细设计4.1具体数据结构(1)每级房间的头结点采用一个顺序表s=(弘环如),其中,7 顺 序存放第1n等级房间的头结点;叼存放内容如下所示:可以分配的男床位总数可以分配的女床位总数000(2)每级房间的头结点结构如下图:可以分配的男床位数可以分配的女床位数aibipriceTTOPRLINK性别房间号剩余空床数目BTOPBTOP1RILNKstruct ROOM /房间信息结构体typedeftypede

10、f struct ROOMHEAD /每个级别的房间的头结点结构体 intintintintint price;room * TTOP;room * RLINK; roomhead;房间节点的结构women_num;/每个级别可以分配的女床数目men_num;/每个级别可以分配的男床数目/每个级别含有的房间数目,头结点此处用来存储房间级别数目/每个房间含有的床位数/每一级别房间的价格/空房栈的栈顶/指向已住房间的栈顶a;b;intsex;int int bed bedroom_num; bed_num;* BTOP;* BTOP1;struct ROOM * room;(4)床位节点的结构/非

11、配的性别 0表示房空 1代表分配/给了男性 2代表分配给了女性/房间号码/这个房间里还有的空床位数目/指向这个房间里的空床位栈结构 /已经住人的床位栈结构,用来和客户进/行连接RLINK; /指向下一个房间床位号对应的客户信息的地址BLINKtypedef struct BED /床位的信息,用来构成空床的栈结构 int num;/床位的号码consumer * data; /每个床位对应的客户信息 struct BED * BLINK; /指向下一个空床位 bed;(5)客户节点的结构:姓名年龄性别日期等级房间号床位号typedef structCONSUMER /客户的信息charname

12、20;/客户姓名intage;/客户年龄charsex;/客户性别w-women女 m-men男intdata3;/日期intrank;/住房的等级introom_num;/分配好的房间号码int bed_num; /分配好的床位号码 consumer;4.2程序流程图(1) void menu()主菜单打印函数(2)char Initiate1()初始化函数1,用来每次重启之后的初始化NOJ+结束初始化s+J等 级房间信息打开 data.data初始化s+J等 级房间床位信初始化s+J 头结点信YESja/初始化旅/ 馆住房信nb跳回主菜单,选择1,存储信息读取文件信 息 aj,bj(3)

13、void Initiate2()初始化函数2,用来用户的手动初始化(4)char Checkln();/登记函数开始P-sexWMTT输入flaglFlaglFlagl2121FlaglFlagl结束122s-women num=Os-men num=O输入 flagl该房间出空房 栈入住房栈中输入flag输入flagl该房间出空房 栈入住房栈中调用 Getin (p)函数,P-sex调用 Checkin ()调用 Checking()打印分配表(5)void Getin( consumer * p)客户信息的输入(6) prin tl( consumer * p)此打印函数用于打印用户刚刚登

14、陆的信息,以确认输入信息是 否正确开始Wp-sexM输入inf21Flag结束Consumer *p男客户信息表调用 Getin(p)女客户信息表4.3代码描述(1)主函数main()char s;/定义n,来获取用户的操作信息Initiate1(); /每次重新启动的时候初始化客房信息 while(1)menu();/打印主菜单scanf(%d,&s); /获取用户的操作信息 while(s4|s1)printf(您输入的信息有错,请重新输入您要进行的操作:); scanf(%d,&s);switch(s)case 1: break;Initiate2(); /调用初始化客房信息函数,由用户

15、输入/房间级别数目n, /还有每一个级别所包含的房间数ai/以及每个房间包含的床位bicase 2:Printdata(); /调用住宿登陆信息函数break; case 3:CheckIn(); /调用退房函数break; case 4:CheckOut(); /调用退房函数break; case 5:Save();/保存信息break; case 6:exit(0);break;2)初始化自动初始化char Initiate1()FILE * fp;/定义文件工作指针,指向data.datFILE * fpl; /定义文件工作指针,指向consumer.datconsumer * con;

16、int k,k1,j,rank_num,women_num,men_num; /循环变量和临时变量int a4,b4,price4;/存储临时变量int m,n;/循环变量,循环技术的时候使用room * p;/工作指针,用来衔接指针之间的连接工作bed * q;/工作指针,用来衔接指针之间的连接工作if(fp=fopen(data.dat,r)=NULL|fscanf(fp,%d,&rank_num)=EOF)/防止打开文件时出错printf(您是首次使用,请您按Enter键进入主菜单后输入1并初始 化客房信息! n);/提示信息getchar();/等待读取 enter 键return 0

17、;/返回0else/正常打开之后,读出各个数据for(k=1;kmen_num=men_num; s-women_num=women_num; s-price=0;s-TTOP=NULL;s-RLINK=NULL;s-room_num=0;for(j=1;j=rank_num;j+) /为s分配存储空间 s-a=rank num;/将房间级别的数目存储到头结点的a中/默认为0/总的男床位可分配数目/总的女床位可分配数目/默认为0值/不用的指针初始化为空值/不用的指针赋空值/对每一级的房间进行分配存储空间fscanf(fp1,%d,%d,&women_num,&men_num); /每一级别房间

18、的可以分配的男女可以分配的床位数目 /初始化每一级房间的头结点(s+j)-women_num二women_num;/每一级房间可以分配的女床总数 (s+j)-men_num二men_num;/每一级房间可以分配的男床总数 (s+j)-a=aj;/输入每一级的房间数目(s+j)-b=bj;/输入每一个房间的床位数目(s+j)-price=pricej; /输入房间间信息 fscanf(fp1,%d,&m); /剩余的空房间数目 (s+j)-room_num=m;if(m=0)(s+j)-TTOP=NULL; /若没有空房间,空房栈的栈顶赋空值 if(m!=0)/若不为空值,建立空房栈(s+j)-

19、TTOP=(room *)malloc(sizeof(room);/分配空间 p=(s+j)-TTOP;/利用p来衔接下面的建栈过程p-sex=0;/初始化为0,代表为空房间fscanf(fp1,%d,&p-room_num) /对房间进行编号,如100 p-bed_num=(s+j)-b; /初始化房间可以分配的床位数目 /初始化床位信息p-BTOP=(bed *)malloc(sizeof(bed);/建立空床的栈结构 q=p-BTOP;/利用q来衔接建立栈结构的过程q-num=1;q-data=NULL; q-BLINK=NULL;for(n=1;nBLINK=(bed *)malloc

20、(sizeof(bed); /分配存储空间q=q-BLINK;q-num=n+1; q-data=NULL;q-BLINK=NULL; p-RLINK=NULL; for(k=1;kroom_num);/对房间进行编号,如100,101,102,202等等p-bed_num=(s+j)-b;/房间可以分配的床位数目p-BTOP=(bed *)malloc(sizeof(bed);/建立空床的栈结构q=p-BTOP;q-num=1; q-data=NULL; q-BLINK=NULL;/利用q来衔接建立栈结构的过程/床位号码 /初始床位对应的床位信息为空for(n=1;nRLINK=(room

21、*)malloc(sizeof(room);/对于每一级房间,构建一个已住房间栈结构 p=(s+j)-RLINK;/利用p来衔接下面的建栈过程fscanf(fp1,%d,%d,%d,&(p-sex),&(p-room_num),&(p-bed_num); /每个房间的性别,房间号,现有的空床位数目if(p-bed_num=0)/如果空床位数目为0,空床位栈写空p-BTOP=NULL; /栈顶赋空值if(p-bed_num!=0) /如果空床位不为0,建立空床栈结构p-BTOP=(bed *)malloc(sizeof(bed);/建立空床的栈结构 q=p-BTOP;/利用q来衔接建立栈结构的过

22、程fscanf(fp1,%d,&q-num); /床位号码q-data=NULL;/初始床位对应的客户信息为空for(n=1;nnum=con-bed_num;/给床位号赋初值q-data=con;/床位指向对应的客户q-BLINK=NULL;/指针赋空值for(n=1;nb-p-bed_num);n+)/其他的已经住人的床位初始化q-BLINK=(bed *)malloc(sizeof(bed); /分配存储空间 q=q-BLINK; /工作指针后移 con=(consumer * )malloc(sizeof(consumer);/为客户的指针分配存储空间fscanf(fp1,%s%d,%

23、d-%d-%d,%d,con-name,&(con-age),&(con-data0),&(con-data1),&(con-data2),&(con-bed_num);/读取信息 switch(p-sex) /初始化客户的性别 case 1 : con-sex=m;break;case 2: con-sex=w;break;con-rank=j; /初始化客户住的房间等级 con-room_num=p-room_num; /初始化客户住的房间号码 q-num二con-bed_num;/初始化床位号码q-data=con;/床位指向客户q-BLINK=NULL;/最后一个指针赋空值 for(k

24、1=1;k1(s+j)-a-m;k1+) p-RLINK=(room *)malloc(sizeof(room);/对于每一级房间,构建一个已住房间栈结构 p=p-RLINK;/利用p来衔接下面的建栈过程fscanf(fp1,%d,%d,%d,&(p-sex),&(p-room_num),&(p-bed_num);/每个房间的性别,房间号,现有的空床位数目if(p-bed_num=0)/如果空床位数目为0,空床位栈写空p-BTOP=NULL; /栈顶赋空值if(p-bed_num!=0) /如果空床位不为0,建立空床栈结构p-BTOP=(bed *)malloc(sizeof(bed);/建立

25、空床的栈结构 q=p-BTOP;/利用q来衔接建立栈结构的过程fscanf(fp1,%d,&q-num); /床位号码q-data=NULL;/初始床位对应的客户信息为空for(n=1;nBLINK=(bed *)malloc(sizeof(bed); /分配空间 q=q-BLINK; /指针后移 fscanf(fp1,%d,&q-num); /床位号码q-data=NULL; /初始床位对应的客户信息为空 q-BLINK=NULL; /最后一个指针赋空值 if(s+j)-b-p-bed_num=0) /如果非空床位数目为0,赋空值p-BTOP1=NULL; /赋空值 if(s+j)-b-p-

26、bed_num!=0)/如果不为0,就要建立非空床位的栈结构p-BTOPl=(bed *)malloc(sizeof(bed);/建立非空床的栈结构 q=p-BTOPl;/利用q来衔接建立栈结构的过程con=(consumer * )malloc(sizeof(consumer);/分配空间 fscanf(fp1,%s%d,%d-%d-%d,%d,con-name,&(con-age),&(con-data0),&(con- datal), &(con-data2), &(con-bed_num);/读出信息 switch(p-sex)/初始化客户的性别case 1 : con-sex=m;b

27、reak;case 2: con-sex=w;break;con-rank=j;/所住的房间等级con-room_num=p-room_num; /所住的房间号码 q-num=con-bed_num;/给床位号赋初值q-data=con;/床位指向对应的客户q-BLINK=NULL;/指针赋空值for(n=1;nrank=j;/初始化客户住的房间等级con-room_num二p-room_num; /初始化客户住的房间号码q-num二con-bed_num;/初始化床位号码qdata二con;q-BLINK=NULL;p-RLINK=NULL;system(cls);/床位指向客户/最后一个指

28、针赋空值/最后一个指针赋空值/清屏并打印刚刚用户输入的信息printf printh; printF; printf printF;咼谑目応辭房间的床禰目応 i H-r i j i j-i r i jji d Jr i-j r iffj/ lhj ii-pwn); in”); Xu);n); n);Far( = iui 洛 1:j+)printh; printF; 卜printh; printF;IttdI耕祈颅I ,j J巧卜冷仲j)-遇Qjj-冲ric町;TH h);| 耕阮颅 |nuroj-as(*rmk_ mnim)-bs.s*onk nun)piri蚀);1W);printF (-h

29、 prinlFP printF (;b p吋呼艸. T _=:prinlFP printF(M forck=l;ka;lt*+)i i 时 _cdtxldh师 2Jnjn)njn)n)1讪JI璃|1s-winpn_nuiij;卩 rintf(MB| 注;口闫 | 霸d| 苗0| ,(5+k-uUm ,(s*kj-pritej;1 -r1 讪)ipri.ntr( piLlltf(| 當覘嗚间 | 枕d| 細d| 制d| n,k,(5tk) nen nun,(5lwnnen numjsdd pric(?l:11 n);printf(成功初始化旅馆客房信息,请按Enter键继续!);get char

30、();return 1;手动初始化void Initiat e2()/用来存储房间级别数目/循环变量,循环计数的时候/使用/清除屏幕int rank_num;int j;system(cls);printf(请输入您的旅馆中的房间等级的数目:);/提醒用户/的信息scanf(%d,&rank_num);/输入房间级别的数目s=(roomhead *)malloc(rank_num+l)*sizeof(roomhead);/为 s 分配存储空间s-a=rank_num;/将房间级别的数目存储/到头结点的a中for(j=1;j=rank_num;j+)/对每一级的房间进行分配/存储空间int m,

31、n;/循环变量room * p;/工作指针,用来衔接指针之间的连接工作bed * q;/工作指针,用来衔接指针之间的连接工作printf (请输入第%d级房间的数目a:,j);/提示用户的信息 scanf(%d,&(s+j)-a);/输入每一级的房间数目printf (请输入第%d级每间房间中的床位数目:,j); scanf(%d,&(s+j)-b); /输入每一个房间的床位数目 printf(请输入每一级房间的单价(如30元,请输入30):); scanf(%d,&(s+j)-price); /输入单间信息(s+j)-women_num=(s+j)-a)*(s+j)-b);/可分配女床总数

32、(s+j)-men_num=(s+j)-a)*(s+j)-b);/可分配的男床数目 s-women_num+=(s+j)-women_num;/改变总数目s-men_num+=(s+j)-men_num;/改变总数目(s+j)-TTOP=(room *)malloc(sizeof(room);/建 立空房栈 p=(s+j)-TTOP;/开始建栈p-sex=0;/初始化为0,代表为空房间p-room_num=j*100; /对房间进行编号,如100,101,102,202 p-bed_num=(s+j)-b; /初始化房间可以分配的床位数目 p-BTOP=(bed *)malloc(sizeof

33、(bed);/建 立空床的栈结构 q=p-BTOP;/利用q来衔接建立栈结构的过程q-num=0;/床位号码q-data=NULL;/初始床位对应的床位信息为空for(n=1;n(s+j)-b;n+)/对每一个床位进行分配存储空间并进行初始化信息 q-BLINK=(bed *)malloc(sizeof(bed); /分配存储空间 q=q-BLINK;/讲工作指针q后移q-num=n;/房间号码q-data=NULL;/初始的客户信息为空 for(m=1;mnome,p-dqepp-dataS9p-datd1,p-data2pp-rank); 1 Vil;登记表信息的打印,用于用户确认输入信息

34、正确 void printl( consumer * p)char inf;/读取用户是否确认信息正确 switch(p-sex)case m:n);柱名一一陌耳达日町 命甸:阴舶站 | 男 Ud ZSd-iZd-Vd | 初xr.p ndtiE,p-agePp-data0,p-datal,p-daU2,p-ranl);11 n);break;case w:n);Vil;n);n-j;诃;printf(请您确认信息是否正确,正确输入1/错误输入2n); scanf(%d, &inf);/读取用户是否确认辻(inf=2)sys tem(cls);/若果错误,那么重新输入Geti n(p);sys

35、 tem(cls);/输入完成以后重新打印信息,等待用户的确认 print1(p);当前旅馆住宿情况打印 vuid Priintd ta()lot Ik; prntF(E, prntF(E, printf rw o_nufi ?;T W);| nH Bk. (s*k)-mera_iriium, (s+lk) -LiDmera_riiiiiTi+ (s*ik) -price);TH z 厂_| n p It ? fs*k) -ifEii_nuii p ( s+lk) - liciiueiiinnnm, ( s*lk)tce);-1 Wfp; /定义一个变量来存储客户的信息/用于房间的遍历/用于床

36、位的分配/用于最后读取用户是否要继续录入信息p=(consumer *)malloc(sizeof(consumer);/指针定义以后没有分配存储空间,所以要分配存储空间sys tem(cls);/清理屏幕 Geti n(p);/读取客户的信息system(cls); /清理屏幕prin t1(p);/打印客户的信息,等待用户确认是否输入正确system(cls);swi tch(p-sex) /首先检查还有没有符合条件的床位case w: if(s-women_num=0) /如果是女性,判断女床是否有位置printf(对不起,已经没有可以分配的女床位! n);/提示信息printf(是否继

37、续录入等级信息:(若继续,输入1;若不继续,输入2); scanf(%d, &flag1);/读入用户是否继续进行登记信息if(flag1=1)CheckIn(); /继续登记信息if(flag1=2)/退出登记信息函数return 0;break;case m: if(s-men_num=O)/如果是男性,判断男床是否有位置printf(对不起,已经没有可以分配的男床位! n);p r i n t f ( 是否继续录入等级信息:(若继续,输入1;若不继续, 输入2);scanf(%d, &flagl);/读入用户是否继续进行登记信息 if(flag1=1)CheckIn(); /继续登记信息

38、if(flag1=2) /退出登记信息函数return 0;break;switch(p-sex)case m: if(s+p-rank)-men_num=0) /检查这个等级的房间还有没有可以分配的房间printf(对不起,你要的%小等级房间已经没有可分配的男床位!);printf(您是否接受更换房间等级?接受请输入1/拒绝请输入2:); scanf(%d, &flag1);/读入用户是否接受更换等级 if(flag1=1)CheckIn(); /重新输入信息if(flag1=2) /结束床位分配return 0; /退出函数,返回0,分配失败break;case w: if(s+p-ran

39、k)-women_num=0)/检查有没有可以分配的床位 printf(对不起,你要的%小等级房间已经没有可分配的女床位! );printf(您是否接受更换房间等级?接受请输入1/拒绝请输入2:);scanf(%d, &flag1);/读入用户是否接受更换等级if(flagl=l)Checkln(); /重新输入信息if(flagl=2) /结束床位分配return 0;/退出函数,分配失败break;switch(p-sex)case m: for(q=(s+p-rank)-RLINK;q!二NULL;q二q-RLINK)/先遍历已经有人住的房间还有没有就可以分配的床位if(q-sex=l&

40、q-bed_num!=0)r=q-BTOP; q-BTOP=q-BTOP-BLINK; qbed_num;(s+p-rank)-men_num; smen_num; r-BLINK=q-BTOPl; q-BTOPl=r;r-data二p;pbed_num二rnum; proom_num二qroom_num;/如果检测到符合条件的房间/空床位出栈,存储到r中/栈顶下移一个/将这个房间的可以分配到床位减1/将这个等级可以分配的床位数目减1/将总的可以分配的床位数目减1/将这个已经住人的床位入栈/栈顶上移/此床位指向客户/客户的房间号printr printrt printF( printFC pr

41、intF printF( printFC性别年龄到达日比烏间等级史2d|沾d-t2d-%2d3d| n,p-name 1 Xn);/客户的床位号printf(您是继续登记信息?继续请输入1/停止请输入2:);scanf(%d, &flag1);/读入用户继续登录信息 if(flag1=1)CheckIn(); /继续输入信息 if(flag1=2) /结束床位分配 return 1;q=(s+p-rank)-TTOP;/如果已经住人的房间没有可以分配的床位,那么/去没有住人的房间去分配,空房间出栈qbed_num; qsex=1; r=q-BTOP;/房间可以分配的床位数目减1/将此房间标记为

42、男房间/房间的空床位出栈q-BTOP=q-BTOP-BLINK;/空床栈顶下移q-BTOP1=r;pbed_num二r-num;/分配完之后的床位入栈/客户的房间号p-room_num二q-room_num;/客户的床位号(s+p-rank)-men_num;/这个等级可以分配的男床位减1 (s+p-rank)-women_num-=(s+p-rank)-b;/这个等级可以分配的女床位减 b (s+p-rank)-TTOP=(s+p-rank)-TTOP-RLINK;/空房栈顶下移 q-RLINK=(s+p-rank)-RLINK;/分配后的房间入栈(s+p-rank)-RLINK二q;/栈顶

43、上移smen_num;/可以分配的总的男床位减1s-women_num-=(s+p-rank)-b; /可以分配的总的女床位减bpriulf( priulfC prinlfC printr( printf( printf( printf(勇间井配去性别年龄到1- n羽房间等级启间号码床位号码男 | 常2d | 慕dWl ; w w Xn); n);n,p-iiiaiiie ap-) 1 n);printf(您是继续登记信息?继续请输入1/停止请输入2:); scanf(%d, &flag1);/读入用户继续登录信息 if(flag1=1)Checkln(); /继续输入信息if(flag1=2

44、) /结束床位分配 return 1;break;case w: for(q=(s+p-rank)-RLINK;q!二NULL;q二q-RLINK)/先遍历已经有人住的房间还有没有就可以分配的床if(q-sex=2 &q-bed_num!=0)/如果检测到符合条件的房r=q-BTOP;/空床位出栈,存储到r中q-BTOP=q-BTOP-BLINK;/栈顶下移一个q-bed_num;/将这个房间的可以分配到床位减1(s+p-rank)-women_num;/将这个等级可以分配的女床位数目减1swomen_num; r-BLINK=q-BTOPl; q-BTOPl=r;r-data二p;pbed_

45、num二rnum; proom_num二qroom_num;/将总的可以分配的女床位数目减1/将这个已经住人的床位入栈/栈顶上移/此床位指向客户/客户的房间号printFC printFC printFC printFC printFC printFC printFC定间分配表姓名性别年龄到达日期房间等级房间号码床位号衣155 I 女 I Vd I 5d-Vd-Vd In; n-;Xn);n; n-;n ,p-nane,p- 1 n;/客户的床位号printf(您是继续登记信息?继续请输入1/停止请输入2:); scanf(%d, &flag1);/读入用户继续登录信息 if(flag1=1)Checkln(); /继续输入信息 if(flag1=2) /结束床位分配 return 1;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!