Zadanie egzaminacyjne – „Aplikacja Biblioteka”

Opis sytuacji

Szkoła planuje wprowadzenie prostego programu do obsługi szkolnej biblioteki.
Aplikacja ma umożliwiać przeglądanie książek, wyszukiwanie po tytule lub autorze, filtrowanie tylko wypożyczonych pozycji, a także wypożyczanie i zwracanie książek.

Dane książek mają być przechowywane w pamięci programu (bez użycia bazy danych).
Każda książka ma informację o tytule, autorze, statusie (dostępna / wypożyczona) i dacie zwrotu.


Wymagania funkcjonalne

  1. Użytkownik może wpisać w polu „Szukaj” tytuł lub autora – lista automatycznie się filtruje.
  2. Dostępne są dwa przyciski filtrów:
    • Wszystkie książki – pokazuje wszystkie pozycje.
    • Wypożyczona – pokazuje tylko wypożyczone książki.
  3. Każda książka w liście wyświetla:
    • Tytuł, autora, status (np. Dostępna lub Wypożyczona do 25.04.2024).
    • Jeden przycisk akcji z napisem „Wypożycz” lub „Zwróć” w zależności od statusu.
  4. Po kliknięciu:
    • „Wypożycz” – książka zmienia status na „Wypożyczona”, a data zwrotu ustalana jest automatycznie (np. +14 dni od dzisiaj).
    • „Zwróć” – książka zmienia status na „Dostępna”, a data zwrotu jest usuwana.
  5. Program automatycznie aktualizuje listę po każdej zmianie.

Wymagania techniczne

Aplikację należy wykonać w środowisku Visual Studio 2022 jako:

  • Aplikację WPF lub .NET MAUI (mobile).
    Obie wersje mogą korzystać z tego samego modelu danych.

Struktura projektu powinna zawierać następujące katalogi:

Modele
Logika
Walidacja
Widoki

Opis działania klas

Klasa Ksiazka (plik Modele/Ksiazka.cs)

  • Przechowuje dane pojedynczej książki.
  • Zawiera właściwości: Tytul, Autor, Status, DataZwrotu.
  • Dodatkowo udostępnia pola gotowe do bindowania:
    • StatusOpis – opis tekstowy statusu.
    • AkcjaTekst – tekst przycisku („Wypożycz” lub „Zwróć”).
  • Implementuje interfejs INotifyPropertyChanged, aby automatycznie aktualizować UI.

Klasa BibliotekaSerwis (plik Logika/BibliotekaSerwis.cs)

  • Zawiera kolekcję ObservableCollection<Ksiazka> Ksiazki.
  • Umożliwia:
    • Dodawanie książki (DodajKsiazke).
    • Wypożyczanie książki (WypozyczKsiazke).
    • Zwracanie książki (ZmienStatusNaDostepna).
    • Filtrowanie i wyszukiwanie (Filtruj, Szukaj).
  • Zawiera przykładowe dane startowe.

Klasa WalidatorKsiazki (plik Walidacja/WalidatorKsiazki.cs)

  • Sprawdza poprawność danych książki.
  • Weryfikuje, czy pola Tytul i Autor nie są puste.
  • Dla książki wypożyczonej wymaga ustawienia DataZwrotu.
  • Zwraca listę błędów w postaci List<string>.

Opis interfejsu użytkownika

WPF

Okno główne MainWindow.xaml zawiera:

  • Pole tekstowe TextBox txtSzukaj do wyszukiwania.
  • Dwa przyciski filtrów (btnWszystkie, btnWypozyczone).
  • Listę książek ListView lvKsiazki z danymi: tytuł, autor, status, przycisk akcji.

.NET MAUI

Strona główna MainPage.xaml zawiera:

  • Pasek wyszukiwania SearchBar sbSzukaj.
  • Dwa przyciski filtrów (btnWszystkie, btnWypozyczone).
  • Listę książek CollectionView cvKsiazki z tymi samymi elementami.

Walidacja i dokumentacja

  • Każda klasa i metoda powinna mieć komentarz XML (///) z opisem działania.
  • W kodzie należy dodać czytelne komentarze w najważniejszych miejscach (np. przy metodach logiki i obsłudze zdarzeń).
  • Projekt powinien być przygotowany zgodnie z zasadami INF.04 – prosty, czytelny, z zachowaniem konwencji nazw i struktury.

Przykładowy wygląd interfejsu

(tutaj wstaw obraz biblioteka.png)

Rysunek 1. Widok przykładowego interfejsu aplikacji „Biblioteka”.


Wymagane efekty działania

  1. Po uruchomieniu aplikacji wyświetla się lista książek z przykładowymi danymi.
  2. Użytkownik może:
    • Wyszukiwać po tytule lub autorze.
    • Przełączać filtry między wszystkimi a wypożyczonymi.
    • Wypożyczać i zwracać książki.
  3. Program aktualizuje listę automatycznie po każdej operacji.
  4. Dane nie są zapisywane w bazie – przechowywane są tylko w pamięci.

Kryteria oceny (INF.04)

ElementPunkty
Poprawna struktura projektu (Modele, Logika, Walidacja, Widoki)4
Działający interfejs (lista, wyszukiwanie, przyciski)6
Poprawne działanie logiki (zmiana statusu, filtr, wyszukiwanie)6
Walidacja danych i brak błędów przy uruchomieniu3
Komentarze i dokumentacja XML3
Estetyka interfejsu i zgodność z opisem3
Razem:25 pkt

Aplikacja .NET MAUI

Aplikacja WPF