我在设计 C++ 控制台应用程序时需要帮助
I need help in designing my C++ Console application
我有一个任务要完成。
有两种类型的 csv 文件 4000+
彼此相关。
2 种类型是:
1. Country2.csv
2. Security_Name.csv
Country2.csv
的内容:
Company Name;Security Name;;;;Final NOS;Final FFR
Security_Name.csv
的内容:
Date;Close Price;Volume
有多个国家,每个国家有多个安全文件
现在我需要 READ 他们做一些 CALCULATION 然后 WRITE 在另一个文件中输出
阅读
读取文件 Country 2.csv 和 Security.csv 并从中提取所有数据。
例如:
阅读法国 2.csv,摘录 Security_Name, Final NOS, Final FFR
然后读取Security.csv(匹配Security_Name
)并提取
Date, Close Price, Volume
计算
计算基本上是找到提取值的中位数,这非常简单。
例如:
每月交易额中位数
证券的每日交易价值...等等
写入
根据月份,我需要使用以下格式对两个不同文件中的输出进行排序:
如果月 %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
我的问题是如何以可维护的方式设计我的应用程序并且在整个执行过程中数据流是无缝的?
首先。根据您要生成的数据类型,如果可能的话,我可能会考虑将这些数据移动到 SQL 数据库。这是 "one SQL query" 之类的东西。而且 far 比从 CSV 文件生成 CSV 文件的 C++ 更易于维护。
除此之外,我可能会考虑使用 datamash
and/or perl
。在 Windows 平台上,您可以通过 Cygwin 或 WSL 执行此操作。可能不太容易维护,但更容易,这不是什么大问题。
就是说,如果您正在寻找适度 可维护的东西,C++ 可以工作。我要做的第一件事是设计我的输入 classes。以数据为中心,但它可以工作。听起来你可以有一个 Country
class、一个 Security
class 和一个 SecurityClose
class... 或者类似的东西.你可以考虑一个 Security class 是否应该包含 SecurityClose
es(数据)的集合,或者数据是否应该只是 "loose" 并引用它所属的 Security
.与 Country->Security 关系相同。
一旦决定了所有内容的外观,您就需要可以 tokenize
CSV 行的东西(可能是函数)。所以 "1,2,3"
变成了 vector<string>
,内容为 "1"
"2"
"3"
。然后,你的每个输入 classes 都应该有一个构造函数或初始化器,它接受一个 vector<string>
并填充自己。您可能还需要传递更高级别的数据。如果你想让安全数据知道它属于哪个安全,就像文件名一样..
这基本上就是那里的大部分战斗。一旦您将数据放入组织合理的 classes 中,剩下的就应该更容易了。如果您 运行 遇到困难,希望您可以从那里提出 具体 设计或实施问题。
我有一个任务要完成。
有两种类型的 csv 文件 4000+
彼此相关。
2 种类型是:
1. Country2.csv
2. Security_Name.csv
Country2.csv
的内容:
Company Name;Security Name;;;;Final NOS;Final FFR
Security_Name.csv
的内容:
Date;Close Price;Volume
有多个国家,每个国家有多个安全文件
现在我需要 READ 他们做一些 CALCULATION 然后 WRITE 在另一个文件中输出
阅读
读取文件 Country 2.csv 和 Security.csv 并从中提取所有数据。
例如:
阅读法国 2.csv,摘录Security_Name, Final NOS, Final FFR
然后读取Security.csv(匹配Security_Name
)并提取
Date, Close Price, Volume
计算
计算基本上是找到提取值的中位数,这非常简单。
例如:
每月交易额中位数 证券的每日交易价值...等等写入 根据月份,我需要使用以下格式对两个不同文件中的输出进行排序:
如果月 %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
我的问题是如何以可维护的方式设计我的应用程序并且在整个执行过程中数据流是无缝的?
首先。根据您要生成的数据类型,如果可能的话,我可能会考虑将这些数据移动到 SQL 数据库。这是 "one SQL query" 之类的东西。而且 far 比从 CSV 文件生成 CSV 文件的 C++ 更易于维护。
除此之外,我可能会考虑使用 datamash
and/or perl
。在 Windows 平台上,您可以通过 Cygwin 或 WSL 执行此操作。可能不太容易维护,但更容易,这不是什么大问题。
就是说,如果您正在寻找适度 可维护的东西,C++ 可以工作。我要做的第一件事是设计我的输入 classes。以数据为中心,但它可以工作。听起来你可以有一个 Country
class、一个 Security
class 和一个 SecurityClose
class... 或者类似的东西.你可以考虑一个 Security class 是否应该包含 SecurityClose
es(数据)的集合,或者数据是否应该只是 "loose" 并引用它所属的 Security
.与 Country->Security 关系相同。
一旦决定了所有内容的外观,您就需要可以 tokenize
CSV 行的东西(可能是函数)。所以 "1,2,3"
变成了 vector<string>
,内容为 "1"
"2"
"3"
。然后,你的每个输入 classes 都应该有一个构造函数或初始化器,它接受一个 vector<string>
并填充自己。您可能还需要传递更高级别的数据。如果你想让安全数据知道它属于哪个安全,就像文件名一样..
这基本上就是那里的大部分战斗。一旦您将数据放入组织合理的 classes 中,剩下的就应该更容易了。如果您 运行 遇到困难,希望您可以从那里提出 具体 设计或实施问题。