Bonjour,

Je voudrais créer un petit programme qui permettrait de gérer un répertoire téléphonique, alors voila la liste des fonctionnalités attendues :

-ajouter un contact;

-rechercher un contact;

-supprimer un contact;

-modifier un contact;

-afficher un contact;

-afficher la liste de tous les contacts.

Pour le moment j'ai pu gérer l'ajout d'un contact, l'affichage de tous les contacts. Je voudrais maintenant gérer la recherche, c'est à dire quand l'utilisateur saisi une chaîne de caractère, qu'on recherche dans le fichier toutes les lignes qui contiennent cette chaîne et qu'on affiche ces lignes dans la console. J'ai déjà ajouter une fonction qui permet de vérifier si une chaîne de caractère se trouve ou non dans le fichier.

Merci de m'aider à résoudre ce problème.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <cstring>
#include <fstream>
#include <vector>
 
using namespace std;
 
typedef struct
{
    string nom;
    string prenom;
    int numeroTelephone;
} repertoire;
 
void charger(ifstream &fichier)
{
    string ligne;
 
    if(fichier)
    {
        while(getline(fichier, ligne))
        {
            cout << "\n" << ligne << endl;
        }
    }
    else
        cout << "error !" << endl;
}
 
repertoire ajouterContact(repertoire t)
{
    cout << "\nPrenom : ";
    cin >> t.prenom;
    cout << "Nom : ";
    cin >> t.nom;
    cout << "Numero de telephone : ";
    cin >> t.numeroTelephone;
 
    return t;
}
 
void sauvegarder(repertoire t)
{
    // Ouverture du fichier en mode écriture
    string const fichier("C:/Users/Dell/Desktop/projet-repertoire-telphonique/repertoire.txt");
    ofstream monFlux(fichier.c_str(), ios::app);
 
    //Récupération des éléments de la structure
    repertoire r = ajouterContact(t);
 
    if(monFlux)
        monFlux << r.prenom << " " << r.nom  << " " << r.numeroTelephone << endl;
    else
        cout << "Echec ouverture !" << endl;
}
 
void rechercheMot( ifstream& fichier, string mot)
{
    int compteur(0);
    char charFichier;
 
    while( !fichier.eof() && compteur < mot.size()) // Lit le fichier tant qu'on n'a pas atteint la fin
    {
        fichier.get(charFichier);// Récupère le caractère qui se trouve dans le fichier
        if( charFichier == mot[compteur]) // Compare le caractère récupéré au caractère qui se trouve à la position du compteur
        {
            compteur += 1;// Incrémente le compteur si les caractère sont égaux
        }
        else
        {
            compteur = 0;
        }
    }
 
    // Test de fin pour déterminer si le mot existe dans le fichier
    if (compteur == mot.size()) // On compare la taille de la chaine au compteur
    {
        cout << "\nLe mot existe dans le fichier ! " << endl;
    }
    else
    {
        cout << "\nLe mot n'existe pas dans le fichier ! " << endl;
    }
}
 
void menu()
{
    int choix;
    repertoire t;
    char ajouter = 'o';
    string nom;
 
    //Ouverture du fichier en mode lecture
    ifstream fichier("C:/Users/Dell/Desktop/projet-repertoire-telphonique/repertoire.txt");
 
    cout << "\n============================== Menu ================================\n";
    cout << "\n" << "1==>----------------------Ajouter un contact------------------------" << endl;
    cout << "2==>----------------------Rechercher un contact---------------------" << endl;
    cout << "3==>----------------------Supprimer un contact----------------------" << endl;
    cout << "4==>----------------------Modifier un contact-----------------------" << endl;
    cout << "5==>----------------------Afficher un contact-----------------------" << endl;
    cout << "6==>----------------------Afficher tous les contacts----------------" << endl;
    cout << "7==>----------------------Quitter-----------------------------------" << endl;
    cout << "\n====================================================================\n";
    cout << "\nTapez votre choix : ";
    cin >> choix;
 
    switch(choix)
    {
    case 1:
        while(ajouter == 'o')
        {
            sauvegarder(t);
            cout << "\nVoulez vous ajouter un autre contact ? (o/n) : ";
            cin >> ajouter;
        }
        break;
    case 2:
        cout << "\nNom a rechercher : ";
        cin >> nom;
        rechercheMot(fichier, nom);
        break;
    case 6:
        charger(fichier);
        break;
    }
 
}
int main()
{
    menu();
 
    return 0;
}