Quelle est la meilleure façon que je devrais aller sur la création d'un programme pour stocker des informations dans un fichier, modifier les informations contenues dans ce fichier, et ajouter de nouvelles informations

StackOverflow https://stackoverflow.com/questions/704892

Question

Je suis sur le point de commencer sur un petit projet, je suis en train de faire où je crée un programme C ++ pour stocker des données d'inventaire dans un fichier (je suppose un fichier .txt fera)

  • • Élément Description • Quantité en main • Prix de gros • Coût de détail • Date Ajouté à l'inventaire

Je dois pouvoir:

• Ajouter de nouveaux enregistrements au fichier • Afficher tout enregistrement dans le fichier • Changer tout enregistrement dans le fichier

Y at-il quelque chose que je devrais connaître avant de commencer ce qui pourrait en faire beaucoup plus facile et efficace ...

Comme par exemple, dois-je essayer d'utiliser XML ou ce qui être trop difficile de travailler avec via C ++?

Je ne l'ai jamais vraiment compris la façon la plus efficace de le faire.

Comme je ne recherche dans le fichier et chercher des choses entre parenthèses ou quelque chose?

EDIT

Le datasize ne devrait pas être trop grand. Il est pour les devoirs, je suppose que vous pourriez dire. Je veux écrire le contenu de la struct dans l'itinéraire d'un fichier, comment pourrais-je aller sur le faire?

Était-ce utile?

La solution

Il existe de nombreuses approches. Est-ce pour les devoirs ou pour une utilisation réelle? Si c'est pour les devoirs, il y a probablement certaines restrictions sur ce que vous pouvez utiliser.

Sinon, je suggère des SGBD embarqués comme SQLite. Il y a d'autres aussi, mais ce sera la solution la plus puissante, et aura également la mise en œuvre plus facile.

XML est également acceptable, et a de nombreuses implémentations réutilisables disponibles, mais il va commencer perdre des performances une fois que vous allez dans des milliers de dossiers. La même chose vaut pour JSON. Et l'on pourrait encore un debat qui est plus simple -. JSON ou XML

Une autre possibilité est de créer un struct et écrire son contenu directement dans le fichier. Est-ce que se compliquer mais si la taille de l'enregistrement n'est pas constante. Et, si le format d'enregistrement change, le fichier devra être reconstruit. Sinon, cette solution pourrait être l'une des meilleures performances sage -. Si elles sont appliquées avec précaution

Autres conseils

Pourriez-vous s'il vous plaît nous éclairer pourquoi ne voulez-vous pas utiliser un moteur de base de données pour cela?

Si elle est juste pour apprendre ensuite .... nous donner une taille estimée s'il vous plaît des données stockées dans ce fichier et le modèle d'accès (combien d'utilisateurs, combien de fois ils le font, etc.)?

Le défi sera de créer un code de recherche et de modification efficace.

Pour la recherche, il est sur les structures et l'organisation des données. Pour la modification, il est comment vous écrire mises à jour du fichier sans le lire complètement dans la mémoire, la mise à jour là puis l'écrire à nouveau complètement dans le fichier.

Si c'est un projet qui sera effectivement utilisé, avec le potentiel d'avoir des fonctionnalités supplémentaires au fil du temps, optez pour une solution de base de données depuis le début, même s'il semble exagéré. Je suis dans cette voie avant, de petites fonctionnalités sont ajoutées au fil du temps, et avant que vous réalisiez vous avez implémenté une base de données. Pauvrement. Mordre la balle et utiliser une base de données.

Si cela est un exercice d'apprentissage, cela dépend de la quantité de données que vous souhaitez stocker. Si elle est petite, la meilleure chose à faire est de lire le fichier en mémoire et fonctionnent là. Lorsque des modifications sont apportées, écrire le fichier entier en arrière sur le disque. Si les données sont trop grandes pour ce faire, la meilleure chose est d'avoir des enregistrements de taille fixe. Créer un struct POD qui contient toutes les données (à savoir, pas de pointeurs, conteneurs stl, etc.). Ensuite, vous pouvez réécrire les dossiers individuels sans besoin de réécrire le fichier entier. Si aucune de ces fonctionnera, votre meilleur pari est une solution de base de données.

Si vous insistez pour le faire manuellement, je suggère JSON au lieu de XML.

En outre, envisager SQLite.

Cela ressemble à un travail parfait pour SQLite. Petit, rapide, flexible et facile à utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top