Menu
Coddy logo textTech

Обзор проекта

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

challenge icon

Задание

Легко

Вы собираетесь создать простую программу для проверки инвентаря, которая поможет вам управлять уровнями запасов товаров.

Подготовьте основу для вашей системы управления инвентарем, создав основные структуры данных и отобразив начальные данные об инвентаре. Эта задача закладывает структуру Product и карту инвентаря, которые будут использоваться на протяжении всего проекта.

Вы получите два входных значения:

  • Строку, содержащую информацию о магазине в формате "store_name,location" (например, "TechStore,Downtown")
  • Строку, содержащую начальные данные о товарах в формате "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" (например, "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

Ваша задача:

  1. Создать структуру Product с двумя полями:
    • Price (float64) — цена товара
    • Quantity (int) — текущее количество на складе
  2. Разобрать первый входной параметр, разделив его по запятым, чтобы получить название магазина и местоположение
  3. Разобрать второй входной параметр, разделив его по запятым, чтобы получить записи об отдельных товарах
  4. Для каждой записи о товаре разделить её по двоеточиям, чтобы получить название товара, цену и количество
  5. Преобразовать строку цены в float64, а строку количества в int
  6. Создать карту с именем inventory, где ключами являются названия товаров (строки), а значениями — структуры Product
  7. Заполнить карту инвентаря разобранными данными о товарах
  8. Вывести информацию о магазине:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. Вывести текущий инвентарь в алфавитном порядке по названию товара:
    • "Current Inventory:"
    • Для каждого товара: "- [product_name]: $[price] (Stock: [quantity])"
  10. Рассчитать и вывести статистику инвентаря:
    • "Inventory Statistics:"
    • "Total Products: [total_number_of_products]"
    • "Total Items in Stock: [sum_of_all_quantities]"
    • "Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
  11. Вывести статус системы:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

Используйте пакет strings для разделения входных строк, пакет strconv для преобразования строк в числа, пакет fmt для форматированного вывода и пакет sort для сортировки названий товаров по алфавиту. Отформатируйте общую стоимость инвентаря до 2 знаков после запятой. Эта задача закладывает базовые структуры данных, которые будут расширены в последующих уроках проекта по управлению инвентарем.

Попробуйте сами

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
	"strings"
)

// TODO: Определите структуру Product здесь

func main() {
	// Чтение входных данных с помощью bufio.Scanner для правильной обработки пробелов
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: Напишите свой код ниже
	// 1. Разбор информации о магазине (разделение запятой, проверка длины)
	// 2. Разбор данных о товарах (разделение запятой, затем двоеточием для каждого товара)
	// 3. Создание карты инвентаря
	// 4. Преобразование строк в соответствующие типы и заполнение инвентаря
	// 5. Отображение информации о магазине
	// 6. Отображение текущего инвентаря (отсортированного по алфавиту)
	// 7. Расчет и отображение статистики инвентаря
	// 8. Отображение статуса системы
	
}

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