0% encontró este documento útil (0 votos)
21 vistas4 páginas

Sistema de Gestión de Parking en C

Cargado por

yy6161522
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas4 páginas

Sistema de Gestión de Parking en C

Cargado por

yy6161522
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>

#define MAX_PLAZAS 100


#define MAX_MATRICULA 8

typedef struct {
char matricula[MAX_MATRICULA];
int hora_entrada;
int minuto_entrada;
float tarifa;
} Vehiculo;

void inicializar_parking(Vehiculo parking[]);


int entrada_vehiculo(Vehiculo parking[]);
int consulta_vehiculo(Vehiculo parking[]);
int salida_vehiculo(Vehiculo parking[]);
void mostrar_ocupacion(Vehiculo parking[]);

int main() {
Vehiculo parking[MAX_PLAZAS];
int opcion;

inicializar_parking(parking);

do {
printf("\n\n");
printf("1. Entrada de un vehículo\n");
printf("2. Consulta de un vehículo\n");
printf("3. Salida de un vehículo\n");
printf("4. Mostrar ocupación\n");
printf("5. Salir\n");
printf("Introduce una opción (1-5): ");
scanf("%d", &opcion);

switch(opcion) {
case 1:
entrada_vehiculo(parking);
break;
case 2:
consulta_vehiculo(parking);
break;
case 3:
salida_vehiculo(parking);
break;
case 4:
mostrar_ocupacion(parking);
break;
case 5:
printf("Saliendo del programa...\n");
break;
default:
printf("Opción no válida. Inténtalo de nuevo.\n");
}
} while(opcion != 5);
return 0;
}

void inicializar_parking(Vehiculo parking[]) {


int i;

for(i = 1; i <= MAX_PLAZAS; i++) {


strcpy(parking[i].matricula, "");
}
}

int entrada_vehiculo(Vehiculo parking[]) {


int i, hora, minuto;
float tarifa;
char matricula[MAX_MATRICULA];

for(i = 1; i <= MAX_PLAZAS; i++) {


if(strcmp(parking[i].matricula, "") == 0) {
printf("Introduce la matrícula del vehículo: ");
scanf("%s", matricula);

printf("Introduce la hora actual (formato 24 horas): ");


scanf("%d", &hora);

printf("Introduce los minutos actuales: ");


scanf("%d", &minuto);

printf("Introduce la tarifa por minuto a aplicar: ");


scanf("%f", &tarifa);

if(strlen(matricula) != 7) {
printf("La matrícula introducida no es válida.\n");
return 0;
}

for(int j = 1; j <= MAX_PLAZAS; j++) {


if(strcmp(parking[j].matricula, matricula) == 0) {
printf("Ya hay un vehículo con esa matrícula en el parking.\
n");
return 0;
}
}

strcpy(parking[i].matricula, matricula);
parking[i].hora_entrada = hora;
parking[i].minuto_entrada = minuto;
parking[i].tarifa = tarifa;

printf("El vehículo ha sido introducido en la plaza %d.\n", i);


return 1;
}
}

printf("El parking está lleno. No se puede introducir el vehículo.\n");


return 0;
}

int consulta_vehiculo(Vehiculo parking[]) {


int i;
char matricula[MAX_MATRICULA];

printf("Introduce la matrícula del vehículo: ");


scanf("%s", matricula);

for(i = 1; i <= MAX_PLAZAS; i++) {


if(strcmp(parking[i].matricula, matricula) == 0) {
printf("El vehículo con matrícula %s está en la plaza %d desde las %d:
%d.\n", parking[i].matricula, i, parking[i].hora_entrada,
parking[i].minuto_entrada);
return 1;
}
}

printf("No se ha encontrado ningún vehículo con esa matrícula.\n");


return 0;
}
int salida_vehiculo(Vehiculo parking[]) {
int i, hora_salida, minuto_salida;
char matricula[MAX_MATRICULA];

printf("Introduce la matrícula del vehículo: ");


scanf("%s", matricula);

for(i = 1; i <= MAX_PLAZAS; i++) {


if(strcmp(parking[i].matricula, matricula) == 0) {
printf("Introduce la hora de salida (formato 24 horas): ");
scanf("%d", &hora_salida);

printf("Introduce los minutos de salida: ");


scanf("%d", &minuto_salida);

if(hora_salida < parking[i].hora_entrada || (hora_salida ==


parking[i].hora_entrada && minuto_salida <= parking[i].minuto_entrada)) {
printf("La hora de salida no es válida.\n");
return 0;
}

int tiempo_estancia = (hora_salida - parking[i].hora_entrada) * 60 +


(minuto_salida - parking[i].minuto_entrada);
float costo_estancia = tiempo_estancia * parking[i].tarifa / 60;

printf("El vehículo ha estado estacionado durante %d minutos. El costo


de la estancia es de %.2f euros.\n", tiempo_estancia, costo_estancia);

strcpy(parking[i].matricula, "");

return 1;
}
}

printf("No se ha encontrado ningún vehículo con esa matrícula.\n");


return 0;
}void mostrar_ocupacion(Vehiculo parking[]) {
int i, contador = 0;

for(i = 1; i <= MAX_PLAZAS; i++) {


if(strcmp(parking[i].matricula, "") != 0) {
printf("Plaza %d: %s\t", i, parking[i].matricula);
}

contador++;

if(contador == 10) {
printf("\n");
contador = 0;
}
}

printf("\n");
}

También podría gustarte