Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы ОП.odt
Скачиваний:
0
Добавлен:
23.02.2026
Размер:
3.15 Mб
Скачать

1.6 Лабораторная работа №6. Коллекции

Задание 6: создайте консольное приложение, которое будет моделировать систему обработки заказов в интернет-магазине. Реализуйте следующие функции, используя различные типы коллекций:

List: Хранение и управление списком товаров в корзине покупателя. Разрешите добавление, удаление и изменение товаров в корзине.

Stack: Механизм отката последнего действия. Позвольте пользователю отменять последние действия, такие как добавление или удаление товара из корзины.

Queue: Организация очереди заказов на обработку. Когда заказ обрабатывается, он удаляется из очереди. Сценарии: добавление товаров в корзину, отмена действий, обработка заказов и т. д.

Ниже представлен исходный код данной программы на языке программирования C#.

List<string> products = new List<string>();

Stack<List<string>> history = new Stack<List<string>>();

void SaveL()

{

List<string> currentState = new List<string>(products);

history.Push(currentState);

}

void AddP(string product)

{

Console.Clear();

SaveL();

products.Add(product);

Console.WriteLine($"Товар <<{product}>> добавлен в корзину.");

}

void RemoveP(string product)

{

if (products.Contains(product))

{

Console.Clear();

SaveL();

products.Remove(product);

Console.WriteLine($"Товар <<{product}>> удален из корзины.");

}

else

{

Console.Clear();

Console.WriteLine($"Товар <<{product}>> не найден в корзине.");

}

}

void ShowCart()

{

if (products.Count == 0)

{

Console.Clear();

Console.WriteLine("Корзина пуста.");

}

else

{

Console.Clear();

Console.WriteLine("Товары в корзине:");

foreach (var product in products)

{

Console.WriteLine(product);

}

}

}

void REMLastAction()

{

if (history.Count > 0)

{

Console.Clear();

products = history.Pop();

Console.WriteLine("Последнее действие отменено.");

}

else

{

Console.Clear();

Console.WriteLine("Нет действий для отмены.");

}

}

List<string> CheckOrder()

{

Console.Clear();

List<string> orderedProducts = new List<string>(products);

products.Clear();

history.Clear();

Console.WriteLine("Заказ оформлен.");

return orderedProducts;

}

Queue<List<string>> orderQueue = new Queue<List<string>>();

bool running = true;

while (running)

{

Console.ForegroundColor = ConsoleColor.Magenta;

Console.WriteLine("================================");

Console.ForegroundColor = ConsoleColor.White;

Console.WriteLine("1. Добавить товар в корзину\n2. Удалить товар из корзины\n3. Показать корзину\n4. Отменить последнее действие\n5. Оформить заказ\n6. Обработать заказ\n7. Выход");

Console.ForegroundColor = ConsoleColor.Magenta;

Console.WriteLine("================================");

Console.ForegroundColor = ConsoleColor.DarkCyan;

Console.Write("Выберите действие: ");

Console.ResetColor();

string choice = Console.ReadLine();

switch (choice)

{

case "1":

Console.Write("Введите название товара: ");

string product = Console.ReadLine();

AddP(product);

break;

case "2":

Console.Write("Введите название товара для удаления: ");

string productToRemove = Console.ReadLine();

RemoveP(productToRemove);

break;

case "3":

ShowCart();

break;

case "4":

REMLastAction();

break;

case "5":

orderQueue.Enqueue(CheckOrder());

break;

case "6":

if (orderQueue.Count > 0)

{

List<string> order = orderQueue.Dequeue();

Console.WriteLine("Обработан заказ:");

foreach (var item in order)

{

Console.WriteLine(item);

}

}

else

{

Console.WriteLine("Нет заказов для обработки.");

}

break;

case "7":

running = false;

break;

default:

Console.Clear();

Console.WriteLine("Неверный ввод, попробуйте снова.");

break;

}

}

Результат работы программы представлен на рисунке 1.35.

Р исунок 1.35 — Результат работы программы задания 6

Далее будут представлены работы каждой функции программы.

Рисунок 1.36 — Функция добавления товара в корзину

Рисунок 1.37 — Функция удаления товара из корзины

Рисунок 1.38 — Удаление товара

Рисунок 1.39 — Отображение товаров в корзине

Рисунок 1.40 — Функция отмены действия

Сложность алгоритма O(n) из-за работы со списками и их копированием.