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

StackOverflow https://stackoverflow.com/questions/704892

Вопрос

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

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

Мне нужно иметь возможность:

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

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

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

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

Хотел бы я выполнить поиск по файлу и поискать что-то в скобках или что-то в этом роде?

РЕДАКТИРОВАТЬ

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top