IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Répertoire téléphonique


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut Répertoire téléphonique
    Bonjour

    je cherche a faire un programme genre repertoire telephonique
    mais j'ai pas d'exemple et je sais pas comment faire , je suis debutant merci si avez des conseils
    Dernière modification par Bktero ; 12/07/2013 à 01h14. Motif: Titre qui ressemble à un titre...

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Bonjour je te conseilles les étapes suivantes :

    1- Lire un tutoriel sur le C si ce n'est pas déjà fait ;
    2- Noter sur un bout de papier toutes les fonctionnalités que devra avoir ton annuaire ;
    3- Réfléchir à comment tu pourras le coder et commencer à le coder ;
    4- En cas de problème, regarde la FAQ C, recherche un peu sur google, en bref, recherche la réponse ;
    5- En cas de bugs, utilise un débogueur pour avoir un maximum d'informations ;
    6- Si tu ne trouves vraiment pas (ou que tu n'arrive pas à utiliser un débogueur), demande nous en nous donnant un maximum d'indications (ce que tu as essayé de faire, ce qui te bloque, le message d'erreur, le code, etc...)

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    1- La première chose à faire est de préciser ton objectif : qu'est ce que tu veux stocker comme données dans ton répertoire, le nombre d'entrées du répertoire (maximum défini ou non), ses fonctionnalités (ajout/suppression d'une entrée, recherche d'un nom, sauvegarde/chargement sur disque des données, opérations de tri, ...).

    2- La deuxième étape est de choisir une représentation des données dans ton programme. C'est une étape essentielle parce qu'elle conditionne le code que tu seras amené à écrire et selon ton choix, il sera simple et clair ou inutilement compliqué et ésotérique.

    Un choix doit être fait pour la représentation des différentes informations concernant une entrée du répertoire. Par exemple, le nom de la personne sera évidemment stocké dans un tableau de char mais si on utilise un tableau de taille fixe, cela limitera la longueur possible des noms qu'on peut stocker et pour les noms courts, la place excédentaire est perdue. On peut choisir d'allouer dynamiquement ce tableau à la taille juste nécessaire à chaque nom, ce qui complique un peu le programme...Si on a une propriété définissant une catégorie (famille, amis, travail, fournisseurs,...) on peut penser à une énumération. etc.

    Ces choix faits, une entrée du répertoire sera (probablement) représentée par une structure permettant d'accéder à toutes les informations associées à une entrée.

    Ensuite, on devra représenter le répertoire comme une collection de ces structures. Il y a plusieurs choix possibles, par exemple, un tableau de ces structures ou une liste chainée. Selon la forme de la collection choisie, des inconvénients et des avantages sont mis en évidence en considérant les fonctionnalités qui doivent être implantées dans le programme et certaines opérations sont plus ou moins simples.

    3- Ces choix faits, on est amené à structurer le programme en différentes fonctions (qui seront écrites plus tard) en définissant ce qu'elles doivent faire, quels sont leurs paramètres... On peut être conduit à revenir sur la structure des données si dans cette étape on détecte quelque chose qui ne colle pas bien.

    4- La partie intéressante de la programmation est maintenant terminée et il ne reste plus qu'à pondre le code qui découle directement des choix qui viennent d'être faits. On peut commencer à écrire le programme en commençant par les fonctions les plus basiques, ce qui permet de les tester indépendamment, avant de passer aux fonctions utilisant les précédentes (réputées bonnes) et de les tester et ansi de suite.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Pour aider un peu le P.O. sur différentes façons de stocker des données..

    Citation Envoyé par diogene Voir le message
    2- La deuxième étape est de choisir une représentation des données dans ton programme. C'est une étape essentielle parce qu'elle conditionne le code que tu seras amené à écrire et selon ton choix, il sera simple et clair ou inutilement compliqué et ésotérique.
    • CSV (pas très dur à coder mais peut-être moins souple)
    • XML (libxml2)
    • Base de données (à voir selon le type de SGBD)
    • Format personnalisé ?
    • Autres ....

    Les choix ne manquent pas mais il faut que tu définisse cela dès le départ comme l'a précisé Diogene car ce choix entrera directement en compte sur la bibliothèque (ou les) que tu devras utiliser avec ton programme et que tu devras aussi étudier

    Un petit tutoriel sur de la récupération de données depuis un fichier, sur trois type de structure différentes: http://franckh.developpez.com/articles/c-ansi/parsing/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour a tous

    j'ai commencer un code mais je sais pas quoi mettre comment arguement dans Void creation_fichier()
    que je veux faire c'est de crée le fichier et ensuite que l'utilisateur rentre les données

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    // Structure
    typedef struct
    {
        char nom[15];
        char prenom[15];
        char tel[10];
    } personne;
     
    // Fonctions
    void  creation_fichier()
    {
     
    }
     
     
    int main()
    {
     
        return 0;
    }

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par zoltars43 Voir le message
    j'ai commencer un code mais je sais pas quoi mettre comment arguement dans Void creation_fichier()
    que je veux faire c'est de crée le fichier et ensuite que l'utilisateur rentre les données
    Bin peut-être une chaîne contenant le nom du fichier par exemple

    Vu que ton projet est de créer un répertoire téléphonique, à ta place je testerais l'ouverture du fichier et si l'ouverture échoue alors oui, lui faire créer le fichier. Je dit ça parce que sinon ton répertoire sera toujours... vide

  7. #7
    Invité
    Invité(e)
    Par défaut
    j'ai fait ça j'ai compris pour les arguments en tout le fichier se crée ...

    comment mettre l'extension txt quand le fichier est crée .


    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    // Structure
    typedef struct
    {
        char nom[15];
        char prenom[15];
        char tel[10];
    } personne;
     
    // Fonctions
    void  creation_fichier(FILE*f,char*n)
    {
     
        printf("**Creation du fichier**\n\n");
        printf("Saisir un nom pour le fichier ( mettre .txt): ");
        gets(n);
        fflush(stdin);
        f=fopen(n,"w");
     
    }
    int menu(void)
    {
        int choix =0;
        while(choix < 1 || choix > 4)
        {
            printf("------- Repertoire 2013-------\n");
            printf("1 :Nouveau fichier \n");
            printf("2 :Ajouter un nom  \n");
            printf("3 :Lire un nom\n");
            printf("4 :Quitter\n");
            printf("Votre choix ?");
            scanf("%d",&choix);
            fflush(stdin);
        }
     
        return choix;
    }
     
     
     
    int main (void)
    {
       FILE * fichier;
    char nom[10];
     switch (menu())
        {
           case 1:
            creation_fichier(fichier,nom);
     
           break;
        }
     
        return EXIT_SUCCESS;
     
    }

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par zoltars43 Voir le message
    comment mettre l'extension txt quand le fichier est crée .
    Il faut le faire avant sa création, tu dois concaténer ta chaîne contenant le nom du fichier avec l'extension en utilisant strcat. Faut tout de même prendre en compte la longueur de l'extension (en générale 4 caractères pour une extension à trois lettres plus le point) et faire en sorte que ta chaîne comporte un espace suffisant.

  9. #9
    Invité
    Invité(e)
    Par défaut
    merci mais comment écrire ?

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par zoltars43 Voir le message
    merci mais comment écrire ?
    En tapant au clavier ?

    Non sérieusement, si tu choisi 1 dans ton menu tu donne un nom de fichier ou bien c'est toujours le même ? Si c'est le cas alors ça coule de source

    Sinon, si tu propose d'entrer un nom de fichier, une fois celui-ci dans la variable tu fait juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcat (ta_variable_contenant_le_nom_du_fichier, ".txt");
    Par contre fait en sorte que ta chaîne soit toujours assez grande pour contenir LE nom du fichier ET l'extension sans quoi bin comportement indéterminé ton programme risquera fort de ne pas faire ce que tu souhaites, je le répète peut-être mais c'est très important, on me répète jamais assez ici

    Mais sérieusement, si tu as lu le lien que je t'ai mis de la fonction strcat, tu aurais du savoir le faire, il faut que tu y mette un peu plus du tiens sans quoi tu n'apprendra pas vite et bien d'autant plus qu'elle est simple à utiliser et la page man dit tout ce qu'il faut savoir

  11. #11
    Invité
    Invité(e)
    Par défaut
    merci de ta réponse

    donc j'ecris :

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Oui. J'ai pu voir que tu ne réserves que 10 char pour le nom du fichier, est-ce un nom unique ou tu donneras le choix à l'utilisateur ?

    Cela à son importance dans la mesure où un utilisateur entre le nom qu'il veut et donc, peut très rapidement passer au-delà des limites du tableau.

  13. #13
    Invité
    Invité(e)
    Par défaut j'ai besoin d'un petit conseil svp merci
    Bonjour

    j'ai commennce a crée une fonction pour va permettre d'ajouter les données d'une personne dans un fichier

    je voudrais faire c'est quand une utilisateur saisie le nom de fichier pour l'ouvrir , je voudrais faire en sorte que si il se trompe dans le nom cela crée un message d'erreur .



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void ajouter(FILE*f,char*n)
    {
     
        printf("**Ajouter une personne **\n\n");
        printf("Saisir le nom du fichier:");
        gets(n);
        fflush(stdin);
        f=fopen(n,"a");
        printf("** Saisie d'une fiche**\n\n");

  14. #14
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Allons lire ensemble le fabuleux manuel de fopen !

    Dans tout cela, tu te rendra compte que le flag "r" seul ne fera qu'ouvrir SANS créer.

    Donc : tu dois essayer d'ouvrir avec "r", et si fopen te renvoie NULL, alors l'ouverture a échoué.
    Si l'ouverture a réussi, tu ne peux que lire, donc tu dois faire un fclose, et refaire un fopen avec les flags qui t'intéressent.
    Ca c'est la méthode "ultraportable".

  15. #15
    Invité
    Invité(e)
    Par défaut
    Désolé je sais pas bien lire l'anglais
    Dernière modification par Invité ; 18/07/2013 à 17h47. Motif: Citation message précédent entier inutile

  16. #16
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par zoltars43 Voir le message
    desoler je sais pas bien lire l'anglais
    Nous disposons des pages en français chez nous : http://man.developpez.com/man3/fopen.3.php

    Citation Envoyé par Metalman Voir le message
    Allons lire ensemble le fabuleux manuel de fopen !
    Utilise les pages de manuels de chez nous, elles sont en français

  17. #17
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1
    Par défaut
    Et chercher une page de manuel de fopen() en français être très compliqué ?
    --> http://man.developpez.com/man3/fopen.3.php

    Au passage :

  18. #18
    Invité
    Invité(e)
    Par défaut
    merci

    c'est pas evidement pour avoir d'apprendre , je suis une personne handicapé en fauteuil roulant.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour

    je suis sais pas comment faire pour afficher la liste des noms de mon fichier une fois crée ni de faire la fonction rechercher je suis perdu

    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
    // Include  des Librairies
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    // Structure pour le nom,prenom et télephone
    typedef struct
    {
        char nom[15];
        char prenom[15];
        char tel[10];
    } personne;
     
    // Fonction pour la creation du fichier avec son extension
    void  creation_fichier(FILE*f,char*n)
    {
        personne fiche;
        printf("**Creation du fichier**\n\n");
        printf("Saisir un nom pour le fichier: ");
        gets(n);
        strcat(n,".txt");// on rajoute l'extension .txt au fichier
        fflush(stdin);
        f=fopen(n,"w");
    }
    // Fonction pour ajouter une personne dans le fichier
    void ajouter(FILE*f,char*n)
    {
        personne fiche;
        printf("**Ajouter une personne **\n\n");
        printf("Saisir le nom du fichier:");
        gets(n);
        strcat(n,".txt");
        fflush(stdin);
        f=fopen(n,"a");
        printf("** Saisie d'une fiche**\n\n");
        printf("\nNom:");
        gets(fiche.nom);
        printf("\nprenom:");
        gets(fiche.prenom);
        printf("\nTel:");
        gets(fiche.tel);
        fflush(stdin);
        fwrite(&fiche,sizeof(personne),1,f);
        fclose(f) ;
    }
     
     
     
    //Fonction pour la création du menu
    int menu(void)
    {
        int choix =0;
        while(choix < 1 || choix > 4)
        {
            printf("-------  Mini Repertoire 2013-------\n");
            printf("1 :Nouveau fichier \n");
            printf("2 :Ajouter un nom  \n");
            printf("3 :Rechercher un nom\n");
            printf("Votre choix ?");
            scanf("%d",&choix);
            fflush(stdin);
        }
     
        return choix;
    }
     
    //Porgramme principale
     
    int main (void)
    {
        FILE * fichier;
        char nom[10];
        switch (menu())
        {
        case 1:
            creation_fichier(fichier,nom);
            break;
        case 2:
            ajouter(fichier,nom);
            break;
        }
     
        return EXIT_SUCCESS;
     
    }
    Dernière modification par LittleWhite ; 20/07/2013 à 14h41. Motif: les snif sont inutiles

  20. #20
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Si ton fichier est ouvert et que tu as un nom par ligne, tu peux éventuellement utiliser la fonction fgets sinon, montre le contenu de ton fichier pour voir comment son enregistrées les données.

Discussions similaires

  1. Réponses: 15
    Dernier message: 08/02/2013, 11h22
  2. Création d'un répertoire téléphonique
    Par ronley dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/08/2011, 12h52
  3. [AC-2003] Création d'un répertoire téléphonique
    Par vanille28 dans le forum Modélisation
    Réponses: 13
    Dernier message: 15/10/2009, 19h38
  4. répertoire téléphonique avec état conditionnel
    Par Charliegir dans le forum IHM
    Réponses: 1
    Dernier message: 19/03/2009, 03h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo