Inlämningsuppgift

Inlämningsuppgift 2 – Hantera användardata i ett enklare system

Bygg ett menyprogram som lägger till, söker, sorterar och tar bort användare.

Vad du ska visa

Den här uppgiften bygger på det du har lärt dig i Modul 2. Du ska visa att du kan:

  • Planera program med algoritmtänk.
  • Använda listor och dictionaries för att lagra strukturerad data.
  • Använda en tuple där det passar, till exempel när en funktion returnerar flera värden.
  • Skriva funktioner för att strukturera din kod.
  • Använda loopar, villkor och användarinmatning.
  • Använda sökning och sortering i listor.
  • Kontrollera data och hantera ogiltiga eller dubbla värden.
  • Strukturera din kod så att den är läsbar och lätt att följa.

Uppgift

Skapa ett program där användaren kan hantera en lista med användare. Programmet ska ge användaren möjlighet att:

  1. Lägga till användare med namn, ålder och en unik e-postadress.
  2. Söka efter användare via namn eller e-post.
  3. Visa alla användare sorterade alfabetiskt efter namn.
  4. Ta bort en användare genom att ange användarens e-postadress.
  5. Avsluta programmet.

Du ska använda funktioner för att dela upp din kod. Ditt program ska vara användarvänligt, tydligt kommenterat och skrivet med god struktur. Programmet får inte lägga till två användare med samma e-postadress.

Repetera innan du börjar

  • Kap 2.7 - guidad övning med en bibliotekskatalog.
  • Kap 2.2 - listor och iteration.
  • Kap 2.3 - sökning och sortering.
  • Kap 2.4 - dictionaries och tuples.
  • Kap 2.5 - planera program med algoritmtänk.

Bedömning

  • Användning av listor och dictionaries.
  • Att programmet är uppdelat i funktioner med tydligt syfte.
  • Att menyn fungerar och att programmet är logiskt uppbyggt.
  • Att dubbletter och felaktig inmatning hanteras utan att programmet kraschar.
  • Att du visar förståelse för sortering, sökning och datastrukturer.
  • Att din kod är läsbar och kommenterad.

Checklista före inlämning

  • Jag har en fungerande meny med val 1-5.
  • Jag använder en lista med dictionaries för att lagra användare.
  • Jag använder en tuple på ett rimligt sätt, till exempel för att returnera två värden från en funktion.
  • Jag förhindrar att samma e-postadress registreras mer än en gång.
  • Jag kan ta bort en användare via e-postadress.
  • Jag har skapat och använt minst fyra egna funktioner.
  • Jag har testat mitt program så att alla val fungerar.
  • Jag har kommenterat min kod där det behövs.

Exempel på tuple i uppgiften

Du kan till exempel låta en funktion läsa in namn och e-post och returnera dem som en tuple:

def read_name_and_email():
    name = input("Ange namn: ")
    email = input("Ange e-post: ")
    return name, email

Då kan du packa upp värdena när du skapar din dictionary:

name, email = read_name_and_email()
user = {"name": name, "age": age, "email": email}

Testfall

Test Indata Förväntat resultat
Lägg till användare Anna, 17, anna@example.com Användaren sparas i listan.
Fel ålder Anna, sjutton, anna@example.com Programmet visar felmeddelande och kraschar inte.
Dubblett av e-postadress Lägg till två användare med anna@example.com Den andra användaren sparas inte och ett tydligt meddelande visas.
Sök e-post anna@example.com Programmet hittar rätt användare.
Visa sorterat Flera användare i osorterad ordning Användarna visas alfabetiskt efter namn.
Ta bort användare anna@example.com Rätt användare tas bort och finns inte längre i listan.
Ta bort okänd användare saknas@example.com Programmet visar ett tydligt meddelande och fortsätter.

Det här ska lämnas in

  • Din Pythonfil, till exempel main.py.
  • En kort lista över testfall du har provat.
  • Eventuell kort kommentar om hur du använde listor, dictionaries och tuple.

Mallkod att utgå ifrån

# Funktion: Lägg till en användare
def add_user(users):
    # Här ska du skriva kod för att läsa in namn, ålder och e-post.
    # Kontrollera att e-postadressen inte redan finns.
    # Skapa en dictionary med informationen och lägg till den i listan users.
    pass

# Funktion: Sök efter en användare
def search_user(users):
    # Be användaren skriva in ett sökord, till exempel namn eller e-post.
    # Sök i listan efter matchande användare och skriv ut resultat.
    pass

# Funktion: Visa alla användare
def show_users(users):
    # Sortera användarna efter namn.
    # Skriv ut all information om varje användare.
    pass

# Funktion: Ta bort en användare
def remove_user(users):
    # Läs in en e-postadress och ta bort rätt användare.
    # Visa ett meddelande om e-postadressen inte finns.
    pass

# Huvudfunktion: Sköter meny och programflöde
def main():
    users = []  # Här lagras användarna som dictionaries

    while True:
        print("\n1. Lägg till användare")
        print("2. Sök användare")
        print("3. Visa alla användare")
        print("4. Ta bort användare")
        print("5. Avsluta")
        choice = input("Välj ett alternativ: ")

        if choice == "1":
            add_user(users)
        elif choice == "2":
            search_user(users)
        elif choice == "3":
            show_users(users)
        elif choice == "4":
            remove_user(users)
        elif choice == "5":
            print("Programmet avslutas.")
            break
        else:
            print("Ogiltigt val, försök igen.")
main()