Un repertoire telephonique avec la classe fstream

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 150 fois - Téléchargée 30 fois

Contenu du snippet

permet de montrer comment lire/ecrire dans un fichier avec les methodes de la classe fstream et en plus y a des petites fonctions sympas comme la recherche d un nom par le numero et vice versa...

Source / Exemple :


#include <iostream>
#include <stdlib.h>
#include <string>
#include <conio.c>
#include <fstream>
using namespace std;

void fonction_numero_par_nom()
{
                          clrscr();
                          string ligne_lue;
                          ifstream rep;
                          rep.open("repertoire");
                          if(rep.good())
                          {
                          bool trouve=false;
                          string numero;
                          string personne;
                          int i;
                          cout<<"Entrez le nom : ";
                          cin>>personne;
                          while(rep>>ligne_lue)
                          {
                          i=0;
                                               while(ligne_lue.substr(i,1)!=":")
                                               {
                                               i++;
                                               }
                                               if((ligne_lue.substr(0,i))==personne)
                                               {
                                               numero=ligne_lue.substr(i+1,10);
                                               cout<<"Le numero de "<<personne<<" est: "<<numero<<".\n\n"<<endl;
                                               trouve=true;
                                               }
                          }
                          if(trouve==false)
                          cout<<"Aucune numero n'est associe a "<<personne<<"...\n\n"<<endl;
                          rep.close();
                          }
                          else
                          {
                          cerr<<"Erreur d'ouverture du fichier";
                          }
}

void fonction_nom_par_numero()
{
                          clrscr();
                          string ligne_lue;
                          ifstream rep;
                          rep.open("repertoire");
                          if(rep.good())
                          {
                          bool trouve=false;
                          string numero;
                          string personne;
                          int i;
                          cout<<"Entrez le numero (sans espaces...) : ";
                          cin>>numero;
                          while(rep>>ligne_lue)
                          {
                          i=0;
                                               while(ligne_lue.substr(i,1)!=":")
                                               {
                                               i++;
                                               }
                                               if((ligne_lue.substr(i+1,10))==numero)
                                               {
                                               personne=ligne_lue.substr(0,i);
                                               cout<<"Le numero "<<numero<<" est asocie a "<<personne<<".\n\n"<<endl;
                                               trouve=true;
                                               }
                          }
                          if(trouve==false)
                          cout<<"Aucune personne n'est associee au numero"<<numero<<"...\n\n"<<endl;
                          rep.close();
                          }
                          else
                          {
                          cerr<<"Erreur d'ouverture du fichier";
                          }
}

void fonction_afficher_tout()
{
                          clrscr();
                          ifstream rep;
                          rep.open("repertoire");
                          if(rep.good())
                          {
                          string ligne_lue;
                          string personne;
                          string numero;
                          int i=0;
                          int j=0;
                          while(rep>>ligne_lue)
                          {
                                               while(ligne_lue.substr(j,1)!=":")
                                               {
                                               j++;
                                               }
                                               numero=ligne_lue.substr(j+1,10);
                                               personne=ligne_lue.substr(0,j);
                                               gotoxy(0,i+1);
                                               cout<<"Entree n ";
                                               gotoxy(10,i+1);
                                               cout<<i+1<<endl;
                                               gotoxy(13,i+1);
                                               cout<<personne<<endl;
                                               gotoxy(35,i+1);
                                               cout<<numero<<endl;
                                               i++;
                          }
                          gotoxy(1,i+2);
                          if(i==0)
                          cout<<"\nIl n'y a aucune entree dans le repertoire\n\n"<<endl;
                          else if(i==1)
                          cout<<"\nIl n'y a qu'une entree dans le repertoire\n\n"<<endl;
                          else
                          cout<<"\nIl y a "<<i<<" entrees dans le repertoire\n\n"<<endl;
                          rep.close();
                          }
                          else
                          {
                          cerr<<"Erreur d'ouverture du fichier";
                          }
}

void fonction_ajouter_entree()
{
                          ofstream rep;
                          rep.open("repertoire",ios::app);
                          if(rep.good())
                          {
                          string personne,numero;
                          cout<<"Entrez le nom: ";
                          cin>>personne;
                          cout<<"Entrez le numero: ";
                          cin>>numero;
                          rep<<personne<<":"<<numero<<endl;
                          cout<<"\n\n"<<endl;
                          rep.close();
                          }
                          else
                          {
                          cerr<<"Erreur d'ouverture du fichier";
                          }
}

void main()
{
	unsigned short choix;
    do{
       cout<<"Que voulez vous faire ?"<<endl;
       cout<<"1.Chercher un numero par le nom"<<endl;
       cout<<"2.Chercher un nom par le numero"<<endl;
       cout<<"3.Afficher l'integralite du repertoire"<<endl;
       cout<<"4.Ajouter une entree"<<endl;
       cout<<"5.Quitter"<<endl;
       cin>>choix;
       switch(choix)
       {
       case 1: fonction_numero_par_nom(); break;
       case 2: fonction_nom_par_numero(); break;
       case 3: fonction_afficher_tout(); break;
       case 4: fonction_ajouter_entree(); break;
       case 5: exit(0); break;
       default: clrscr; cout<<"Mauvais choix\n\n"<<endl; break;
       }
   }while(choix!=5);
 }

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
28 juin 2007

bonjour! g un probleme avec "clrscr();" ! Le compilateur detecte une erreur !!!! Voila je debute! Et javé vrémen besoin de source!!

Merci de me repondre
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
voila j ai mit à jour, donc je me suis servi d un switch et j ai separé le code en plusieurs fonctions.
j ai aussi rajouté dans les fonctions la gestion d erreur d ouverture du fichier
Messages postés
18
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
22 décembre 2003

Resalut,
Mais tes "case" peuvent renvoyer a des fonctions. Ca rend ainsi le code plus rigoureux et plus lisible car j'ai appris que le if n'était pas fait pour ca..., du style..

case 1:
fonction1();
case 2:
fonction2();

et ainsi de suite.... :-). Bonne prog.
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
oué j aurait pu mettre un switch à la place des if mais bon j aime pas trop quand y a beaucoup de code entres les "case"
Messages postés
18
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
22 décembre 2003

salut,
Ton passage sur la recherche peut me servir..
Pourquoi ne pas mettre un switch pour les structures de sélection, a la place de tes if ?
Bonne prog....

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.