C语言实现酒店管理系统

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
struct data{
char id[13];
char name[10];
char phone[12];
char intime[5];
char outtime[5];
char ordertime[5];
int vipoint;
int svipoint;
struct data *next;
};
int z=0;//计算节点长度
void main()
{
struct data *head=NULL;
struct data *s,*p,*ne,*cur,*pre,*q,*m;
int a,b,c=0,k[40],n,o,i,x,j;
char h[13],id[13];
time_t start ,end ;  
    double cost;
for(;a!=5;)
{
printf("****************************************\n");
printf("*             1.order room             *\n");
printf("*             2.check in               *\n");
printf("*             3.check out              *\n");
printf("*             4.see spare room         *\n");
printf("*             5.quit                   *\n");
printf("****************************************\n");
printf("choose the function \n");
scanf("%d",&a);
switch (a){
case 1:
printf("room type:1.standard 2.business 3.special discount room 4.hourly rate room\n");
scanf("%d",&b);
switch (b){
case 1:printf("────────────\n");
  printf("room number 101~110\n");
  printf("────────────\n");
  printf("price 100/day\n");
  printf("────────────\n");
  printf("clean level ★★★★★\n");
  printf("────────────\n");
  printf("offer breakfast \n");
  printf("────────────\n");
  printf("people number: ");
  scanf("%d",&b);
  for(i=0;i<b;i++)
  {
  z++;
  ne=(struct data*)malloc(sizeof(struct data));
  printf("enter the information:\n");
  printf("id: ");    scanf("%s",ne->id);
  printf("name: ");   scanf("%s",ne->name);
  printf("order time: ");   scanf("%s",ne->ordertime);
  printf("in time: ");    scanf("%s",ne->intime);
  ne->vipoint=0; ne->svipoint=0;
  if(head==NULL)
  head=ne;
  else
  {
  ne->next=head;
              head=ne;
  }
  }
  k[c]=rand()%4+101;
  printf(" room is %d\n",k[c]);
  c++;
  break; 
case 2:printf("────────────\n");
  printf("room number 111~120\n");
  printf("────────────\n");
  printf("price 180/day\n");
  printf("────────────\n");
  printf("clean level ★★★★★★★★\n");
  printf("────────────\n");
  printf("breakfast business remind function and shuttle service");
  printf("────────────────────────────\n");
  printf("people number: ");
  scanf("%d",&b);
  for(i=0;i<b;i++)
  {
  z++;
  ne=(struct data*)malloc(sizeof(struct data));
  printf("enter the information:\n");
  printf("id: ");    scanf("%s",ne->id);
  printf("name: ");   scanf("%s",ne->name);
  printf("norder time: ");   scanf("%s",ne->ordertime);
  printf("in time: ");    scanf("%s",ne->intime);
    ne->vipoint=0; ne->svipoint=0;
  if(head==NULL)
  head=ne;
  else
  {
  ne->next=head;
              head=ne;
  }
  }
  k[c]=rand()%4+201;
  printf("the room is %d\n",k[c]);
  c++;
  break;
   case 3:printf("────────────\n");
  printf("room number 121~130\n");
  printf("────────────\n");
  printf("price 20/hour\n");
  printf("────────────\n");
  printf("clean level ★★★★\n");
  printf("────────────\n");
  printf("people number: ");
  scanf("%d",&b);
  for(i=0;i<b;i++)
  {
  z++;
    ne=(struct data *)malloc(sizeof(struct data));
  printf("enter the information:\n");
  printf("id: ");    scanf("%s",ne->id);
  printf("name: ");   scanf("%s",ne->name);
  printf("order time: ");   scanf("%s",ne->ordertime);
  printf("in time: ");    scanf("%s",ne->intime);
    ne->vipoint=0; ne->svipoint=0;
  if(head==NULL)
  head=ne;
  else
  {
  ne->next=head;
              head=ne;
  }
  }
  k[c]=rand()%4+301;
  printf("the room is %d\n",k[c]);
  c++;
  break;
case 4:printf("────────────\n");
  printf("room number 130~140\n");
  printf("────────────\n");
  printf("price 80/day\n");
  printf("────────────\n");
  printf("clean level ★★★\n");
  printf("────────────\n");
  printf("offer breakfast ");
  printf("────────────\n");
  printf("people number: ");
  scanf("%d",&b);
  for(i=0;i<b;i++)
  {
  z++;
  ne=(struct data *)malloc(sizeof(struct data));
  printf("enter the information:\n");
  printf("id: ");    scanf("%s",ne->id);
  printf("name: ");   scanf("%s",ne->name);
  printf("order time: ");   scanf("%s",ne->ordertime);
  printf("in time: ");    scanf("%s",ne->intime);
    ne->vipoint=0; ne->svipoint=0;
  if(head==NULL)
  head=ne;
  else
  {
  ne->next=head;
              head=ne;
  }
  }
  k[c]=rand()%4+401;
  printf("the room is %d\n",k);
  break;
    default:printf("wrong!");
  break;
}
break;
case 2: printf("enter the id number:");//check in
scanf("%s",id);
s=head;
for(i=0;i<z;i++)
{
if(strcmp(id,s->id)==0)
{
printf("finish checking in\n");
time(&start);
}
else
printf("you must order first!\n");
s=s->next;
}
break;
case 3:printf("if VIP or SVIP or ORINATR(1,2,3) ");
scanf("%d",&o);
p=head;
if(o==1)
{
printf("enter the id number:  ");
scanf("%s",h);
printf("enter the room number: ");
scanf("%d",&n);
for(i=0;i<z;i++)
{
if(strcmp(p->id,h)==0)
{
printf("finish check out!\n");
k[i]=0;
time(&end);
cost=difftime(end,start);
x=(int)cost/60/60/24;
if(n/100==1)//according to room number to calculate the charge
{
if(x==0)
{
printf("the bill is 100\n");
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint+1);
}
if(x!=0)
{
printf("the bill is %d",100*x);
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint);
}
}
if(n/100==2)
{
if(x==0)
{
printf("the bill is 180\n");
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint);
}
else
{
printf("the bill is %d",100*x);
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint+1);
}
}
if(n/100==3)
{
if(x==0)
{
printf("the bill is 80\n");
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint+1);
}
else
{
printf("the bill is %d",80*x);
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint+1);
}
}
if(n/100==4)
{
if(cost/3600==0)
{
printf("the bill is 20\n");
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint);
}
else
{
printf("the bill is %d\n",x*24*20);
p->vipoint=p->vipoint+1;
printf("the VIP point is %d\n",p->vipoint);
}
}
}
p=p->next;
}
}
if(o==2)
{
printf("enter room number: ");
scanf("%d",&n);
printf("enter the id number:  ");
scanf("%s",&h);
for(i=0;i<z;i++)
{
if(strcmp(h,p->id)==0)
{
printf("finish check out!\n");
time(&end);
k[i]=0;
cost=difftime(end,start);
x=(int)cost/60/60/24;
if(n/100==1)
{
if(x==0)
{
printf("the bill is 100\n");
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}
else
{
printf("the bill is %d",80*x);
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint+1);
}
}
if(n/100==2)
{
if(x==0)
{
printf("the bill is 180\n");
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}
else
{
printf("the bill is %d",100*x);
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}

}
if(n/100==3)
{
if(x==0)
{
printf("the bill is 80\n");
   p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}
else
{
printf("the bill is %d",80*x);
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}

}
if(n/100==4)
{
if((int)cost/60/60==0)
{
printf("the bill is 20\n");
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}
else
{
printf("the bill is %d\n",cost/180);
p->svipoint=p->svipoint+1;
printf("the SVIP point is %d\n",p->svipoint);
}


}
}
p=p->next;
}
}
if(o==3)
{
printf("enter room number: ");
scanf("%d",&n);
printf("enter the id number:  ");
scanf("%s",h);
for(cur=head,pre=NULL;cur!=NULL&&strcmp(cur->id,h)!=0;pre=cur,cur=cur->next)
;
if(cur==NULL)

if(pre==NULL)
head=head->next;
else
pre->next=cur->next;
z--;
k[i]=0;
printf("finish check out!\n");
time(&end);
cost=difftime(end,start);
x=(int)cost/60/60/24;
if(n/100==1)
{
if(x==0)
{
printf("the bill is 100\n");

}
else
printf("the bill is %d",100*x);

}
if(n/100==2)
{
if(x==0)
{
printf("the bill is 180\n");
}
else
printf("the bill is %d",100*x);
}
if(n/100==3)
{
if(x==0)
{
printf("the bill is 80\n");
}
else
printf("the bill is %d",80*x);
}
if(n/100==4)
{
if(cost/3600==0)
{
printf("the bill is %d\n",x*24*20);
}
else
printf("the bill is %d\n",x*24*20);
}
}
break;
case 4:printf("the spare room is:  ");
  for(i=0;i<c;i++)
  {
  for(j=101;j<=140;j++)
  {
  if(k[i]!=j)
  printf("%d\t",j);
  }
  }
  printf("\n");
  break;
case 5:printf("ending!"); break;
default: printf(" ending !");
break;
}
}
q=head;
m=q;
for(i=0;i<z;i++)
{
free(m);
}
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值