¡Buscamos ansiosamente el código fuente del sistema de gestión de vehículos C!
#includelt;iostreamgt;
#includelt;stringgt;
Usar namespace std;
#define MAX 2 //Número de espacios de estacionamiento en el estacionamiento
#define precio 0.5 //cargo por minuto
typedef struct time
{
int hora;
int min;
}Tiempo; //definir nodo de tiempo
typedef struct nodo
{ p>
string num;
Tiempo de llegada
Tiempo de salida
}CarNode; cada coche, el momento de entrada y el momento de salida
typedef struct NODE<
{
CarNode *stack[MAX 1];
int top;
}SeqStackCar; //definir con pila, construir estacionamiento
typedef struct car
{
CarNode * data ;
struct car *next;
}QueueNode; //definido con un nodo de cola, construye un único automóvil en espera fuera del estacionamiento
typedef struct Nodo
{
QueueNode *head
QueueNode *trasero
}LinkQueueCar
void InitStack( SeqStackCar *); //inicializa la declaración de la función de la pila
int InitQueue(LinkQueueCar *); //Inicializa la declaración de la función del nodo principal de la cola
int Arrival(SeqStackCar *, LinkQueueCar *); //Registrar declaración de función de entrada del vehículo
void Leave(SeqStackCar *, SeqStackCar *, LinkQueueCar *); //Declaración de función de salida del vehículo
void List(SeqStackCar, LinkQueueCar) /* Verificar el estado del vehículo en el estacionamiento y
Declaración de función de estado del vehículo en el derecho de paso*/
void main()
{
SeqStackCar Enter, Temp; //Pila inicial, pila de tránsito
LinkQueueCar Wait //Cola de carretera
int a;
InitStack; (y entrar)
;
InitStack(amp.Temp);
InitQueue(amp;Wait);//inicializar
mientras(1)
{
coutlt;lt; "************************************* ***** ************* **********************"lt;lt;endl;
coutlt;lt;" ¡Bienvenido al estacionamiento!" ;
coutlt;lt; "(*^__^*)! " ;
coutlt;lt;endllt; lt; "Registro de llegada del vehículo - gt; presione 1";
coutlt; "Registro de salida del vehículo - gt; presione 2" lt; lt; "Consulta de estacionamiento de vehículos -gt; presione 3";
coutlt;lt;" para salir del sistema -gt; presione 4"lt;lt;endl;//Configuración de opciones del sistema
mientras(1 )
{
cingt; a;
if(agt;=1amp;amp;a lt; =4) break;
else coutlt;lt;endllt;lt; "Por favor seleccione: 1~4.";
}
switch(a)
{
caso 1: Llegada(amp; Enter, amp.Wait break; //llamar a la función de estacionamiento entrante
caso 2: Salir( amp; Enter, amp Temp, amp ;Esperar); //llamar a la función de estacionamiento saliente
caso 3: Lista(Entrar, Esperar); >
caso 4: salir( 0);
valor predeterminado:
}
}
}
}
void InitStack(SeqStackCar *s) //Inicialización de la pila
{
s- gt=0;
s-gt; stack[ s-gt;top]=NULL;
}
int InitQueue(LinkQueueCar *Q)//Inicialización de cola
{
Q-gt; head=new QueueNode;
if (Q-gt; head! =NULL)
{
Q-gt; siguiente=NULL;
Q-gt; /p>
devolver 1;
}
de lo contrario devolver
}
void IMPRIMIR; (CarNode *p, int room) // Genera la información del vehículo que sale del estacionamiento
{
int A, B, C, D;
coutlt;lt; "\n Vehículos abandonados en ese momento:";
cingt;gt;p-gt;leave.hourgt; gt;p-gt;leave.min;
coutlt;lt;"/n El número de placa del vehículo que sale es: ";
coutlt;lt;p-gt ;num;
coutlt;lt;endllt;lt; "Su hora de llegada es: "lt;lt;p-gt;reach.hourlt;lt;": "lt;lt;p-gt; reach.min ;
coutlt;lt; "Su hora de salida es: "lt;lt;p-gt;reach.gt;leave.hourlt;lt;": "lt;lt;lt; p-gt ;salir.min;
A=p-gt;alcanzar.hora;
B=p-gt;alcanzar.min;
C =p- gt;leave.hour;
D=p-gt;leave.min;
coutlt;lt;endllt;lt; "La tarifa adeudada es:"lt; lt;( (C-A)*60 (D-B))*pricelt;lt;"$"lt;lt;lt;endl;
coutlt; "Registro de salida del vehículo completado!" endl;
coutlt;lt "************************************ ****** *******************************"lt;lt;endl;
eliminar p;
}
int Llegada(SeqStackCar *Enter, LinkQueueCar *W)
{
CarNode *p; p>
QueueNode *t;
p=nuevo CarNode;
coutlt "****************** *********** **************************************** *******"lt;lt ;endl;
coutlt;lt; "Inicia registro de llegada de vehículos:"lt;lt;endl;
coutlt;lt;endllt ;lt; "Por favor ingrese el número de placa:";
cingt;gt;p-gt;num;
if(Enter-gt;toplt;MAX)//If el espacio no está lleno entonces entra al estacionamiento
{
Enter-gt;top;
coutlt;lt;endllt;lt "Vehicles; en el estacionamiento"lt;lt;Enter-gt; toplt;lt; "Ubicación.
";
coutlt;lt;endllt;lt; "Hora de llegada del vehículo: ";
cingt;gt;p-gt;reach.hourgt;gt;p-gt;reach .min;
coutlt;lt;endllt;lt; "¡Registro de llegada del vehículo completado! " lt; lt; endl;
coutlt; lt; "********************************* *** *************************************"lt;lt;endl;
Enter-gt; stack[Enter-gt; top]=p; // p es un auto
return 1;
}
else // Si el espacio de estacionamiento está lleno, estacione en el carril derecho
{
coutlt;lt; *** ************************************************* **** *"lt;lt;endl;
coutlt;lt;endllt;lt; "¡Este vehículo debe esperar en el derecho de paso! Ingrese al estacionamiento cuando haya espacios"lt;lt;endl;
t=new QueueNode;
t-gt;data=p;
t - gt; siguiente=NULL;
W-gt; trasero-gt; siguiente=t;
W-gt.rear=t;
}
}
void Leave(SeqStackCar *Enter, SeqStackCar *Temp, LinkQueueCar *W)
{
int room;
CarNode *p, *t;
QueueNode *q; /p> p>
{
mientras(1)
{
coutlt;lt "*********** ****** ********************************************** ******* ******"lt;lt;endl;
coutlt;lt; "Se inicia el registro de salida del vehículo:"lt;lt;endl;
coutlt;lt; "Registro de salida del vehículo iniciado: "lt;lt;endl;
coutlt;lt;lt;endl;
coutlt;lt;endl;
Temp-gt; pila[Temp-gt;top]=NULL;
Temp-gt;top--;
}
coutlt; lt "**** ********************************** ********* ******* ****************"lt;lt;endl;
coutlt;lt; "Se registro de salida del vehículo
ttlement: "lt;lt;endl;
PRINT(p, habitación);
if ((W-gt; cabeza! = W-gt; trasero)amp;amp; Enter-gt; toplt; MAX)
{
q=W-gt; siguiente;
Enter-gt;top;
coutlt;lt;endllt;lt; "Derecho de paso de "lt;lt;t-gt;numlt;lt; número de ingreso al patio No."
coutlt;lt;Enter-gt;toplt;lt; "Ubicación. " << cingt; gt; t-gt; alcance.hourgt; gt; t-gt; alcance. min;
W-gt; head-gt; siguiente=q-gt; siguiente; p>
if(q==W-gt;trasero) W-gt;trasero=W-gt;cabeza;
Enter-gt;stack[Enter-gt;top]=t;
eliminar q;t-gt;reach.p>
Eliminar q;
}
else coutlt;lt;endllt; lt; "No hay autos en el derecho de vía. "lt;lt;lt;endl;
}
else coutlt;lt;endllt;lt; "No hay coches en el patio.
" lt; lt; endl;
}
void List1(SeqStackCar *S) // Definición de función para comprobar qué coches hay en el aparcamiento
{ p>
int i;
if(S-gt; topgt; 0)
{
coutlt;lt; ** ************************************************* *** *************"lt;lt;endl;
coutlt;lt;endllt;lt; "Estacionamiento Paradas internas de vehículos:"lt;lt; endl;
coutlt;lt;endllt;lt; "Lugar hora de llegada número de placa"lt;lt;endl;
for(i=1;ilt;=S-gt ;arriba;i )
{
coutlt;lt;i;
coutlt;lt;" "lt;lt;S-gt;pila[i ]-gt; alcance.hourlt;lt;":"lt;lt;S-gt;stack[i]-gt;reach.min;
coutlt;lt;" "lt;lt;S -gt;stack [i]-gt;numlt;lt;endl;
}
}
else coutlt;lt;endllt;lt; No hay coches en el garaje"lt;lt;endl;
coutlt;lt; "********************* ********* ******************************************* **"lt;lt;endl;
}
void List2( LinkQueueCar *W) // La definición de función se utiliza para verificar el estado de los automóviles estacionados en el derecho de paso
{
QueueNode *p;
p=W-gt; siguiente
if (W-gt; cabeza!=W-gt; trasero) p>
{
coutlt;lt; *************** ************************************* *"lt;lt;endl;
coutlt;lt;endllt;lt; "Estado de los vehículos estacionados en el derecho de vía:"lt;lt;endl;
mientras( ¡pag! =NULL)
{
coutlt;lt;endllt;lt; "Número de matrícula del vehículo:";
coutlt;lt;p-gt;data - gt.numlt;lt;endl;
p=p-gt;next;
}
}
else coutlt; lt ;endllt;lt; "No hay automóviles en el derecho de paso." **********************************************
*************"lt;lt;endl;
}
void List(SeqStackCar S, LinkQueueCar W) //Función de visualización de la lista de vehículos
{
int bandera, etiqueta;
bandera=1
mientras(bandera)
{
coutlt; lt; lt;
coutlt; lt; lt; ************************************************** * **********"lt;lt;lt;endl;
coutlt;lt; "Se ha iniciado la consulta de parada del vehículo:"lt;lt;endl;<
coutlt;lt;endllt;lt; "Por favor seleccione 1|2|3:"lt;lt;endl;
coutlt;lt; "1. Lista de estacionamientos"lt;lt;endllt ; lt; "2. Lista de derechos de paso"lt; endllt; lt; "
coutlt; lt; "1.volver al menú principal"lt; lt; endl;
mientras(1)
{
cingt;gt;tag;
if(taggt;=1||taglt;=3) romper ;
else coutlt;lt;endl;
coutlt;lt; "Por favor seleccione 1~3:";
}
switch( tag)
{
caso 1: List1(amp; S);
lt; "Consulta de parada del vehículo lt; ; endl ;break;
caso 2: List2(amp;W);
coutlt;lt; "¡Finaliza la consulta de parada del vehículo!" p>
caso 3: bandera=0; romper
Predeterminado: romper
}
}coutlt;lt; ** ******************************* ***************** **************"lt;lt;endl;
};