您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 数据结构课程设计--宾馆客房管理系统
数据结构课程设计报告实验名称:宾馆订房和退房系统姓名:胡山权学号:111714110学院:计算机科学与技术学院专业:网络工程指导老师:陈建新一.需求分析1.实验题目:宾馆订房和退房系统2.基本要求:1)实现宾馆的订房业务2)实现退房业务3)实现统计业务4)实现查询业务其他:要求在VC++6.0下运行通过二.概要设计本程序主要有以下几个功能模块voidmain()//主函数voidtongji_cus(hotel_lv*L)//统计当前客人人数函数voidcx_customer(hotel_lv*L)//查询客人信息函数cus*Delete(hotel_lv*L)//退房函数voidinput(hotel_lv*L)//订房函数voidPr_divide(cus*p,fangjian*q)//打印客人信息函数voidInit(hotel_lv*L)//初始化函数typedefstructcustomer//客人结构体定义typedefstructhotel_lv//宾馆结构体定义typedefstructfangjian//房间结构体定义本程序通过主函数调用voidmain()主函数,主函数再调用其他几个功能模块,其中客房数量通过初始化函数来实现,输入客房的数量和床位的数量来确定。三.详细设计1.程序运行流程图2.入住流程图姓名是入住流程是否客满是不能入住否输入所需等级是否有床位否打印客人信息年龄性别入住时间分配房间成功返回主菜单宾馆客房初始化Main录入客人信息查询客人信息统计入住情况退出系统查询入住情况(3)退房业务姓名是否是退房业务输入要退房的房间等级是否有该等级否是否是输入房间号是否有该房间号否输入床位号是否有该床位号否打印客人信息年龄性别入住时间是否退房返回主菜单退房成功(4)查询业务不为空不为空不为空客人信息查询输入客人姓名遍历各等级遍历各房间遍历各床位不为空遍历各床位是否有该客人返回主菜单姓名性别年龄入住时间(5)统计业务3.各功能模块源代码及详细介绍(1).主菜单Init(L);while(1)//进入菜单选项{system(cls);printf(\n\n\n);printf(************************************************************\n);printf(**\n);printf(*欢迎进入宾馆客房管理系统*\n);printf(**\n);printf(********************************************************\n);printf(******湖北工程学院计算机学院1117141班胡山权*********\n\n);printf(------------------------------------------版权所有,侵权必究\n);printf(1录入客人信息\n);printf(2退房业务\n);printf(3查询客人信息\n);printf(4统计客人信息\n);不为空不为空不为空统计当前客房入住人数遍历各等级遍历个房间遍历各床位计数器conut++打印信息返回主菜单printf(0退出系统\n);printf(请选择你要办理的业务\n);scanf(%d,&c);//做选择getchar();switch(c){case1:input(L);break;case2:p=Delete(L);free(p);break;case3:cx_customer(L);break;case4:tongji_cus(L);break;case0:return;}(2)统计当前客人人数函数voidtongji_cus(hotel_lv*L){hotel_lv*l;fangjian*f;cus*t;inti=0,j=0;intflag;l=L-next;while(l!=NULL){flag=0;i++;f=l-fj_next;while(f!=NULL){if(f-mem_num==0)f=f-next;else{t=f-cus_next;while(t!=NULL){flag++;j=j+flag;t=t-next;}f=f-next;}}printf(等级为%d的房间的入住人数为%d\n,i,flag);l=l-next;}if(!j)printf(此时无人入住。\n);system(pause);}(3).退房业务cus*Delete(hotel_lv*L){cus*p,*q;charc;fangjian*f;intlv,hotel_num,bed_num;hotel_lv*l;l=L-next;printf(请输入该退房客人的房间等级号码:\n);scanf(%d,&lv);getchar();while(l!=NULL){.....{f-mem_num--;printf(退房成功!\n);system(pause);return(q);}elsereturnNULL;}}}if(q=NULL)//如果该房间内床位为空{printf(没有找到该床位,请核对信息后重新输入。\n);}}}if(f==NULL)//如果该等级的房间为空{printf(没有找到该房间号,请从新输入。\n);}}}if(l==NULL)//如果等级链表为空{printf(没有找到该房间等级,请核对后输入!\n);}system(pause);}(4)查询客人信息voidcx_customer(hotel_lv*L){chars[15];hotel_lv*l;fangjian*f;cus*t;intflag=0;//设置标志量printf(请输入要查询的客人姓名:\n);scanf(%s,s);//输入要查询的客人姓名getchar();l=L-next;while(l!=NULL)//等级不为空时,走向房间{f=l-fj_next;while(f!=NULL)//房间不为空时,走向床位{if(f-mem_num==0)//若此房间当前人数为0,走向下一见房f=f-next;else{t=f-cus_next;while(t!=NULL){if(!strcmp(t-name,s))//如果找到该客人{Pr_divide(t,f);//打印信息t=t-next;//指向下一个人,继续查找flag++;//标量加1}elset=t-next;}f=f-next;}}l=l-next;}if(!flag)//标志量为0,则未查找到{printf(没有找到该客人,请核对再输入。\n);system(pause);}}//统计函数与查询函数基本类似(5)入住函数voidinput(hotel_lv*L){charc;inti,lv;fangjian*p1;cus*s,*p2,*p3;hotel_lv*l;l=L-next;if(full(L))//判断是否客满{printf(房间已满,不能入住。\n);system(pause);}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(p1==NULL){getchar();printf(此等级为%d的所有房间均无空位\n是否愿意更好等级[y/n],lv);scanf(%c,&c);//选择if(c=='y')input(L);elsereturn;}}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请输入客人的性别(如:男1;女0):);scanf(%d,&(s-sex));printf(\n请输入客人入住的时间(如:19901011):);scanf(%d%d%d,&s-year,&s-month,&s-day);s-lv=lv;//指针修改p1-cus_next=s;p1-mem_num++;//房间当前最大人数加1s-bed_num=1;s-next=NULL;//尾指针设置为空Pr_divide(s,p1);//打印房间分配表system(cls);break;}else{p2=p1-cus_next;p3=p2;i=1;while(i=p1-mem_num){if(i==p3-bed_num){p3=p3-next;i++;}else{i++;break;}}if(p3==NULL){s=(cus*)malloc(sizeof(cus));printf(\n--------------------------------------\n);printf(\n入住客人信息:);printf(\n请输入客人的姓名:);scanf(%s,s-name);printf(\n请输入客人年龄:);scanf(%d,&(s-age));printf(\n请输入客人的性别(如:男1;女0):);scanf(%d,&(s-sex));printf(\n请输入客人入住的时间(如:19901011):);scanf(%d%d%d,&s-year,&s-month,&s-day);s-lv=lv;while(p2-next!=p3)p2=p2-next;p2-next=s;p1-mem_num++;s-bed_num=i;s-next=NULL;Pr_divide(s,p1);system(cls);break;}else{while(p2-bed_num==i)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请输入客人的性别(如:男1;女0):);scanf(%d,&(s-sex));printf(\n请输入客人入住的时间(如:19901011):);scanf(%d%d%d,&s-year,&s-month,&s-day);s-lv=lv;s-next=p2-next;p2-next=s;p1-mem_num++;s-bed_num=i-1;Pr_divide(s,p1);system(cls);break;}}}}break;}}}}(6)初始化函数voidInit(hotel_lv*L){inti,j,k,l;hotel_lv*p,*q;fangjian*p1,*p2,*p3;printf(请输入房间分为几个等级:\n);scanf(%d,&j);//输入房间分为几个等级q=L;for(i=1;ij;i++){p=(hotel_lv*)malloc(sizeof(hotel_lv));q-next=p;p-lv_num=i;//给房间等级赋值printf(请输入房间等级为%d的房间个数:\n,p-lv_num);scanf(%d,&l);//输入该等级房间的数目if(l
本文标题:数据结构课程设计--宾馆客房管理系统
链接地址:https://www.777doc.com/doc-5923992 .html