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