系统框架:
![C语言实训之酒店管理系统_第1张图片](http://img.e-com-net.com/image/info8/3709f93ad8c64ba8b37e0e1d948989b5.jpg)
代码:
#include
#include
#include
int dan=988,shuang=1299,tao=2998;
int sdan=1000,sshuang=600,stao=200;
int Day;
int num=0;
long N=10000000;
struct DINGDAN
{
long hao;
struct YHXX *p;
};
struct DINGDAN Dingdan[2000];
struct YHXX
{
char ID[18];
char name[10];
char sex;
int rooms;
char rooml;
int rday[3];
int sday;
long dingdanhao;
};
struct YHXX yhxx[2000];
void zhucaidan()
{
printf("\n\n");
printf("\t\t******大壮酒店管理系统******\n");
printf("\t\t* 1.:用户信息查询 *\n");
printf("\t\t* 2.:客房经营管理 *\n");
printf("\t\t* 3.:客房管理 *\n");
printf("\t\t****************************\n\n");
}
void caidan1()
{
printf("\n");
printf("\t\t--------用户信息查询--------\n");
printf("\t\t* 1.:按订单号查询 *\n");
printf("\t\t* 2.:按姓名查询 *\n");
printf("\t\t* 3.:按身份证号查询 *\n");
printf("\t\t* 4.:用户信息目录 *\n");
printf("\t\t----------------------------\n\n");
}
void caidan2()
{
printf("\n");
printf("\t\t--------客房经营管理--------\n");
printf("\t\t* 1.:预定客房或登记入住*\n");
printf("\t\t* 2.:退房操作 *\n");
printf("\t\t* 3.:客房状态 *\n");
printf("\t\t----------------------------\n\n");
}
void caidan3()
{
printf("\n");
printf("\t\t----------房间管理----------\n");
printf("\t\t* 1.:更改房价 *\n");
printf("\t\t* 2.:增加客房 *\n");
printf("\t\t* 3.:减少客房 *\n");
printf("\t\t----------------------------\n\n");
}
void save()
{
FILE *fp;
if((fp=fopen("kehu","wb"))==NULL)
{
printf("\t\tcannot open file\n");
return;
}
fseek(fp,0L,2);
if(fwrite(&yhxx[num],sizeof(struct YHXX),1,fp)!=1)
printf("\t\tfile write error\n");
fclose(fp);
}
void print()
{
int i,t=0;
FILE *fp;
if((fp=fopen("kehu.dat","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
rewind(fp);
for(i=0;i<num;i++)
{
fread(&yhxx[i],sizeof(struct YHXX),1,fp);
printf("\t\t姓名:%s\t",yhxx[i].name);
if(yhxx[i].sex=='Y') printf("性别: 男\n");
else printf("性别 女\n");
printf("\t\t身份证号:%s\n",yhxx[i].ID);
printf("\t\t入住日期: %d %d %d",yhxx[i].rday[0],yhxx[i].rday[1],yhxx[i].rday[2]);
printf(" 入住时间: %d\n",yhxx[i].sday);
t=1;
}
if(t==0) printf("\t\t 无用户信息!\n");
fclose(fp);
}
void H()
{
int x;
char ch;
Hto:
printf("\t\t豪华单间:D 豪华双人:S 贵宾套房:T\n");
printf("\t\t请输入房间类型和更改后价格: ");
scanf("%c %d",&ch,&x);
switch(ch)
{
case 'D':dan=x;break;
case 'S':shuang=x;break;
case 'T':tao=x;break;
default : goto Hto;
}
printf("\t\t更改后分别为:\n\t\t%d %d %d\n\t\t",dan,shuang,tao);
}
void I()
{
int x;
char ch;
Ito:
printf("\t\t豪华单间:D 豪华双人:S 贵宾套房:T\n");
printf("\t\t请输入房间类型和增加数量: ");
scanf("%c %d",&ch,&x);
switch(ch)
{
case 'D':sdan+=x;break;
case 'S':sshuang+=x;break;
case 'T':stao+=x;break;
default : goto Ito;
}
printf("\t\t更改后分别为:%d %d %d\n\t\t",sdan,sshuang,stao);
}
void J()
{
int x;
char ch;
Jto:
printf("\t\t豪华单间:D 豪华双人:S 贵宾套房:T\n");
printf("\t\t请输入房间类型和减少数量: ");
scanf("%c %d",&ch,&x);
switch(ch)
{
case 'D':sdan-=x;break;
case 'S':sshuang-=x;break;
case 'T':stao-=x;break;
default : goto Jto;
}
printf("\t\t更改后分别为:%d %d %d\n\t\t",sdan,sshuang,stao);
}
void DE()
{
char lroom;
int sroom;
int jiner=0;
printf("\t\t订房功能\n");
to:
printf("\t\t豪华单间:D 豪华双人:S 贵宾套房:T\n");
printf("\t\t请输入房间类型:");
getchar();
scanf("%c",&lroom);
printf("\t\t数量:");
scanf("%d",&sroom);
switch(lroom)
{
case 'D':jiner=sroom*dan;sdan-=sroom;break;
case 'S':jiner=sroom*shuang;sshuang-=sroom;break;
case 'T':jiner=sroom*tao;stao-=sroom;break;
default:goto to;
}
if((lroom=='D'&&sroom<=sdan)||(lroom=='S'&&sroom<=sshuang)||(lroom=='T'&&sroom<=stao))
{
printf("\t\t请输入您的信息: \n");
printf("\t\t姓名: ");
scanf("%s",yhxx[num].name);
getchar();
printf("\t\t性别: (男:Y 女:X) :");
scanf("%c",&yhxx[num].sex);
printf("\t\t身份证ID: ");
scanf("%s",yhxx[num].ID);
printf("\t\t入住日期: ");
scanf("%d %d %d",&yhxx[num].rday[0],&yhxx[num].rday[1],&yhxx[num].rday[2]);
printf("\t\t入住时间: ");
scanf("%d",&yhxx[num].sday);
printf("\t\t订单总额:%d\n",jiner*yhxx[num].sday);
N+=jiner;jiner=0;
yhxx[num].rooms=sroom;
yhxx[num].rooml=lroom;
yhxx[num].dingdanhao=100000+num;
save();
Dingdan[num].hao=yhxx[num].dingdanhao;
Dingdan[num].p=&yhxx[num];
printf("\t\t订单号:%ld\n",yhxx[num].dingdanhao);
num++;
printf("\t\t订购成功!\n");
}
}
void F()
{
int i,j,t=0;
char name1[10],ID1[18];
printf("\t\t退房操作:\n");
printf("\t\t请输入姓名: ");
scanf("%s",name1);
printf("\n\t\t请输入身份证号:");
scanf("%s",ID1);
for(i=0;i<num;i++)
{
if(strcmp(name1,yhxx[i].name)==0&&strcmp(ID1,yhxx[i].ID)==0)
{
switch(yhxx[i].rooml)
{
case 'D':N-=yhxx[i].rooms*dan;
case 'S':N-=yhxx[i].rooms*shuang;
case 'T':N-=yhxx[i].rooms*tao;
}
for(j=i-1;i<num;j++,i++)
{
strcpy(yhxx[j].ID,yhxx[i].ID);
strcpy(yhxx[j].name,yhxx[i].name);
yhxx[j].sex=yhxx[i].sex;
yhxx[j].rooms=yhxx[i].rooms;
yhxx[j].rooml=yhxx[i].rooml;
yhxx[j].sday=yhxx[i].sday;
yhxx[j].rday[0]=yhxx[i].rday[0];
yhxx[j].rday[1]=yhxx[i].rday[1];
yhxx[j].rday[1]=yhxx[i].rday[1];
}
num--;
t=1;
break;
}
else printf("\t\t查询到无此用户!");
}
if(t==1)printf("\t\t退房成功!\n");
}
void G()
{
printf("\t\t空余客房:豪华单间:%d 豪华双间:%d 豪华套房:%d\n",1000-sdan,600-sshuang,200-stao);
printf("\t\t\t现金流:%ld\n",N);
}
void A()
{
int i,t=0;
long h;
struct YHXX *p0;
printf("\t\t请输入订单号:");
scanf("%ld",&h);
for(i=0;i<num;i++)
{
if(h==Dingdan[i].hao)
{
p0=Dingdan[i].p;
printf("\t\t姓名:%s\t",p0->name);
if(p0->sex=='Y') printf("性别: 男\n");
else printf("性别 女\n");
printf("\t\t身份证号:%s ",p0->ID);
switch(yhxx[i].rooml)
{
case 'D':printf(" 豪华单间: %d\n",p0->rooms);break;
case 'S':printf(" 豪华双间: %d\n",p0->rooms);break;
case 'T':printf(" 豪华套房: %d\n",p0->rooms);break;
}
printf("\t\t入住日期: %d %d %d",p0->rday[0],p0->rday[1],p0->rday[2]);
printf(" 入住时间: %d\n",p0->sday);
t=1;
break;
}
}
if(t==0) printf("\t\t客户信息不存在!\n");
}
void B()
{
int i,t=0;
FILE *fp;
char names[10];
printf("\t\t请输入姓名:");
scanf("%s",names);
if((fp=fopen("kehu.dat","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
rewind(fp);
for(i=0;i<num;i++)
{
fread(&yhxx[i],sizeof(struct YHXX),1,fp);
if(strcmp(names,yhxx[i].name)==0)
{
printf("\t\t姓名:%s\t",yhxx[i].name);
if(yhxx[i].sex=='Y') printf("性别: 男\n");
else printf("性别 女\n");
printf("\t\t身份证号:%s",yhxx[i].ID);
switch(yhxx[i].rooml)
{
case 'D':printf(" 豪华单间: %d\n",yhxx[i].rooms);break;
case 'S':printf(" 豪华双间: %d\n",yhxx[i].rooms);break;
case 'T':printf(" 豪华套房: %d\n",yhxx[i].rooms);break;
}
printf("\t\t入住日期: %d %d %d",yhxx[i].rday[0],yhxx[i].rday[1],yhxx[i].rday[2]);
printf(" 入住时间: %d\n",yhxx[i].sday);
t=1;
break;
}
}
if(t==0) printf("\t\t客户信息不存在!\n");
fclose(fp);
}
void C()
{
int i,t=0;
FILE *fp;
char ids[10];
printf("\t\t请输入身份证号:");
scanf("%s",ids);
if((fp=fopen("kehu.dat","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
rewind(fp);
for(i=0;i<num;i++)
{
fread(&yhxx[i],sizeof(struct YHXX),1,fp);
if(strcmp(ids,yhxx[i].ID)==0)
{
printf("\t\t姓名:%s\t",yhxx[i].name);
if(yhxx[i].sex=='Y') printf("性别: 男\n");
else printf("性别 女\n");
printf("\t\t身份证号:%s",yhxx[i].ID);
switch(yhxx[i].rooml)
{
case 'D':printf(" 豪华单间: %d\n",yhxx[i].rooms);break;
case 'S':printf(" 豪华双间: %d\n",yhxx[i].rooms);break;
case 'T':printf(" 豪华套房: %d\n",yhxx[i].rooms);break;
}
printf("\t\t入住日期: %d %d %d",yhxx[i].rday[0],yhxx[i].rday[1],yhxx[i].rday[2]);
printf(" 入住时间: %d\n",yhxx[i].sday);
t=1;
break;
}
}
if(t==0) printf("\t\t客户信息不存在!\n");
fclose(fp);
}
void zhukongzhi()
{
int x1,x2;
rrr:
zhucaidan();
printf("\t\t请输入选项:");
scanf("%d",&x1);
if(x1==1)
{
qqq:
caidan1();
printf("\t\t请输入选项:");
scanf("%d",&x2);
switch(x2)
{
case 1:A();break;
case 2:B();break;
case 3:C();break;
case 4:print();break;
default: goto qqq;
}
}
else if(x1==2)
{
www:
caidan2();
printf("\t\t请输入选项:");
scanf("%d",&x2);
switch(x2)
{
case 1:DE();break;
case 3:F();break;
case 4:G();break;
default: goto www;
}
}
else if(x1==3)
{
eee:
caidan3();
printf("\t\t请输入选项:");
scanf("%d",&x2);
switch(x2)
{
case 1:H();break;
case 2:I();break;
case 3:J();break;
default: goto eee;
}
}
else goto rrr;
}
int main()
{
int x=0;
do
{
zhukongzhi();
printf("\t\t--------是否需要继续?--------\n");
printf("\t\t----回复: 1 (继续): 0 (结束)----\n\t\t请选择:");
scanf("%d",&x);
}while(x);
return 0;
}