停车场收费系统

时间:2021-10-07 03:19:07

要求

停车场收费系统
1,停车(车辆信息(车牌号),进入时间)
2,显示(收费(每分钟收费--元)+停车场容量(总多少量,有多少量,还可以放多少两))
3,离开(打印信息停车多长时间,收多少钱;清除数据)
4,退出(exit(1));


/*****************************************************
copyright (C), 2014-2015, Jinling Institute of Tecnology
File name:1.c
Author: Zhang.Y.F  Version:0.1    Date: 2018-01-14 18:49
Description:
Funcion List:
*****************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct Node//定义一个结构体用来存放车辆信息,车牌号,进入时间等
{
 
 char car[10];
 struct Node *next;
 time_t start;
 int flag;//用来辨别当前节点内有没有车
}Node,*LinkList;
void Create(LinkList L)//创建一个有而是个元素的链表,长度限定了,后面也不再改变(传的是二极指针)
{
 char car[10];
 LinkList p,s;
 int i=0;
 p=L->next=(LinkList)malloc(sizeof(Node));
 printf("请输入车牌号\n");
 scanf("%s",p->car);
 p->start=time(NULL);
 p->flag=1;
 i=1;
 while(i<5)
 {
  printf("请输入车牌号\n");
  s=(LinkList)malloc(sizeof(Node));
  scanf("%s",s->car);
  s->start=time(NULL);
  s->flag=1;
  //s->next=p;
  //L->next=s;
  //p=s;
  s->next=p->next;
  p->next=s;
  p=s;
  i++;
 }
}
void OutCar(LinkList L)
{
 char car[10];
 printf("输入你想要出库的车\n");
 scanf("%s",car);
 LinkList p;
 p=L->next;
 time_t end;
 int h1,m1,s1;
 int h2,m2,s2;
 h1=0;
 m1=0;
 s1=0;
 h2=0;
 m2=0;
 s2=0;
 
 while(p)
 {
  if(strcmp(p->car,car)==0)
   break;
  p=p->next;
 }
 if(p!=NULL)
 {
  end=time(NULL);
  s1=p->start%60;
  m1=p->start%3600/60;
  h1=(p->start%(3600*24)/3600+8);
  s2=end%60;
  m2=end%3600/60;
  h2=(end%(3600*24)/3600+8);
  printf("车辆信息如下\n");
  printf("车牌号:%s\n",p->car);
  printf("进入时间:%02d:%02d:%02d:\n",h1,m1,s1);
  printf("出库时间:%02d:%02d:%02d:\n",h2,m2,s2);
  printf("收费%d",5*(end-(p->start)));
  p->flag=0;
   
 }
 else
  printf("查无此车\n");
 
}
void InCar(LinkList L)
{
 LinkList p;
 p=L->next;
 char car[10];
 while(p)
 {
  if(p->flag==0)
  break;
  p=p->next;
 }
 if(p!=NULL&&p->flag==0)//有空位
 {
  printf("请输入进入车辆的车牌号");
  scanf("%s",p->car);
  p->start=clock();
  p->flag=1;
  
 }
 else
  printf("车库满了\n");
 
}
void PrintList(LinkList L)
{
 LinkList p;
 p=L->next;
 printf("车辆信息如下\n");
 int h,m,s;
 h=0;
 m=0;
 s=0;
 int i=1;
 while(p)
 {
  s=p->start%60;
  m=p->start%3600/60;
  h=(p->start%(3600*24)/3600+8);
  if(p->flag!=0)
  {
   printf("%d号停车位已停车\n",i);
   printf("车牌号:%s\n",p->car);
   printf("进入时间:%02d:%02d:%02d:\n",h,m,s);
  }
  else
   { 
    printf("%d号停车位未停车,欢迎来停\n",i);
    //printf("这块没车,欢迎来停\n");
   }
  p=p->next;
  i++;
 }
}
int main(int argc, char **argv)
{

 printf("**************欢迎来到停车厂,我要收费了**************\n");
 printf("**************输入你想要的操作*****************\n");
 //printf("输入i就入库,输入o就出库,输入p打印所有车辆信息,输入e结束这些操作\n");
 LinkList L;

 Create(L);

 LinkList p=L;
 char c;
 while(1)
 { 
  printf("输入i就入库,输入o就出库,输入p打印所有车辆信息,输入e结束这些操作\n");
  scanf("%c",&c);
  //getchar();
  switch(c)
  {
   case 'i':InCar(p);break;
   case 'o':OutCar(p);break;
   case 'p':PrintList(p);break;
   case 'e':exit(1);break;
  }
  
 }

    return 0;
}