Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cpp4_2008.doc
Скачиваний:
9
Добавлен:
04.11.2018
Размер:
212.99 Кб
Скачать

Вариант 1 Линия метро

Разработать приложение, описывающее характеристики линии метро. Каждая станция линии представляется элементом-описателем станции.

Описатель беспересадочной станции содержит следующую информацию: название станции.

Описатель станции с переходом на одноимённую содержит следующую информацию: название станции; название линии, на которую есть переход (максимум три перехода).

Описатель пересадочного узла содержит следующую информацию: название станции; название станции и линии, на которую есть переход (максимум три перехода).

Информация обо всех станциях линии сведена в просматриваемую таблицу. Каждый элемент таблицы содержит указатель на описатель станции.

Полная информация о линии метро собрана в описателе линии, который содержит: название линии и таблицу станций.

Обеспечить выполнение следующих операций.

  • Для описателя линии:

    • получить название линии;

    • включить новый элемент;

    • найти элемент по заданному имени станции;

    • показать содержимое таблицы.

  • Для любой станции:

    • вывести информацию о станции;

    • вернуть название станции; изменить название станции;

    • получить (вернуть в качестве результата) тип станции;

    • изменить тип существующей станции.

  • Для станции с переходом:

    • вернуть в качестве результата перечень названий линий перехода;

    • добавить название линии перехода.

  • Для пересадочного узла:

    • вернуть в качестве результата перечень названий станций и линий перехода;

    • добавить название станции и линии перехода.

  • Для приложения:

    • редактирование описания линии - внесение, исключение и модификация описания станций, возможно, с изменением типа станции;

    • поиск станции на данной линии или по названию станции перехода;

    • (*) проверить корректность описания нескольких линий, используя класс-итератор.

Порядок выполнения работы

  1. На основе описания задачи определить состав классов.

  2. Разработать иерархию классов и схему их взаимодействия.

  3. Для каждого класса определить его состояние и необходимые методы.

  4. Разработать и отладить все классы. Приложение реализовать в виде простой диалоговой программы.

  5. (*) Разработать и отладить класс, реализующий работу приложения. Предусмотреть в классе возможность сохранения таблицы в файле и ее восстановления.

  6. (*) Разработать и отладить класс-итератор, с помощью которого реализовать дополнительные операции.

Примечание: пункты задания, отмеченные (*), являются дополнительными.

Вариант 2 Гостиница

Разработать приложение, позволяющее организовать работу по учёту занятости номеров гостиницы. Информация о номере хранится в некотором описателе номера.

Описатель номера “люкс” содержит следующую информацию: свободен или занят (0 или 1); количество комнат (не меньше двух) и количество проживающих (один или два гостя); дата регистрации и число дней проживания; суточный тариф проживания в номере.

Описатель одноместного номера содержит следующую информацию: свободен или занят (0 или 1); дата регистрации и число дней проживания; суточный тариф проживания в номере.

Описатель многоместного номера содержит следующую информацию: свободен или занят (0 или 1); количество мест и сколько занято (два числа); для каждого проживающего (от одного до четырёх гостей) дата регистрации и число дней проживания; суточный тариф проживания в номере для одного гостя.

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

Обеспечить выполнение следующих операций.

  • Для таблицы:

    • включить новый элемент, не нарушая упорядоченности;

    • найти элемент по заданному “указателю номера”;

    • удалить элемент, заданный “указателем номера”;

    • показать содержимое таблицы.

  • Для любого номера:

    • вывести информацию о номере;

    • вернуть в качестве результата тип номера;

    • вернуть в качестве результата состояние номера (свободен или занят); вернуть в качестве результата число гостей в номере;

    • занять номер (с регистрацией гостя); освободить номер.

  • Для многоместного номера:

    • занять или освободить часть номера (дополнить или сократить список проживающих).

  • Для приложения:

    • оформить регистрацию гостя в гостинице (при наличии свободного номера модифицировать состояние номера);

    • оформить освобождение номера (изменить состояние номера и вернуть в качестве результата сумму оплаты за проживание в номере);

    • вывести информацию о свободных номерах гостиницы;

    • (*) определить занятость гостиницы (отношение числа занятых мест в номерах к общему числу мест в номерах), используя класс-итератор.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]