Mini agenda telephonique

Contenu du snippet

Ceci est un mini-agenda téléphonique tout simple ; les données sont répertoriées dans des fichiers texte (utilisation de la classe fstream afin de gérer les traitements sur les fichiers).
Améliorations possibles :

- n'utiliser qu'un seul fichier de données au lieu de créer un fichier pour chaque lettre,
en utilisant l'accès direct au fichier qui serait 'découpé' à l'intérieur suivant la
lettre alphabétique;

- pallier au problème du dernier retour chariot lors de la lecture du fichier, qui
duplique la dernière ligne entrée dans le fichier;

- pouvoir répondre à une recherche de la part de l'utilisateur (une recherche par le nom) au lieu que celui-ci n'affiche toutes les entrées d'une seule lettre. Utilisation donc
d'un parcours total et séquentiel du fichier correspondant au nom de la personne recherchée par exemple et à chaque fois, établir une comparaison du nom demandé et du nom représenté dans l'enregistrement.

Source / Exemple :


#include <iostream>
#include <fstream>
#include <string>

#define TITLE "\t\t\tMINI-AGENDA\n" ;

using namespace std;

char *get_letter (const string &inf) {    
    
    char temp[20];
    
    switch (inf[0]) {
        
        case 'A' : strcpy(temp, "a.txt");
                   break;   
        
        case 'B' : strcpy(temp, "b.txt");
                   break;
                   
        case 'C' : strcpy(temp, "c.txt");
                   break;
                   
        case 'D' : strcpy(temp, "d.txt");
                   break;
                   
        case 'E' : strcpy(temp, "e.txt");
                   break;
                   
        case 'F' : strcpy(temp, "f.txt");
                   break;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
        
        case 'G' : strcpy(temp, "g.txt");
                   break;
                   
        case 'H' : strcpy(temp, "h.txt");
                   break;
                   
        case 'I' : strcpy(temp, "i.txt");
                   break;
                   
        case 'J' : strcpy(temp, "j.txt");
                   break;
        
        case 'K' : strcpy(temp, "k.txt");
                   break;
        
        case 'L' : strcpy(temp, "l.txt");
                   break;
        
        case 'M' : strcpy(temp, "m.txt");
                   break;
                   
        case 'N' : strcpy(temp, "n.txt");
                   break;
        
        case 'O' : strcpy(temp, "o.txt");
                   break;
        
        case 'P' : strcpy(temp, "p.txt");
                   break;
        
        case 'Q' : strcpy(temp, "q.txt");
                   break;
        
        case 'R' : strcpy(temp, "r.txt");
                   break;
                   
        case 'S' : strcpy(temp, "s.txt");
                   break;
                   
        case 'T' : strcpy(temp, "t.txt");
                   break;                               
        
        case 'U' : strcpy(temp, "u.txt");
                   break;
        
        case 'V' : strcpy(temp, "v.txt");
                   break;
                   
        case 'W' : strcpy(temp, "w.txt");
                   break;
        
        case 'X' : strcpy(temp, "x.txt");
                   break;
        
        case 'Y' : strcpy(temp, "y.txt");
                   break;
        
        case 'Z' : strcpy(temp, "z.txt");
                   break;                                                                                      
     }
     return temp;
}    

     
void write_entry (char *buffer, const string &inff, int t) {  
                                                                                                           
     char temp[50];
          
     strcpy(temp, buffer);
     ofstream file(buffer, ios :: app);
     if (!file) {
        cout << "Impossible d'accéder au fichier, verifier le chemin d'acces "
         "ou les droits d'acces au fichier" << endl;
     }     
     else {
         if (!(file.good())) {
             cout << "Impossible d'ecrire dans le fichier" << endl;
         } 
         else {
             if (t == 0) {
                 file << inff.c_str();
             }
             else if (t == 1) {
                 file << " " << inff.c_str() << endl;
             }
             else {
                 file << " " << inff.c_str();
             }
         }
     }        
     file.close();        
} 
                           

void get_entry () {    
    
    string let, temp;
    char tempp[50];
     
    cout << "Quelle lettre voulez-vous choisir pour consulter l'agenda ? (exemple : A,C...)" << endl;
    cout << "Lettre : ";
    cin >> let;
    strcpy(tempp, get_letter(let));
    ifstream fic (tempp);
    if (fic) {
        cout << "\nVoici la liste des contacts appartenant a la lettre choisie :\n" << endl;
        do {
            if (fic.peek() == '\n') {
                cout << '\n';
            }    
            fic >> temp;
            cout << temp << endl;
        }    
        while (fic.peek() != EOF);   
    }
    else {
        cout << "Impossible d'acceder au fichier, celui-ci ne contient probablement aucun contact" << endl;
    }
    fic.close();     
}    

main () { 
       
    unsigned int choix;
    char *buff;
    string nom, prenom, telf, telp, mail;
    int n = 0;
    char p;
    
    cout << TITLE;
    while (1) {
        do {
            cout << "\n\nMENU" << endl;
            cout << "----" << endl;
            cout << "0. Ajouter un contact" << endl;
            cout << "1. Visualiser les contacts d'une meme lettre" << endl;
            cout << "2. Quitter" << endl;
            cout << "\nChoix : ";
            cin >> choix;
        }
        while (choix > 2);

        switch (choix) {
            case 0 : do {
                        cout << "Veuilez indiquer les renseignements concernant le contact " << 
                        "a ajouter" << endl;                                                
                        cout << "\nNouvelle entree : " << endl;
                        
                        cout << "Nom : ";                        
                        cin >> nom;
                        buff = get_letter(nom);
                        write_entry(buff, nom, 0);
                        
                        cout << "Prenom : ";
                        cin >> prenom;
                        buff = get_letter(nom);
                        write_entry(buff, prenom, 2);
                        
                        cout << "Tel fixe : ";
                        cin >> telf;
                        buff = get_letter(nom);
                        write_entry(buff, telf, 2);
                        
                        cout << "Portable : ";
                        cin >> telp;
                        buff = get_letter(nom);
                        write_entry(buff, telp, 2);
                        
                        cout << "Mail : ";
                        cin >> mail;
                        buff = get_letter(nom);
                        write_entry(buff, mail, 1);
                        
                        cout << "\n\nVoulez-vous continuer?";
                        cin >> p;
                        ((p == 'o') ? (n = 0) : (n = 1));
                     }
                     while (n == 0);    
                     break;
                
            case 1 : do {
                        get_entry();
                        cout << "\n\nVoulez-vous continuer?";
                        cin >> p;
                        (p == 'o') ? (n = 0) : (n = 1);
                     }
                     while (n == 0);    
                     break;
                     
            case 2 : exit (0);
        }
    }                
system("PAUSE");                          
}

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.