1、/ 宾馆管理系统#include#include#include /*控制台输入输出,getche()(能在屏幕上显示输入的数据), getch()(不能在屏幕上显示输入的数)等函数的调用*/#include#define N 10typedef struct int fh; /*客房编号*/char lx15; /*客房类型*/char place30; /*客房位置*/float area; /*客房面积*/int cs; /*床位数量*/float price; /*住房单价*/ char dj15; /*顾客登记*/char js12; /*顾客结算*/kf ; kf sN;void
2、menu();void display();void input();void search();/void increse();void modi();int m;/功能菜单模块 void menu()printf(nnnnn);printf( *欢迎进入宾馆管理系统*n);printf( |=|n); printf( 1、客房编号录入 ; n);printf( 2、客房信息显示; n);printf( 3、客房信息查询; n);printf( 4、客房信息添加; n);printf( 5、客房信息修改 ; n);printf( 6、退出宾馆管理系统; n);printf( |=|n); p
3、rintf(n); void input()int i;FILE *fp;printf(n请输入第一个记录:n);printf(编号(用0表示结束输入):);scanf(%d,&s0.fh);printf( 类型:);scanf(%s,s0.lx);printf( 位置:);scanf(%s,s0.place);printf( 面积: ); scanf(%f,&s0.area);printf(床位数量:); scanf(%d,&s0.cs);printf(住房单价:); scanf(%f,&s0.price);printf(顾客登记:); scanf(%s,s0.dj);printf(顾客结算
4、: ); scanf(%s,s0.js); for(i=1;si-1.fh!=0;i+) printf(n请输入第%d个记录:n,i+1); printf(编号(用0表示结束输入):); scanf(%d,&si.fh); printf(类型:); scanf(%s,si.lx); printf(位置:); scanf(%s,si.place); printf(面积:); scanf(%f,&si.area); printf(床位数量:); scanf(%d,&si.cs); printf( 住房单价:); scanf(%f,&si.price); printf(顾客登记:); scanf(%
5、s,si.dj); printf( 顾客结算:); scanf(%s,si.js); m=i; fp=fopen(kf.dat,w); for(i=0;im;i+) if(fwrite(&si,sizeof( kf),1,fp)!=1) printf(文件写入错误n); fclose(fp);/客房信息录入模块void display()FILE *fp;int i,n=0; /void choice(); / kf sN; system(cls); if(fp=fopen(kf.dat,rb)=NULL) printf(n打开文件失败n);return; printf(|*|n); prin
6、tf(顾客已登记请输入Y,没登记输入N,当编号输入为0时结束n); printf(n|编号| 类型| 位置 | 面积 | 床位数量 | 住房单价 | 顾客登记 | 顾客结算 | n); for(i=0;fread(&si,sizeof( kf),1,fp)!=0;i+) printf( |-|-|-|-|-|-|-|-|n); printf(|%4d|%5s|%6s|%5f|%10d|%10f|%10s|%10s|n,si.fh,si.lx,si.place,si.area,si.cs,si.price,si.dj,si.js); n+; printf(|*|n); if(n=0) print
7、f(n文件中无记录n); else printf(n文件中共有%d个记录n,n); fclose(fp); /信息查询模块:void search()FILE *fp;int i,n=0,flag=0,temp_fh;system(cls);if(fp=fopen(kf.dat,rb)=NULL) printf(cannot open file!n);return; printf(n输入要查客房的编号:);scanf(%d,&temp_fh); for(i=0;fread(&si,sizeof(kf),1,fp)!=0;i+)if(temp_fh=si.fh)if(flag=0)printf(
8、|*|n); printf(顾客已登记请输入Y,没登记输入N,当编号输入为0时结束n); printf(n|编号| 类型| 位置 | 面积 | 床位数量 | 住房单价 | 顾客登记 | 顾客结算 | n); printf( |-|-|-|-|-|-|-|-|n); printf(|%4d|%5s|%6s|%5f|%10d|%10f|%10s|%10s|n,si.fh,si.lx,si.place,si.area,si.cs,si.price,si.dj,si.js); printf(|*|n); flag=1;n+;if(n=0) printf(文件里没有记录n); else if(flag=
9、0)printf(文件中没有这个房间n);/客房信息添加模块void increse()int i,k;/kf sN;FILE *fp;system(cls); if(fp=fopen(kf.dat,rb)=NULL) printf(cannot open file!n); exit(0); fp=fopen(kf.dat,rb);/for(i=0;im;i+) / if(fread(&si,sizeof(kf),1,fp)!=1)/ printf(文件写入错误n); exit(0); for(i=0;im;i+) fread(&si,sizeof(kf),1,fp); fclose(fp);
10、 /k=i;printf(n输入添加的客房编号: );scanf(%d,&si.fh);printf(n输入添加的客房类型:);scanf(%s,si.lx);printf(n输入添加的客房位置:);scanf(%s,si.place);printf(n输入添加的客房面积:);scanf(%f,&si.area);printf(n输入添加的客房床位数量:);scanf(%d,&si.cs);printf(n输入添加的客房住房单价: );scanf(%f,&si.price); printf(n输入添加的顾客登记:);scanf(%s,si.dj); printf(n输入添加的顾客结算:);sc
11、anf(%s,si.js);printf(n插入添加的位置:);scanf(%d,&k); fp=fopen(kf.dat,ab+); fwrite(&si,sizeof( kf),1,fp); fclose(fp); /*for(flag=1,i=0;flag&ik;i+) while(!feof(fp) for(i=0;iN;i+)fread(&si,sizeof( kf),1,fp);if(feof(fp) break;i+;flag=0; if(!flag) k=k+1; /fclose(fp);/flag=i;/if(k=0)/添加for(j=flag-1;j=i;j-)sj+1=s
12、j;si=flag;/写回if(fp=fopen(kf.dat,wb)=NULL)printf(不能建立文件!n);for(i=0;ik;i+)fwrite(&si,sizeof(kf),1,fp);m=m+1;elseif(fp=fopen(kf.dat,rb)=NULL)printf(不能建立文件!n);return;fwrite(&si,sizeof( kf),1,fp);fclose(fp);*/客房信息修改:输入客房的编号,查看客房的状态,修改此客房的单价和床数, 并显示修改后的结果;void modi()FILE *fp1,*fp2;int i,temp_fh,temp_cs;fl
13、oat temp_price;system(cls);if(fp1=fopen(kf.dat,rb)=NULL)printf(cannot open filen);exit(0);if(fp2=fopen(kf3.dat,wb)=NULL)printf(cannot open filen);exit(0);for(i=0;im;i+)if(fread(&si,sizeof( kf),1,fp1)!=1)printf(文件写入错误n);exit(0);printf(n输入要修改客房的编号: );scanf(%d,&temp_fh);for(i=0;im;i+)if(si.fh!=temp_fh)
14、fwrite(&si,sizeof(kf),1,fp2);elseprintf(n输入正确的客房床位数量:);scanf(%d,&temp_cs);printf(n输入正确的客房住房单价: );scanf(%f,&temp_price); si.cs=temp_cs; si.price=temp_price; fwrite(&si,sizeof(kf),1,fp2);fclose(fp1);fclose(fp2); printf(输出修改后的客房信息如下n);fp2=fopen(fk3.dat,rb);printf(|*宾馆客房管理系统*|n); printf(n|编号| 类型| 位置 | 面
15、积 | 床位数量 | 住房单价 | 顾客登记 | 顾客结算 | n); for(i=0;fread(&si,sizeof(kf),1,fp2)!=0;i+) printf( |-|-|-|-|-|-|-|-|n); printf(|%4d|%5s|%6s|%5f|%10d|%10f|%10s|%10s|n,si.fh,si.lx,si.place,si.area,si.cs,si.price,si.dj,si.js); printf(|*|n); fclose(fp2);fp1=fopen(kf.dat,wb);fp2=fopen(kf3.dat,rb);for(i=0;im;i+) if(f
16、read(&si,sizeof( kf),1,fp2)!=1) printf(文件写入错误n);exit(0); for(i=0;im;i+) fwrite(&si,sizeof(kf),1,fp1); fclose(fp1);fclose(fp2);/菜单选择模块void main() char yes_no; int choose;domenu();/显示菜单printf( );printf(请选择你需要的功能的编号: );scanf(%d,&choose);switch(choose)case 1 : input();break;case 2 :display();break;case 3:search();break; case 4:increse();break;case 5 :modi();break;case 0 :break; default :printf(n %d为非法选项! n,choose);if(choose=0) break;printf(n 继续请按Y,退出按Nn);doyes_no=getche();while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n);while(yes_no=Y|yes_no=y);