# Evidence Autobazaru - WPF Aplikace ## Popis projektu WPF aplikace pro evidenci vozidel v autobazaru s možností serializace a deserializace dat. ## Funkce aplikace ### ? Implementované funkce - **CRUD operace** - Create (Přidání vozidla) - Read (Zobrazení seznamu a detailů) - Update (Úprava vozidel) - Delete (Mazání vozidel) - **Serializace a deserializace** - Ukládání dat do JSON souboru (`vehicles.json`) - Automatické načítání dat při spuštění aplikace - **Evidence vozidel** - SPZ - Značka (např. Škoda, BMW, Audi) - Model - Rok výroby - Palivo (Benzín, Nafta, Elektro, Hybrid, LPG, CNG) - Nájezd v km - Cena v Kč - Barva (s výběrem z Color Dialogu) - Fotografie (uložená jako Base64) - **Evidence vlastníků** - Jméno - Příjmení - Adresa - Telefon - Email ### ??? Uživatelské rozhraní #### Hlavní okno (MainWindow) - Seznam všech vozidel v přehledné tabulce - Zobrazení: SPZ, Značka a Model, Barva, Rok, Palivo - Akce: - **Přidat vozidlo** - otevře okno pro přidání nového vozidla - **Detail** - zobrazí detailní informace o vybraném vozidle - **Upravit** - umožní editaci vybraného vozidla - **Smazat** - smaže vybrané vozidlo (s potvrzením) - **Double-click** na vozidlo otevře detail #### Okno přidání vozidla (AddVehicleWindow) - Formulář pro zadání všech údajů o vozidle - Výběr barvy pomocí Color Dialogu - Výběr paliva z ComboBoxu - Možnost přidat fotografii - Sekce pro zadání informací o vlastníkovi - Validace číselných vstupů #### Okno úpravy vozidla (EditVehicleWindow) - Předvyplněné údaje z vybraného vozidla - Náhled aktuální fotografie - Možnost změny všech údajů včetně vlastníka - Stejné funkce jako v okně přidání #### Okno detailu vozidla (VehicleDetailWindow) - Kompletní zobrazení všech informací - Zobrazení fotografie vozidla - Informace o vlastníkovi - Tlačítka pro úpravu, smazání nebo zavření ## Struktura projektu ### Třídy #### `Vehicle.cs` ```csharp - Spz: string - Znacka: string - Model: string - Barva: string - RokVyroby: int? - Palivo: string - NajeteKm: int? - Cena: decimal? - Fotografie: string (Base64) - Vlastnik: Owner - ZnackaModel: string (computed property) ``` #### `Owner.cs` ```csharp - Jmeno: string - Prijmeni: string - Adresa: string - Telefon: string - Email: string - CeleJmeno: string (computed property) ``` #### `DataManager.cs` ```csharp - AddVehicle(Vehicle) - GetAllVehicles(): IEnumerable - RemoveVehicle(Vehicle) - Save() - serializace do JSON - Load() - deserializace z JSON ``` ## Technologie - **.NET 8.0** - **WPF (Windows Presentation Foundation)** - **System.Text.Json** - pro serializaci/deserializaci - **Windows Forms ColorDialog** - pro výběr barvy ## Principy návrhu ### Separation of Concerns (SoC) - **Model** - `Vehicle.cs`, `Owner.cs` - **Data Logic** - `DataManager.cs` - **View** - XAML soubory (MainWindow, AddVehicleWindow, EditVehicleWindow, VehicleDetailWindow) - **View Logic** - Code-behind soubory (.xaml.cs) ### Čistota kódu - Jasné pojmenování proměnných a metod - Validace vstupů (PreviewTextInput pro číselné hodnoty) - Ošetření chyb (try-catch bloky při práci s obrázky) - Oddělení logiky od prezentace ## Instalace a spuštění 1. Otevřete projekt v **Visual Studio 2022** nebo novějším 2. Ujistěte se, že máte nainstalovaný **.NET 8.0 SDK** 3. Stiskněte **F5** nebo klikněte na **Start** pro spuštění aplikace 4. Data se automaticky ukládají do souboru `vehicles.json` ve stejné složce jako aplikace ## Ovládání aplikace ### Přidání vozidla 1. Klikněte na tlačítko **"Přidat vozidlo"** 2. Vyplňte údaje o vozidle 3. Vyberte barvu pomocí tlačítka **"Vybrat barvu"** 4. (Volitelně) Vyberte fotografii 5. (Volitelně) Vyplňte údaje o vlastníkovi 6. Klikněte na **"Ulozit"** ### Zobrazení detailu - **Double-click** na vozidlo v seznamu, nebo - Vyberte vozidlo a klikněte na **"Detail"** ### Úprava vozidla 1. Vyberte vozidlo v seznamu 2. Klikněte na **"Upravit"** 3. Změňte požadované údaje 4. Klikněte na **"Ulozit"** ### Smazání vozidla 1. Vyberte vozidlo v seznamu 2. Klikněte na **"Smazat"** 3. Potvrďte smazání ## Ukládání dat Data jsou uložena v souboru **`vehicles.json`** ve formátu: ```json [ { "Spz": "1A2 3456", "Znacka": "Skoda", "Model": "Octavia", "Barva": "#FF0000", "RokVyroby": 2020, "Palivo": "Benzín", "NajeteKm": 50000, "Cena": 350000, "Fotografie": "base64_string...", "Vlastnik": { "Jmeno": "Jan", "Prijmeni": "Novak", "Adresa": "Praha 1", "Telefon": "+420123456789", "Email": "jan.novak@email.cz" } } ] ``` ## Autor Vytvořeno pro předmět PTA25 - Programování v C# ## Termín odevzdání **1. 3. 2026**