Inżynieria Oprogramowania: Stoper ze Statystykami
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
- Główny licznik: Pokazuje czas całkowity (MM:SS:ms).
- Sterowanie: Start, Stop, Reset, Międzyczas (Lap).
- Lista okrążeń: Tabela z historią pomiarów.
- 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():
- Pobierz aktualny czas całkowity (
currentTotal). - Pobierz czas całkowity poprzedniego okrążenia (
lastTotal). - Oblicz
lapTime = currentTotal - lastTotal. - Dodaj wpis do tablicy.
- Uruchom funkcję
calculateStats().
Funkcja calculateStats(laps):
- Znajdź wartość minimalną
lapTime(Best Lap). - Znajdź wartość maksymalną
lapTime(Worst Lap). - Oblicz średnią arytmetyczną wszystkich
lapTime. - 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.