Dataczwartek, 13 sierpnia 2026 Czas19:05:31
← Aplikacje desktopowe (WPF)

Lekcja 18. Projekt końcowy — kompletna aplikacja WPF z bazą danych

Trudny / egzaminacyjny

Po co się tego uczymy?

Czas połączyć wszystko, czego nauczyłeś się w tym dziale, w jeden spójny projekt — dokładnie w takiej formie, w jakiej zadania pojawiają się na egzaminie INF.04. To najlepszy sposób sprawdzenia, czy potrafisz samodzielnie zaprojektować i zbudować kompletną aplikację okienkową od zera, bez podpowiedzi krok po kroku.

Teoria

Zaprojektujemy aplikację "Wypożyczalnia sprzętu sportowego" — system pozwalający pracownikowi wypożyczalni zarządzać sprzętem i wypożyczeniami. Wymagania funkcjonalne:

  • Lista sprzętu wyświetlana w DataGrid (nazwa, kategoria, cena za dzień, status: dostępny/wypożyczony);
  • Dodawanie nowego sprzętu przez formularz z walidacją (nazwa niepusta, cena dodatnia);
  • Wypożyczanie — zaznaczenie sprzętu na liście i kliknięcie "Wypożycz" zmienia jego status (z potwierdzeniem przez MessageBox);
  • Zwrot sprzętu — analogicznie, zmiana statusu z powrotem na "dostępny";
  • Trwałe przechowywanie danych w bazie SQLite (albo pliku JSON, jeśli wolisz prostsze rozwiązanie), żeby dane przetrwały zamknięcie programu;
  • Wyszukiwanie sprzętu po nazwie lub kategorii.

Zalecana struktura projektu, łącząca wszystkie zasady poznane w tym dziale: folder Modele/ (klasa Sprzet), folder Walidacja/ (klasa WalidatorSprzetu), folder Baza/ (klasa BazaDanych z metodami SQL), oraz MainWindow.xaml/.cs jako cienka warstwa interfejsu łącząca te trzy elementy — dokładnie zasada oddzielenia logiki od UI z lekcji 8.

Podejdź do tego zadania tak, jak podszedłbyś do prawdziwego zadania egzaminacyjnego: najpierw narysuj na kartce układ okna (który layout gdzie), potem zaprojektuj model danych, dopiero potem zacznij pisać kod — dokładnie w tej kolejności, jakiej uczy dział "Programowanie konsolowe" o projektowaniu oprogramowania.

Przykład z życia

Tego typu aplikacja to niemal dokładnie to, co mogłoby być prawdziwym zadaniem na egzaminie zawodowym INF.04 — mała firma usługowa (wypożyczalnia, warsztat, sklep) potrzebująca prostego systemu do zarządzania swoim asortymentem i jego dostępnością, bez potrzeby kupowania drogiego, gotowego oprogramowania.

Ćwiczenie samodzielne

Zanim napiszesz jakikolwiek kod, narysuj na kartce: (1) jak ma wyglądać okno główne (jaki layout, gdzie lista, gdzie przyciski), (2) jakie pola ma mieć klasa Sprzet, (3) jakie metody potrzebuje klasa bazy danych. Dopiero potem zacznij implementację.

Zadania do pracy własnej

  1. Zaimplementuj sam model Sprzet i podstawowy interfejs z DataGrid wyświetlającym listę na sztywno wpisanych (przykładowych) obiektów — bez jeszcze bazy danych ani formularza dodawania.

  2. Dodaj do powyższego pełny formularz dodawania nowego sprzętu z walidacją (osobna klasa WalidatorSprzetu) oraz przyciski Wypożycz/Zwróć zmieniające status zaznaczonej pozycji na liście.

  3. Zaimplementuj CAŁY projekt opisany w teorii: pełny CRUD na bazie SQLite, walidację, wyszukiwanie po nazwie/kategorii, potwierdzenia przez MessageBox przy wypożyczaniu/zwrocie, oraz zapis/odczyt trwały między uruchomieniami programu. Postaraj się zachować podział na foldery Modele/Walidacja/Baza z jasno rozdzielonymi odpowiedzialnościami.

Typowe błędy

Rozpoczynanie od razu od kodu, bez planowania struktury — dla projektu tej wielkości (kilka klas współpracujących ze sobą) brak planu prawie zawsze prowadzi do konieczności przepisywania sporej części kodu w połowie pracy.

Umieszczanie WSZYSTKIEGO w code-behind głównego okna — jeśli MainWindow.xaml.cs ma kilkaset linijek z logiką bazy danych, walidacją i obsługą UI wymieszanymi razem, to znak, że zasada z lekcji 8 (oddzielenie logiki od UI) nie została zastosowana.

Pomijanie walidacji "bo i tak wiem, co wpiszę podczas testowania" — egzamin i prawdziwi użytkownicy zawsze znajdą sposób, żeby wpisać coś nieoczekiwanego (puste pole, ujemną cenę, litery zamiast liczb) — aplikacja bez walidacji zawiesi się przy pierwszym takim przypadku.

Nawiązanie do egzaminu zawodowego

Ten projekt końcowy łączy WSZYSTKIE efekty INF.04.5 (środowisko, frameworki, okna/kontrolki/zdarzenia) z elementami INF.04.3 (projektowanie, struktury danych) i praktyczną wiedzą SQL z INF.03 — to najbardziej kompletne podsumowanie działu "Aplikacje desktopowe (WPF)" i najlepsze przygotowanie do podobnych zadań na prawdziwym egzaminie zawodowym.