Aperçu du projet
Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 45 sur 68.
Défi
FacileVous êtes sur le point de construire un vérificateur d'inventaire simple qui vous aidera à gérer les niveaux de stock des produits.
Mettez en place les bases de votre système de gestion d'inventaire en créant les structures de données de base et en affichant les données d'inventaire initiales. Ce défi établit la structure Product et la map d'inventaire qui seront utilisées tout au long du projet.
Vous recevrez deux entrées :
- Une chaîne contenant les informations du magasin au format
"store_name,location"(par exemple,"TechStore,Downtown") - Une chaîne contenant les données initiales des produits au format
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(par exemple,"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
Votre tâche consiste à :
- Créer une structure
Productavec deux champs :Price(float64) - le prix du produitQuantity(int) - la quantité actuelle en stock
- Analyser la première entrée en la séparant par des virgules pour obtenir le nom du magasin et son emplacement
- Analyser la deuxième entrée en la séparant par des virgules pour obtenir les entrées de produits individuelles
- Pour chaque entrée de produit, séparer par des deux-points pour obtenir le nom du produit, le prix et la quantité
- Convertir la chaîne de prix en float64 et la chaîne de quantité en int
- Créer une map appelée
inventoryoù les clés sont les noms des produits (chaînes de caractères) et les valeurs sont des structuresProduct - Remplir la map d'inventaire avec les données de produits analysées
- Afficher les informations du magasin :
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- Afficher l'inventaire actuel par ordre alphabétique des noms de produits :
"Current Inventory:"- Pour chaque produit :
"- [product_name]: $[price] (Stock: [quantity])"
- Calculer et afficher les statistiques de l'inventaire :
"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]"
- Afficher le statut du système :
"System Status: Ready""Inventory management system initialized successfully"
Utilisez le package strings pour diviser les chaînes d'entrée, le package strconv pour convertir les chaînes en nombres, le package fmt pour la sortie formatée, et le package sort pour trier les noms de produits par ordre alphabétique. Formatez la valeur totale de l'inventaire avec 2 décimales. Ce défi établit les structures de données de base qui seront étendues dans les leçons suivantes du projet de gestion d'inventaire.
Essayez vous-même
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: Définir la structure Product ici
func main() {
// Lire l'entrée en utilisant bufio.Scanner pour gérer correctement les espaces
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: Écrivez votre code ci-dessous
// 1. Analyser les informations du magasin (séparer par virgule, vérifier la longueur)
// 2. Analyser les données des produits (séparer par virgule, puis par deux-points pour chaque produit)
// 3. Créer la carte d'inventaire
// 4. Convertir les chaînes de caractères en types appropriés et remplir l'inventaire
// 5. Afficher les informations du magasin
// 6. Afficher l'inventaire actuel (trié par ordre alphabétique)
// 7. Calculer et afficher les statistiques de l'inventaire
// 8. Afficher l'état du système
}Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots8Projet : Inventaire simple
Aperçu du projetVérifier le stock3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportements