#include "funzioni.h"
int menu(){
int scelta; /*Questa variabile sarà utilizzata nella switch per decidere che cosa fare...*/
printf("* * * * * * * * * * * * * * * * * * * \nBenvenuto nel programma di gestione biblioteca\n* * * * * * * * * * * * * * * * * * * \n");
printf(" 1. Mostra archivio\n");
printf(" 2. Richiedi libro\n");
printf(" 3. Restituire libro\n");
printf(" 4. Esegui richiesta\n");
printf(" 5. Uscire\n");
printf("Inserisci scelta:");
scanf("%d",&scelta); /*Viene inserito nella variabile var il numero inserito dall'utente e di conseguenza inserito nel ciclo Switch*/
while(scelta<0 || scelta>5) { printf("Questo tasto non consente di effetuare scelte! Riprova!\n");
printf("Scelta: ");
scanf("%d", &scelta);
return scelta;
}
return scelta;
}
struct libri *nuovoNodo(char *titolo ,char *autore, int cod_id)
{
struct libri *nodo;
nodo = (struct libri *) malloc(sizeof(struct libri));
if (nodo == NULL) return NULL;
strcpy(nodo->titolo, titolo);
strcpy(nodo->autore, autore);
nodo->cod_id =cod_id;
nodo->next = NULL;
return nodo;
}
struct libri *inserisciLista(struct libri *nodo, struct libri *lista)
{
if (lista==NULL) return nodo;
lista->next = inserisciLista(nodo, lista->next);
return lista;
}
void gestioneErrore()
{
printf("Errore\n");
exit(0);
}
struct libri *leggiFile(FILE *fp, [B]struct[/B] libri *lista)
{
[B]char[/B] titolo[50];
[B]char[/B] autore[20];
[B]int[/B] cod_id;
[B]struct[/B] libri *nodo;
[B]while[/B](fscanf(fp,"%s%s%d",titolo,autore,&cod_id)==3){
nodo = nuovoNodo(titolo, autore, cod_id);
[B]if[/B] (nodo == [B]NULL[/B])
gestioneErrore();
lista = inserisciLista(nodo, lista);
}
[B]return[/B] lista;
}
[B]void[/B] scriviFile(FILE *fp, [B]struct[/B] libri *lista) {
[B]while[/B] (lista!=[B]NULL[/B]) {
fprintf(fp,"%s %s %d \n",lista->titolo,lista->autore,lista->cod_id);
lista = lista->next;
}
}
[B]void[/B] scriviLista([B]struct[/B] libri *lista) {
[B]while[/B] (lista!=[B]NULL[/B]) {
printf("%s %s %d\n",lista->titolo,lista->autore,lista->cod_id);
lista = lista->next;
{
printf("\n");
}
}
}
[B]void[/B] ricerca ([B]struct[/B] libri *l){
[B]int[/B] trovato = 0 ;
[B]char[/B] titolo[50];
[B]char[/B] nome[256];
[B]char[/B] matricola;
[B]char[/B] cognome[256];
printf("\nInsersici il titolo del codice da cercare:");
scanf("%49s", &titolo[50]);
[B]while[/B] (l != [B]NULL[/B] && trovato != 1) {
[B]if[/B](strcmp(l->titolo, &titolo[50])==0) {
printf("\nIl libro cercato e' presente nell'archivio ed il libro e' disponibile");
printf("\nInserisci nome: ");
scanf("%255s", &nome[256]);
printf("\nInserisci cognome: ");
scanf("%255s", &cognome[256]);
printf("\nInserisci matricola: ");
scanf("%s", &matricola);
printf("\nOperazione effettuata con successo\n");
trovato=1;
}
l = l->next;
}
[B]if[/B](trovato != 1)
printf("\nIl libro cercato non e' presente nell'archivio ed il libro non e' disponibile\n");
}
List insertTail(List L, [B]char[/B] titolo[50], [B]char[/B] autore[20] ,[B]int[/B] cod_id) {
[B]if[/B] (L != [B]NULL[/B]) {
L->next = insertTail(L->next, titolo, autore, cod_id);
}
[B]else[/B]{
L = initList(titolo,autore,cod_id);
}
[B]return[/B] L;
}
List initList([B]char[/B] titolo[50] ,[B]char[/B] autore[20] ,[B]int[/B] cod_id) {
List L = (List)malloc([B]sizeof[/B]([B]struct[/B] libri));
strcpy(L->titolo,&titolo[50]);
strcpy(L->autore,&autore[20]);
L->cod_id= cod_id;
L->next = [B]NULL[/B];
[B]return[/B] L;
}
[code]