数据结构旅店管理系统课程设计报告(共35页).doc
《数据结构旅店管理系统课程设计报告(共35页).doc》由会员分享,可在线阅读,更多相关《数据结构旅店管理系统课程设计报告(共35页).doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课 程 设 计 报 告 课程名称 数据结构 设计题目 旅店管理系统床位的分配与回收 专 业 计算机与信息工程系 班 级 学 号 姓 名 完成日期 2012年6月8日 课 程 设 计 任 务 书设计题目: 模拟旅馆管理系统的一个功能床位的分配与回收 _设计内容与要求:1.【问题描述】某旅馆有n个等级的房间,第I等级有ai个房间,每个等级有bi个床位(1in)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。2.【基本要求】(1)输入数据分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。回收时,输入房间等
2、级、房间号和床位号。(2)输出数据分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 指导教师: 2012年 6月 8日课 程 设 计 评 语 成绩: 指导教师:_ 年 月 日3. 数据结构本次数据结构课程设计,做的是旅店管理系统,定义了三个结构体链表,给等级链表设置了一个头结点,采用链表嵌套方法,等级链表嵌套房间链表,房间链表再嵌套旅客链表。(1)对旅客结构体定义typedef stru
3、ct 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; /旅店等级号struct hotel_lv *next; /指向下一等级struct fangjian *fj_next; /
4、指向房间hotel_lv;(3)房间结构体定义typedef struct fangjian int fj_num; /房间号int max; /房间的最大床位数目int mem_num; /房间内的当前人数struct fangjian *next; /指向下一房间struct customer *cus_next; /指向旅客fangjian;4. 总体设计(1) 主函数初始化旅店main主函数旅 客 入 住 事 件旅客住宿情况查询旅 客 退 房 事 件 统计旅店当前住宿人数退 出 管 理 系 统(2) 有旅客来住宿时:否否是打印旅客信息姓名性别年龄开始入住时间分配房间成功打印房间分配表是
5、重新输入旅客入住事件是否有空床位输入所需房间等级是否客满无法入住返回主菜单(3) 有旅客来退房时:是打印旅客信息姓名性别年龄开始入住时间是重新输入否重新输入否是重新输入否是否是否退房是否有该房间是否有该床位是否有该等级输入要退房的房间等级输入房间号输入床位号旅客退房事件返回主菜单退房成功(4)查询旅客信息时:打印旅客信息姓名性别年龄开始入住时间是否返回主菜单遍历各房间不为空是不为空是输入要查询旅客的姓名遍历各等级遍历各床位不为空是否有待查找人旅客信息查询 (5)统计旅店当前入住人数:遍历各房间不为空是不为空是遍历各等级遍历各床位不为空计数器count+统计旅店当前入住人数打印信息返回主菜单(5
6、)各函数名初始化函数:void Init(hotel_lv *L) 判断是否客满:int full(hotel_lv *L)打印旅客信息:void Pr_divide(cus* p,fangjian* q )旅客住宿函数:void Pr_divide(cus* p,fangjian* q )旅客退房函数:cus* Delete(hotel_lv *L)查询旅客信息:void cx_customer(hotel_lv *L)统计旅店当前入住人数:void Tongji_cus(hotel_lv *L)主函数:void main()5. 详细设计关键步骤设计(1) 初始化旅店函数采用链表方式,进行
7、旅店的初始化操作,给旅店等级设置了头结点。输入房间等级,每个等级的房间数目,每个房间的床位数目。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 /初始化
8、该房间内的床位p2=(fangjian*)malloc(sizeof(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_
9、num=0; /该房间内的当前人数赋为零 p3=p1;p3-next=NULL; /房间链表尾指针赋为空q=q-next; q-next=NULL; /等级链表尾指针域赋为空(2)旅客住宿情况采用尾插法,判断是否有空床位,有就进行旅客的入住操作。void input(hotel_lv *L)char c;cus *s,*p2,*p3;hotel_lv *l;l=L-next; fangjian *p1;int i,lv;if(full(L) /判断是否旅店客满printf( 旅店客满,不能入住。n);system(pause);elseprintf(请输入旅客所需的房间等级:); /输入旅客所
10、需的等级 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 /进行旅客登记 /因为床位没有设置头结点,所以对于第一
11、个结点要特别判断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 请输入旅客住宿开始日期(如:1991 10 21):);scanf(%d %d %d,&s-year,&s-month,&s-day);s-lv=lv; /修改指针p1-cus_ne
12、xt=s;p1-mem_num+; /房间当前人数加1s-bed_num=1;s-next=NULL; /尾指针置为空Pr_divide(s,p1); /打印房间分配表system(cls); break;elsep2=p1-cus_next;p3=p2;i=1;while(imem_num)if(i=p3-bed_num)p3=p3-next;i+;elsei+;break;if(p3=NULL)s=(cus*)malloc(sizeof(cus); printf(n-n); printf(n 旅客的信息: ); printf(n 请输入旅客姓名:); scanf(%s,s-name); p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 旅店 管理 系统 课程设计 报告 35
限制150内