Menu
Coddy logo textTech

Przegląd projektu

Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 45 z 68.

challenge icon

Wyzwanie

Łatwy

Za chwilę zbudujesz prosty moduł sprawdzania stanu magazynowego, który pomoże Ci zarządzać poziomami zapasów produktów.

Przygotuj podstawy systemu zarządzania magazynem, tworząc główne struktury danych i wyświetlając początkowe dane o zapasach. To wyzwanie wprowadza strukturę Product i mapę zapasów, które będą używane w całym projekcie.

Otrzymasz dwa dane wejściowe:

  • Ciąg zawierający informacje o sklepie w formacie "store_name,location" (np. "TechStore,Downtown")
  • Ciąg zawierający początkowe dane o produktach w formacie "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" (np. "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

Twoje zadanie:

  1. Utwórz strukturę Product z dwoma polami:
    • Price (float64) — cena produktu
    • Quantity (int) — bieżąca liczba sztuk w magazynie
  2. Przetwórz pierwsze dane wejściowe, dzieląc je po przecinkach, aby uzyskać nazwę sklepu i lokalizację
  3. Przetwórz drugie dane wejściowe, dzieląc je po przecinkach, aby uzyskać poszczególne wpisy produktów
  4. Dla każdego wpisu produktu podziel go po dwukropkach, aby uzyskać nazwę produktu, cenę i liczbę sztuk
  5. Przekonwertuj ciąg z ceną na float64, a ciąg z liczbą sztuk na int
  6. Utwórz mapę o nazwie inventory, w której kluczami są nazwy produktów (ciągi znaków), a wartościami struktury Product
  7. Wypełnij mapę zapasów przetworzonymi danymi produktów
  8. Wyświetl informacje o sklepie:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. Wyświetl bieżące zapasy w kolejności alfabetycznej według nazw produktów:
    • "Current Inventory:"
    • Dla każdego produktu: "- [product_name]: $[price] (Stock: [quantity])"
  10. Oblicz i wyświetl statystyki zapasów:
    • "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. Wyświetl stan systemu:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

Użyj pakietu strings, aby podzielić ciągi wejściowe, pakietu strconv, aby przekonwertować ciągi na liczby, pakietu fmt do formatowania danych wyjściowych oraz pakietu sort, aby posortować nazwy produktów alfabetycznie. Sformatuj łączną wartość zapasów do 2 miejsc po przecinku. To wyzwanie wprowadza podstawowe struktury danych, które zostaną rozbudowane w kolejnych lekcjach projektu zarządzania magazynem.

Spróbuj swoich sił

package main

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

// TODO: Zdefiniuj tutaj strukturę Product

func main() {
	// Wczytaj dane wejściowe za pomocą bufio.Scanner, aby poprawnie obsłużyć spacje
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: Napisz swój kod poniżej
	// 1. Przeanalizuj informacje o sklepie (podziel według przecinków, sprawdź długość)
	// 2. Przeanalizuj dane produktów (podziel według przecinków, a następnie według dwukropków dla każdego produktu)
	// 3. Utwórz mapę stanów magazynowych
	// 4. Przekonwertuj ciągi znaków na odpowiednie typy i wypełnij mapę stanów magazynowych
	// 5. Wyświetl informacje o sklepie
	// 6. Wyświetl aktualne stany magazynowe (posortowane alfabetycznie)
	// 7. Oblicz i wyświetl statystyki stanów magazynowych
	// 8. Wyświetl status systemu
	
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online