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

Код имеет общую временную сложность программы — O(n), где n — количество студентов.

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}>> добавлен в корзину.");

31

}

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)

32

{

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)

33

{

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;

34

}

}

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

Рисунок 1.35 — Результат работы программы задания 6 Далее будут представлены работы каждой функции программы.

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

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

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

35