Bonjour,
j'ai un code non fini qui permet de gérer une bibliotheque.
Ajouter ou supprimer un lecteur ou un livre : ok
mais pour consulter les lecteurs ou livres enregistrés je bloque sur le code.
help?
merci
Code C/C++ :
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/*ajout livre*/
struct elementlivre
{
int code;
char auteur[20];
char titre[20];
};
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("Entrez le code du livre:");
scanf("%d",&nv->infolivre.code);
printf("Entrez le nom de l'auteur:");
scanf("%s",&nv->infolivre.auteur);
printf("Entrez le titre du livre:");
scanf("%s",&nv->infolivre.titre);
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;
}
/* ajout lecteur*/
struct elementlecteur
{
char prenom[20];
char nom[20];
};
typedef struct lecteur
{
struct elementlivre infolivre;
struct elementlecteur infolecteur;
struct lecteur *suivant2;
}maillon2;
typedef maillon2* liste2;
liste2 ajout2(liste2 m)
{maillon2* nv=(maillon2*)malloc(sizeof(maillon2));
liste2 tmp=NULL;
printf("Entrez le prenom:");
scanf("%s",&nv->infolecteur.prenom);
printf("Entrez le nom:");
scanf("%s",&nv->infolecteur.nom);
printf("Numero livre umprunte :");
scanf("%d",&nv->infolivre.code);
tmp=m;
if(m==NULL)
{
m=nv;
nv->suivant2=NULL;
return m;
}
else
{
while(tmp->suivant2!=NULL)
{
tmp=tmp->suivant2;
}
nv->suivant2=NULL;
tmp->suivant2=nv;
}
return m;
}
/* supprimer livre*/
maillon* suppression(maillon* l)
{ int x;
maillon *p,*avp;
printf("Entrez le code du livre a supprimer:\n");
scanf("%d",&x);
if(l==NULL)
{
printf("La liste est vide\n");
return NULL;
}
else
{
p=l;
avp=l;
while((p->suivant!=NULL)&&(p->infolivre.code!=x))
{
avp=p;
p=p->suivant;
}
if(p->suivant==NULL)
{
printf("Le livre n'exite pas dans la liste\n");
return NULL;
}
avp->suivant=p->suivant;
free(p);
return l;
}
}
/* supprimer lecteur*/
maillon2* suppression2(maillon2* m)
{
char nom[20];
maillon2 *q,*avp;
printf("Entrez le nom a supprimer:\n");
scanf("%d",&nom);
if(m==NULL)
{
printf("La liste est vide\n");
return NULL;
}
else
{
q=m;
avp=m;
while((q->suivant2!=NULL)&&(q->infolecteur.nom!=nom))
{
avp=q;
q=q->suivant2;
}
if(q->suivant2==NULL)
{
printf("Le lecteur n'existe pas\n");
return NULL;
}
avp->suivant2=q->suivant2;
free(q);
return m;
}
}
/* modifier la bdd livre*/
maillon* modification(maillon* l)
{int choix1;
printf("Ajout : tapez 1\n");
printf("Suppression : tapez 2\n");
printf("Quitter : tapez 3\n");
printf("Entrez votre choix:");
scanf("%d",&choix1);
switch (choix1)
{
case 1:l=ajout(l);
break;
case 2:l=suppression(l);
break;
case 3:exit(0);
default:
break;
}
return l;
}
maillon* listerlivre(maillon* l)
{
liste temp=l;
if(l==NULL)
{
printf("la liste est vide\n");
return NULL;
}
while(temp!=NULL)
{
printf("%d",l->infolivre.code);
printf("%s",l->infolivre.auteur[20]);
printf("%s",l->infolivre.titre[20]);
temp=temp->suivant;
}
return l;
}
/* modifier la bdd lecteur*/
maillon2* modification2(maillon2* m)
{int choix2;
printf("Ajout : tapez 1\n");
printf("Suppression : tapez 2\n");
printf("Quitter : tapez 3\n");
printf("Entrez votre choix:");
scanf("%d",&choix2);
switch (choix2)
{
case 1:m=ajout2(m);
break;
case 2:m=suppression2(m);
break;
case 3:exit(0);
default:
break;
}
return m;
}
maillon2* listerlecteur(maillon2* m)
{
liste2 temp=m;
if(m==NULL)
{
printf("la liste est vide\n");
return NULL;
}
while(temp!=NULL)
{
printf("%s",m->infolecteur.prenom[20]);
printf("%s",m->infolecteur.nom[20]);
temp=temp->suivant2;
}
return m;
}
/* consulter fiche livre*/
/*consulter fiche lecteur*/
/* ecran d'accueil*/
int main ()
{
liste l=NULL;
liste2 m=NULL;
int choix3;
printf("Ajouter/Supprimer livre : tapez 1\n");
printf("Ajouter/Supprimer lecteur : tapez 2\n");
printf("Liste des livres : tapez 3\n");
printf("Liste des lecteurs : tapez 4\n");
printf("Quitter : tapez 5\n");
printf("Entrez votre choix");
scanf("%d",&choix3);
switch(choix3)
{
case 1:l=modification(l);
break;
case 2:m=modification2(m);
break;
case 5:exit(0);
}
free;
getch();
return 0;
}