minomic ha scritto:
oregon ha scritto:
Rivedi anche la quantità di dati ... il codice ISBN non può essere di 500 caratteri !
Giusto: sono solo 13. Link.
minomic ho fatto il programma per intero, l' unica cosa è che non mi segnala nessun errore, però non compila. Sarà mica un problema del mio compilatore O.o
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ID 50
#define DIM 500
#define LUNG_NOME 20
#define LUNG_COGNOME 30
#define LUNG_MAX_ARCHIVIO 300
typedef struct {
char nome[LUNG_NOME];
char cognome[LUNG_COGNOME];
char nazionalita[DIM];
} autore;
typedef struct {
char ISBN[13];
char titolo[DIM];
autore lista_autori;
} libro;
typedef struct {
char nome[LUNG_NOME];
char cognome[LUNG_COGNOME];
char codice_cliente[ID];
libro lista_libri[10];
} cliente;
typedef struct {
cliente clienti[LUNG_MAX_ARCHIVIO];
int progressivo;
int totale;
} archivio_clienti;
int compila_cliente(cliente *_cliente);
int inserisci_cliente(cliente _nuovo_cliente, archivio_clienti *_arc_clienti);
int inserisci_libro(libro _nuovo_libro, archivio_clienti *_arc_clienti);
int check_cliente(char _codice_cliente[], archivio_clienti _arc_clienti);
int compila_libri(libro *nuovo_libro);
int inserisci_tesseramento(cliente _nuovo_tesseramento, archivio_clienti *_arc_clienti);
int mostra_tesseramento_cliente(char _codice_cliente[], archivio_clienti _arc_clienti);
int mostra_clienti(archivio_clienti arc_clienti);
/*
*
*/
int main(int argc, char** argv) {
int scelta;
int i;
archivio_clienti arc_CLIENTI;
cliente nuovo_cliente;
libro inserisci_libro;
libro nuovo_libro;
archivio_clienti arc_libri;
autore nome_autore;
arc_CLIENTI.progressivo = 0;
do {
system("clear");
printf("****BIBLIOTECA****\n\n");
printf("1. Inserisci nuovo libro\n");
printf("2. Tessera cliente\n");
printf("3. Prestito di un libro\n");
printf("4. Visualizza prestiti di un cliente\n");
printf("5. Visualizza libri\n");
printf("0. Esci\n\n");
printf("\tScelta: ");
scanf("%d", &scelta);
switch (scelta) {
case 1:
system("clear");
printf("ISBN: ");
scanf("%s", nuovo_cliente.codice_cliente);
if (check_cliente(nuovo_cliente.codice_cliente, arc_CLIENTI) == 1) {
compila_cliente(&nuovo_cliente);
if (inserisci_cliente(nuovo_cliente, &arc_CLIENTI) == 1)
printf("Errore: archivio pieno!\n");
} else
printf("Cliente gia' presente\n");
getchar();
getchar();
break;
case 2:
system("clear");
printf("Codice fiscale del cliente: ");
scanf("%s", nuovo_cliente.codice_cliente);
switch (scelta) {
case 1:
system("clear");
compila_cliente(&nuovo_cliente);
strcpy(nuovo_cliente.codice_cliente, inserisci_libro.ISBN);
inserisci_cliente(nuovo_cliente, &arc_CLIENTI);
compila_libri(&nuovo_libro);
getchar();
getchar();
break;
default:
printf("Scegli un'opzione valida\n");
}
break;
case 0:
printf("Arrivederci, alla prossima ;)\n");
break;
default:
printf("Carattere errato: Inserire carattere valido.\n");
}
} while (scelta != 0);
return 0;
}
int compila_cliente(cliente *_cliente) {
printf("Nome: ");
scanf("%s", _cliente->nome);
printf("Cognome: ");
scanf("%s", _cliente->cognome);
}
int compila_libro(libro *nuovo_libro) {
int i;
printf("Libri\n");
printf("Titolo: ");
scanf("%s", nuovo_libro->titolo);
printf("Autore:\n");
printf("Nome: ");
scanf("%s", nuovo_libro->lista_autori);
printf("Cognome: ");
scanf("%s", nuovo_libro->lista_autori);
printf("nazionalita': ");
scanf("%s", nuovo_libro->lista_autori);
}
int inserisci_cliente(cliente _new_cliente, archivio_clienti *_arc_clienti) {
if (_arc_clienti->progressivo < LUNG_MAX_ARCHIVIO) {
_arc_clienti->clienti[_arc_clienti->progressivo] = _new_cliente;
_arc_clienti->progressivo++;
return 0;
} else
return 1;
}
int check_cliente(char _codice_cliente[], archivio_clienti _arc_clienti) {
int i = 0;
while (i < _arc_clienti.progressivo && strcmp(_codice_cliente, _arc_clienti.clienti[i].codice_cliente) != 0)
i++;
if (i < _arc_clienti.progressivo)
return 0;
else
return 1;
}