Annuaire 1.0

Description

Annuaire 1.0 a été créé par :
- zal3a ( majdiesprit@hotmail.fr )
- nadfrslw ( nadfrslw@hotmail.fr )
Etudiants à ESPRIT, tunisie 2008/2009

Ceci est notre première application en C
et ça a été pour un projet en C.
On espère encore avancer dans la programmation
Toutes vos remarques sont les bienvenues.
A bientot pour notre prochaine création ... ;)

Zal3a

Source / Exemple :


//***************************************************
//                  Annuaire 1.0                    *
//***************************************************
//                                                  *
// Annuaire 1.0 a été créé par :                    *
//  - zal3a ( majdiesprit@hotmail.fr )              *
//  - nadfrslw ( nadfrslw@hotmail.fr )              *
//  Etudiants à ESPRIT, tunisie    2008/2009        *
//                                                  *
// Ceci est notre première application en C         *
// et ça a été pour un projet en C.                 *
// On espère encore avancer dans la programmation   *
// Toutes vos remarques sont les bienvenues.        *
// A bientot pour notre prochaine création ...  ;)  *
//                                                  *
//                                        Zal3a     *
//                                                  *
//***************************************************
// Remarques :                                      *
//***************************************************
//                                                  *
// Annuaire 1.0 a été créé en langage C             *
// Il nécessite quelques modifications afin de      *
// l'améliorer, malheureusement par manque          *
// de temps et vu les circonstances ( fin du délai  *
// du projet ) ...                                  *
//                                                  *
// On peut citer par exemple :                      *
//  - Modification de la fonction d'identification  *
//    pour ne plus avoir à copier le fichier        *
//    "Sessions.txt" sur c:\\                       *
//                                                  *
//  - L'ajout d'un controle sur les saisis pour     *
//    éviter tout disfonctionnement                 *
//                                                  *
//  - L'ajout d'une interface graphique             *
//                                                  *
//***************************************************

//**********************************
// Déclaration des Bibliothèques   *
//**********************************

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

//****************************************
// Déclaration des Fonctions utilisées   *
//****************************************
  void Reset(void);
  void Menu(void);
  int Menu_admin(void);
  int Menu_user(void);
  int Nb_Contacts(void);
  void Affiche_Session(void);
  void Affiche_Session1(void);
  void Modifier_Session(void);
  void Modifier_Session1(void);
  int Login(void);
  void Config_admin(void);
  void Config_user(void);
  void Supprimer(void);
  int Modif_Champ(void);
  void Modifier(void);
  void Ajouter(void);
  void Afficher(void);
  void Rechercher(void);
  void Quitter(void);

//***************************************************************************
//**	 Déclaration de la Structure contenant les informations d'un contact  *
//***************************************************************************

struct Fiche
{
 char nom[30];
 char prenom[30];
 char mail[30];
 char adresse[100];
 char num_dom[15];
 char num_travail[15];
 char num_fax[15];
 char num_portable1[15];
 char num_portable2[15];
 char ville[10];
 int groupe;
};

//*****************************************************************************
//** 	Déclaration de la Structure contenant les comptes d'accés du programme  *
//*****************************************************************************

struct Session
{
 char login[10];
 char password[10];
 char login1[10];
 char password1[10];
};

//********************************************
//**	Fonction qui réinitialise le fichier   *
//********************************************

void Reset(void)
{
 char chemin[]="C:\\liste.txt";
 remove(chemin);
 printf("\n\nFichier reinitialise ...");
 getch();
}

//*************************************************************
//**	Fonction qui permet l'affichage du menu Administrateur  *
//*************************************************************

int Menu_admin(void)
{
 int choix;
 printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 printf("\n\t\xBA   Menu Accueil   \xBA");
 printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
 printf("\n\n[1] Ajouter un nouveau contact");
 printf("\n[2] Rechercher un contact");
 printf("\n[3] Lister les contacts ");
 printf("\n[4] Modifier un contact");
 printf("\n[5] Supprimer un contact");
 printf("\n[6] Acceder au panneau de configuration de Annuaire 1.0");
 printf("\n\n[0] Quitter le programme");
 printf("\n\nVeuillez indiquer votre choix : ");
 scanf("%d",&choix);
 return choix;
 }

//*************************************************************
//**	Fonction qui permet l'affichage du menu Utilisateur     *
//*************************************************************

int Menu_user(void)
{
 int choix;
 printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 printf("\n\t\xBA   Menu Accueil   \xBA");
 printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
 printf("\n\n[1] Rechercher un contact");
 printf("\n[2] Lister les contacts ");
 printf("\n\n[3] Acceder au panneau de configuration de Annuaire 1.0");
 printf("\n\n[0] Quitter le programme");
 printf("\n\nVeuillez indiquer votre choix : ");
 scanf("%d",&choix);
 return choix;
}

//****************************************************************
//**	Fonction qui affiche le nombre de contacts sur le fichier  *
//****************************************************************
int Nb_Contacts(void)
{
 int i=0;
 char chemin[]="C:\\liste.txt";
 struct Fiche F;
 FILE *f;
 f=fopen(chemin,"rb");
 if(f==NULL)
  {
 	printf("\n\n Le fichier %s est introuvable ...",chemin);
  }
 else
  {
   while(fread(&F,sizeof(struct Fiche),1,f)!=0)
	 {
	  i++;
    }

  }
 fclose(f);
 return i;
}

//**************************************************************
//		Fonction qui permet d'afficher le compte Administrateur  *
//**************************************************************

void Affiche_Session(void)
{
 struct Session S;
 FILE *h;
 char chemin[]="c:\\Sessions.txt";
 h=fopen(chemin,"rb");
 if(h==NULL)
  {
   printf("\n\n Le fichier %s est introuvable ...",chemin);
  }
 else
  {
   printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 	printf("\n\t\xBA   Compte d'acces   \xBA");
 	printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
   while(fread(&S,sizeof(struct Session),1,h)!=0)
    {
     printf("\n\nLogin Administrateur :  %s",S.login);
     printf("\nMot de passe Administrateur :  %s",S.password);
     getch();
    }
  }
 fclose(h);
}

//**************************************************************
//		Fonction qui permet d'afficher le compte Utilisateur     *
//**************************************************************

void Affiche_Session1(void)
{
 struct Session S;
 FILE *h;
 char chemin[]="c:\\Sessions.txt";
 h=fopen(chemin,"rb");
 if(h==NULL)
  {
   printf("\n\n Le fichier %s est introuvable ...",chemin);
  }
 else
  {
   printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 	printf("\n\t\xBA   Compte d'acces   \xBA");
 	printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
   while(fread(&S,sizeof(struct Session),1,h)!=0)
    {
     printf("\n\nLogin Utilisateur :  %s",S.login1);
     printf("\nMot de passe Utilisateur :  %s",S.password1);
     getch();
    }
  }
 fclose(h);
}

//***************************************************************
//**	Fonction qui permet de modifier le compte Administrateur     *
//***************************************************************

void Modifier_Session(void)
{
 struct Session S;
 FILE *h;
 FILE *g;
 char chemin[]="c:\\Sessions.txt";
 char chemin1[]="c:\\temp_sessions.txt";
 h=fopen(chemin,"rb");
 g=fopen(chemin1,"wb");
 if(h==NULL)
  {
   printf("\n\n Le fichier %s est introuvable ...",chemin);
  }
 else
  {
   if(g==NULL)
    {
     printf("\n\n Impossible d'ouvrir le fichier %s",chemin1);
    }
   else
    {
     while(fread(&S,sizeof(struct Session),1,h)!=0)
     {
      printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 	   printf("\n\t\xBA   Compte d'acces   \xBA");
 	   printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
      fflush(stdin);
      printf("\n\nVeuillez saisir le nouveau Login Administrateur : ");
      gets(S.login);
      fflush(stdin);
      printf("\nVeuillez saisir le nouveau Mot de Passe Administrateur : ");
      gets(S.password);
      fwrite(&S,sizeof(struct Session),1,g);
     }
    }
  }
 fclose(h);
 remove(chemin);
 fclose(g);
 rename(chemin1,chemin);
}

//***************************************************************
//**		Fonction qui permet de modifier le compte Utilisateur  *
//***************************************************************

void Modifier_Session1(void)
{
 struct Session S;
 FILE *h;
 FILE *g;
 char chemin[]="c:\\Sessions.txt";
 char chemin1[]="c:\\temp_sessions.txt";
 h=fopen(chemin,"rb");
 g=fopen(chemin1,"wb");
 if(h==NULL)
  {
   printf("\n Impossible d'ouvrir le fichier %s",chemin);
  }
 else
  {
   if(g==NULL)
    {
     printf("\n Impossible d'ouvrir le fichier %s",chemin1);
    }
   else
    {
     while(fread(&S,sizeof(struct Session),1,h)!=0)
     {
      printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 	   printf("\n\t\xBA   Compte d'acces   \xBA");
 	   printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
      fflush(stdin);
      printf("\n\nVeuillez saisir le nouveau Login Utilisateur : ");
      gets(S.login1);
      fflush(stdin);
      printf("\nVeuillez saisir le nouveau Mot de Passe Utilisateur : ");
      gets(S.password1);
      fwrite(&S,sizeof(struct Session),1,g);
     }
    }
  }
 fclose(h);
 remove(chemin);
 fclose(g);
 rename(chemin1,chemin);
}

//***********************************************************
//**	Fonction qui permet l'identification de l'utilisateur *
//***********************************************************

int Login(void)
{
 int s;
 FILE *h;
 char log_in[10];
 char pass[10];
 struct Session S;
 char chemin[]="c:\\Sessions.txt";
 printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
 printf("º          Annee Universitaire                      2008 / 2009                º");
 printf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
 printf("º                    ***    ***   ****   *   *  *****  *****                   º");
 printf("º                   *   *  *   *  *   *  *   *  *        *                     º");
 printf("º                   *      *   *  *   *  **  *  *        *                     º");
 printf("º                   *      *   *  ****   * * *  ***      *                     º");
 printf("º                   *      *****  * *    *  **  *        *                     º");
 printf("º                   *   *  *   *  *  *   *   *  *        *                     º");
 printf("º                    ***   *   *  *   *  *   *  *****    *                     º");
 printf("º                                                                              º");
 printf("º          ****    **  ***   ****   ****   *****   ***    ***   *****          º");
 printf("º          *   *  **  *   *  *   *  *   *  *      *   *  *   *  *              º");
 printf("º          *   *      *   *  *   *  *   *  *       **     **    *              º");
 printf("º          *   *      *   *  *   *  ****   ***      **     **   ***            º");
 printf("º          *   *      *****  *   *  * *    *         **     **  *              º");
 printf("º          *   *      *   *  *   *  *  *   *      *   *  *   *  *              º");
 printf("º          ****       *   *  ****   *   *  *****   ***    ***   *****          º");
 printf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
 printf("º Cree par :                                                                   º");
 printf("º    * Zal3a            majdiesprit@hotmail.fr               ESPRIT            º");
 printf("º    * Nadfrslw         nadfrslw@hotmail.fr                    Tunisie         º");
 printf("º                                                                              º");
 printf("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ&#188;");
 system("pause");
 clrscr();
 h=fopen(chemin,"rb");
 if(h==NULL)
  {
   printf("\n Impossible d'ouvrir le fichier %s",chemin);
  }
 else
  {
   while(fread(&S,sizeof(struct Session),1,h)!=0)
   {
    printf("\n\tSoyez le(la) bienvenu(e) \x85 notre Annuaire 1.0 .");
    printf("\n\tCe programme a ete cree par zal3a et nadfrslw.\n");
    printf("\n\n\n\tVeuillez vous identifier ...\n");
    do
     {
      printf("\tEntrez un login valide : ");
      gets(log_in);
     } while ((strcmp(log_in,S.login1)!=0)&&(strcmp(log_in,S.login)!=0));
    printf("\n");
    if(strcmp(log_in,S.login)==0)
     {
      do
       {
        printf("\tEntrez un mot de passe valide : ");
        gets(pass);
       } while (strcmp(pass,S.password)!=0);
      printf("\n\tIdentification reussie ...");
      printf("\n\tAppuyez sur Entree pour acceder au menu d'acceuil ...");
      s=1;
      getch();
      clrscr();
     }
    else
     {
      do
       {
        printf("\tEntrez un mot de passe valide : ");
        gets(pass);
       } while (strcmp(pass,S.password1)!=0);
      printf("\n\tIdentification reussie ...");
      printf("\n\tAppuyez sur Entree pour acceder au menu d'acceuil ...");
      s=2;
      getch();
      clrscr();
     }
  }
 }
 fclose(h);
 return s;
}

//*************************************************************************************
//** 	Fonction qui permet l'affichage du panneau de configuration de l'administrateur *
//*************************************************************************************

void Config_admin(void)
{
 int choix;
 clrscr();
 printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 printf("\n\t\xBA  Panneau de Configuration  \xBA");
 printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
 printf("\n\n[1] Afficher le login et mot de passe [ Administrateur ]");
 printf("\n[2] Afficher le login et mot de passe [ Utilisateur ]");
 printf("\n\n[3] Modifier le login et mot de passe [ Administrateur ]");
 printf("\n[4] Modifier le login et mot de passe [ Utilisateur ]");
 printf("\n\n[5] Afficher le nombre de contacts");
 printf("\n[6] Changer de Session");
 printf("\n[7] Reinitialiser le fichier");
 printf("\n\n[0] Retourner au menu principal");
 printf("\n\nVeuillez indiquer votre choix : ");
 scanf("%d",&choix);
 switch(choix)
  {
   case 1:
    clrscr();
    Affiche_Session();
    break;
   case 2:
    clrscr();
    Affiche_Session1();
    break;
   case 3:
    clrscr();
    Modifier_Session();
    break;
   case 4:
    clrscr();
    Modifier_Session1();
    break;
   case 5:
    clrscr();
    printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
    printf("\n\t\xBA  Nombres de Contacts  \xBA");
    printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
    printf("\n\n\nLe nombre de contacts est de %d ",Nb_Contacts());
    getch();
    break;
   case 6:
    clrscr();
    Menu();
    break;
   case 7:
    clrscr();
    Reset();
    break;
   case 0:
    clrscr();
    Menu_admin();
    break;
  }
}

//**************************************************************************************
//** 	Fonction qui permet l'affichage du panneau de configuration de l'utilisateur     *
//**************************************************************************************

void Config_user(void)
{
 int choix;
 printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 printf("\n\t\xBA  Panneau de Configuration  \xBA");
 printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
 printf("\n\n[1] Passer a la session Administrateur");
 printf("\n\n[0] Retourner au menu principal");
 printf("\n\nVeuillez indiquer votre choix : ");
 scanf("%d",&choix);
 switch(choix)
  {
   case 1:
    clrscr();
    Menu();
    break;
   case 0:
    clrscr();
    Menu_user();
    break;
  }
}

//**************************************************
//**	Fonction qui permet de supprimer un contact  *
//**************************************************

void Supprimer(void)
{
 char chemin[]="C:\\liste.txt";
 char chemin2[]="C:\\temp_liste.txt";
 struct Fiche F;
 char nom[30];
 char prenom[30];
 int i=0;
 FILE *f;
 FILE *g;
 f=fopen(chemin,"rb");
 g=fopen(chemin2,"ab");
 if(f==NULL)
  {
   printf("\n Impossible d'ouvrir le fichier %s",chemin);
  }
 else
  {
   if(g==NULL)
    {
     printf("\n Impossible d'ouvrir le fichier %s",chemin2);
    }
   else
    {
     fflush(stdin);
     printf("\n\nEntrez le nom du contact a supprimer : ");
     gets(nom);
     fflush(stdin);
     printf("Entrez le prenom du contact a supprimer : ");
     gets(prenom);
     while(fread(&F,sizeof(struct Fiche),1,f)!=0)
	   {
       if((strcmp(F.nom,nom)!=0)&&(strcmp(F.prenom,prenom)!=0))
        {
         i++;
         fwrite(&F,sizeof(struct Fiche),1,g);
        }
      }
     printf("\n\nContact supprime ...");
     if(i==0)
      {
       printf("\n Contact introuvable");
      }
    }
  }
 fclose(f);
 remove(chemin);
 fclose(g);
 rename(chemin2,chemin);
}

//***************************************************
//**	Fonction qui affiche le menu de modification  *
//***************************************************

int Modif_Champ(void)
{
 int choix;
 clrscr();
 printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
 printf("\n\t\xBA   Menu Modifier  \xBA");
 printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
 printf("\n\n[1] Modifier le nom");
 printf("\n[2] Modifier le prenom");
 printf("\n[3] Modifier l'adresse mail ");
 printf("\n[4] Modifier l'adresse");
 printf("\n[5] Modifier la ville");
 printf("\n[6] Modifier le numero du domicile");
 printf("\n[7] Modifier le numero du travail");
 printf("\n[8] Modifier le numero du fax");
 printf("\n[9] Modifier le numero du portable 1");
 printf("\n[10] Modifier le numero du portable 2");
 printf("\n[11] Modifier le numero du groupe");
 printf("\n\n[0] Retourner au menu principal");
 printf("\n\nVeuillez indiquer votre choix : ");
 scanf("%d",&choix);
 return choix;
}

//***********************************************
//**	Fonction affichant le menu final d'exit  **
//***********************************************

void Quitter(void)
{
 clrscr();
 printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                       ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿                        º");
 printf("º                       ³                             ³                        º");
 printf("º                       ³   MERCI POUR VOTRE VISITE   ³                        º");
 printf("º                       ³                             ³                        º");
 printf("º                       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ                        º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º                                                                              º");
 printf("º    zal3a          majdiesprit@hotmail.fr                  Annuaire 1.0       º");
 printf("º    nadfrslw       nadfrslw@hotmail.fr                      2008 / 2009       º");
 printf("º                                                                              º");
 printf("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ&#188;");
 printf("Appuyez sur une touche pour quitter ...");
 getch();
}

//*************************************************
//**	Fonction qui permet de modifier un contact  *
//*************************************************

void Modifier(void)
{
 int choix;
 char chemin[]="C:\\liste.txt";
 char chemin2[]="C:\\temp_liste.txt";
 struct Fiche F;
 char nom[30];
 char prenom[30];
 FILE *f;
 FILE *g;
 f=fopen(chemin,"rb");
 g=fopen(chemin2,"ab");
 if(f==NULL)
  {
   printf("\n Impossible d'ouvrir le fichier %s",chemin);
  }
 else
  {
   if(g==NULL)
    {
     printf("\n Impossible d'ouvrir le fichier %s",chemin2);
    }
   else
    {
     clrscr();
     printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
     printf("\n\t\xBA   Menu Modifier  \xBA");
     printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
     fflush(stdin);
     printf("\n\nEntrez le nom du contact a modifier : ");
     gets(nom);
     fflush(stdin);
     printf("Entrez le prenom du contact a modifier : ");
     gets(prenom);
     while(fread(&F,sizeof(struct Fiche),1,f)!=0)
	   {
       if((strcmp(F.nom,nom)!=0)&&(strcmp(F.prenom,prenom)!=0))
        {
         fwrite(&F,sizeof(struct Fiche),1,g);
         printf("\n Contact introuvable");
        }
       else
       {
        do
        {
        choix=Modif_Champ();
        clrscr();
        switch(choix)
          {
           case 1:
            printf("\nVeuillez saisir le nouveau nom :");
            scanf("%s",F.nom);
            break;
           case 2:
            printf("\nVeuillez saisir le nouveau prenom :");
            scanf("%s",F.prenom);
            break;
           case 3:
            printf("\nVeuillez saisir le nouveau mail :");
            scanf("%s",F.mail);
            break;
           case 4:
            printf("\nVeuillez saisir la nouvelle adresse :");
            scanf("%s",F.adresse);
            break;
           case 5:
            printf("\nVeuillez saisir la ville :");
            scanf("%s",F.ville);
            break;
           case 6:
            printf("\nVeuillez saisir le numero du domicile :");
            scanf("%s",F.num_dom);
            break;
           case 7:
            printf("\nVeuillez saisir le numero du travail :");
            scanf("%s",F.num_travail);
            break;
           case 8:
            printf("\nVeuillez saisir le numero du fax :");
            scanf("%s",F.num_fax);
            break;
           case 9:
            printf("\nVeuillez saisir le numero du protable 1 :");
            scanf("%s",F.num_portable1);
            break;
           case 10:
            printf("\nVeuillez saisir le numero du portable 2 :");
            scanf("%s",F.num_portable2);
            break;
           case 11:
            printf("\nVeuillez saisir le numero du groupe :");
            scanf("%d",&F.groupe);
            break;
          }
         }while(choix!=0);
        fwrite(&F,sizeof(struct Fiche),1,g);   // Fin switch
       }  // Fin else
     }  // Fin while
   }  // Fin else g
  }  //  Fin else f
 fclose(f);
 remove(chemin);
 fclose(g);
 rename(chemin2,chemin);
}

//**************************************************
//**	Fonction qui permet l'ajout d'un contact     *
//**************************************************

void Ajouter(void)
{
 char chemin[]="C:\\liste.txt";
 struct Fiche F;
 FILE *f;
 f=fopen(chemin,"ab");
 if(f==NULL)
  {
   printf("\n Impossible d'ouvrir le fichier %s",chemin);
  }
 else
  {
   printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
   printf("\n\t\xBA   Menu Ajouter   \xBA");
   printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
   fflush(stdin);
	printf("\n\nNom: \n");
   gets(F.nom);
   fflush(stdin);
	printf("Prenom: \n");
   gets(F.prenom);
   fflush(stdin);
	printf("Mail: \n");
   gets(F.mail);
   fflush(stdin);
	printf("Adresse: \n");
   gets(F.adresse);
   fflush(stdin);
	printf("Ville: \n");
   gets(F.ville);
   fflush(stdin);
	printf("Num Domicile: \n");
   gets(F.num_dom);
   fflush(stdin);
	printf("Num Travail: \n");
   gets(F.num_travail);
   fflush(stdin);
	printf("Num Fax: \n");
   gets(F.num_fax);
   fflush(stdin);
	printf("Num Portable 1: \n");
   gets(F.num_portable1);
   fflush(stdin);
	printf("Num Portable 2: \n");
   gets(F.num_portable2);
   do
    {
     printf("Groupe :    [1]  Famille   [2]  Amis   [3]  Autres\n" );
     scanf("%d",&F.groupe);
    }while((F.groupe!=1)&&(F.groupe!=2)&&(F.groupe!=3));
	fwrite(&F,sizeof(struct Fiche),1,f);
  }
 fclose(f);
}

//***************************************************
//**	Fonction qui permet l'affichage d'un contact  *
//***************************************************

void Afficher(void)
{
 int i=0;
 char chemin[]="C:\\liste.txt";
 struct Fiche F;
 FILE *f;
 f=fopen(chemin,"rb");
 if(f==NULL)
  {
   printf("\n Impossible d'ouvrir le fichier %s",chemin);
  }
 else
  {
   printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
   printf("\n\t\xBA Liste des contacts \xBA");
 	printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
   printf("\n\nIl existe %d contact(s) present(s) sur le fichier",Nb_Contacts());
   getch();
   clrscr();
   while(fread(&F,sizeof(struct Fiche),1,f)!=0)
    {
     i++;
     printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
     printf("\n\t\xBA Liste des contacts \xBA");
 	  printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
     printf("\n\nContact n:%d",i);
	  printf("\n\tNom : %s",F.nom);
	  printf("\n\tPrenom : %s",F.prenom);
	  printf("\n\tMail : %s",F.mail);
	  printf("\n\tAdresse : %s",F.adresse);
	  printf("\n\tVille : %s",F.ville);
	  printf("\n\tNum Domicile : %s",F.num_dom);
	  printf("\n\tNum Travail : %s",F.num_travail);
	  printf("\n\tNum Fax : %s",F.num_fax);
	  printf("\n\tNum Portable 1 : %s",F.num_portable1);
	  printf("\n\tNum Portable 2 : %s",F.num_portable2);
     switch(F.groupe)
      {
       case 1:
        printf("\n\tGroupe : Famille");
        break;
       case 2:
        printf("\n\tGroupe : Amis");
        break;
       case 3:
        printf("\n\tGroupe : Autres");
        break;
      }
     getch();
     clrscr();
    }
   fclose(f);
   if(i==0)
    {
     printf("\nAucun contact sur le fichier");
    }
  }
}

//****************************************************
//**	Fonction qui permet la recherche d'un contact  *
//****************************************************

void Rechercher(void)
{
 int i=0;
 int critere;
 int num;
 char nom[30];
 char ville[30];
 char prenom[30];
 char chemin[]="C:\\liste.txt";
 struct Fiche F;
 FILE *f;
 fflush(stdin);
 do
 {
  clrscr();
  printf("\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB");
  printf("\n\t\xBA   Menu recherche \xBA");
  printf("\n\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC");
  printf("\n\n[1] Recherche par nom et prenom");
  printf("\n[2] Recherche par ville");
  printf("\n[3] Recherche par groupe");
  printf("\n\n[0] Retourner au menu principal");
  printf("\n\n\nVeuillez donner le critere de recherche : ");
  scanf("%d",&critere);
  }while(critere<0||critere>3);
  clrscr();
  switch (critere)
  {
   case 1:
    fflush(stdin);
    printf("\n\nEntrez le nom du contact a rechercher : ");
    gets(nom);
    fflush(stdin);
    printf("Entrez le prenom du contact a rechercher : ");
    gets(prenom);
    clrscr();
    f=fopen(chemin,"rb");
    if(f==NULL)
     {
 	   printf("\n Impossible d'ouvrir le fichier %s",chemin);
     }
    else
     {
      while(fread(&F,sizeof(struct Fiche),1,f)!=0)
	    {
        printf("\n\t************************\n");
        if((strcmp(F.nom,nom)==0)&&(strcmp(F.prenom,prenom)==0))
         {
          i++;
          printf("\n\tNom: %s",F.nom);
	       printf("\n\tPrenom: %s",F.prenom);
	       printf("\n\tMail: %s",F.mail);
	       printf("\n\tAdresse: %s",F.adresse);
	       printf("\n\tVille : %s",F.ville);
	       printf("\n\tNum Domicile: %s",F.num_dom);
	       printf("\n\tNum Travail: %s",F.num_travail);
	       printf("\n\tNum Fax: %s",F.num_fax);
	       printf("\n\tNum Portable 1: %s",F.num_portable1);
	       printf("\n\tNum Portable 2: %s",F.num_portable2);
          printf("\n\n\t************************\n");
         }
       }
      if(i==0)
       {
        clrscr();
        printf("\nContact Introuvable");
       }
     }
    break;
   case 2:
    fflush(stdin);
    printf("\n\nEntrez la ville : ");
    gets(ville);
    clrscr();
    f=fopen(chemin,"rb");
    if(f==NULL)
     {
 	   printf("\n Impossible d'ouvrir le fichier %s",chemin);
     }
    else
     {
      printf("\n\t************************\n");
      while(fread(&F,sizeof(struct Fiche),1,f)!=0)
	    {
        if(strcmp(F.ville,ville)==0)
         {
          i++;
          printf("\n\tNom: %s",F.nom);
	       printf("\n\tPrenom: %s",F.prenom);
	       printf("\n\tMail: %s",F.mail);
	       printf("\n\tAdresse: %s",F.adresse);
	       printf("\n\tVille : %s",F.ville);
	       printf("\n\tNum Domicile: %s",F.num_dom);
	       printf("\n\tNum Travail: %s",F.num_travail);
	       printf("\n\tNum Fax: %s",F.num_fax);
	       printf("\n\tNum Portable 1: %s",F.num_portable1);
	       printf("\n\tNum Portable 2: %s",F.num_portable2);
          printf("\n\n\t************************\n");
         }
      }
      if(i==0)
       {
        clrscr();
        printf("\nContact Introuvable");
       }
     }
    break;
   case 3:
    fflush(stdin);
    printf("\nEntrez le numero du groupe : ");
    scanf("%d",&num);
    clrscr();
    f=fopen(chemin,"rb");
    if(f==NULL)
     {
 	   printf("\n Impossible d'ouvrir le fichier %s",chemin);
     }
    else
     {
      printf("\n\t************************\n");
      while(fread(&F,sizeof(struct Fiche),1,f)!=0)
	    {
        if(F.groupe==num)
         {
          i++;
          printf("\n\tNom: %s",F.nom);
	       printf("\n\tPrenom: %s",F.prenom);
	       printf("\n\tMail: %s",F.mail);
	       printf("\n\tAdresse: %s",F.adresse);
	       printf("\n\tVille : %s",F.ville);
	       printf("\n\tNum Domicile: %s",F.num_dom);
	       printf("\n\tNum Travail: %s",F.num_travail);
	       printf("\n\tNum Fax: %s",F.num_fax);
	       printf("\n\tNum Portable 1: %s",F.num_portable1);
	       printf("\n\tNum Portable 2: %s",F.num_portable2);
          printf("\n\n\t************************");
         }
      }
      if(i==0)
       {
        clrscr();
        printf("\nContact Introuvable");
       }
     }
    break;
 }
 fclose(f);
}

//****************************************************
//**	Fonction qui permet de relancer le programme   *
//****************************************************

 void Menu(void)
{
 int choix,s;
 s=Login();
 if(s==2)
  {
   do
   {
    clrscr();
    choix=Menu_user();
    switch (choix)
 	  {
 	   case 1 :
	    clrscr();
       Rechercher();
       getch();
       break;
      case 2:
  	    clrscr();
  	    Afficher();
  	    break;
      case 3:
  	    clrscr();
  	    Config_user();
  	    break;
      case 0:
  	    clrscr();
  	    Quitter();
  	    break;
     }
   }while(choix!=0);
  }
 else
  {
   do
   {
    clrscr();
    choix=Menu_admin();
    switch (choix)
 	  {
 	   case 1:
  	    clrscr();
  	    Ajouter();
       break;
 	   case 2 :
	    clrscr();
       Rechercher();
       getch();
       break;
      case 3:
  	    clrscr();
  	    Afficher();
  	    break;
      case 4:
  	    clrscr();
  	    Modifier();
  	    break;
      case 5:
  	    clrscr();
  	    Supprimer();
  	    getch();
  	    break;
      case 6:
  	    clrscr();
  	    Config_admin();
  	    break;
      case 0:
  	    clrscr();
  	    Quitter();
  	    break;
     }
    }while(choix!=0);
  }
}

void main()
{
 Menu();
}

Conclusion :

  • Remarques *


Annuaire 1.0 a été créé en langage C
Il nécessite quelques modifications afin de
l'améliorer, malheureusement par manque
de temps et vu les circonstances ( fin du délai
du projet ) ...

On peut citer par exemple :
- Modification de la fonction d'identification
pour ne plus avoir à copier le fichier
"Sessions.txt" sur c:\\

- L'ajout d'un controle sur les saisis pour
éviter tout disfonctionnement

- L'ajout d'une interface graphique


!!!!!!!!!!!!!
! Attention !
!!!!!!!!!!!!!

Annuaire 1.0 nécessite que le fichier "Sessions.txt"
soit présent sur c:\\ pour que la session d'identification
aie cours lors de lancement ( à corriger !! )

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.