Inżynieria Oprogramowania: Stoper ze Statystykami

Oprogramowanie
Priorytet: Normalny Szkic

Zadanie 3: Zaawansowany Stoper Sportowy

Wstęp

Stoper w telefonie to prosta aplikacja? Tylko na pierwszy rzut oka. W sporcie wyczynowym (np. F1, biegi sprinterskie) liczy się nie tylko czas całkowity, ale przede wszystkim powtarzalność i analiza okrążeń (Laps).

Cel zadania

Zaprojektowanie aplikacji stopera, która umożliwia pomiar czasu z międzyczasami (Split/Lap) oraz automatycznie wylicza statystyki treningu: najszybsze, najwolniejsze i średnie okrążenie.

Wymagania funkcjonalne

  1. Główny licznik: Pokazuje czas całkowity (MM:SS:ms).
  2. Sterowanie: Start, Stop, Reset, Międzyczas (Lap).
  3. Lista okrążeń: Tabela z historią pomiarów.
  4. Analityka: Dynamiczne wyliczanie statystyk (Min, Max, Avg) na podstawie listy okrążeń.

Kroki do wykonania

1. Projekt Interfejsu (UI)

Rozrysuj lub opisz widok aplikacji. Musi być czytelny "w biegu".

  • Cyfry głównego licznika powinny zajmować 50% ekranu.
  • Przyciski "Start" i "Lap" muszą być duże i łatwo dostępne kciukiem.
  • Tabela wyników powinna przewijać się pod licznikiem.

2. Struktura Danych

Jak będziesz przechowywać czasy? Pamiętaj, że "czas okrążenia" to różnica między obecnym pomiarem a poprzednim.

Sugerowana struktura (Tablica obiektów):

[
  { "id": 1, "totalTime": 12500, "lapTime": 12500 }, // 12.5s (Pierwsze)
  { "id": 2, "totalTime": 24000, "lapTime": 11500 }, // 11.5s (Szybsze!)
  { "id": 3, "totalTime": 36200, "lapTime": 12200 }  // 12.2s
]

3. Logika (Pseudokod)

Zaprojektuj funkcje obsługujące przyciski.

Funkcja Lap():

  1. Pobierz aktualny czas całkowity (currentTotal).
  2. Pobierz czas całkowity poprzedniego okrążenia (lastTotal).
  3. Oblicz lapTime = currentTotal - lastTotal.
  4. Dodaj wpis do tablicy.
  5. Uruchom funkcję calculateStats().

Funkcja calculateStats(laps):

  1. Znajdź wartość minimalną lapTime (Best Lap).
  2. Znajdź wartość maksymalną lapTime (Worst Lap).
  3. Oblicz średnią arytmetyczną wszystkich lapTime.
  4. Zaktualizuj widok statystyk.

[!TIP] Edge Case: Co się dzieje, gdy wciśniesz "Start", potem "Stop", a potem znowu "Start"? Czas powinien biec dalej od momentu zatrzymania (pauza), czy od zera? W stoperach sportowych zazwyczaj jest to wznowienie (Resume).

Zadanie dla chętnych

Zaprojektuj wizualizację graficzną: Wykres słupkowy, gdzie wysokość słupka to czas okrążenia. Słupek najkrótszy (rekord) powinien być zielony, a najdłuższy czerwony.