Мне нужна помощь в разработке моего приложения C ++ Console - PullRequest
0 голосов
/ 25 мая 2018

У меня есть задача для выполнения.

Существует два типа 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

Существует несколько стран и для каждойнесколько файлов безопасности страны

Теперь мне нужно ЧИТАТЬ сделать некоторые РАСЧЕТ и затем ЗАПИСАТЬ вывод в другие файлы

  1. READ

    Считайте оба файла Country 2.csv и Security.csv и извлеките из них все данные.

    Например:

    Считать Францию ​​2.csv, извлечь Security_Name, Final NOS, Final FFR

    Затем Считать Security.csv (что соответствует Security_Name) и извлечь
    Date, Close Price, Volume

  2. Расчет

    Расчеты в основном находят медиану извлеченных значений, что довольно просто.

    ДляПример:

    Среднемесячный Trизмененные значения Ежедневно торгуемое значение ценной бумаги ... и т. д.

  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

Мой вопрос заключается в том, как мне спроектировать свое приложение таким образом, чтобы оно было легко обслуживаемым ипоток данных на всем протяжении выполнения является бесшовным?

1 Ответ

0 голосов
/ 25 мая 2018

Итак, во-первых.Исходя из вида данных, которые вы хотите сгенерировать, я бы, вероятно, хотел бы переместить эти данные в базу данных SQL, если это возможно.Это вещи типа «один SQL-запрос».И гораздо более удобен в обслуживании, чем C ++, который генерирует файлы CSV из файлов CSV.

За исключением этого, я бы, вероятно, посмотрел на использование datamash и / или perl.На платформе Windows вы можете сделать это через Cygwin или WSL.Вероятно, менее поддерживаемый, но гораздо проще, это не слишком большая проблема.

Тем не менее, если вы ищете что-то умеренно поддерживаемое, C ++ может работать.Первое, что я хотел бы сделать, это спроектировать входные классы.Данные ориентированы, но это может работать.Похоже, у вас может быть класс Country, класс Security и класс SecurityClose ... или что-то в этом роде.Вы можете подумать о том, должен ли класс Security содержать коллекцию SecurityClose es (data) или данные должны быть просто "свободными" и ссылаться на Security, к которому он принадлежит.То же самое с отношением Страна-> Безопасность.

Как только вы определились с тем, как все это будет выглядеть, вы захотите что-то (скорее всего, функцию), которая может tokenize линия CSV.Таким образом, "1,2,3" превращается в vector<string> с содержанием "1" "2" "3".Затем каждый из ваших входных классов должен иметь конструктор или инициализатор, который принимает vector<string> и заполняет себя.Возможно, вам также придется передавать данные более высокого уровня.Как и имя файла, если вы хотите, чтобы данные безопасности знали, к какой безопасности они относятся ..

Это в основном большая часть битвы.Как только вы соберете свои данные в разумно организованные классы, все остальное должно стать легче.И если вы столкнетесь с трудностями, надеюсь, вы сможете задать оттуда специфические вопросы проектирования или реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...