📘 О чем эта работа
Контрольная работа посвящена разработке консольной программы на языке C++, моделирующей динамическую структуру данных для хранения сведений о поездах дальнего следования. Объект исследования — коллекция поездов; предмет — реализация операций добавления, удаления, отображения и файлового ввода/вывода элементов списка.
📚 Что внутри
В работе содержится подробное описание математической постановки задачи (узел Tᵢ = (Nᵢ, Dᵢ, Tᵢ, Pᵢ)), алгоритм проектирования и полный листинг программы на C++. Конкретно включено:
- Описание классов: Train (поля: train_number, destination, departure_time) и TrainList (вектор trains для хранения объектов).
- Реализация операций: addTrain (push_back в std::vector), removeTrain (поиск по номеру и erase итератора), displayTrains (форматированный вывод с использованием std::setw), loadFromFile (чтение строк с форматом "номер станция время" через оператор >>) и saveToFile (запись в тот же формат).
- Пользовательское меню в main: пункты 1–5 (Добавить, Удалить, Показать, Загрузить, Сохранить) и 0 для выхода; работа с консольным вводом и именами файлов.
- Комментарии к компиляции и результатам тестирования: все функции проверены, реализованы добавление/удаление, корректная загрузка/сохранение, программа компилируется без ошибок.
📊 Для кого подходит
Материал пригоден студентам технических и программных специальностей для выполнения контрольных и практических заданий по дисциплине "Методы программирования"; также полезен преподавателям как демонстрационный пример реализации динамических коллекций в C++.
✨ Особенности
Работа содержит готовый, хорошо документированный исходный код на C++ с использованием стандартной библиотеки: std::vector, iostream, fstream, iomanip и string. В алгоритме явно прописан формат файлового обмена — каждая запись в файле хранится как три токена, разделённые пробелами (номер станция время), что упрощает интеграцию с тестовыми данными и автоматическую проверку. В тексте приведена математическая формулировка узла списка, что облегчает понимание структуры и её дальнейшую модификацию (замена vector на связный список, добавление сортировки или фильтрации по станции/времени).
❓ Частые вопросы
Подойдет ли для моего ВУЗа?
Структура и функционал соответствуют стандартным требованиям контрольных по программированию: постановка задачи, алгоритм, листинг, тестирование и выводы.
Можно адаптировать?
Да. Код легко расширяется: можно заменить контейнер на связный список с указателями Pᵢ, добавить хранение времени в формате HH:MM с проверкой, реализовать сохранение в CSV или добавить сортировку по времени отправления.
Примеры практических доработок: обработка имен станций с пробелами (чтение строкой), валидация формата времени, экспорт/импорт в более сложные форматы, добавление поисковых фильтров и графического интерфейса.
Выводы работы: реализован полный набор функций управления коллекцией поездов, продемонстрирована практическая реализация файлового ввода/вывода и форматированного отображения. Код подходит как готовый шаблон для сдачи и дальнейшего развития учебных проектов.