⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tingchechang.rar.txt

📁 这是本人做客城设计用的
💻 TXT
📖 第 1 页 / 共 2 页
字号:
  }
      Dequeue(q,x);//把最后一元素出队
      Enqueue(u,x);//在入到新队
      pop(s,y);
      push(y,s);
      for(sp=0;sp<qq;sp++)//把所有有元素从新队列进入原来的队列里面
      {
   Dequeue(u,x);
         Enqueue(q,x);
   }
  //判断时间是否比上一辆车的时间晚
        if(r.reach.hour>x.reach.hour||(r.reach.hour==x.reach.hour&&r.reach.min>=x.reach.min))
             if(r.reach.hour>y.carreach.hour||(r.reach.hour==y.carreach.hour&&r.reach.min>=y.carreach.min))
                if(r.reach.hour>w.carleave.hour||(r.reach.hour==w.carleave.hour&&r.reach.min>=w.carleave.min))
                   if(r.reach.hour>h.leave.hour||(r.reach.hour==h.leave.hour&&r.reach.min>=h.leave.min))
       {
         Enqueue(q,r);
            break;
       }
                     else
                    printf("\n进走道的时间应该比上一辆离开车库时间要晚");
                else
     printf("\n进走道的时间比上一辆离开走道时间要晚");
           else
             printf("这辆车辆不能比上一辆车进入车站时间早");
          else
           printf("这辆车辆不能比上一辆车进入车站时间早");
        
     }
  }
}
//进入停车场的函数
void jr(carsqstack &s,linkqueuecar &q,int t,int &qq,float &price1,float &price,carsqstack &p,linkqueuecar &u,time &money1,time &money2,carnode &r,carnode &h,carnode &w,carnode &he,carnode &we)
{
 int s0=0,i;
 printf("请输入车牌号码(例:桂A12345):");
 while(1)
 {
     scanf("%s",&r.carnumber);
        i=strlen(r.carnumber);
     if(i>15)
      printf("\n数据太长,输入数据无效,请重新新输入车牌号码(例:桂A12345):");
     else
  {
          pdcp(s,q,p,u,r,s0,qq);
       if(s0==0)break;
       else
           printf("\n车牌号不能相同,请重新新输入车牌号码(例:桂A12345): ");
  }
 }
    if(s.top-s.base<t)//判断车站是否满了。
     zk(s,r,price,money1,money2,w);
 else
 {
  cjzd(q,r,price1,qq,s,u,money1,money2,h,w);
  qq++;//走道上车的计数器
 }                                                                                                                                                                                            
}

//如果没有在走道上停车的车辆的总费用
void zt(carsqstack &s,carsqstack &p,linkqueuecar &q,int &qq,int &z,float &price1,float &price,int t,int o,int hq,carnode &w)
{
 int a,b,c,d;
 float zw;
     carnode w123;
 //出入车库的车辆的各项数据
 printf("\n离开的汽车的车牌好是%s",w.carnumber);
    printf("\n该车到达的时间是%d:%d",w.carreach.hour,w.carreach.min);
    printf("\n该车离开的时间是%d:%d",w.carleave.hour,w.carleave.min);
    a=w.carreach.hour;
    b=w.carreach.min;
    c=w.carleave.hour;
    d=w.carleave.min;
 zw=((c-a)*60+(d-b))*price;
    printf("\n该车需要付%2.2f元",zw);
     for(o=0;o<hq;o++)
  {
       pop(p,w123);
       push(w123,s);
  } 
}

//在走道停过的车辆离开车库的总费用
void tgzd(carsqstack &s,carsqstack &p,linkqueuecar &q,int &qq,int &z,float &price1,float &price,int t,int o,int hq,carnode &w)
{ 
  int a,b,c,d,a1,b1,c1,d1;
     carnode w123;
  //出入车库的车辆的各项数据
  printf("\n该车在走道等待过");
  printf("\n离开的汽车的车牌好是%s",w.carnumber);
     printf("\n该车到达的时间是%d:%d",w.carreach.hour,w.carreach.min);
     printf("\n该车离开的时间是%d:%d",w.carleave.hour,w.carleave.min);
     printf("\n该车到达走道的时间是%d:%d",w.reach.hour,w.reach.min);
     printf("\n该车离开走道的时间是%d:%d",w.leave.hour,w.leave.min);
     a=w.carreach.hour;
     b=w.carreach.min;
     c=w.carleave.hour;
     d=w.carleave.min;
     a1=w.reach.hour;
     b1=w.reach.min;
     c1=w.leave.hour;
     d1=w.leave.min;
  //在走道上停过的车,要付在走道上停车的钱和在车库里面停的钱
  printf("\n该车需要付%2.2f元",((c-a)*60+(d-b))*price+((c1-a1)*60+(d1-b1))*price1);
     hq=p.top-p.base;
     for(o=0;o<hq;o++)
  {
       pop(p,w123);
          push(w123,s);
  }
}

//车库不满,走道上有车,走道上的车辆将会自动进入车库
void zdjz(carsqstack &s,carsqstack &p,linkqueuecar &q,int &qq,int &z,float &price1,float &price,int t,carnode &r,time &money2,time &money1,carnode &h,carnode &w)
{  carnode e,g;
   Dequeue(q,e);
   g=e;
   pop(s,e);
   push(e,s);
   printf("\n车牌号码为%s的车子进入车库每分钟收费为%2.2f元",g.carnumber,price);
   //实现小时必须大于等于0小于24,分钟在0与60之间
   while(1)
   {
   sj1(g);
  
                    if(g.carreach.hour>w.carleave.hour||(g.carreach.hour==w.carleave.hour&&g.carreach.min>=w.carleave.min))
                       
                         break;
                         
                    else
                    printf("\n进站时间应该比上一辆离开车库时间要晚");
   }
               
        
  //进入停车场车库的时间等于离开停车场走道的时间
  g.leave.hour=g.carreach.hour;
  g.leave.min=g.carreach.min;
  push(g,s);
  qq--;//队列的计数器
 }
//离开停车场的函数
void lcar(carsqstack &s,carsqstack &p,linkqueuecar &q,int &qq,int &z,float &price1,float &price,int t,time &money1,time &money2,carnode &r,carnode &h,carnode &w,carnode &he,carnode &we)
{
 
 int i=0,n,o,hq,w5,w1;
 if(s.top-s.base==0)//判断停车场车库是否有车,没有车的话,自动返回停车场管理系统。
    printf("\t****WARN:停车场车库没有车辆可以离开,自动返回停车场管理系统\n");
 else
 {
      printf("哪一位的车辆需要离开,请输入1到%d: ",s.top-s.base);
   //防止越界
   while(1)
   {
        pdok(w5,w1);
  n=w5;
     if(w1==0&&n>0&&n<=s.top-s.base)break;
      else
        printf("\n请输入车库车位1到%d位:",s.top-s.base);
   }
       hq=s.top-s.base-n;//把要离开车辆前面车辆的数字附值给h
    for(o=0;o<hq;o++)
    {
  pop(s,w);
     push(w,p);
    }
       pop(s,w);//把需要离开的那辆车出栈
       printf("\t\t请输入汽车离开的时间\n");
      //实现小时必须大于等于0小于24,分钟在0与60之间
      while(1)
   {
   sj3(w);
   if(w.carleave.hour>money1.hour||(w.carleave.hour==money1.hour&&w.carleave.min>=money1.min))
         if(w.carleave.hour<money2.hour||(w.carleave.hour==money2.hour&&w.carleave.min<=money2.min)) 
         if(w.carreach.hour<w.carleave.hour||(w.carreach.hour==w.carleave.hour&&w.carreach.min<=w.carleave.min))
           if(w.carleave.hour>r.carreach.hour||(w.carleave.hour==r.carreach.hour&&w.carleave.min>=w.carreach.min))
                  if(w.carleave.hour>r.reach.hour||(w.carleave.hour==r.reach.hour&&w.carleave.min>=r.reach.min))
                      if(w.carleave.hour>h.leave.hour||(w.carleave.hour==h.leave.hour&&w.carleave.min>=h.leave.min))
                          if(w.carleave.hour>we.carleave.hour||(w.carleave.hour==we.carleave.hour&&w.carleave.min>=we.carleave.min))
          {
        we=w;
                             break;
          }
                               else
          printf("\n离开走道的时间要比上一辆离开走道的时间要晚");
       else
        printf("\n离开走道的时间要比上一辆离开车库的时间要晚");
                   else
                   printf("车辆离开的时间应该比刚进入的车辆的时间晚:\n");
               else
                  printf("车辆离开的时间应该比刚进入的车辆的时间晚:\n");
   else
   printf("车辆离开的时间要比该车进来的时间要晚:\n");
      else
     printf("%d:%d将开始营业,%d:%d将停止营业,输入时间请在这个之间 :\n",money1.hour,money1.min,money2.hour,money2.min);
 else
    printf("%d:%d将开始营业,%d:%d将停止营业,输入时间请在这个之间 :\n",money1.hour,money1.min,money2.hour,money2.min);
   }
   if(w.reach.hour==0&&w.reach.min==0&&w.leave.hour==0&&w.leave.min==0)//判断是否在走道上停过
          zt(s,p,q,qq,z,price1,price,t,o,hq,w);
    else
          tgzd(s,p,q,qq,z,price1,price,t,o,hq,w);
       if(s.top-s.base<z&&q.front!=q.rear)//判断如果栈不满,队列不满的情况
           zdjz(s,p,q,qq,z,price1,price,t,r,money2,money1,h,w);
 }
}

//离开停车场走道的函数
void lzd(linkqueuecar &q,linkqueuecar &u,int &qq,float &price1,float &price,int t,carsqstack &s,time &money1,time &money2,carnode &r,carnode &h,carnode &w,carnode &he,carnode &we)
{
  int n,nn,a,b,c,d,w5,w1; 
  carnode h1,h0;
  if(qq==0)//qq是队列的计数器,判断队列是否为空
  printf("\t***WARN:停车场走道没有车辆可以离开,自动返回停车场管理系统\n");
  else
  {
   pop(s,h1);
      push(h1,s);
      printf("在走道上哪一位需要离开,请输入车辆1到%d位: ",qq);
  //走道上有车的车位才能离开
      while(1)
   {
        pdok(w5,w1);
  n=w5;
     if(w1==0&&n>0&&n<=qq)break;
      else
         printf("\n输入无效,请输入走道车位1到%d:",s.top-s.base);
   }
     for(nn=1;nn<n;nn++)
  {
       Dequeue(q,h);
       Enqueue(u,h);
  }
     Dequeue(q,h);
  qq--;
     printf("请输入该车离开走道的时间:\n");
     //实现小时必须大于等于0小于24,分钟在0与60之间
  while(1)
  {
      sj4(h);
      if(h.leave.hour>h1.carreach.hour||(h.leave.hour==h1.carreach.hour&&h.leave.min>=h1.carreach.min))
           if(h.leave.hour>money1.hour||(h.leave.hour==money1.hour&&h.leave.min>=money1.min))
                if(h.leave.hour<money2.hour||(h.leave.hour==money2.hour&&h.leave.min<=money2.min))
                    if(h.reach.hour<h.leave.hour||(h.reach.hour==h.leave.hour&&h.reach.min<=h.leave.min))
                        if(h.leave.hour>r.reach.hour||(h.leave.hour==r.reach.hour&&h.leave.min>=r.reach.min))
                            if(h.leave.hour>w.carleave.hour||(h.leave.hour==w.carleave.hour&&h.leave.min>=w.carleave.min))
                               if(h.leave.hour>he.leave.hour||(h.leave.hour==he.leave.hour&&h.leave.min>=he.leave.min))
          {
        he=h;
                             break;
          }
                               else
          printf("\n离开走道的时间要比上一辆离开走道的时间要晚");
       else
        printf("\n离开走道的时间要比上一辆离开车库的时间要晚");
                         else
        printf("\n离开走道的时间要比最新进入车道的时间要晚");
     else
                      printf("\n离开的时间应该比进入的时间要晚");
                 else
                printf("%d:%d将开始营业,%d:%d将停止营业,输入时间请在这个之间 :\n",money1.hour,money1.min,money2.hour,money2.min);
          else
             printf("%d:%d将开始营业,%d:%d将停止营业,输入时间请在这个之间 :\n",money1.hour,money1.min,money2.hour,money2.min);
       else
    printf("\n离开走道的时间要比最新进入车道的时间要晚");
  }
     printf("\n离开的汽车的车牌好是%s",h.carnumber);
     printf("\n该车到达的时间是%d:%d",h.reach.hour,h.reach.min);
     printf("\n该车离开的时间是%d:%d",h.leave.hour,h.leave.min);
     a=h.reach.hour;
     b=h.reach.min;
     c=h.leave.hour;
     d=h.leave.min;
     printf("\n该车需要付%2.2f元\n",((c-a)*60+(d-b))*price1);
     for(nn=1;nn<n;nn++)
  {
        Dequeue(u,h0);
        Enqueue(q,h0);
  }
  }
}

//查看停车场车库的函数
void seec(carsqstack &s,carsqstack &p)
{
   int r;//r作为车库车位的计数器
   carnode w;
   if(s.top-s.base==0)//判断车库是否有车
      printf("\n车库上没有任何车辆");
   else
   {
       //让每一辆车都出栈,并输出它的信息,然后再把它压入一个新栈
    for(r=s.top-s.base;r>0;r--)
   {
       pop(s,w);
      printf("在车库%d位车牌是%s 进入车库的时间是%d:%d\n",r,w.carnumber,w.carreach.hour,w.carreach.min);
      push(w,p);
   }
    //把每一辆车的信息从新栈压原来的栈
      for(r=p.top-p.base;r>0;r--)
   {
       pop(p,w);
       push(w,s);
   }
   }
}

 

//查看停车场走道上的信息的函数
void seezd(linkqueuecar &q,linkqueuecar &u,int &qq)
{
 int i;
 carnode h;
 if(qq==0)//判断走道上有没有车
  printf("\n走道上没有任何车辆");
 else
 {
  //把停车场走道的车出队,输出它们的信息,再进入一个新队列
  for(i=1;i<=qq;i++)
  {
     Dequeue(q,h);
     printf("\n  在走道的%d位置上",i);
     printf("车牌号为%s,进入走道的时间是%d:%d\n",h.carnumber,h.reach.hour,h.reach.min);
           Enqueue(u,h);
  }
  //把新队列的信息在放到原来的队列里面
  
  for(i=1;i<=qq;i++)
  {
    Dequeue(u,h);
          Enqueue(q,h);
  }
  
 }
}

void prin()
{
  printf("\n     ******************************************************************");
  printf("\n     ****************欢迎您进入停车场管理系统!!!***********************");
  printf("\n     ******************************************************************");
}
//主函数
void main()
{
  carsqstack s,p;
  linkqueuecar q,u;
  int x,z,qq=0,w5,w1;
  float price,price1,zp;
  char mima[20];
  time money1,money2;
  carnode r,w,we,h,he;
  Initstack(s);
  Initstack(p);
  Initqueue(q);
  Initqueue(u);
  prin();
  printf("\n \t\t请输入进入停车场管理系统的密码:(初始为AMD)");
  while(1)
  {
   scanf("%s",&mima);
      if(!strcmp(mima,"AMD"))
    break;
   else
      printf("\n \t\t\tWARIN:密码错误!!!\n  \t\t请输入进入停车场管理系统的密码:(初始为AMD)");
  }
  system("cls");
  prin();
  printf("\n                    请输入停车场车库的车位有多少位:");
   while(1)
   {
        pdok(w5,w1);
  z=w5;
        if(w1==0&&z<=10000&&z>0)
        break;
        else
         printf("\n\t请输入不大于10000的正整数,请重新输入:");
   }
  printf("\n      ********************请输入停车场的收费标准************************\n");
  printf("\n                    停车场车库的收费为每分钟多少元: ");
  money(zp);
  price=zp;
  printf("\n                    停车场走道的收费为每分钟多少元: ");
  money(zp);
  price1=zp;
  printf("      \n\t营业开始时间为:  ");
  sj0(money1);
  printf("      \n\t营业结束时间为:");
   while(1)
   {
     sj0(money2);
      if(money1.hour<money2.hour||(money1.hour==money2.hour&&money1.min<money2.min))
     break;
      else
      printf("\n\t营业结束时间应该比营业开始时间晚,请重新输入:");
   }
  system("cls"); //清屏函数
  printf("\n           ********************************************************");
  printf("\n           ****停车场设置完毕,您可以开始使用停车场管理系统了!!****");
  printf("\n           ********************************************************\n");
  //主菜单
  printf("\n      ******************************************************************");
  printf("\n      ***            欢迎您进入停车场管理系统!!!    Ver5.0           ***");
  printf("\n      ******************************************************************\n");
  while(1)
  {
      printf("\n\t1、进入停车场 2、离开车库 3、离开走道 4、查看车库 5、查看走道 6、退出\n");
   printf("\n\t\t请选择你要实现的功能(请输入1到6进行选择):\n");
      while(1)
   {
        pdok(w5,w1);
  x=w5;
        if(w1==0&&x>=1&&x<=6)
         break;
        else
       printf("请输入1到7");
   }
  //函数选折
       switch(x)
    {
         case 1:jr(s,q,z,qq,price1,price,p,u,money1,money2,r,h,w,he,we);break;//进入停车场
         case 2:lcar(s,p,q,qq,z,price1,price,z,money1,money2,r,h,w,he,we);break;//离开停车场车库
         case 3:lzd(q,u,qq,price1,price,z,s,money1,money2,r,h,w,he,we);break;//离开停车场走道
         case 4:seec(s,p);break;//查看停车场车库的信息
         case 5:seezd(q,u,qq);break;//查看停车场走道的信息
   case 6:exit(0);break;//退出
         default:break;
    }
  }
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -