1、 2012年 6月 8日课 程 设 计 评 语 成绩: 指导教师:_ 年 月 日3. 数据结构本次数据结构课程设计,做的是旅店管理系统,定义了三个结构体链表,给等级链表设置了一个头结点,采用链表嵌套方法,等级链表嵌套房间链表,房间链表再嵌套旅客链表。(1)对旅客结构体定义typedef struct customer char name15; /旅客姓名 int age; /旅客年龄 int sex; /旅客性别 int lv; /旅客住宿时的等级号 int bed_num; /旅客的床位号 int year; /开始住宿日期:年 int month; /开始住宿日期:月 int day;日
2、struct customer* next; /指向下一旅客cus;(2)对旅店结构体定义typedef struct hotel_lv int lv_num; /旅店等级号 struct hotel_lv *next; /指向下一等级 struct fangjian *fj_next; /指向房间hotel_lv;(3)房间结构体定义typedef struct fangjian int fj_num; /房间号 int max; /房间的最大床位数目 int mem_num; /房间内的当前人数 struct fangjian *next; /指向下一房间 struct customer
3、*cus_next; /指向旅客fangjian;4.总体设计(1)主函数(2)有旅客来住宿时:(3)有旅客来退房时:(4)查询旅客信息时: (5)统计旅店当前入住人数:(5)各函数名初始化函数:void Init(hotel_lv *L) 判断是否客满:int full(hotel_lv *L)打印旅客信息:void Pr_divide(cus* p,fangjian* q )旅客住宿函数:旅客退房函数:cus* Delete(hotel_lv *L)查询旅客信息:void cx_customer(hotel_lv *L)统计旅店当前入住人数:void Tongji_cus(hotel_lv
4、 *L)主函数:void main()5. 详细设计关键步骤设计(1)初始化旅店函数采用链表方式,进行旅店的初始化操作,给旅店等级设置了头结点。输入房间等级,每个等级的房间数目,每个房间的床位数目。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的房间个数:,p-lv_
5、num);l); /输入该等级的房间数目 if(l=0) continue; else /初始化该房间内的床位 p2=(fangjian*)malloc(sizeof(fangjian); p2-fj_num=1; printf(请输入房间等级为%d房间号为1的床位个数的最大值:lv_num,k); scanf(p2-max); /输入房间1的床位数目mem_num=0; /该房间内当前人数赋为零fj_next=p2; p3=p2; for(k=2;knext=p1; p1-fj_num=k;请输入房间等级为%d房间号为%d的床位个数的最大值:(p1- /输入房间k的床位数目 /该房间内的当前
6、人数赋为零 p3=p1; next=NULL; /房间链表尾指针赋为空 q=q-next; q- /等级链表尾指针域赋为空(2)旅客住宿情况采用尾插法,判断是否有空床位,有就进行旅客的入住操作。void input(hotel_lv *L) char c; cus *s,*p2,*p3; hotel_lv *l; l=L- fangjian *p1; int i,lv; if(full(L) /判断是否旅店客满 旅店客满,不能入住。 system(pause else请输入旅客所需的房间等级: /输入旅客所需的等级lv); while(l!=NULL) /等级不为空时 if(l-lv_num!
7、=lv) l=l- else /有此等级时 p1=l-fj_next; while(p1!=NULL) /房间不为空 if(p1-mem_num=p1-max) /是否有空床位 p1=p1- if(p1=NULL) getchar(); printf(此等级为%d的所有房间均无空位n是否愿意更换等级y/n,lv); scanf(%cc); /做出选择 if(c=y) input(L); else return ; else /进行旅客登记 /因为床位没有设置头结点,所以对于第一个结点要特别判断 if(p1-mem_num=0) s=(cus*)malloc(sizeof(cus); print
8、f(n-nn 旅客的信息: n 请输入旅客姓名: scanf(%s,s-name);n 请输入旅客年龄:(s-age);n 请输入旅客性别(如:男1:女0):sex);n 请输入旅客住宿开始日期(如:1991 10 21):%d %d %ds-year,&month,&day); s-lv=lv; /修改指针 p1-cus_next=s;mem_num+; /房间当前人数加1bed_num=1; /尾指针置为空 Pr_divide(s,p1); /打印房间分配表 system(cls break; else p2=p1-cus_next; p3=p2; i=1; while(imem_num) if(i=p3-bed_num) p3=p3- i+; else break; if(p3=NULL) s=(cus*)malloc(sizeof(cus); printf(age);sex);n 请输入旅客住宿开始日期(如: s-lv=lv
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1