Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Buscamos ansiosamente el código fuente del sistema de gestión de vehículos C!

¡Buscamos ansiosamente el código fuente del sistema de gestión de vehículos C!

Revisa la operación y comenta en detalle, jaja

#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

{

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;

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

{

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)

{

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;

};