1

在庫データをファイルに保存する C++ プログラムを作成しようとしている小さなプロジェクトを開始しようとしています (.txt で十分だと思います)。

  • • アイテムの説明 • 手持ちの数量 • 卸売コスト • 小売コスト • 在庫に追加された日付

次のことができる必要があります。

• ファイルに新しいレコードを追加する • ファイル内の任意のレコードを表示する • ファイル内の任意のレコードを変更する

これを始める前に、これをより簡単かつ効率的にするために知っておくべきことはありますか...

たとえば、XML を使用する必要がありますか、それとも C++ で作業するのが難しすぎますか?

これを行う最も効率的な方法を本当に理解したことがありません。

ファイルを検索して、括弧内のものを探しますか?

編集

データサイズが大きすぎてはいけません。宿題用です。構造体の内容をファイルのルートに書き込みたいのですが、どうすればよいですか?

4

5 に答える 5

4

多くのアプローチがあります。これは宿題用ですか、それとも実際に使用するためですか? 宿題の場合は、使用できるものに制限がある可能性があります。

それ以外の場合は、 SQLiteなどの組み込み DBMS をお勧めします。他にもありますが、これが最も強力なソリューションであり、実装も最も簡単です。

XML も使用でき、再利用可能な実装が多数ありますが、レコードが数千になるとパフォーマンスが低下し始めます。JSON についても同様です。そして、JSON と XML のどちらがより単純なのか、まだ議論するかもしれません。

もう 1 つの可能性は、 を作成し、structその内容をファイルに直接書き込むことです。ただし、レコード サイズが一定でない場合は注意が必要です。また、レコード形式が変更された場合は、ファイルを再構築する必要があります。それ以外の場合、このソリューションは、慎重に実装すれば、パフォーマンス面で最高のソリューションの 1 つになる可能性があります。

于 2009-04-01T10:43:17.043 に答える
1

これが実際に使用されるプロジェクトであり、時間の経過とともに機能が追加される可能性がある場合は、たとえやり過ぎに思えても、最初からデータベース ソリューションを選択してください。私は以前この道をたどりましたが、時間の経過とともに小さな機能が追加され、気付く前にデータベースを実装していました。不完全に。弾丸を噛み、データベースを使用してください。

これが学習課題である場合は、保存するデータの量によって異なります。サイズが小さい場合は、ファイル全体をメモリに読み込み、そこで操作するのが最も簡単です。変更が加えられたら、ファイル全体をディスクに書き戻します。データが大きすぎてそれができない場合、次善の策は固定サイズのレコードを持つことです。すべてのデータを含む POD 構造体を作成します (つまり、ポインター、stl コンテナーなどはありません)。その後、ファイル全体を書き換える必要なく、個々のレコードを書き換えることができます。これらのいずれも機能しない場合、最善の策はデータベース ソリューションです。

于 2009-04-01T13:11:37.577 に答える
1

データベース エンジンを使用しない理由を教えてください。

学習のためだけの場合は....そのファイルに保存されているデータの推定サイズとアクセスパターン(ユーザー数、アクセス頻度など)を教えてください。

課題は、効率的な検索および変更コードを作成することです。

検索に関しては、データ構造と組織についてです。変更の場合、ファイルを完全にメモリに読み取らずに更新を書き込み、そこで更新してから、ファイルに完全に書き戻す方法です。

于 2009-04-01T10:36:17.807 に答える
0

どうしても手動で行う場合は、XML ではなく JSON をお勧めします。

また、sqlite を検討してください。

于 2009-04-01T10:29:38.637 に答える
0

これはSQLiteにとって完璧な仕事のように思えます。小さく、速く、柔軟で使いやすい。

于 2009-04-01T10:56:55.153 に答える