Przegląd projektu
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 45 z 68.
Wyzwanie
ŁatwyZa 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:
- Utwórz strukturę
Productz dwoma polami:Price(float64) — cena produktuQuantity(int) — bieżąca liczba sztuk w magazynie
- Przetwórz pierwsze dane wejściowe, dzieląc je po przecinkach, aby uzyskać nazwę sklepu i lokalizację
- Przetwórz drugie dane wejściowe, dzieląc je po przecinkach, aby uzyskać poszczególne wpisy produktów
- Dla każdego wpisu produktu podziel go po dwukropkach, aby uzyskać nazwę produktu, cenę i liczbę sztuk
- Przekonwertuj ciąg z ceną na float64, a ciąg z liczbą sztuk na int
- Utwórz mapę o nazwie
inventory, w której kluczami są nazwy produktów (ciągi znaków), a wartościami strukturyProduct - Wypełnij mapę zapasów przetworzonymi danymi produktów
- Wyświetl informacje o sklepie:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- 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])"
- 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]"
- 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
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów8Projekt: Prosty system magazynowy
Przegląd projektuSprawdzanie stanu magazynowego3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowaniaPoćwicz samodzielnie: Kompilator Go online