Как лучше всего создать программу для хранения информации в файле, редактирования информации в этом файле и добавления новой информации? - PullRequest
1 голос
/ 01 апреля 2009

Я собираюсь начать небольшой проект, который я пытаюсь сделать, где я создаю программу на C ++ для хранения данных инвентаризации в файл (я думаю, что .txt подойдет)

  • • Описание товара • Количество в наличии • Оптовая стоимость • Розничная стоимость • Дата Добавлено в инвентарь

Мне нужно уметь:

• Добавить новые записи в файл • Показать любую запись в файле • Изменить любую запись в файле

Есть ли что-то, о чем я должен знать перед тем, как начать, что могло бы сделать это намного проще и эффективнее ...

Как, например, я должен попробовать использовать XML или что-то слишком сложное для работы через C ++?

Я никогда не понимал, как наиболее эффективно это сделать.

Как бы я искал файл и искал вещи в скобках или что-то в этом роде?

EDIT

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

Ответы [ 5 ]

4 голосов
/ 01 апреля 2009

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

В противном случае я предлагаю некоторые встроенные СУБД, такие как SQLite . Есть и другие, но это будет самое мощное решение, а также будет иметь самую простую реализацию.

XML также приемлем и имеет много доступных реализаций многократного использования, но он начнет терять производительность, как только вы войдете в тысячи записей. То же самое касается JSON. И еще можно спорить, какой из них проще - JSON или XML.

Другая возможность - создать struct и записать его содержимое непосредственно в файл. Будет сложно, хотя, если размер записи не постоянен. И, если формат записи изменится, файл необходимо будет восстановить. В противном случае это решение может быть одним из лучших с точки зрения производительности, если оно будет реализовано тщательно.

1 голос
/ 01 апреля 2009

Если это проект, который действительно будет использоваться, с возможностью добавления функций с течением времени, выберите решение для базы данных с самого начала, даже если оно кажется излишним. Я шел по этому пути раньше, небольшие функции добавлялись со временем, и, прежде чем вы осознаете это, вы внедрили базу данных. Плохо. Укуси пулю и используй базу данных.

Если это учебное упражнение, оно зависит от объема данных, которые вы хотите сохранить. Если он маленький, проще всего прочитать весь файл в память и обработать его там. После внесения изменений запишите весь файл обратно на диск. Если данные слишком велики для этого, лучше всего иметь записи фиксированного размера. Создайте структуру POD, которая содержит все данные (т.е. без указателей, контейнеров stl и т. Д.). Затем вы можете переписать отдельные записи без необходимости переписать весь файл. Если ни один из них не сработает, лучшим выбором будет решение для базы данных.

1 голос
/ 01 апреля 2009

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

Если это только для обучения, то .... сообщите нам, пожалуйста, приблизительный размер хранимых данных в этом файле и схему доступа (сколько пользователей, как часто они это делают и т. Д.)?

Задача будет заключаться в создании эффективного кода поиска и модификации.

Для поиска речь идет о структурах данных и организации. Что касается модификации, это то, как вы будете записывать обновления в файл, не считывая его полностью в память, обновляя его там, а затем снова полностью записывая его обратно в файл.

0 голосов
/ 01 апреля 2009

Это звучит как идеальная работа для SQLite . Маленький, быстрый, гибкий и простой в использовании.

0 голосов
/ 01 апреля 2009

Если вы настаиваете на том, чтобы сделать это вручную, я предлагаю JSON вместо XML.

Также рассмотрим sqlite.

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