Итоги — Обновление инвентаря
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 32 из 65.
Задание
ЛегкоСоздайте программу, которая управляет системой инвентаризации склада, отслеживая уровни запасов товаров, проверяя наличие существующих позиций, безопасно добавляя новые товары и обновляя их количество. Ваша программа должна:
- Прочитать строковый ввод, представляющий название склада
- Прочитать несколько пар входных данных, представляющих названия товаров и их текущее количество на складе (ввод закончится, когда вы получите
"inventory_done") - Прочитать строковый ввод, представляющий товар для проверки на наличие
- Прочитать строковый ввод, представляющий новый товар для добавления с запасом по умолчанию
- Прочитать строковый ввод, представляющий товар для пополнения запасов
- Прочитать строковый ввод, представляющий дополнительное количество для добавления к пополняемому товару
- Создать Map для хранения названий товаров в качестве ключей и их количества на складе в качестве значений
- Использовать
containsKey()для проверки наличия указанного товара в инвентаре - Использовать
putIfAbsent()для добавления нового товара с запасом по умолчанию 50 единиц - Обновить количество товара на складе для пополняемого продукта, добавив дополнительное количество
- Вывести отчет об управлении инвентарем в точном формате, показанном ниже
Например, если название склада — "Central Warehouse", инвентарь включает "Laptops" с 25 единицами, "Mice" со 150 единицами, "Keyboards" с 75 единицами, товар для проверки — "Laptops", новый товар для добавления — "Monitors", товар для пополнения — "Mice", а дополнительное количество — 30, ваша программа должна вывести:
Warehouse: Central Warehouse
Initial Inventory: {Laptops: 25, Mice: 150, Keyboards: 75}
Inventory Operations:
Checking for 'Laptops': Product found in inventory
Adding 'Monitors': New product added with default stock 50
Restocking 'Mice': Updated quantity from 150 to 180
Final Inventory: {Laptops: 25, Mice: 180, Keyboards: 75, Monitors: 50}
Inventory Summary:
Total products: 4
Total stock units: 330
Low stock items (below 30): 1
Products restocked: 1
Status: Inventory management completedЕсли название склада — "North Storage", инвентарь включает "Tablets" с 40 единицами, "Headphones" с 80 единицами, товар для проверки — "Smartphones", новый товар для добавления — "Tablets", товар для пополнения — "Headphones", а дополнительное количество — 20, ваша программа должна вывести:
Warehouse: North Storage
Initial Inventory: {Tablets: 40, Headphones: 80}
Inventory Operations:
Checking for 'Smartphones': Product not found in inventory
Adding 'Tablets': Product already exists, keeping stock 40
Restocking 'Headphones': Updated quantity from 80 to 100
Final Inventory: {Tablets: 40, Headphones: 100}
Inventory Summary:
Total products: 2
Total stock units: 140
Low stock items (below 30): 0
Products restocked: 1
Status: Inventory management completedЕсли название склада — "South Depot", инвентарь включает "Printers" с 15 единицами, "Scanners" с 35 единицами, "Cables" с 200 единицами, товар для проверки — "Scanners", новый товар для добавления — "Webcams", товар для пополнения — "Printers", а дополнительное количество — 45, ваша программа должна вывести:
Warehouse: South Depot
Initial Inventory: {Printers: 15, Scanners: 35, Cables: 200}
Inventory Operations:
Checking for 'Scanners': Product found in inventory
Adding 'Webcams': New product added with default stock 50
Restocking 'Printers': Updated quantity from 15 to 60
Final Inventory: {Printers: 60, Scanners: 35, Cables: 200, Webcams: 50}
Inventory Summary:
Total products: 4
Total stock units: 345
Low stock items (below 30): 0
Products restocked: 1
Status: Inventory management completedВаша программа должна использовать containsKey() для проверки наличия товара в инвентаре, putIfAbsent() для безопасного добавления новых товаров с запасом по умолчанию 50 единиц и прямое обновление значений в Map для увеличения количества запасов. Считайте товары с низким запасом как те, количество которых ниже 30 единиц. Рассчитайте общее количество единиц на складе, просуммировав все количества в итоговом инвентаре. Формат ввода будет следующим: название склада, затем чередующиеся названия товаров и количество на складе (в виде строк, которые необходимо преобразовать в целые числа), заканчивающиеся на "inventory_done", после чего следует товар для проверки, новый товар для добавления, товар для пополнения и дополнительное количество.
Попробуйте сами
import 'dart:io';
void main() {
// Считать название склада
String? warehouseName = stdin.readLineSync();
// Считывать товары инвентаря до "inventory_done"
Map<String, int> inventory = {};
while (true) {
String? input = stdin.readLineSync();
if (input == "inventory_done") break;
String productName = input!;
String? quantityStr = stdin.readLineSync();
int quantity = int.parse(quantityStr!);
inventory[productName] = quantity;
}
// Считать товар для проверки
String? productToCheck = stdin.readLineSync();
// Считать новый товар для добавления
String? newProduct = stdin.readLineSync();
// Считать товар для пополнения запасов
String? productToRestock = stdin.readLineSync();
// Считать дополнительное количество
String? additionalQuantityStr = stdin.readLineSync();
int additionalQuantity = int.parse(additionalQuantityStr!);
// TODO: Напишите ваш код ниже
// Используйте containsKey(), чтобы проверить, существует ли товар
// Используйте putIfAbsent(), чтобы добавить новые товары с запасом по умолчанию 50
// Обновите количество запасов и рассчитайте статистику инвентаря
// Вывести отчет по управлению инвентарем
print("Warehouse: $warehouseName");
// Добавьте ваши операторы вывода здесь
}Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей