《C语言客房管理系统.doc》由会员分享,可在线阅读,更多相关《C语言客房管理系统.doc(18页珍藏版)》请在三一办公上搜索。
1、客房管理系统1. 题目与要求:客房管理系统系统包括新用户登记功能,统计功能,查询功能,修改功能。1.1问题提出与要求:建立如下结构体:Struct ClientChar Name20;int Sex;int Age;char ID-card ; /*居民身份证*/ int year ;int month;int date; ;Struct HotelInt Room-ID; /*房间号*/Int Tel;int Price;bool sign; /*标记房间是否为空房间*/Struct Client Client-list; /*实现两结构体的嵌套*/ RoomNUM 需求分析根据题目要求,客
2、房信息要用文件存储,提供文件的输入输出操作;在程序中需要对客房具有登记,统计,查询和修改的功能;另外还要用键盘式菜单实现功能选择.2.功能实现设计:2.1总体设计:下面来分析一下整个系统,根据上面的要求分析,可将这个系统设计为五大模块(见下图):注册模块,统计模块,查询模块,修改模块,退出模块。其主要功能为:注册,统计,查询,修改功能。客房管理系统 系统系统 注册统计 查询修改退出2.2详细设计: 2.2.1主函数主函数一般设计得比较简洁,提供输入,功能处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图显示一系列功能选项输入n,判断n是否是?根据n的值调用各功能模块函数结束开始NY
3、程序void main() /*主函数*/ int n,w=1; /*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应的数字范围之内*/ struct Hotel *info; while(w)puts(tt C语言课程设计 客房管理系统 n);puts(tt 072084班 丁超 学号:20081003552n);puts(tt*n);puts(tt*MENU*n);puts(tt*1 registration*n); /*注册*/ puts(tt*2statistic*n); /*统计*/ puts(tt*3search*n); /*查询*/ puts(tt*4modify *n
4、); /*修改*/ puts(tt*5exit*n); /*退出*/ puts(tt*n); puts(tt*n); printf(Choice your number(1-5):bb); scanf(%d,&n); if(n5) /*对选择的数字作判断*/ w=1; getchar(); switch(n) case 1:regi();break; /*注册模块*/ case 2:stat();break; /*统计模块*/ case 3:search();break; /*查询模块*/ case 4:modify();break; /*修改模块*/ case5:tuichu();break
5、; /*退出模块 */ default: break; getchar(); 2.2.2 功能模块设计2.2.2.1 注册模块 单独看各数据信息,身份证号码均是字符型,可采用字符型数组;用户在填完个人信息,即可进行房间预定。流程图用户输入信息i!=o吗? 保存调用函数 返回开始NY返回主菜单程序regi() /*注册模块*/ int i,n; struct Hotel *info; char s10; char a10=have; printf( people number:n); scanf(%d,&n); for(i=0;iRoom_ID,10); if(!(char*)(info-Roo
6、m_ID)0) break; inputs( t have people put have nopeople put nulln,info-person,10); if(strcmp(a,info-person) inputs(t name:n,info-Client_list.Name,20); inputs(t sex:n,info-Client_list.Sex,10); inputs(t age:n,info-Client_list.Age,10); inputs(t Id_card:n,info-Client_list.ID_card,20); inputs(t year:n,inf
7、o-Client_list.year,10); inputs(t month:n,info-Client_list.month,10); inputs(t date:n,info-Client_list.date,10); inputs(t Tel:n,info-Tel,10); inputs(t Price:n,info-Price,10); printf(t registration donen); start=dls_store(info,start); inputs(char *prompt, char *s,int count) char p255; do printf(%s,pro
8、mpt); scanf(%s,p); if(strlen(p)count) printf( too long!n ); while(strlen(p)count); strcpy(s,p); struct Hotel *dls_store(struct Hotel *i,struct Hotel *top) static struct Hotel *last=0; struct Hotel *old,*p; if(last=NULL) i-next=NULL; i-prior=NULL; last=i; return i; p=top; old=NULL; while(p) if(strcmp
9、(p-Room_ID,i-Room_ID)next; else if(p-prior) p-prior-next=i; i-next=p; p-prior=i; return top; i-next=p; i-prior=0; p-prior=i; return i; old-next=i; i-next=0; i-prior=old; last=i; return start; 2.2.2.2 统计模块有两种数据进行统计,被占用的房间和未被占用的房间。流程图统计对象 统计合适房间统计被占用房间统计未被占用房间程序stat() /*统计模块*/ struct Hotel *info; char
10、 a10=null; char b10=have; int c,count=0; printf(t statistic the used Room_ID put 1, the unused Room_ID put 2 n); scanf(%d,&c); if(c=1) info=start; while(info) if(!strcmp(a,info-person) printf(Room_ID %s n,info-Room_ID); count+; info=info-next; printf(t used rooms are%sn,count); /*统计被占用的房间*/ if(c=2)
11、info=start; while(info) if(!strcmp(b,info-person) printf(t Room_ID %s n,info-Room_ID); count+; info=info-next; printf(t unused rooms are%sn,count); /*统计未被占用的房间*/ display(struct Hotel *info) printf(tt name:%sn,info-Client_list.Name); printf(tt sex:%sn,info-Client_list.Sex); printf(tt age:%sn,info-Cli
12、ent_list.Age); printf(tt Id_card:%sn,info-Client_list.ID_card); printf(tt year:%sn,info-Client_list.year); printf(tt month:%sn,info-Client_list.month); printf(tt date:%sn,info-Client_list.date); printf(tt Tel:%sn,info-Tel); printf(tt Price:%sn,info-Price); printf(n); 2.2.2.3 查询模块查询通常可细分为分类查找,此题中分为合适
13、查找,被占用查找,未被占用查找。再与统计信息进行对应,显示对应数据,则用户即可知道合适房间。程序 search() /*查询模块*/ int b; printf( t search the fixed room put 1n); printf( t search the used room put 2n); printf( t search the unused room put 3n); printf( t back to the main menu put 4n); do scanf(%d,&b); switch(b) case 1: search1();break; case 2: se
14、arch2();break; case 3: search3();break; case 4: return; while(b4); struct Hotel *find(char *Room_ID) struct Hotel *info; info=start; while(info) if(!strcmp(Room_ID,info-Room_ID) return info; info=info-next; printf( t cant findn); return (NULL); search1() char Room_ID10; struct Hotel *info; printf( t
15、 put the Room_ID n); scanf(%s,Room_ID); getchar(); info=find(Room_ID); if(!info) printf( t cant findn); else display(info); search2() struct Hotel *info; char a10=null; info=start; while(info) if(!strcmp(info-person,a) display(info); printf(n); info=info-next; search3() struct Hotel *info; char b10=
16、have; info=start; while(info) if(!strcmp(b,info-person) display(info); printf( n ); info=info-next; save() register int t,size; struct Hotel *info; char *p; FILE *fp; if(fp=fopen(mlist,wb)=0) printf( t file cant openn); exit(0); printf(t savingn); size=sizeof(RoomNUM); info=start; while(info) p=(cha
17、r*)info; for(t=0;tnext; putc(EOF,fp); fclose(fp); printf(t savedn); 2.2.2.4修改模块该模块的功能是显示用户要修改的信息。用户输入要修改的信息,根据输入信息查对应选项,并提示用户修改该记录的那部分信息,根据用户的选项修改相应的信息。流程图用户输入要修改的信息i!=o吗? 显示找到的记录调用修改记录 返回开始NY询问用户是否继续修改 提示没有找到对应修改信息 NY程序modify() /*修改模块*/ struct Hotel *info; char Room_ID10; char a10=have; char c10=nu
18、ll; int b,f; printf( t examine the information 1n); /*检验信息*/ printf( t change the information 2n); /*修改信息*/ printf( t back to the main menu 3n); /*返回主菜单*/ scanf(%d,&b); if(b=1)search(); if(b=2) printf( t put the Room_IDn); scanf(%s,Room_ID); info=find(Room_ID); if(!info)printf(t cant findn); else di
19、splay(info);printf(t Change Entry n); if(!strcmp(a,info-person) inputs(t put null:n,info-person,10); if(!strcmp(c,info-person) inputs(t name:n,info-Client_list.Name,20); inputs(t sex:n,info-Client_list.Sex,10); inputs(t age:n,info-Client_list.Age,10); inputs(t Id_card:n,info-Client_list.ID_card,20);
20、 inputs(t year:n,info-Client_list.year,10); inputs(t month:n,info-Client_list.month,10); inputs(t date:n,info-Client_list.date,10); inputs(t Tel:n,info-Tel,10); inputs(t Price:n,info-Price,10); if(b=3) return; 2.2.2.5 退出模块该模块需要有保存,退出,返回三个操作。程序显示一系列功能选项输入n,判断n是否是3?根据n的值调用各功能模块函数结束开始NY程序tuichu() /*退出模
21、块*/ int d; printf(t suggest you save the message,if save put 1,sure to exit put 2 ,back to main menu put 3n); scanf(%d,&d); if(d=1) save(); /*保存*/ if(d=2) printf(t Thank you for useing the system!n); /*退出*/ if(d=3) printf(t backn); /*返回*/ exit(0); 3. 学习心得在老师的带领下进行了C语言程序实践学习。在短短一周的实习期间使我获取了不少新知识也巩固了许
22、多老知识。在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。C语言是需要有一定基础、而且动手能力强的学科。上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而
23、要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程
24、图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高。4. 程序运行结果:(1)对于客房管理系统的首页数据运行结果见下图:(2) 对于注册模块的操作如下:输入“1”按下”enter”进入注册操作。数据运行结果见下图:(3)对于统计模块的操作如下:输入“2”按下”enter”进入取车操作。数据运行结果见下图:(4)对于查询模块的操作如下:输入“3”按下”enter”进入取车操作。数据运行结果见下图:(5)对于修改模块的操作如下:输入“4”按下”enter”进入取车操作。数据运行结果见下图:(6)对于退出模块的操作如下:输入“5”按下”enter”进入取车操作。数据运行结果见下图: