ЗадачаПрограммированиеГод: 2024ВГУИТ: Воронежский государственный университет инженерных технологий
👁 8💼 0

Готовая контрольная: Программа C++ — список поездов

Загружена: 20.02.2026 12:50

Программа реализует динамическую структуру для хранения информации о поездах: номер, станция назначения, время отправления. В работе приведён полный код на C++ с классами Train и TrainList, меню для ввода, загрузки и сохранения. Практическая ценность — готовый исходник для контрольных и учебных задач по программированию.

Содержание

КОНТРОЛЬНАЯ РАБОТА №1
по дисциплине Методы программирования

Вариант №9
Формулировка задания: Необходимо разработать программу на языке C++, которая будет представлять динамическую структуру данных в виде списка поездов дальнего следования. Каждый элемент списка должен содержать информацию о поезде: номер поезда, станцию назначения и время отправления. Программа должна обеспечивать возможность ввода данных как с клавиатуры, так и из файла.
Математическая формулировка задачи: Необходимо создать динамическую структуру данных в виде односвязного списка, где каждый элемент (узел) будет представлять собой поезд и содержать три атрибута:
Пусть L — список поездов, состоящий из  k  узлов, где каждый узел  Tᵢ  имеет следующую структуру:
Tᵢ = (Nᵢ, Dᵢ, Tᵢ, Pᵢ)
где:
•  Nᵢ — номер поезда (целое число);
•  Dᵢ — станция назначения (строка);
•  Tᵢ — время отправления (строка);
•  Pᵢ — указатель на следующий узел в списке.

Подробное описание

📘 О чем эта работа

Контрольная работа посвящена разработке консольной программы на языке 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 или добавить сортировку по времени отправления.

Примеры практических доработок: обработка имен станций с пробелами (чтение строкой), валидация формата времени, экспорт/импорт в более сложные форматы, добавление поисковых фильтров и графического интерфейса.

Выводы работы: реализован полный набор функций управления коллекцией поездов, продемонстрирована практическая реализация файлового ввода/вывода и форматированного отображения. Код подходит как готовый шаблон для сдачи и дальнейшего развития учебных проектов.