Lösningsförslag

Kap 5.1 – Planera ett elevregister

Ett komplett exempel på en projektplan innan programmeringen börjar.

1. Syfte

Programmet ska hjälpa en lärare att registrera elever och deras poäng på en uppgift. Läraren ska kunna lägga till elever, visa alla elever och söka efter en elev. Informationen ska sparas så att den finns kvar nästa gång programmet startas.

2. Funktioner som ska finnas

  • lägg_till_elev(namn, poäng) – kontrollerar inmatningen och sparar en elev.
  • visa_alla_elever() – hämtar och visar alla registrerade elever.
  • sök_elev(namn) – söker efter en elev med namn.
  • visa_meny() – skriver ut programmets alternativ.
  • main() – läser menyval och anropar rätt funktion.

3. Användningsfall

Registrera en elevs resultat

  • Användare: Lärare
  • Mål: Spara en elevs namn och poäng.
  • Förutsättning: Programmet är startat och menyn visas.
  1. Läraren väljer Lägg till elev.
  2. Programmet frågar efter elevens namn.
  3. Programmet frågar efter elevens poäng.
  4. Programmet kontrollerar att namnet inte är tomt och att poängen är ett giltigt tal.
  5. Programmet sparar eleven.
  6. Programmet visar Elev sparad.

Alternativt flöde: Om namnet är tomt eller poängen är ogiltig sparas inte eleven. Programmet visar i stället ett tydligt felmeddelande.

4. Flödesschema

Flödesschemat visar det centrala flödet för att lägga till en elev.

flowchart TD
    A([Start]) --> B[Fråga efter namn]
    B --> C{Är namnet tomt?}
    C -- Ja --> D[Visa felmeddelande]
    C -- Nej --> E[Fråga efter poäng]
    E --> F{Är poängen ett giltigt tal?}
    F -- Nej --> G[Visa felmeddelande]
    F -- Ja --> H[Spara eleven]
    H --> I[Visa: Elev sparad]
    D --> J([Slut])
    G --> J
    I --> J

5. Pseudokod

Funktionen lägg_till_elev()

Fråga efter elevens namn

Om namnet är tomt:
    Skriv "Namnet får inte vara tomt"
    Avsluta funktionen

Fråga efter elevens poäng

Försök göra om poängen till ett heltal
Om omvandlingen misslyckas:
    Skriv "Poängen måste vara ett heltal"
    Avsluta funktionen

Om poängen är mindre än 0 eller större än 100:
    Skriv "Poängen måste vara mellan 0 och 100"
    Avsluta funktionen

Spara namn och poäng
Skriv "Elev sparad"

6. MVP

Den första fungerande versionen ska innehålla:

  • en textbaserad meny
  • möjlighet att lägga till en elev med namn och poäng
  • kontroll av tomt namn och ogiltig poäng
  • möjlighet att visa alla elever
  • lagring i en textfil eller SQLite-databas

Funktioner som får vänta

  • grafiskt gränssnitt
  • inloggning för flera lärare
  • diagram över klassens resultat
  • export till PDF eller kalkylblad
  • automatisk beräkning av betyg

Möjlig kodstruktur

elevregister/
├── main.py       # meny och programflöde
├── databas.py    # spara, hämta och söka elever
└── modeller.py   # klassen Elev

Första arbetsordning

  1. Skapa lagringen och kontrollera att en elev kan sparas.
  2. Skapa funktionen som visar alla elever.
  3. Lägg till kontroller för namn och poäng.
  4. Bygg menyn och koppla den till funktionerna.
  5. Testa normalfall och felaktig inmatning.

Tillbaka till kap 5.1