C++ > Repetoire

TitreRepetoire
Postée le16-12-2009
Affichée630
Mini-lien
Description

La mémoire plante

EtatContient des erreurs. Contient des erreurs.
Code d'insertion
Options
Afficher les numéros de lignes  Mettre la source en plein ecran  Selectionner la source  Partager sur Facebook 
Téléchargement Telecharger en format txt  Telecharger en format pdf  Telecharger en format cpp
Plein ecran
using namespace std;
#include <iostream>
#include <fstream>                         // Permet d'enregistrer les données du répertoire
#include <string>                          // Permet d'utiliser les opérateurs avec des chaines de caractères

void insertcontact(int &nbContacts);
void affichercontact(int nbContacts);
void recherchercontact(int &nbContacts, int &place);
void recherchercontact_tel(int &place);
void recherchercontact_ville(int &place);
void suppressioncontact(int &nbContacts, int &place);
void modifiercontact(int &nbContacts);
void tricontact (int &nbContacts);

typedef struct {
               string nom;
               string prenom;
               string mail;
               string numtel;
               string ville;              
               } typecontact;



typecontact contact[50];
int i,nbContacts,place,num_menu;

bool quitter=false;

main()
{
nbContacts=0;
bool quitter=false;
     
     ifstream ifile("memoire.txt",ios::in); // ouverture en lecture du fichier memoire.txt
     if(ifile)
   {
              ifile>>contact[nbContacts].nom>>contact[nbContacts].prenom>>contact[nbContacts].mail>>contact[nbContacts].numtel>>contact[nbContacts].ville;
               
       while(ifile)
       {
                                                     
       nbContacts++;
        ifile>>contact[nbContacts].nom>>contact[nbContacts].prenom>>contact[nbContacts].mail>>contact[nbContacts].numtel>>contact[nbContacts].ville;
       }
       ifile.close();  
    }  
     else
    {
    cout<<"\n Probleme d'ouverture du fichier"<<endl;
    }        






while(quitter=false)
{

cout<<" Menu contact "<<endl;
cout<<"1 : Ajouter un contact."<<endl;
cout<<"2 : Afficher la liste des contacts."<<endl;
cout<<"3 : Rechercher un contact"<<endl;
cout<<"4 : Modifier un contact."<<endl;
cout<<"5 : Supprimer un contact."<<endl;
cout<<"6 : Trier les contacts par nom."<<endl;
cout<<"7 : Quitter"<<endl;
cout<<"Saisir le numero correspondant a votre choix :"<<endl;
cin>>num_menu;
cout<<endl;

do
  {
   cout<<" Erreur dans le choix du menu , veuillez resaisir"<<endl;
   cin>>num_menu;
  }
while ((num_menu!=1) || (num_menu!=2) || (num_menu!=3) || (num_menu!=4) || (num_menu!=5) || (num_menu!=6) || (num_menu!=7));



switch (num_menu)
{
       case 1 : {  
                       insertcontact(nbContacts);
                       break;
                }
       
       case 2 : {
                       affichercontact(nbContacts);
                       break;                  
                }
       
       case 3 : {
                       recherchercontact(nbContacts,place);
                       break;
                }
               
       case 4 : {
                       modifiercontact(nbContacts);
                       break;
                }        
               
       case 5 : {
                       suppressioncontact(nbContacts,place);
                       break;
                }
       
       case 6 : {
                      tricontact(nbContacts);
                       break;
                }        
               
       case 7 : {
                       quitter=true;
                       break;
                }
       
       
       
}//fin switch
}//fin while

ofstream outfile("memoire.txt",ios::out); // ouverture en écriture du fichier memoire.txt

      if(outfile)
      {
          for(i=0;i<nbContacts;i++)
          {                        
            outfile<<contact[i].nom<<"   "<<contact[i].prenom<<"   "<<contact[i].mail<<"   "<<contact[i].numtel<<"   "<<contact[i].ville<<endl;
          }
     
     outfile.close();
      }                
      else
      {
      cout<<"\n Problème d'ouverture du fichier."<<endl;
      }
system("PAUSE");

} // fin



//=====================================================================================================================================================================



void insertcontact(int &nbContacts)
{
char rep;
                 do
                    {
                         if (nbContacts < 50)
                         {
                                  cout<<"\n Saisir le nom du contact : "<<endl;
                                  cin>>contact[nbContacts].nom;
                                 
                                  cout<<"\n Saisir le prenom du contact :"<<endl;
                                  cin>>contact[nbContacts].prenom;
                                 
                                  cout<<"\n Saisir le mail du contact :"<<endl;
                                  cin>>contact[nbContacts].mail;
                                 
                                  cout<<"\n Saisir le numero de telephone du contact :"<<endl;
                                  cin>>contact[nbContacts].numtel;
                                 
                                  cout<<"\n Saisir la ville du contact :"<<endl;
                                  cin>>contact[nbContacts].ville;
                                 
                                  nbContacts++;
                                  cout<<"\n Voulez-vous saisir un nouveau contact ? (Y/N)"<<endl;
                                  cin>>rep;
                         }
                         else
                         {
                                  cout<<"\n Votre repertoire est rempli !"<<endl;
                                  rep='N';
                         }
                    }  //fin do
                    while((rep == 'y') || (rep =='Y'));
                   
}  //fin void



//=====================================================================================================================================================================



void affichercontact(int nbContacts)
{

                for(i=0;i<nbContacts;i++)
                       {
                           cout<<"\n"<<contact[i].nom<<" "<<contact[i].prenom<<endl;
                           cout<<"\n mail : "<<contact[i].mail;
                           cout<<"\n ville : "<<contact[i].ville;
                           cout<<"\n num tel : "<<contact[i].numtel<<endl<<endl;
                                                     
                       }

       
       
}  // fin void



//=====================================================================================================================================================================



void recherchercontact(int &nbContacts,int &place)
{
int answer;
cout<<"\n 1 : par numero de telephone"<<endl;
cout<<"\n 2 : par ville"<<endl;
cin>>answer;

switch (answer)
       {
               case 1 : {
                        recherchercontact_ville(place);
                   
                        break;
                        }    
       
               
               case 2 : {
                        recherchercontact_tel(place);
                       
                       
                        break;
                        }
       
       }  // fin switch

}  //fin void



//=====================================================================================================================================================================



void recherchercontact_ville(int &place)
{

int indice;
string ville;
     
cout<<"\n Saisir la ville :"<<endl;
cin>>ville;

indice = 0;

       for (place = 0; place < 50; place++)
       {
                  if (contact[place].ville == ville)
                  {
                  cout<<"\n"<<contact[place].nom<<" "<<contact[place].prenom<<endl;
                  cout<<"\nmail : "<<contact[place].mail<<endl;
                  cout<<"\nville : "<<contact[place].ville<<endl;
                  cout<<"\n num tel : "<<contact[place].numtel<<endl;  
                  indice++;
                  }

       }      
       
       if (indice==0)
       {
       cout<<"\n Personne n'habite "<<ville<<endl;
       }

place = 0;


}



//=====================================================================================================================================================================



void recherchercontact_tel(int &place)
{
     
string tel;
     
cout<<"\n Saisir le numero de telephone :"<<endl;
cin>>tel;


         while (contact[place].numtel != tel && place < nbContacts)
         {
         place++;
         }

          if (place != nbContacts)
          {
                           cout<<"\n"<<contact[place].nom<<" "<<contact[place].prenom<<endl;
                           cout<<"\n mail : "<<contact[place].mail<<endl;
                           cout<<"\n ville : "<<contact[place].ville<<endl;
                           cout<<"\n num tel : "<<contact[place].numtel<<endl;                
          }
          else
          {
                           cout<<"\n Il n'existe aucun contact avec le numero "<<tel<<endl;  
          }

          place = 0;
   
}  //fin void



//=====================================================================================================================================================================



void suppressioncontact(int &nbContacts, int &place)
{
string numtel;
int j;


cout<<"\n Entrez le numero du contact a supprimer :"<<endl;
cin>>numtel;

    while(contact[place].numtel != numtel && place<nbContacts)
    {
    place++;
    }

    if (place!= nbContacts)
    {
                for(j=place; j<nbContacts; j++)
                 {
           
                                 contact[j].nom = contact[j+1].nom;
                                                    contact[j].prenom = contact[j+1].prenom;
                                                   contact[j].mail = contact[j+1].mail;
                                                   contact[j].ville = contact[j+1].ville;
                                                 contact[j].numtel = contact[j+1].numtel;
           
                 }
            nbContacts--;
    }
    else
    {
       cout<<"Ce contact n'existe pas !"<<endl;
    }
   
}  // fin void



//=====================================================================================================================================================================



void modifiercontact(int &nbContacts)
{

string numero;
int reponseModifier;

cout<<"1 : Changer le nom et prenom."<<endl;
cout<<"2 : Changer la ville."<<endl;
cout<<"3 : Changer l'adresse mail."<<endl;
cout<<"4 : Changer le numero."<<endl;
cout<<"5 : Tout changer."<<endl;
cin>>reponseModifier;

switch (reponseModifier)
{


case 1 :        
                 cout<<"\n Saisir le numéro du contact a modifier"<<endl;
                 cin>>numero;
                 
                 while (contact[place].numtel != numero && place<nbContacts)
                    {
                    place++;
                    }
                   
                 if (place!= nbContacts)
                    {
                    cout<<"Saisir le nouveau nom"<<endl;
                    cin>>contact[place].nom;
                    cout<<"\n Saisir le nouveau prenom"<<endl;
                    cin>>contact[place].prenom;
                    }
                 else
                    {
                   
                    cout<<"\n Ce contact n'existe pas."<<endl;
                   
                    }
                   
                    place = 0;
                   
                    break;
                   


case 2 :         cout<<"\n Saisir le numéro du contact a modifier"<<endl;
                 cin>>numero;
                 
                 while (contact[place].numtel != numero && place<nbContacts)
                    {
                    place++;
                    }
                   
                 if (place != nbContacts)
                    {
                    cout<<"\n Saisir la nouvelle ville"<<endl;
                    cin>>contact[place].ville;
                    }
                 else
                    {
                    cout<<"\n Ce contact n'existe pas."<<endl;
                    }

                    place = 0;
                   
                     break;



     
case 3 :         cout<<"\n Saisir le numéro du contact a modifier"<<endl;
                 cin>>numero;
                 
                 while (contact[place].numtel != numero && place<nbContacts)
                    {
                    place++;
                    }
                   
                 if (place != nbContacts)
                    {
                    cout<<"\n Saisir la nouvelle adresse mail"<<endl;
                    cin>>contact[place].mail;
                    }
                 else
                    {
                    cout<<"\n Ce contact n'existe pas."<<endl;
                    }
                   
                    place = 0;
                   
                    break;
                   
                   
                   


case 4 :         cout<<"\n Saisir le numéro du contact a modifier"<<endl;
                 cin>>numero;
                 
                 while (contact[place].numtel != numero && place<nbContacts)
                    {
                    place++;
                    }
                   
                 if (place != nbContacts)
                    {
                    cout<<"\n Saisir le nouveau numero de telephone"<<endl;
                    cin>>contact[place].numtel;
                    }
                 else
                    {
                    cout<<"\n Ce contact n'existe pas."<<endl;
                    }
                   
                    place = 0;
                   
                    break;
     
 
     
     
     
case 5 :
                 cout<<"\n Saisir le numéro du contact a modifier"<<endl;
                 cin>>numero;
                 
                 while (contact[place].numtel != numero && place<nbContacts)
                    {
                    place++;
                    }
                   
                 if (place != nbContacts)
                    {
                   
                    cout<<"Saisir le nouveau nom"<<endl;
                    cin>>contact[place].nom;
                    cout<<"\nSaisir le nouveau prenom"<<endl;
                    cin>>contact[place].prenom;
                    cout<<"\nSaisir la nouvelle adresse mail"<<endl;
                    cin>>contact[place].mail;
                    cout<<"\nSaisir la nouvelle ville"<<endl;
                    cin>>contact[place].ville;
                    cout<<"\nSaisir le nouveau numero de telephone"<<endl;
                    cin>>contact[place].numtel;
                   
                    }  //fin if  
                   
                 else
                 
                    {
                   
                    cout<<"\n Ce contact n'existe pas."<<endl;
                   
                    }
                   
                    place = 0;
                   
                 break;
                 
                 
}     // fin switch


}     // fin void



//=====================================================================================================================================================================



void tricontact(int &nbContacts)
{
     int k,indiceMini,repTri;
     string a,b,c,d,e;
     
     
cout<<"1 : Trier par nom."<<endl;
cout<<"2 : Trier par numero."<<endl;
cin>>repTri;
   
   
   
   switch (repTri)
   {
         
    case 1 :        for(i=0;i<nbContacts;i++)
                    {
               
                    indiceMini=i;
                   
                        for(k=i+1;k<nbContacts;k++)
                        {
                                                   
                            if (contact[k].nom.compare(contact[i].nom)<0)
                             {
                                               indiceMini=k;
                                               
                                               a=contact[i].nom;
                                               b=contact[i].prenom;
                                               c=contact[i].ville;
                                               d=contact[i].mail;
                                               e=contact[i].numtel;
                                               
                                               contact[i].nom=contact[indiceMini].nom;
                                               contact[i].prenom=contact[indiceMini].prenom;
                                               contact[i].ville=contact[indiceMini].ville;
                                               contact[i].mail=contact[indiceMini].mail;
                                               contact[i].numtel=contact[indiceMini].numtel;
                                               
                                               contact[indiceMini].nom = a;
                                               contact[indiceMini].prenom = b;
                                               contact[indiceMini].ville = c;
                                               contact[indiceMini].mail = d;
                                               contact[indiceMini].numtel = e;
                                               
                                               
                                             
                             }  // fin if
                             
                             else if (contact[k].nom.compare(contact[i].nom)==0)
                             {
                                     if(contact[k].prenom.compare(contact[i].prenom)<0)
                                     {
                                              indiceMini=k;
                                               
                                               a=contact[i].nom;
                                               b=contact[i].prenom;
                                               c=contact[i].ville;
                                               d=contact[i].mail;
                                               e=contact[i].numtel;
                                               
                                               contact[i].nom=contact[indiceMini].nom;
                                               contact[i].prenom=contact[indiceMini].prenom;
                                               contact[i].ville=contact[indiceMini].ville;
                                               contact[i].mail=contact[indiceMini].mail;
                                               contact[i].numtel=contact[indiceMini].numtel;
                                               
                                               contact[indiceMini].nom = a;
                                               contact[indiceMini].prenom = b;
                                               contact[indiceMini].ville = c;
                                               contact[indiceMini].mail = d;
                                               contact[indiceMini].numtel = e;
                                     }  //fin if2
                              }  //fin if1
                             
                             
                             
                             }   // fin for2
                        }   // fin for1
                   
                   
                affichercontact(nbContacts);
                break;
         
         
         
         
         
    case 2 :
                   for(i=0;i<nbContacts;i++)
                    {
               
                    indiceMini=i;
                   
                        for(k=i+1;k<nbContacts;k++)
                        {
                                                   
                            if (contact[k].numtel.compare(contact[i].numtel)<0)
                             {
                                               indiceMini=k;
                                               
                                               a=contact[i].nom;
                                               b=contact[i].prenom;
                                               c=contact[i].ville;
                                               d=contact[i].mail;
                                               e=contact[i].numtel;
                                               
                                               contact[i].nom=contact[indiceMini].nom;
                                               contact[i].prenom=contact[indiceMini].prenom;
                                               contact[i].ville=contact[indiceMini].ville;
                                               contact[i].mail=contact[indiceMini].mail;
                                               contact[i].numtel=contact[indiceMini].numtel;
                                               
                                               contact[indiceMini].nom = a;
                                               contact[indiceMini].prenom = b;
                                               contact[indiceMini].ville = c;
                                               contact[indiceMini].mail = d;
                                               contact[indiceMini].numtel = e;
                                               
                                               
                                             
                             }  // fin if
                        }  // fin for2
                   }  // fin for1
                   
                affichercontact(nbContacts);
                break;
               
    }  // fin switch
               
}  // fin void




//=====================================================================================================================================================================


//                                          FIN