#include struct sDate { int Jour; int Mois; int Annee; }; typedef struct structurePersonne { char Nom[20]; char Prenom[20]; char Sexe[1]; struct sDate Date; char ident[5]; int nbEnfant; }sPersonne; typedef struct n { sPersonne personne; struct n* suivant; }NOEUD; /*marche*/ NOEUD* initialiser() { return NULL; } /*marche*/ sPersonne Copie(sPersonne copiage, sPersonne personne) { memcpy(&copiage,&personne,sizeof(personne)); return(copiage); } /*marche*/ NOEUD* insererEnTete(NOEUD* debut, sPersonne personne) { NOEUD* nouveau; nouveau=(NOEUD*)malloc(sizeof(NOEUD)); if(nouveau!=NULL) { nouveau->suivant=debut; nouveau->personne=Copie(nouveau->personne,personne); } return nouveau; } /*marche*/ void affichage(sPersonne personne) { printf("%20s |%20s |%4s |%2d-%2d-%4d |%5s |%9d\n",personne.Nom,personne.Prenom,personne.Sexe,personne.Date.Jour,personne.Date.Mois,personne.Date.Annee,personne.ident,personne.nbEnfant); return; } NOEUD* Recherche(NOEUD* debut, sPersonne personne) { NOEUD* trouver; sPersonne pers; int choix; char chaine[12]; int result; trouver = debut; printf("1. Par Nom?\n"); printf("2. Par Prenom?\n"); printf("3. Par Identifiant?\n"); printf("4. Par Sexe?\n"); scanf("%d",&choix); switch (choix) { case 1 : printf("Entrer Nom : "); scanf("%s",pers.Nom); while ((trouver!=NULL)&&(result!=0)) { result = strcmp(trouver->personne.Nom,pers.Nom); if (result==0) return(trouver); //il sort directement de la fonction car il a trouvé qqch ou pas? (on retourne qqch, "cherche" a une donnée). trouver=trouver->suivant; } // return (trouver); break; case 2 : printf("Entrer Prenom : "); scanf("%s",pers.Prenom); while ((trouver!=NULL)&&(result!=0)) { result = strcmp(trouver->personne.Prenom,pers.Prenom); if (result!=0) trouver=trouver->suivant; } return (trouver); break; case 3 : printf("Entrer Indentifiant : "); scanf("%s",pers.ident); while ((trouver!=NULL)&&(result!=0)) { result = strcmp(trouver->personne.ident,pers.ident); if (result!=0) trouver=trouver->suivant; } return (trouver); break; case 4 : printf("Entrer Sexe : "); scanf("%s",pers.Sexe); while ((trouver!=NULL)&&(result!=0)) { result = strcmp(trouver->personne.Sexe,pers.Sexe); if (result!=0) trouver=trouver->suivant; } return (trouver); break; } } /*void tri(NOEUD* tri) { NOEUD* tri2; NOEUD* interm; while (tri!=NULL) { tri2=tri->suivant; while(tri2!=NULL) { if ((tri2->personne.Nom[0])<(tri->personne.Nom[0])) { interm=tri; tri=tri2->personne; tri2=interm->personne; } tri2=tri2->suivant; } tri=tri->suivant; } return; }*/ /*void supprimerPersonne(NOEUD* debut, sPersonne personne) { NOEUD* nouveau; nouveau = debut; while (nouveau!=NULL) { nouveau = ChercherNom} */ main() { NOEUD* debut; NOEUD* point; sPersonne personne; int choix; int menu,recher,tri; debut= initialiser(); /*menu*/ while (choix!=0) { printf("\n1- Ajouter une personne\n2- Supprimer une personne\n3- Consulter\n4- Rechercher\n5- Modifier\n6- Trier\n7- Quitter\n"); scanf("%d",&menu); switch (menu) { case 1 : /*marche */ { printf("NOM : "); scanf("%s",personne.Nom); printf("PRENOM : "); scanf("%s",personne.Prenom); printf("SEXE : "); scanf("%s",personne.Sexe); printf("NAISSANCE :\n"); printf("JOUR : "); scanf("%d",&personne.Date.Jour); printf("MOIS : "); scanf("%d",&personne.Date.Mois); printf("ANNEE : "); scanf("%d",&personne.Date.Annee); printf("IDENTIFIANT : "); scanf("%s",personne.ident); printf("NOMBRE D'ENFANTS : "); scanf("%d",&personne.nbEnfant); debut = insererEnTete(debut, personne); break; } case 2 : { break; } /*marche*/ case 3 : { point=debut; printf("%20s |%20s |%4s |%10s |%5s |%9s\n","NOM","PRENOM","SEXE","DATE NAISS","IDENT","NB ENFANT"); while (point!=NULL) { affichage(point->personne); point=point->suivant; } break; } case 4 : { NOEUD* cherche; cherche = Recherche(debut, personne); if (cherche==NULL) printf("Cette personne n'existe pas\n"); else affichage(cherche->personne); break; } case 5 : { break; } case 6 : { printf("1- Par nom\n2- Par prenom\n3- par identifiant\n"); scanf("%d",&tri); switch (tri) { case 1 : { NOEUD* pointeur; NOEUD* deplaceur; NOEUD* stock; NOEUD* premier; NOEUD* pointprec; pointeur = debut; premier = pointeur; deplaceur = pointeur->suivant; while (deplaceur != NULL) { while (pointeur < deplaceur) { if ((deplaceur->personne.Nom)<(pointeur->personne.Nom)) { stock->suivant = pointeur->suivant; pointeur->suivant = deplaceur->suivant; deplaceur->suivant = stock->suivant; break; } else { pointeur = pointeur->suivant; } } pointeur = premier; deplaceur = deplaceur->suivant; } break; } case 2 : { break; } } break; } /*marche*/ case 7 : { choix=0; break; } } } system("pause"); return 0; }