Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvoid afficherListe(llist liste) { element *tmp = liste; /* Tant que l'on n'est pas au bout de la liste */ while(tmp != NULL) { /* On affiche */ printf("%d ", tmp->val); /* On avance d'une case */ tmp = tmp->nxt; } }
/*ajout livre*/ struct elementlivre { int code; char auteur[20]; char titre[60]; }; typedef struct livre { struct elementlivre infolivre; struct livre *suivant; }maillon; typedef maillon* liste; liste ajout(liste l) {maillon* nv=(maillon*)malloc(sizeof(maillon)); liste tmp=NULL; printf("|---------------------------\n"); printf("| Ajouter un livre |\n"); printf("|---------------------------\n"); printf("| Entrez le code du livre: "); scanf("%d",&nv->infolivre.code); printf("|---------------------------\n"); printf("| Entrez le nom de l'auteur:"); scanf("%s",&nv->infolivre.auteur); printf("|---------------------------\n"); printf("| Entrez le titre du livre:"); scanf("%s",&nv->infolivre.titre); printf("|---------------------------\n"); printf(" Le livre %d de '%s' intitule ''%s'' vient d'etre ajoute a la bibliotheque",nv->infolivre.code,nv->infolivre.auteur,nv->infolivre.titre); printf("\n"); printf("\n"); tmp=l; if(l==NULL) { l=nv; nv->suivant=NULL; return l; } else { while(tmp->suivant!=NULL) { tmp=tmp->suivant; } nv->suivant=NULL; tmp->suivant=nv; } return l; }
#include<stdio.h> /*#include<conio.h>*/ #include<stdlib.h> #include <time.h> /*#include <curses.h>*/ /////////*ajout livre*/////////// struct elementlivre /*creation struct elementlivre contenant les caracteristiques du livre*/ { int code; char auteur[20]; char titre[60]; }; typedef struct livre /* creation d'un typedef livre */ { struct elementlivre infolivre; /*creation structure infolivre vers strucure element livre contenant caract du livre*/ struct livre *suivant; /*creation pointeur suivant vers typedef livre donc *suivant revoie l'adresse du typedef*/ }maillon; /*creation de maillon*/ typedef maillon* liste; /*creation typedef avec pointeur de maillon*/ liste ajout(liste l) /*on cree la fonction ajout reliee a liste du typedef*/ {maillon* nv=(maillon*)malloc(sizeof(maillon)); /* on attribue la memoire a nv contenant le pointeur maillon*/ liste tmp=NULL; /*on initialise la variable tmp dans liste*/ printf("|---------------------------\n"); /* creation du menu ajout livre*/ printf("| Ajouter un livre |\n"); printf("|---------------------------\n"); printf("| Entrez le code du livre: "); scanf("%d",&nv->infolivre.code); /*nv pointe vers la structure livre et la variable code de elementlivre*/ printf("|---------------------------\n"); printf("| Entrez le nom de l'auteur: "); scanf("%s",&nv->infolivre.auteur); /*nv pointe vers la structure livre et la variable auteur de elementlivre*/ printf("|---------------------------\n"); printf("| Entrez le titre du livre: "); scanf("%s",&nv->infolivre.titre); /*nv pointe vers la structure livre et la variable titre de elementlivre*/ printf("|---------------------------\n"); /*while((nv->infolivre.code!=int)&&(nv->infolivre.auteur!=char)&&(nv->infolivre.titre!=char)) printf("Erreur : Entrez des caracteres valides (entier pour le code et caracteres pour auteur et titre)\n\n"); printf("|---------------------------\n"); printf("| Entrez le code du livre: "); scanf("%d",&nv->infolivre.code); nv pointe vers la structure livre et la variable code de elementlivre printf("|---------------------------\n"); printf("| Entrez le nom de l'auteur: "); scanf("%s",&nv->infolivre.auteur); nv pointe vers la structure livre et la variable auteur de elementlivre printf("|-d-------------------------\n"); printf("| Entrez le titre du livre: "); scanf("%s",&nv->infolivre.titre); nv pointe vers la structure livre et la variable titre de elementlivre printf("|---------------------------\n"); }*/ printf(" Le livre %d de '%s' intitule '%s' vient d'etre ajoute a la bibliotheque\n\n",nv->infolivre.code,nv->infolivre.auteur,nv->infolivre.titre); tmp=l; if(tmp==NULL) { l=nv; nv->suivant=NULL; return l; } else { while(tmp->suivant!=NULL) { tmp=tmp->suivant; } nv->suivant=NULL; tmp->suivant=nv; } return l; } /////////* ajout lecteur*////////// struct elementlecteur /* remarques identiques a precedemment */ { char prenom[20]; char nom[20]; int codeemprunte; }; typedef struct lecteur { struct elementlivre infolivre; struct elementlecteur infolecteur; struct lecteur *suivant2; }maillon2; typedef maillon2* liste2; liste2 ajout2(liste2 m) {maillon2* nv2=(maillon2*)malloc(sizeof(maillon2)); liste2 tmp=NULL; printf("|-----------------------|\n"); printf("| Ajouter un lecteur |\n"); printf("|-----------------------|\n"); printf("| Entrez le prenom: "); scanf("%s",&nv2->infolecteur.prenom); printf("|------------------------\n"); printf("| Entrez le nom: "); scanf("%s",&nv2->infolecteur.nom); printf("|------------------------\n"); printf("| Code du livre umprunte: "); scanf("%d",&nv2->infolecteur.codeemprunte); printf("\n"); printf(" %s %s a emprunte le livre %d",nv2->infolecteur.prenom,nv2->infolecteur.nom,nv2->infolecteur.codeemprunte); printf("\n"); printf("\n"); tmp=m; if(tmp==NULL) { m=nv2; nv2->suivant2=NULL; return m; } else { while(tmp->suivant2!=NULL) { tmp=tmp->suivant2; } nv2->suivant2=NULL; tmp->suivant2=nv2; } return m; } /////////* supprimer livre*////////// maillon* suppression(maillon* l) /*creation d'un poiteur maillon sur la fonction suppression*/ { int x; maillon *p,*tmp; /*creation des pointeurs p et avp*/ printf("Code du livre a supprimer: \n"); scanf("%d",&x); if(l==NULL) /*si la liste est vide le livre n'existe pas*/ { printf("------------------------\n"); printf("Le livre %d n'existe pas\n",x); printf("------------------------\n"); printf("\n"); return NULL; } else /*sinon on parcourt la liste tant que x pas trouvée et si on trouve la variable x et qu'on arrive à la fin de la liste c'est qu'elle a ete utilisée. on imprime donc x*/ { p=l; tmp=l; while((p->suivant!=NULL)&&(p->infolivre.code!=x)) { tmp=p; p=p->suivant; } if(p->suivant==NULL) { printf("--------------------------\n"); printf("Le livre %d a ete supprime\n",x); printf("--------------------------\n"); printf("\n"); return NULL; } tmp->suivant=p->suivant; free(p); /*on libere la memoire (x et y supprimés)*/ return l; } } ////////* supprimer lecteur*///////// maillon2* suppression2(maillon2* m) /*memes remarques que precedemment*/ { char nom[20]; maillon2* nv2=(maillon2*)malloc(sizeof(maillon2)); maillon2 *q,*tmp; printf("Entrez le nom a supprimer: "); scanf("%s",&nom); printf("\n"); if(m==NULL) { printf("\n"); printf("--------------------------\n"); printf("Le lecteur %s n'existe pas\n",nom); printf("--------------------------\n"); printf("\n"); return NULL; } else { q=m; tmp=m; while((q->suivant2!=NULL)&&(q->infolecteur.nom!=nom)) { tmp=q; q=q->suivant2; } if(q->suivant2==NULL) { printf("----------------------------\n"); printf("Le lecteur %s a ete supprime\n",nom); printf("----------------------------\n"); printf("\n"); return NULL; } tmp->suivant2=q->suivant2; free(q); return m; } } ///////* modifier la bdd livre*//////// maillon* modification(maillon* l) /*creation de la fonction modification */ {int choix1; printf("| Modification livres |\n"); printf("|-----------------------|\n"); printf("| Ajout | 1 |\n"); printf("| Suppression | 2 |\n"); printf("| Retour au menu | 3 |\n"); printf("-------------------------\n"); printf("Entrez votre choix: "); scanf("%d",&choix1); printf("\n"); switch (choix1) /*fonction switch permet de reconnaitre le caractere entré au clavier et de faire une certaine action en consequence*/ { case 1:l=ajout(l); /* si appuie sur 1 renvoie la fonction ajout*/ break; case 2:l=suppression(l); /*si appuie sur 2 renvoie la fonction suppression*/ break; case 3:break; /* si appuie sur 3 renvoie au menu principal*/ default:(printf("Erreur : Veuillez entrer un caractere valide\n\n"))&&(l=modification(l)); /*si autre on revoie vers la fonction modification avec message d'erreur*/ } return l; } /* modifier la bdd lecteur*/ maillon2* modification2(maillon2* m) /*memes justif que precedemment*/ {int choix2; printf("| Modification lecteurs |\n"); printf("|-----------------------|\n"); printf("| Ajout | 1 |\n"); printf("| Suppression | 2 |\n"); printf("| Retour au menu | 3 |\n"); printf("-------------------------\n"); printf("Entrez votre choix: "); scanf("%d",&choix2); printf("\n"); switch (choix2) { case 1:m=ajout2(m); break; case 2:m=suppression2(m); break; case 3:break; default:(printf("Erreur : Veuillez entrer un caractere valide\n\n"))&&(m=modification2(m)); } return m; } ///////*lister les livres*////////// maillon* listerlivre(maillon* l) /*creation fonction listerlivre*/ { int demandeajoutlivre; liste tmp=l; if(tmp==NULL) /*si la liste est nulle on imprime "la liste est vide"*/ { printf("-----------------------------\n"); printf("la liste de livres est vide\n"); printf("-----------------------------\n"); printf("Voulez-vous ajouter un livre ? oui:1 | non:2 : "); scanf("%d",&demandeajoutlivre); printf("\n"); switch(demandeajoutlivre) { case 1:l=modification(l);break; case 2:break; default:((printf("Erreur : Veuillez entrer un caractere valide\n\n"))&&(l=listerlivre(l))); } } if(tmp!=NULL){ printf(" Livres enregistres :\n\n");} while(tmp!=NULL) { printf("'%s' - '%s' ( %d )\n\n",l->infolivre.titre,l->infolivre.auteur,l->infolivre.code); tmp=tmp->suivant; } return l; } ////////*lister les lecteurs*/////////// maillon2* listerlecteur(maillon2* m) /*memes justif que precedemment*/ { int demandeajoutlecteur; liste2 tmp=m; if(tmp==NULL) { printf("-----------------------------\n"); printf("La liste de lecteurs est vide\n"); printf("-----------------------------\n"); printf("Voulez-vous ajouter un lecteur ? oui:1 | non:2 : "); scanf("%d",&demandeajoutlecteur); printf("\n"); switch(demandeajoutlecteur) { case 1:m=modification2(m);break; case 2:break; default:((printf("Erreur : Veuillez entrer un caractere valide\n\n"))&&(m=listerlecteur(m))); } } if(tmp!=NULL){ printf(" Lecteurs enregistres :\n\n");} while(tmp!=NULL) { printf("%s %s a emprunte le livre %d \n\n",m->infolecteur.nom,m->infolecteur.prenom,m->infolecteur.codeemprunte); tmp=tmp->suivant2; } return m; } ////////*affichage emprunt (n° livres)*//////// maillon2* emprunt(maillon2* m) { liste2 tmp=m; if(tmp==NULL) /*si la liste est nulle on imprime "la liste est vide"*/ { printf("-----------------------------\n"); printf("Aucun livre emprunte\n"); printf("-----------------------------\n"); } if(tmp!=NULL){ printf(" Livres empruntes :\n\n");} while(tmp!=NULL) { printf("%d \n\n",m->infolecteur.codeemprunte); tmp=tmp->suivant2; } return m; } ///////////* ecran d'accueil*///////// int main(){ liste l=NULL; /*initialisation des listes livre et lecteur*/ liste2 m=NULL; int choix; /*variable choix : caractere entré au clavier*/ while (1) /*pour revenir au menu principal à la fin d'une action*/ { const char * NomJourSemaine[] = {"Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"}; /*creation constantes de caracteres des jours de la semaine : pointeur vers ceux la*/ const char * NomMois[] = {"janvier", "fevrier", "mars", "avril", "mai", "juin", /*creation constantes de caracteres des mois : pointeur vers ceux la*/ "juillet","aout","septembre","octobre","novembre","decembre"}; time_t timestamp; struct tm * t; timestamp = time(NULL); /*pour savoir nbre de secondes ecoulée depuis 1970 et convertir en date*/ t = localtime(×tamp); /*timestamp est contenu dans t qui pointe vers tm*/ printf("Nous sommes %s ", NomJourSemaine[t->tm_wday]); /*jour de la semaine*/ printf("%02u %s %04u ", t->tm_mday, NomMois[t->tm_mon], 1900 + t->tm_year); /* date jour + mois + année*/ printf("( %02u:%02u )\n", t->tm_hour, t->tm_min); /*affiche l'heure*/ printf("\n"); printf("|--------------------------------|\n"); /*affichage du menu principal*/ printf("| Menu principal |\n"); printf("|--------------------------------|\n"); printf("| Modification des livres | 1 |\n"); printf("| Modification des lecteurs | 2 |\n"); printf("|--------------------------------|\n"); printf("| Liste des livres | 3 |\n"); printf("| Liste des lecteurs | 4 |\n"); printf("|--------------------------------|\n"); printf("| Emprunts des livres | 5 |\n"); printf("|--------------------------------|\n"); printf("| Recherche (livres) | 6 |\n"); printf("| Recherche (lecteurs) | 7 |\n"); printf("|--------------------------------|\n"); printf("| Quitter | 8 |\n"); printf("|--------------------------------|\n"); printf("\n"); printf("Entrez votre choix: "); scanf("%d",&choix); printf("\n"); switch(choix) { case 1: l=modification(l);break; /*renvoie à la fonction liée au chiffre entré par l'utilisateur*/ case 2: m=modification2(m);break; case 3: l=listerlivre(l);break; case 4: m=listerlecteur(m);break; case 5: m=emprunt(m);break; /*case 6: l=recherchelivre(l)*/ /*case 7: m=recherchelecteur(m)*/ default:(printf("Erreur : Veuillez entrer un caractere valide\n\n")); } if (choix==8) break; /*si tape 5 : on sort du programme*/ } free; /*liberation memoire*/ /*getch(); /*suspend l'execution du programme jusqu'a appuyer sur Entrée*/ return 0; }
if(tmp!=NULL){ printf(" Livres enregistres :\n\n");} while(tmp!=NULL) { printf("'%s' - '%s' ( %d )\n\n",l->infolivre.titre,l->infolivre.auteur,l->infolivre.code); tmp=tmp->suivant; }
printf("'%s' - '%s' ( %d )\n\n",l->infolivre.titre,l->infolivre.auteur,l->infolivre.code);
printf("'%s' - '%s' ( %d )\n\n",tmp->infolivre.titre,tmp->infolivre.auteur,tmp->infolivre.code); //@304
//////*recherche lecteur*////////// maillon2* recherchelecteur(maillon2* m) { liste2 tmp=m; char r[20]; if(tmp==NULL) /*si la liste est nulle on imprime "la liste est vide"*/ { printf("-----------------------------\n"); printf("Aucun lecteur enregistre\n"); printf("-----------------------------\n"); } if(tmp!=NULL){ printf("Infos sur Mr/Mme : "); scanf("%s",&r); printf("\n"); } if(tmp!=NULL) { if(r==tmp->infolecteur.nom){ printf("%s %s a emprunte le livre %d\n\n",tmp->infolecteur.nom,tmp->infolecteur.prenom,tmp->infolecteur.codeemprunte);} else{ printf("Lecteur %s non enregistre\n\n",r);} tmp=tmp->suivant2; } return m; }