数据结构课程设计---旅店管理系统——床位的分配与回收内容摘要:

printf(%s\t%d\t%d\t%d%d%d\n,qname,qsex,qage,qyear,qmonth,qday)。 printf(是否与要退房人信息相符。 [y/n]\n)。 scanf(%c,amp。 c)。 if(c==39。 y39。 ) //做出是否退房的选择 { fmem_num。 printf(退房成功。 \n)。 system(pause)。 return(q)。 } else return NULL。 } else //如果床位不为 1 { while(pnext!=q) //指向下一床位 p=pnext。 //打印旅客信息 printf(此等级、此房间、此床位旅客的信息为: \n)。 printf(该名顾客的信息 :\n)。 printf(姓名 \t 性别 \t年龄 \t入住时间 \n)。 printf(%s\t%d\t%d\t%d%d%d\n,qname,qsex,qage,qyear,qmonth,qday)。 printf(是否与要退房人信息相符。 [y/n]\n)。 scanf(%c,amp。 c)。 if(c==39。 y39。 ) //做出是否退房的选择 { pnext=qnext。 fmem_num。 printf(退房成功。 \n)。 system(pause)。 return(q)。 } 洛 阳 理 工 学 院 课 程 设 计 报 告 第 14 页 共 35 页 else return NULL。 } } } if(q==NULL) //如果该房间内床位为空 { printf(未找到该床位号,请核实信息后重新输入。 \n)。 } } } if(f==NULL) //如果该等级的房间为空 { printf(未找到该房间号,请核实信息后重新输入。 \n)。 } } } if(l==NULL) //如果等级链表为空 { printf(未找到该房间等级,请核实信息后重新输入。 \n)。 } system(pause)。 } 6. 测试 与调试 ( 1) 编写时 出现的问题 刚开始,我想旅店管理系统的算法思想与刚做过的学生宿舍管理系统一样, 所以最开始,我定义的结构体数组,进行编写。 可是在初始化的时候,因为旅店跟旅店的情况不一样, 而数组大小有不能用变量来指示,所以在用数组进行初始化的时 候遇到了麻烦。 又想到如果用链表的话,不用定义链表的长度,所以改用链表来编写。 在旅客进行入住情况中,开始没有设置头结点,写到后面越来越不对劲,因为有好多种情况要进行考虑(如:判断是否客满、是否所需等级无空床位等)所以又加入头结点。 在床位分配的时候,因为没有设置床位的头结点,所以要对第一个床位进行特别判断。 然后经过多次调试与修改,最终能实现旅客的入住情况。 旅客退房跟入住时一样,有好多种情况要考虑。 在床位回收的时候,还是因为没有设置床位的头结点,所以要对第一个床位进行特别判断。 还有就是一开始我把那个输入退房人 房间号和床位号的语句放在了循环体内,出现了循环一次要输入一个。 后来经过调试发现了问题,移出来后没有再出现这个问题。 最后进行主函数的界面编写。 查询操作与统计操作比较简单,没有出现什么问题。 由于自己不会文件的保存与读取函数的编写,向其他同学请教的时候,他们也没有写出来。 所以就没有加入文件保存与读取函数。 洛 阳 理 工 学 院 课 程 设 计 报 告 第 15 页 共 35 页 ( 2) 测试数据与结果 初始化 输入 旅客 本测试数据共输入了五名旅客 ( 1)第一人 洛 阳 理 工 学 院 课 程 设 计 报 告 第 16 页 共 35 页 旅客所需的房间等级无空位情况 ( 2)第二人 ( 3) 第三人 洛 阳 理 工 学 院 课 程 设 计 报 告 第 17 页 共 35 页 ( 4)第四人 ( 5)第五人 洛 阳 理 工 学 院 课 程 设 计 报 告 第 18 页 共 35 页 旅店已客满,无法入住 统计 旅店当前入住人数 洛 阳 理 工 学 院 课 程 设 计 报 告 第 19 页 共 35 页 旅客退房情况 ( 1)正常退房 洛 阳 理 工 学 院 课 程 设 计 报 告 第 20 页 共 35 页 退房之后又有人入住 且与以助旅客同名 洛 阳 理 工 学 院 课 程 设 计 报 告 第 21 页 共 35 页 ( 2)退房输入错误 时候 洛 阳 理 工 学 院 课 程 设 计 报 告 第 22 页 共 35 页 查询旅客信息时候 ( 1) 无旅客同名时: 洛 阳 理 工 学 院 课 程 设 计 报 告 第 23 页 共 35 页 ( 2) 有旅客同名时 洛 阳 理 工 学 院 课 程 设 计 报 告 第 24 页 共 35 页 ( 3) 查询错误时候 7. 源程序清单 include include include typedef struct customer //旅客结构体 { char name[15]。 int age。 int sex。 int lv。 int bed_num。 int year。 int month。 int day。 struct customer* next。 }cus。 typedef struct hotel_lv //旅店结构体 { int lv_num。 struct hotel_lv *next。 struct fangjian *fj_next。 }hotel_lv。 typedef struct fangjian //房间结构体 洛 阳 理 工 学 院 课 程 设 计 报 告 第 25 页 共 35 页 { int fj_num。 int max。 int mem_num。 struct fangjian *next。 struct customer *cus_next。 }fangjian。 void Init(hotel_lv *L) //初始化函数 { int i,j,k,l。 hotel_lv *p,*q。 fangjian *p1,*p2,*p3。 printf(请输入房间分为几个等级: \n)。 scanf(%d,amp。 j)。 //输入房间共分为几个等级 q=L。 for(i=1。 i=j。 i++)//初始化该等级的房间 { p=(hotel_lv*)malloc(sizeof(hotel_lv))。 qnext=p。 plv_num=i。 //给房间等级赋值 printf(请输入房间等级为 %d 的房间个数: \n,plv_num)。 scanf(%d,amp。 l)。 //输入该等级的房间数目 if(l==0) continue。 else //初始化该房间内的床位 { p2=(fangjian*)malloc(sizeof(fangjian))。 p2fj_num=1。 printf(请输入房间等级为 %d 房间号为 1 的床位个数的最大值: \n,plv_num,k)。 scanf(%d,amp。 (p2max))。 //输入房间 1 的床位数目 p2mem_num=0。 //该房间内当前人数赋为零 pfj_next=p2。 p3=p2。 for(k=2。 k=l。 k++) { p1=(fangjian*)malloc(sizeof(fangjian))。 p3next=p1。 p1fj_num=k。 printf(请输入房间等级为 %d 房间号为 %d 的床位个数的最大值: \n,plv_num,k)。 scanf(%d,amp。 (p1max))。 //输入房间 k 的床位数目 p1mem_num=0。 //该房间内的当前人数赋为零 p3=p1。 } p3next=NULL。 //房间链表尾指针赋为空 洛 阳 理 工 学 院 课 程 设 计 报 告 第 26 页 共 35 页 } q=qnext。 } qnext=NULL。 //等级链表尾指针域赋为空 system(pause)。 } int full(hotel_lv *L) //判是否客满 { hotel_lv *l。 l=Lnext。 fangjian *f。 while(l!=NULL) { f=lfj_next。 while(f!=NULL) { if(fmem_num!=fmax)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。