Menu
Coddy logo textTech

Podstawowa lista kontaktów

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

challenge icon

Wyzwanie

Łatwy

Utwórz system zarządzania kontaktami, który pokazuje, jak struktury, wycinki i funkcje współpracują ze sobą, aby organizować i wyświetlać informacje o kontaktach. To wyzwanie sprawdzi Twoją umiejętność definiowania niestandardowych struktur danych, zarządzania zbiorami danych i implementowania funkcji do przetwarzania tych danych.

Otrzymasz dwa wejścia:

  • Ciąg zawierający informacje o kontaktach w formacie "name1:phone1:email1,name2:phone2:email2,name3:phone3:email3" (np. "Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com")
  • Ciąg zawierający nowy kontakt do dodania w formacie "name:phone:email" (np. "David Wilson:555-0321:david@email.com")

Twoje zadanie:

  1. Zdefiniuj strukturę Contact z trzema polami typu string: Name, Phone i Email
  2. Utwórz funkcję o nazwie addContact, która przyjmuje wycinek struktur Contact oraz nowy Contact, a następnie zwraca nowy wycinek z dodanym kontaktem
  3. Utwórz funkcję o nazwie displayContacts, która przyjmuje wycinek struktur Contact i wyświetla informacje o każdym kontakcie
  4. Przetwórz pierwsze wejście, dzieląc je po przecinkach, aby uzyskać poszczególne wpisy kontaktów
  5. Dla każdego wpisu kontaktu podziel go po dwukropkach, aby wyodrębnić imię i nazwisko, numer telefonu oraz adres e-mail
  6. Utwórz struktury Contact z przetworzonych danych i przechowuj je w wycinku
  7. Przetwórz drugie wejście, dzieląc je po dwukropkach, aby utworzyć nowy kontakt
  8. Wyświetl nagłówek aplikacji: "=== CONTACT MANAGEMENT SYSTEM ==="
  9. Wyświetl początkowe kontakty za pomocą funkcji displayContacts z nagłówkiem: "Initial contact list:"
  10. Wyświetl dodawany nowy kontakt: "Adding new contact: [name] ([phone]) - [email]"
  11. Użyj funkcji addContact, aby dodać nowy kontakt do wycinka
  12. Wyświetl zaktualizowane kontakty za pomocą funkcji displayContacts z nagłówkiem: "Updated contact list:"
  13. Wyświetl statystyki kontaktów:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. Wyświetl komunikat o zakończeniu: "Contact management operations completed successfully"

Funkcja displayContacts powinna wyświetlać każdy kontakt w formacie: "[index]. [name] - Phone: [phone], Email: [email]", gdzie indeks zaczyna się od 1.

Użyj pakietu strings, aby dzielić ciągi wejściowe, oraz pakietu fmt do formatowanego wyjścia. To wyzwanie pokazuje, jak łączyć struktury w celu organizacji danych, wycinki do przechowywania kolekcji oraz funkcje do organizacji kodu — podstawowe wzorce używane w programowaniu w Go.

Spróbuj swoich sił

package main

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

// TODO: Zdefiniuj tutaj strukturę Contact

// TODO: Zaimplementuj tutaj funkcję addContact

// TODO: Zaimplementuj tutaj funkcję displayContacts

func main() {
	// Odczytaj dane wejściowe za pomocą bufio.Scanner, aby poprawnie obsłużyć spacje w nazwach
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	contactsInput := scanner.Text()
	
	scanner.Scan()
	newContactInput := scanner.Text()
	
	// TODO: Napisz swój kod poniżej
	// Przeanalizuj dane wejściowe kontaktów i utwórz struktury Contact
	// Pamiętaj, aby przed dostępem sprawdzić, czy wycinek parts zawiera wystarczającą liczbę elementów
	// Przeanalizuj dane wejściowe nowego kontaktu
	// Wyświetl nagłówek aplikacji
	// Wyświetl początkową listę kontaktów
	// Dodaj nowy kontakt
	// Wyświetl zaktualizowaną listę kontaktów
	// Wyświetl statystyki
	// Wyświetl komunikat o zakończeniu
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online