我在设计C ++ Console应用程序时需要帮助

时间:2018-05-24 23:39:58

标签: c++ oop design-patterns application-design

我有一项任务要完成。

有两种类型的csv文件4000+都相互关联 有两种类型:
1. Country2.csv
2. Security_Name.csv

Country2.csv的内容:
Company Name;Security Name;;;;Final NOS;Final FFR

Security_Name.csv的内容:
Date;Close Price;Volume

有多个国家/地区和每个国家/地区有多个安全文件

现在我需要阅读他们做一些 CALCULATION 然后 WRITE 输出另一个文件

  1. 阅读

    同时读取Country 2.csv和Security.csv文件并从中提取所有数据。

    例如:

    阅读法国2.csv,摘录Security_Name, Final NOS, Final FFR

    然后阅读Security.csv(与Security_Name匹配)并提取
    Date, Close Price, Volume

  2. 计算

    计算基本上是找到提取值的中位数,这很简单。

    例如:

        每月中位数交易价值     证券的每日交易价值......等等

  3. 根据月份,我需要将输出分为两个不同的文件,格式如下:

    如果月%3 = 0

    以下列格式将其另存为MONTH_NAME.csv:
    Security name; 12-month indicator; 3-month indicator; FOT

    否则

    以下列格式将其另存为MONTH_NAME.csv:
    Security Name; Monthly Median Traded Value Ratio; Number of days Volume > 0

  4. 我的问题是如何以可维护的方式设计我的应用程序,并且整个执行过程中的数据流是无缝的?

1 个答案:

答案 0 :(得分:0)

首先。根据您要生成的数据类型,我可能会考虑尽可能将此数据移动到SQL数据库。这是“一种SQL查询”的东西。并且比从CSV文件生成CSV文件的C ++更易于维护。

除此之外,我可能会考虑使用datamash和/或perl。在Windows平台上,您可以通过Cygwin或WSL执行此操作。可能不太可维护,但更容易,这不是一个问题。

那就是说,如果你正在寻找适度可维护的东西,C ++可以工作。我要做的第一件事就是设计我的输入类。以数据为中心,但它可以工作。听起来你可能有一个Country类,一个Security类和一个SecurityClose类......或者其他类似的东西。您可以考虑一个Security类是否应该包含SecurityClose es(数据)的集合,或者数据是否应该“松散”并引用它所属的Security。与Country->安全关系相同。

一旦你决定了所有这些,你想要一些可能tokenize CSV行的东西(可能是一个功能)。因此"1,2,3"变为vector<string>,内容为"1" "2" "3"。然后,每个输入类都应该有一个构造函数或初始值设定项,它接受vector<string>并填充自身。您可能还需要传递更高级别的数据。与文件名一样,如果您希望安全数据知道它属于哪个安全性..

这基本上是那里的大部分战斗。一旦你将数据提取到合理组织的课程中,其余的应该更容易。如果您遇到困难,希望您可以从那里询问具体的设计或实施问题。