Menu
Coddy logo textTech

Итоги — Обновление инвентаря

Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 32 из 65.

challenge icon

Задание

Легко

Создайте программу, которая управляет системой инвентаризации склада, отслеживая уровни запасов товаров, проверяя наличие существующих позиций, безопасно добавляя новые товары и обновляя их количество. Ваша программа должна:

  1. Прочитать строковый ввод, представляющий название склада
  2. Прочитать несколько пар входных данных, представляющих названия товаров и их текущее количество на складе (ввод закончится, когда вы получите "inventory_done")
  3. Прочитать строковый ввод, представляющий товар для проверки на наличие
  4. Прочитать строковый ввод, представляющий новый товар для добавления с запасом по умолчанию
  5. Прочитать строковый ввод, представляющий товар для пополнения запасов
  6. Прочитать строковый ввод, представляющий дополнительное количество для добавления к пополняемому товару
  7. Создать Map для хранения названий товаров в качестве ключей и их количества на складе в качестве значений
  8. Использовать containsKey() для проверки наличия указанного товара в инвентаре
  9. Использовать putIfAbsent() для добавления нового товара с запасом по умолчанию 50 единиц
  10. Обновить количество товара на складе для пополняемого продукта, добавив дополнительное количество
  11. Вывести отчет об управлении инвентарем в точном формате, показанном ниже

Например, если название склада — "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");
  // Добавьте ваши операторы вывода здесь
}

Все уроки раздела Логика и управление потоком