Menu
Coddy logo textTech

Liste de contacts basique

Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 66 sur 68.

challenge icon

Défi

Facile

Créez un système de gestion de contacts qui démontre comment les structures (structs), les slices et les fonctions collaborent pour organiser et afficher des informations de contact. Ce défi testera votre capacité à définir des structures de données personnalisées, à gérer des collections de données et à implémenter des fonctions pour manipuler ces données.

Vous recevrez deux entrées :

  • Une chaîne contenant des informations de contact au format "name1:phone1:email1,name2:phone2:email2,name3:phone3:email3" (par exemple, "Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com")
  • Une chaîne contenant un nouveau contact à ajouter au format "name:phone:email" (par exemple, "David Wilson:555-0321:david@email.com")

Votre tâche consiste à :

  1. Définir une structure Contact avec trois champs de type chaîne : Name, Phone, et Email
  2. Créer une fonction nommée addContact qui prend une slice de structures Contact et un nouveau Contact, puis retourne une nouvelle slice avec le contact ajouté
  3. Créer une fonction nommée displayContacts qui prend une slice de structures Contact et affiche les informations de chaque contact
  4. Analyser la première entrée en la découpant au niveau des virgules pour obtenir les entrées de contact individuelles
  5. Pour chaque entrée de contact, découper au niveau des deux-points pour extraire le nom, le téléphone et l'e-mail
  6. Créer des structures Contact à partir des données analysées et les stocker dans une slice
  7. Analyser la deuxième entrée en la découpant au niveau des deux-points pour créer un nouveau contact
  8. Afficher l'en-tête de l'application : "=== CONTACT MANAGEMENT SYSTEM ==="
  9. Afficher les contacts initiaux en utilisant votre fonction displayContacts avec l'en-tête : "Initial contact list:"
  10. Afficher le nouveau contact en cours d'ajout : "Adding new contact: [name] ([phone]) - [email]"
  11. Utiliser votre fonction addContact pour ajouter le nouveau contact à la slice
  12. Afficher les contacts mis à jour en utilisant votre fonction displayContacts avec l'en-tête : "Updated contact list:"
  13. Afficher les statistiques des contacts :
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. Afficher le message de fin : "Contact management operations completed successfully"

La fonction displayContacts doit afficher chaque contact au format : "[index]. [name] - Phone: [phone], Email: [email]" où l'index commence à 1.

Utilisez le package strings pour découper les chaînes d'entrée et le package fmt pour la sortie formatée. Ce défi démontre comment combiner des structures pour l'organisation des données, des slices pour les collections et des fonctions pour l'organisation du code - des modèles fondamentaux utilisés tout au long de la programmation en Go.

Essayez vous-même

package main

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

// TODO: Définissez votre structure Contact ici

// TODO: Implémentez la fonction addContact ici

// TODO: Implémentez la fonction displayContacts ici

func main() {
	// Lire l'entrée en utilisant bufio.Scanner pour gérer correctement les espaces dans les noms
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	contactsInput := scanner.Text()
	
	scanner.Scan()
	newContactInput := scanner.Text()
	
	// TODO: Écrivez votre code ci-dessous
	// Analyser l'entrée des contacts et créer des structures Contact
	// N'oubliez pas de vérifier si la tranche (slice) parts a assez d'éléments avant d'y accéder
	// Analyser l'entrée du nouveau contact
	// Afficher l'en-tête de l'application
	// Afficher les contacts initiaux
	// Ajouter le nouveau contact
	// Afficher les contacts mis à jour
	// Afficher les statistiques
	// Afficher le message de fin
}

Toutes les leçons de Logique & Flux