- •Оглавление
- •Введение
- •1 Разработка и реализация алгоритмов на языке с#
- •1.1 Лабораторная работа №1. Циклические программы
- •Код имеет линейную сложность o(n), так как количество итераций циклаК пропорционально введенному числу n.
- •1.2 Лабораторная работа №2. Массивы
- •1.3 Лабораторная работа №3. Функции
- •1.4 Лабораторная работа №4. Обработка текста
- •1.5 Лабораторная работа №5. Структуры
- •1.6 Лабораторная работа №6. Коллекции
- •1.7 Лабораторная работа №7. Основы ооп
- •Заключение
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) из-за работы со списками и их копированием.
