Итоги — Обновление инвентаря
Часть раздела Логика и управление потоком путешествия по 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Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостейПотренируйтесь самостоятельно: Онлайн-компилятор Dart