Panoramica del progetto
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 45 di 68.
Sfida
FacileStai per creare un semplice sistema di controllo dell'inventario che ti aiuterà a gestire le scorte dei prodotti.
Imposta le basi del tuo sistema di gestione dell'inventario creando le strutture dati principali e visualizzando i dati iniziali dell'inventario. Questa sfida introduce la struct Product e la mappa dell'inventario che verranno utilizzate per tutto il progetto.
Riceverai due input:
- Una stringa contenente le informazioni del negozio nel formato
"store_name,location"(ad es.,"TechStore,Downtown") - Una stringa contenente i dati iniziali dei prodotti nel formato
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(ad es.,"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
Il tuo compito è:
- Creare una struct
Productcon due campi:Price(float64) - il prezzo del prodottoQuantity(int) - la quantità attuale in magazzino
- Analizzare il primo input dividendolo in corrispondenza delle virgole per ottenere il nome del negozio e la località
- Analizzare il secondo input dividendolo in corrispondenza delle virgole per ottenere le singole voci dei prodotti
- Per ogni voce di prodotto, dividerla in corrispondenza dei due punti per ottenere il nome del prodotto, il prezzo e la quantità
- Convertire la stringa del prezzo in float64 e la stringa della quantità in int
- Creare una mappa chiamata
inventoryin cui le chiavi sono i nomi dei prodotti (stringhe) e i valori sono structProduct - Popolare la mappa dell'inventario con i dati analizzati dei prodotti
- Visualizzare le informazioni del negozio:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- Visualizzare l'inventario attuale in ordine alfabetico per nome del prodotto:
"Current Inventory:"- Per ogni prodotto:
"- [product_name]: $[price] (Stock: [quantity])"
- Calcolare e visualizzare le statistiche dell'inventario:
"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]"
- Visualizzare lo stato del sistema:
"System Status: Ready""Inventory management system initialized successfully"
Usa il pacchetto strings per suddividere le stringhe di input, il pacchetto strconv per convertire le stringhe in numeri, il pacchetto fmt per l'output formattato e il pacchetto sort per ordinare alfabeticamente i nomi dei prodotti. Formatta il valore totale dell'inventario con 2 cifre decimali. Questa sfida definisce le strutture dati di base che verranno estese nelle lezioni successive del progetto di gestione dell'inventario.
Provalo tu
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: Definisci qui la struct Product
func main() {
// Leggi l'input usando bufio.Scanner per gestire correttamente gli spazi
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: Scrivi il tuo codice qui sotto
// 1. Analizza le informazioni del negozio (separa in base alla virgola, controlla la lunghezza)
// 2. Analizza i dati dei prodotti (separa in base alla virgola, poi ai due punti per ciascun prodotto)
// 3. Crea una mappa dell'inventario
// 4. Converti le stringhe nei tipi appropriati e popola l'inventario
// 5. Mostra le informazioni del negozio
// 6. Mostra l'inventario attuale (in ordine alfabetico)
// 7. Calcola e mostra le statistiche dell'inventario
// 8. Mostra lo stato del sistema
}Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole8Progetto: inventario semplice
Panoramica del progettoControllare le scorte3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamentiEsercitati da solo: Compilatore Go online