【问题标题】:Beginner - data storage through XML or text files初学者 - 通过 XML 或文本文件存储数据
【发布时间】:2013-03-05 07:02:14
【问题描述】:

我是 Visual Studio 的初学者,在命令行设置中只有 C 和 C++ 代码。 目前,我正在学习一个模块(软件开发),它需要我想出一个费用跟踪器——一个帮助用户跟踪他/她的日常开支的程序。因此,在每一天结束时,或者在用户使用完程序后,我们必须执行数据存储以将所有信息存储在一个地方,以便在下次使用时将其导出。

我的限制包括不使用任何关系数据库(虽然我不知道它是什么:()。数据存储必须使用 XML 或文本文件完成。在此之后,我有几个关于数据存储的问题:

1) 如果数据存储成功,是不是每次启动程序都要导出?并且每次用户关闭程序后,我们都会覆盖已有的数据文件,然后进行相应的存储?

2) 我从一些人那里听说使用文本文件可能更容易。在 Internet 和图书馆上搜索只能为我提供有关 XML 的信息,而不是文本。有人能帮我吗?喜欢教程链接之类的?

非常感谢!

【问题讨论】:

  • XML 只是一个带有格式规则的文本文件。但是为什么不使用电子表格呢? Excel 和其他人可以在上面放置表格。似乎比从头开始编写大量功能要容易得多。
  • 嗨,我认为我的模块限制我们只能使用文本或 xml 文件。 Howevr,你有关于如何将 excel 集成到 Visual Studio C++ 中的链接吗?我们其实对通过 excel 生成图表很感兴趣
  • 将输出写入 XML:blogs.msdn.com/b/brian_jones/archive/2005/06/27/433152.aspx 然后 Excel 可以读取您创建的那些文件并生成图表。然而,Excel 有一个很好的机制来生成表格/图表,并且是一个非常简单的工具来完成诸如费用表格之类的事情。

标签: c++ xml database text storage


【解决方案1】:

文件写入/处理与 c++ 中的所有其他缓冲区类似。

您可以使用 fstream 标头启用文件处理。您可以创建一个文件,在每次程序运行时对其进行写入和覆盖,或者甚至可以在程序第一次运行时创建一个文件,然后每次程序运行时附加到该文件。

我只做过文本文件,从未尝试过 XML,但我猜它们是相似的。

http://www.cplusplus.com/doc/tutorial/files/ 应该为您提供您需要知道的一切。

【讨论】:

  • 嗨,我已经学会了简单的文件创建/写入/关闭。例如,我确实知道如何编写几行字符串之类的东西。但是,在我的项目中,我可能必须存储用户刚刚购买的商品的名称、价格、日期等信息。然后,随着用户继续使用该程序,此信息将增加。那么我是否在开始时说每当我运行程序时,我必须阅读所有这些信息? (我希望我清楚:()
  • 所有这些信息都可以存储为字符串,具体取决于您的操作方式。每个字段都可以用行分隔、空格分隔等,唯一会改变的是您稍后为读取数据而编写的解析器。一旦信息存储在文件中,您就不需要读取信息。取决于你的程序试图做什么。例如,如果您的程序想要做的只是存储信息以供归档/后代使用,那么您无需在写入数据后读取数据。但是假设您要从文件中绘制数据图表。这能回答你的问题吗?
【解决方案2】:

您选择 XML 还是纯文本取决于您要存储的数据类型。 您只能在 Internet 上找到 XML 库的原因是因为 XML 比纯文本复杂得多。如果您不知道 XML 是什么,或者您存储的数据不是很复杂,那么我建议您使用纯文本。

例如,要跟踪费用,您可以像这样存储一个文件:

sandwich 5.00
coffee 2.30
soft drink 1.50
...

在 C++ 文件中读取/写入这样的行非常容易。

【讨论】:

  • 嗨,实际上它稍微复杂一些。例如,我可以有多个用户。这些用户有自己的个人费用。对于费用本身,我们有不同的类别,例如娱乐、食物、衣服等,每个类别都有自己的项目,包含名称、价格、日期、付款方式等。在每种付款方式中,都会有相应的付款账户。是的,它稍微复杂一些,所以我可以知道如何存储数据吗?就像我想根据它们的类别类型存储它们一样?谢谢!
  • 您可以向数据中添加更多列。上面我有一栏是描述(三明治、咖啡等),一栏是价格。您可以添加其他列,例如类别或日期。然后,您可以在程序开始时将它们全部阅读,当用户想要查看某个类别下的所有费用时,只需浏览您的列表并向他们显示属于该类别的每个项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2019-01-05
相关资源
最近更新 更多