1

我即将开始一个我正在尝试做的小项目,我创建一个 C++ 程序来将库存数据存储到一个文件中(我猜一个 .txt 会做)

  • • 项目描述 • 现有数量 • 批发成本 • 零售成本 • 添加到库存的日期

我需要能够:

• 向文件中添加新记录 • 显示文件中的任何记录 • 更改文件中的任何记录

在我开始之前有什么我应该知道的可以使这变得更加简单和高效......

例如,我应该尝试使用 XML 还是通过 C++ 难以使用的东西?

我从来没有真正理解过这样做的最有效方法。

就像我会在文件中搜索并查找括号内的东西吗?

编辑

数据大小不应该太大。我想你可以说这是作业。我想将结构的内容写入文件的路径,我该怎么做呢?

4

5 回答 5

4

有很多方法。这是做功课还是实际使用?如果是用于家庭作业,则可能对您可以使用的内容有一些限制。

否则,我建议使用一些嵌入式 DBMS,例如SQLite。还有其他的,但这将是最强大的解决方案,也将有最简单的实现。

XML 也是可以接受的,并且有许多可重用的实现可用,但是一旦您进入数千条记录,它就会开始失去性能。JSON 也是如此。人们可能仍在争论哪一个更简单——JSON 或 XML。

另一种可能性是创建一个struct并将其内容直接写入文件。如果记录大小不是恒定的,则会变得棘手。而且,如果记录格式发生变化,则需要重建文件。否则,如果仔细实施,此解决方案可能是性能最佳的解决方案之一。

于 2009-04-01T10:43:17.043 回答
1

您能否启发我们为什么不想使用数据库引擎呢?

如果只是为了学习,那么......请给我们该文件中存储数据的估计大小和访问模式(有多少用户,他们多久执行一次等)?

挑战将是创建有效的搜索和修改代码。

对于搜索,它与数据结构和组织有关。对于修改,您将如何将更新写入文件而不将其完全读入内存,在那里对其进行更新,然后将其再次完全写回文件。

于 2009-04-01T10:36:17.807 回答
1

如果这是一个将实际使用的项目,并且有可能随着时间的推移添加功能,那么从一开始就选择数据库解决方案,即使它看起来有点矫枉过正。我以前一直在这条路上,随着时间的推移添加了一些小功能,在你意识到之前你已经实现了一个数据库。不良。咬紧牙关,使用数据库。

如果这是一个学习练习,则取决于您要存储的数据量。如果它很小,最简单的做法是将整个文件读入内存并在那里对其进行操作。进行更改后,将整个文件写回磁盘。如果数据太大而无法做到这一点,那么下一个最好的办法是拥有固定大小的记录。创建一个包含所有数据的 POD 结构(即,没有指针、stl 容器等)。然后,您可以重写单个记录,而无需重写整个文件。如果这些都不起作用,那么最好的选择是数据库解决方案。

于 2009-04-01T13:11:37.577 回答
0

如果您坚持手动进行,我建议使用 JSON 而不是 XML。

另外,考虑 sqlite。

于 2009-04-01T10:29:38.637 回答
0

这听起来像是SQLite的完美工作。体积小、速度快、灵活且易于使用。

于 2009-04-01T10:56:55.153 回答