#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char marca[100];
char modelo[100];
char identificacion[100];
}coche;
int menu(void);
void listarTodo (coche *lis);
int rellenar (coche *rel);
void eliminar (char *iden, coche *bor);
void limpiarLista (coche *limp);
int guardarLista (coche *guardar);
int cargarLista (coche *cargar);
int main(void){
int entradamenu;
char numero[10];
coche datos[10];
limpiarLista(datos);
do{
entradamenu = menu();
switch(entradamenu){
case 1:
system("cls");
listarTodo(datos);
system("pause");
break;
case 2:
system("cls");
rellenar(datos);
system("pause");
break;
case 3:
system("cls");
fprintf(stdout,"Introduzca el numero de identificacion del coche que quiere borrar: ");
fflush(stdin);
fscanf(stdin, "%s", numero);
eliminar(numero,datos);
system("pause");
break;
case 4:
system("cls");
limpiarLista(datos);
fprintf(stdout, "La lista de coches ha sido eliminada.\n");
system("pause");
break;
case 5:
system("cls");
guardarLista(datos);
fprintf(stdout, "Lista guardada.\n");
system("pause");
break;
case 6:
system("cls");
cargarLista(datos);
fprintf(stdout, "Lista cargada.\n");
system("pause");
break;
default:
break;
}
}while (entradamenu != 7);
}
int menu(void){
system("cls");
int numenu;
fprintf(stdout,"1. Listar todos los coches.\n");
fprintf(stdout,"2. A%cadir coche.\n",164);
fprintf(stdout,"3. Borrar un coche.\n");
fprintf(stdout,"4. Limpiar toda la lista.\n");
fprintf(stdout,"5. Guardar.\n");
fprintf(stdout,"6. Cargar.\n");
fprintf(stdout,"\n7. Salir.\n");
fprintf(stdout, "Elija numero: ");
fscanf(stdin, "%d", &numenu);
return numenu;
}
void listarTodo (coche *lis){
int i, nn = 0;
for (i = 0; i<10; i++){
if (strcmp(lis[i].marca, "") != 0){
fprintf(stdout, "Marca: %s\n", lis[i].marca);
fprintf(stdout, "Modelo: %s\n", lis[i].modelo);
fprintf(stdout, "Identificacion: %s\n\n", lis[i].identificacion);
}
if (strcmp(lis[i].marca, "") == 0){
nn++;
}
}
fprintf(stdout, "Quedan %d huecos libres en la lista. \n", nn);
}
int rellenar (coche *rel){
char nuevoMarca[100];
char nuevoModelo[100];
char nuevoIden[10];
int i, nn = 0;
int encontrado = 0;
for (i=0; i<10 && !encontrado; i++){
if (strcmp(rel[i].marca, "") == 0) {
nn = i;
encontrado = 1;
}
}
if (encontrado == 1){
fprintf(stdout, "Introduzca la marca del coche: ");
fflush(stdin);
fscanf(stdin, "%s", nuevoMarca);
fprintf(stdout, "Introduzca el modelo del coche: ");
fflush(stdin);
fscanf(stdin, "%s", nuevoModelo);
fprintf(stdout, "Introduzca el numero de identificacion del coche: ");
fflush(stdin);
fscanf(stdin, "%s", nuevoIden);
strcpy(rel[nn].marca, nuevoMarca);
strcpy(rel[nn].modelo, nuevoModelo);
strcpy(rel[nn].identificacion, nuevoIden);
}else fprintf(stdout, "ERROR: La operacion no ha podido completarse. El limite de coches es 10.\n");
}
void eliminar (char *iden, coche *bor){
int i, nn, encontrado = 0;
for (i=0; i<10 && !encontrado; i++){
if (strcmp(bor[i].identificacion, iden) == 0 ){
nn = i;
encontrado = 1;
}else encontrado = 2;
}
if (encontrado == 1){
strcpy(bor[nn].marca, "");
strcpy(bor[nn].modelo, "");
strcpy(bor[nn].identificacion, "");
fprintf(stdout, "El coche ha sido eliminado.\n");
}
if (encontrado == 2){
fprintf(stdout, "ERROR: El numero de identificacion introducido no se encuentra en la lista.\n");
}
}
void limpiarLista (coche *limp){
int i;
for (i=0; i<10; i++){
strcpy(limp[i].marca, "");
strcpy(limp[i].modelo, "");
strcpy(limp[i].identificacion, "");
}
}
int guardarLista (coche *guardar){
FILE *ab;
int i;
ab = fopen("coches.txt", "wt");
if (!ab){
fprintf(stdout, "No se ha podido guardar la lista de coches.\n");
return 1;
}
for(i = 0; i < 10 && !feof(ab); i++){
fprintf(ab, "%s\n", guardar[i].marca);
fprintf(ab, "%s\n", guardar[i].modelo);
fprintf(ab, "%s\n", guardar[i].identificacion);
}
}
int cargarLista (coche *cargar){
FILE *ba;
int i;
ba = fopen("coches.txt", "rt");
if (!ba){
fprintf(stdout, "No se ha podido cargar la lista de coches.\n");
return 1;
}
for(i = 0; i < 10 && !feof(ba); i++){
fscanf(ba, "%s\n", cargar[i].marca);
fscanf(ba, "%s\n", cargar[i].modelo);
fscanf(ba, "%s\n", cargar[i].identificacion);
}
}