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 :

Gerer de gros fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut Gerer de gros fichiers
    Bonsoir,

    Dans le cadre d'une formation de programmation en C je dois réaliser un logiciel qui dois gérer les articles d'un magasin ainsi que les clients.
    J'imagine que les articles du magasin en stocks sont sauvegardés dans un fichier qu'il sera possible de consulter.
    Afin de rendre plus performante la recherche d'un article donné dans ce fichier (en imaginant qu'il contienne plusieurs milliers d'articles) j'ai imaginé classer ces articles par nom, dans l'ordre alphabétique, en ayant 1 fichier par lettre de l'alphabet. Ainsi le fichier C.TXT contiendrait tous les articles dont le nom commence par la lettre C.
    Je procèderais de la même manière pour les clients. Le fichier C.CLT contiendrait la liste des clients dont le nom commence par C.

    Je ne vois pas d'inconvénients majeurs à cette solution ?

    Est ce que certains d'entre-vous plus chevronnés pourrais me donner leur avis sur mon idée.

    Je vous remercie par avance.

    Cordialement
    KURVANOV

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kurvanov Voir le message
    Dans le cadre d'une formation de programmation en C je dois réaliser un logiciel qui dois gérer les articles d'un magasin ainsi que les clients.
    J'imagine que les articles du magasin en stocks sont sauvegardés dans un fichier qu'il sera possible de consulter.
    Afin de rendre plus performante la recherche d'un article donné dans ce fichier (en imaginant qu'il contienne plusieurs milliers d'articles) j'ai imaginé classer ces articles par nom, dans l'ordre alphabétique, en ayant 1 fichier par lettre de l'alphabet. Ainsi le fichier C.TXT contiendrait tous les articles dont le nom commence par la lettre C.
    Je procèderais de la même manière pour les clients. Le fichier C.CLT contiendrait la liste des clients dont le nom commence par C.

    Je ne vois pas d'inconvénients majeurs à cette solution ?
    Il n'y a pas vraiment de problèmes, à part qu'il faut maintenir le tri à jour en cas d'ajout de nouvel item (article ou client)... Simplement, c'est inutile...

    La notion de 'tri' est un détail de présentation (ou de recherche). C'est au moment de l'affichage (ou de la recherche) et selon les besoins qu'on fait le tri en mémoire. Les données n'ont pas à être triées dans le fichier physique.

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut
    Bonsoir,

    Merci pour cette réponse rapide.
    si je comprends bien votre proposition, c'est de charger en mémoire les deux fichiers (articles et clients) et de trier pendant cette opération.
    Cela ne risque t-il pas d'être un peu long ? (même si on fait cela une seul fois au démarrage). Après, on a par exemple une liste chainée de plusieurs milliers d'éléments, je m'inquiéte alors du temps de recherche d'un élément donné.
    De plus si on ajoute un article, on l'insère à la bonne position dans la liste des articles en mémoire et on sauvegarde de nouveau tout le (gros) fichier.(ça risque d'être encore long non ?).
    D'ou mon idée de fractionnement. je me disais, on ne charge rien au démarrage, on le fais " a la demande" à l'insertion d'un nouvel article, quand un article est acheté.... Vu qu'on ouvre un fichier avec seulement la liste des articles qui commence par la même lettre, (qui est donc 26 fois plus petit si on considère une répartition uniforme des noms d'articles ce qui ne sera surement pas vrai...).
    Evidemment la gestion est probablement plus compliquée car il faut mettre à jour les fichiers clients et articles quand un client fait un achat.

    Je voudrais faire un logiciel confortable pour l'utilisateur, c'est ma priorité, est ce que ce fractionnement en multiples fichiers vous semble apporter qqchose ou est ce que je me complique la vie pour rien ? (OK promis, même dans ces fichiers, les données ne seront pas forcément triées)

    d'avance merci.

    Kurvanov

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kurvanov Voir le message
    si je comprends bien votre proposition, c'est de charger en mémoire les deux fichiers (articles et clients) et de trier pendant cette opération.
    Cela ne risque t-il pas d'être un peu long ? (même si on fait cela une seul fois au démarrage). Après, on a par exemple une liste chainée de plusieurs milliers d'éléments, je m'inquiéte alors du temps de recherche d'un élément donné.
    De plus si on ajoute un article, on l'insère à la bonne position dans la liste des articles en mémoire et on sauvegarde de nouveau tout le (gros) fichier.(ça risque d'être encore long non ?).
    On ne 'gère pas de gros fichiers en C'. On utilise une base de données (en SQL, par exemple, avec SQLite ou MySQL selon les besoins). Si tu y tiens, tu peux réinventer la roue avec des fichiers indexés (tu tries alors les indexes et tu navigues dans le fichier avec fseek()).

  5. #5
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut
    Bonjour,

    je suis bien d'accord qu'il serait plus logique d'utiliser une BD mais je suis dans le cadre d'une formation au langage C et le sujet , c'est de gérer le stock d'un magasin et de ses clients dont le but pedagogique est probablement la gestion de fichier, le tri de données, l'utilisation de structure de données, la représentation des données....

    Ma question c'est simplement de savoir si le fractionnement des données en multiples fichiers apportera du confort à l'utilisateur. Optionnellement quels seraient les inconvénients de cette solution ? Comme évoqué précédemment, le confort d'utilisation est l'une de mes priorités.

    Merci par avance pour vos conseils éclairés
    Kurvanov

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kurvanov Voir le message
    Ma question c'est simplement de savoir si le fractionnement des données en multiples fichiers apportera du confort à l'utilisateur. Optionnellement quels seraient les inconvénients de cette solution ? Comme évoqué précédemment, le confort d'utilisation est l'une de mes priorités.
    Le langage C ne spécifie pas "le confort d'utilisation". C'est une question de conception qui n'a rien à voir avec le langage lui même. La réponse ne dépend pas du langage utilisé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Peut-on lire des gros fichiers(100k) avec "TClientSocke
    Par Fred LEM dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/12/2004, 14h41
  2. Optimisation de la lecture de tres gros fichiers
    Par Lydie dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/07/2004, 14h09
  3. [JDOM] Gestion "gros fichiers"
    Par Haazheel dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 17/10/2003, 13h42
  4. Un langage pour lire, traiter et écrire de gros fichiers
    Par March' dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 07/04/2003, 15h26
  5. XML DOM et gros fichiers
    Par Manu_Just dans le forum APIs
    Réponses: 4
    Dernier message: 28/03/2003, 09h50

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