Warsztat: zadanie w stylu aplikacji desktop
Koniec bloku o kontrolkach to dobry moment na próbę generalną. Dostajesz treść zadania napisaną tak, jak w arkuszu egzaminacyjnym: lista wymagań, wygląd okna, zasady obliczeń, komentarz do metody. Przejdziemy przez nie krok po kroku — od przeczytania treści, przez plan pracy, do sprawdzenia programu z listą kryteriów. Potem sześć kolejnych arkuszy do samodzielnego rozwiązania.
Czego się dziś nauczysz
- Przeczytasz treść zadania egzaminacyjnego i wypiszesz z niej listę wymagań do sprawdzenia.
- Zaplanujesz kolejność pracy tak, żeby szybko mieć działający szkielet programu.
- Zbudujesz okno dokładnie według specyfikacji: nazwy, kolory, kolejność i rodzaj kontrolek.
- Opiszesz metodę komentarzem w wymaganym formacie.
- Sprawdzisz program według listy kryteriów i przygotujesz zrzuty ekranu.
Część desktopowa egzaminu
Na egzaminie praktycznym INF.04 dostajesz kilka zadań: aplikację (konsolową, desktopową albo mobilną — zależnie od arkusza), testy i dokumentację. Zadanie z aplikacją desktopową zwykle wymaga:
- okna o określonym tytule — często z Twoim numerem zdającego;
- konkretnych kontrolek w podanej kolejności i układzie, z podanymi kolorami, rozmiarami czcionek i tekstami;
- obsługi zdarzeń: przycisk liczy coś albo pokazuje komunikat, lista zmienia obraz, pole wyboru zmienia stan innej kontrolki;
- sprawdzenia danych i komunikatu w określonej postaci;
- obrazów z dołączonego folderu;
- komentarza do wskazanej metody w podanym formacie;
- zrzutów ekranu działającego programu zapisanych pod określonymi nazwami.
Szczegóły — nazwy plików, folderów, format komentarza — są zawsze w treści arkusza i to ona jest najważniejsza. Ćwiczenie tej lekcji uczy przede wszystkim dokładnego czytania i niegubienia drobnych wymagań.
Treść zadania
Aplikacja desktopowa „Zapisy na wycieczkę”
Wykonaj aplikację desktopową dla biura podróży SZLAK. Okno aplikacji (rysunek poniżej) zawiera:
- Tytuł okna: „Zapisy na wycieczkę — wykonał: ” i Twój numer zdającego. Okno o rozmiarze 760 × 520, bez możliwości zmiany rozmiaru, wyświetlane na środku ekranu.
- Nagłówek na całą szerokość okna: napis „Biuro podróży SZLAK”, tło
#1D4E89, kolor tekstu biały, czcionka 22 pt, pogrubiona. - Po lewej formularz z etykietami: Imię i nazwisko (pole tekstowe), Telefon (pole tekstowe), Wycieczka (lista rozwijana z pozycjami: Kraków — 450 zł, Zakopane — 620 zł, Gdańsk — 380 zł), Liczba osób (pole tekstowe), Transport (dwa przyciski opcji: „autokar (w cenie)” — zaznaczony domyślnie, „pociąg (+60 zł/os.)”), pole wyboru „ubezpieczenie kosztów leczenia (+35 zł/os.)” i przycisk „Oblicz i zapisz”.
- Po prawej zdjęcie wybranej wycieczki (pliki
krakow.png,zakopane.png,gdansk.pngz folderu z arkuszem), wypełniające ramkę o wysokości 190, a pod nim napis z ceną podstawową. - Na dole okna lista przyjętych zgłoszeń z nagłówkiem „Przyjęte zgłoszenia:”.
Działanie aplikacji:
- Po wybraniu wycieczki zdjęcie zmienia się na odpowiednie, a pod nim pojawia się napis „Cena podstawowa: X zł za osobę. Grupy od 5 osób otrzymują 10% rabatu.”
- Po kliknięciu przycisku program sprawdza, czy podano imię i nazwisko, telefon (9 cyfr, spacje dozwolone), wybrano wycieczkę i podano liczbę osób od 1 do 10. Jeżeli nie — wyświetla jedno okno komunikatu z listą wszystkich błędnych pól.
- Koszt liczy metoda
ObliczKoszt: (cena podstawowa + 60 zł za pociąg + 35 zł za ubezpieczenie) × liczba osób; dla 5 lub więcej osób koszt zmniejsza się o 10%. - Przy poprawnych danych program wyświetla okno komunikatu „Zgłoszenie przyjęte:” z opisem w postaci
Jan Kowalski, Zakopane, 4 os., koszt: 2 860,00 złi dopisuje ten opis do listy zgłoszeń. - Metodę
ObliczKosztopisz komentarzem zawierającym: nazwę funkcji, opis, parametry, zwracany typ i opis, autora (numer zdającego).
Wykonaj zrzuty ekranu: wycieczka1.png — błędy przy pustym formularzu, wycieczka2.png — przyjęte zgłoszenie dla danych z przykładu.
rysunek z arkusza — okno po przyjęciu pierwszego zgłoszenia
Plan pracy
Zanim otworzysz Visual Studio, przeczytaj treść dwa razy i wypisz wymagania jako listę do odhaczenia — na kartce albo w komentarzu na początku pliku. Potem pracuj w kolejności, która jak najszybciej daje działający program:
| Krok | Co | Dlaczego w tej kolejności |
|---|---|---|
| 1 | projekt, tytuł, rozmiar okna, obrazy w projekcie | proste punkty, które łatwo zgubić na końcu |
| 2 | układ okna i wszystkie kontrolki z nazwami | widać od razu, czy okno przypomina rysunek |
| 3 | zdarzenie listy → zdjęcie i napis | szybki efekt, sprawdza ścieżki do obrazów |
| 4 | przycisk: walidacja, potem obliczenia i komunikat | główna logika — najwięcej punktów |
| 5 | komentarz metody, porządek w kodzie | wymagany format — przepisz go dokładnie |
| 6 | test z listą wymagań, zrzuty ekranu | zrzut bez wymaganych danych nie potwierdzi działania |
Krok po kroku
Krok 1–2: okno i układ
Okno ma trzy części: nagłówek na górze, listę na dole i środek z dwiema kolumnami. To dokładnie przypadek DockPanel z lekcji 13: nagłówek Top, lista Bottom, a środek jako ostatnie dziecko. Środek to Grid z kolumnami * i 300, a formularz po lewej — kolejny Grid z etykietami Auto (lekcja 10). Zdjęcie: Border o wysokości 190 z Image Stretch="UniformToFill" — „wypełniające ramkę” (lekcja 21). Rozmiar „bez możliwości zmiany” to ResizeMode="CanMinimize", „na środku ekranu” — WindowStartupLocation="CenterScreen".
Krok 3: zdjęcie po wyborze wycieczki
Pozycje listy mają w Tag nazwę pliku bez rozszerzenia. W SelectionChanged odczytujesz zaznaczony ComboBoxItem i składasz adres pack://. Ceny i nazwy miejsc są w tablicach w tej samej kolejności co pozycje listy, więc SelectedIndex wskazuje właściwy element.
Krok 4: przycisk
Treść mówi o jednym komunikacie z listą wszystkich błędów — zbierasz je więc w zmiennej, jak w lekcji 22, i wyświetlasz razem. Dopiero przy poprawnych danych liczysz koszt metodą ObliczKoszt i pokazujesz wynik w dokładnie takiej postaci jak w przykładzie z treści (format N2 daje „2 860,00”).
Krok 6: test
Sprawdź przypadki z treści i granice: pusty formularz, telefon z 8 cyframi i ze spacjami, 0 i 11 osób, 4 i 5 osób (rabat!), każda wycieczka. Dla danych z przykładu musi wyjść 2 860,00 zł: (620 + 60 + 35) × 4 = 2 860, bez rabatu.
Komentarz metody
Arkusze często wymagają opisania wskazanej funkcji komentarzem z określonymi elementami. Przepisz ich nazwy dokładnie tak, jak w treści, i uzupełnij każdy punkt — także parametry i typ zwracany:
/*********************************************************
* nazwa funkcji: NazwaMetody
* opis funkcji: co robi metoda (jednym–dwoma zdaniami)
* parametry: nazwa – znaczenie i zakres
* nazwa2 – znaczenie
* zwracany typ i opis: typ – co oznacza zwracana wartość
* autor: numer zdającego
*********************************************************/
Metoda liczona w komentarzu powinna być „czysta”: dostaje dane przez parametry i zwraca wynik, a nie czyta pól okna. Taką metodę łatwo opisać, przetestować i użyć ponownie.
Rozwiązanie wzorcowe
Projekt przyklady/24 zawiera folder obrazy z trzema zdjęciami dołączonymi jako zasoby (wpis w .csproj, jak w lekcji 21).
<Window x:Class="Lekcja24.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Zapisy na wycieczkę — wykonał: 00000000000" Height="520" Width="760"
ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen">
<DockPanel>
<!-- 1. Nagłówek -->
<Border DockPanel.Dock="Top" Background="#FF1D4E89" Padding="15,10">
<TextBlock Text="Biuro podróży SZLAK" Foreground="White" FontSize="22" FontWeight="Bold"/>
</Border>
<!-- 3. Lista zgłoszeń na dole -->
<DockPanel DockPanel.Dock="Bottom" Margin="15,0,15,15" Height="110">
<TextBlock DockPanel.Dock="Top" Text="Przyjęte zgłoszenia:" FontWeight="Bold" Margin="0,0,0,4"/>
<ListBox x:Name="Zgloszenia"/>
</DockPanel>
<!-- 2. Formularz (lewa kolumna) i zdjęcie (prawa) -->
<Grid Margin="15">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="300"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Margin="0,0,15,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Imię i nazwisko:"/>
<TextBox x:Name="Osoba" Grid.Row="0" Grid.Column="1" Margin="0,4"/>
<Label Grid.Row="1" Content="Telefon:"/>
<TextBox x:Name="Telefon" Grid.Row="1" Grid.Column="1" Margin="0,4"
Width="120" HorizontalAlignment="Left" MaxLength="11"/>
<Label Grid.Row="2" Content="Wycieczka:"/>
<ComboBox x:Name="Wycieczka" Grid.Row="2" Grid.Column="1" Margin="0,4"
SelectionChanged="Wycieczka_SelectionChanged">
<ComboBoxItem Content="Kraków — 450 zł" Tag="krakow"/>
<ComboBoxItem Content="Zakopane — 620 zł" Tag="zakopane"/>
<ComboBoxItem Content="Gdańsk — 380 zł" Tag="gdansk"/>
</ComboBox>
<Label Grid.Row="3" Content="Liczba osób:"/>
<TextBox x:Name="Osoby" Grid.Row="3" Grid.Column="1" Margin="0,4"
Width="50" HorizontalAlignment="Left" MaxLength="2"/>
<Label Grid.Row="4" Content="Transport:"/>
<StackPanel Grid.Row="4" Grid.Column="1" Orientation="Horizontal" Margin="0,6">
<RadioButton x:Name="Autokar" Content="autokar (w cenie)" IsChecked="True"
Margin="0,0,15,0"/>
<RadioButton x:Name="Pociag" Content="pociąg (+60 zł/os.)"/>
</StackPanel>
<CheckBox x:Name="Ubezpieczenie" Grid.Row="5" Grid.Column="1" Margin="0,6"
Content="ubezpieczenie kosztów leczenia (+35 zł/os.)"/>
<Button Grid.Row="6" Grid.Column="1" Content="Oblicz i zapisz" Width="140"
Height="32" HorizontalAlignment="Left" Margin="0,12,0,0"
Click="Zapisz_Click"/>
</Grid>
<StackPanel Grid.Column="1">
<Border BorderBrush="LightGray" BorderThickness="1" Height="190">
<Image x:Name="Zdjecie" Stretch="UniformToFill"/>
</Border>
<TextBlock x:Name="Informacja" Margin="0,8,0,0" TextWrapping="Wrap"
Text="Wybierz wycieczkę, aby zobaczyć zdjęcie."/>
</StackPanel>
</Grid>
</DockPanel>
</Window>
/*********************************************************
* Aplikacja: Zapisy na wycieczkę — biuro podróży SZLAK
* autor: 00000000000 (numer zdającego)
*********************************************************/
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace Lekcja24;
public partial class MainWindow : Window
{
// dane wycieczek w kolejności pozycji listy rozwijanej
private readonly string[] miejsca = { "Kraków", "Zakopane", "Gdańsk" };
private readonly int[] ceny = { 450, 620, 380 };
public MainWindow()
{
InitializeComponent();
}
private void Wycieczka_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBoxItem? pozycja = Wycieczka.SelectedItem as ComboBoxItem;
if (pozycja == null)
{
return;
}
Zdjecie.Source = new BitmapImage(new Uri($"pack://application:,,,/obrazy/{pozycja.Tag}.png"));
Informacja.Text = $"Cena podstawowa: {ceny[Wycieczka.SelectedIndex]} zł za osobę. " +
"Grupy od 5 osób otrzymują 10% rabatu.";
}
private void Zapisz_Click(object sender, RoutedEventArgs e)
{
// 1. Walidacja — zbieramy wszystkie błędy
string bledy = "";
if (Osoba.Text.Trim() == "")
{
bledy += "- imię i nazwisko\n";
}
string telefon = Telefon.Text.Replace(" ", "");
bool telefonOk = telefon.Length == 9;
foreach (char z in telefon)
{
if (!char.IsDigit(z))
{
telefonOk = false;
}
}
if (!telefonOk)
{
bledy += "- telefon (9 cyfr)\n";
}
if (Wycieczka.SelectedIndex == -1)
{
bledy += "- wycieczka\n";
}
if (!int.TryParse(Osoby.Text, out int osoby) || osoby < 1 || osoby > 10)
{
bledy += "- liczba osób (od 1 do 10)\n";
}
if (bledy != "")
{
MessageBox.Show("Uzupełnij poprawnie pola:\n" + bledy, "Błąd",
MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
// 2. Obliczenie kosztu
int i = Wycieczka.SelectedIndex;
int cena = ceny[i];
decimal koszt = ObliczKoszt(cena, osoby, Pociag.IsChecked == true, Ubezpieczenie.IsChecked == true);
// 3. Wynik i zapis na liście
string opis = $"{Osoba.Text.Trim()}, {miejsca[i]}, {osoby} os., koszt: {koszt:N2} zł";
MessageBox.Show("Zgłoszenie przyjęte:\n" + opis, "Biuro podróży SZLAK",
MessageBoxButton.OK, MessageBoxImage.Information);
Zgloszenia.Items.Add(opis);
}
/*********************************************************
* nazwa funkcji: ObliczKoszt
* opis funkcji: liczy łączny koszt wycieczki dla grupy; grupy
* od 5 osób otrzymują 10% rabatu
* parametry: cena – cena podstawowa wycieczki za osobę (zł)
* osoby – liczba uczestników (1–10)
* pociag – true, gdy wybrano dojazd pociągiem (+60 zł/os.)
* ubezpieczenie – true, gdy wybrano ubezpieczenie (+35 zł/os.)
* zwracany typ i opis: decimal – koszt całkowity w złotych
* autor: 00000000000
*********************************************************/
private decimal ObliczKoszt(int cena, int osoby, bool pociag, bool ubezpieczenie)
{
decimal zaOsobe = cena;
if (pociag)
{
zaOsobe += 60;
}
if (ubezpieczenie)
{
zaOsobe += 35;
}
decimal razem = zaOsobe * osoby;
if (osoby >= 5)
{
razem *= 0.9m; // rabat 10%
}
return razem;
}
}
Co dzieje się po kolei
- Komentarz na początku pliku podaje nazwę aplikacji i autora — dobry zwyczaj, choć nie zawsze wymagany.
- Tablice
miejscaicenymają kolejność pozycji listy rozwijanej. Tu tablice wystarczą: dane są stałe i jest ich mało. - Przycisk opcji „autokar” ma
IsChecked="True"w XAML — bez zdarzeniaCheckednie grozi to błędem przy starcie. Zapisz_Clickma trzy wyraźne części opisane komentarzami: walidacja, obliczenie, wynik. Każdy błąd dopisuje linię dobledy.ObliczKosztnie korzysta z kontrolek — wszystko dostaje w parametrach. Rabat to mnożenie przez0.9m(literamoznacza liczbę typudecimal).- Opis zgłoszenia jest budowany raz i użyty dwa razy: w komunikacie i na liście.
Kryteria oceny — sprawdź się
Egzaminator ocenia każdy punkt osobno, zwykle na podstawie zrzutów ekranu i kodu. Przejdź listę i zaznacz, co Twój program spełnia. Lista jest przykładowa — na egzaminie kryteria wynikają z treści konkretnego arkusza.
| # | Kryterium |
|---|---|
| 1 | Tytuł okna zawiera numer zdającego; okno ma stały rozmiar i otwiera się na środku. |
| 2 | Nagłówek: tekst, tło #1D4E89, biały, pogrubiony, 22 pt, na całą szerokość. |
| 3 | Formularz: wszystkie etykiety i kontrolki w podanej kolejności; lista rozwijana ma 3 pozycje z cenami. |
| 4 | Przycisk opcji „autokar” zaznaczony domyślnie; przyciski tworzą jedną grupę. |
| 5 | Wybór wycieczki zmienia zdjęcie i napis z ceną. |
| 6 | Zdjęcie wypełnia ramkę o wysokości 190 bez zniekształceń. |
| 7 | Przy błędach pojawia się jedno okno komunikatu z listą wszystkich błędnych pól. |
| 8 | Telefon: 9 cyfr, spacje dozwolone; liczba osób 1–10. |
| 9 | Koszt liczony poprawnie, także z rabatem dla 5+ osób. |
| 10 | Komunikat i wpis na liście w wymaganej postaci (kwota z dwoma miejscami po przecinku). |
| 11 | Metoda ObliczKoszt z parametrami i zwracaną wartością, opisana komentarzem z pięcioma elementami. |
| 12 | Zrzuty ekranu pod wymaganymi nazwami pokazują wymagane sytuacje. |
Gdzie giną punkty
| Sytuacja | Skutek |
|---|---|
| brak numeru zdającego w tytule okna lub w komentarzu | Utrata punktu za „drobiazg”, który zajmuje 10 sekund. |
| tekst w oknie inny niż w treści (literówka, brak dwukropka) | Kryterium „zgodnie z rysunkiem” niespełnione. |
osobny MessageBox dla każdego błędu, gdy treść wymaga jednego | Niezgodność z wymaganiem. |
| obrazy podpięte ścieżką z pulpitu | Na komputerze egzaminatora zdjęć nie ma. Dołącz je do projektu. |
obliczenia w Click zamiast w wymaganej metodzie | Brak punktu za metodę i jej komentarz. |
| komentarz bez parametrów lub typu zwracanego | Komentarz niekompletny. |
| zrzut ekranu bez widocznego wyniku albo pod złą nazwą | Egzaminator nie ma dowodu działania funkcji. |
| program nie kompiluje się na końcu, bo „poprawiałem w ostatniej minucie” | Rób kopię działającej wersji przed większą zmianą. |
Arkusze do ćwiczeń
Każdy arkusz rozwiązuj jak na egzaminie: nowy projekt, tytuł okna z numerem (użyj fikcyjnego, np. 00000000000), lista wymagań przed rozpoczęciem, na końcu sprawdzenie według kryteriów i zrzuty ekranu. Obrazy przygotuj sam. Proponowany czas podano przy każdym arkuszu. Wskazówkę otwórz dopiero wtedy, gdy utkniesz.
Czas: 45 min. Okno „Malowanie — wykonał: [numer]”, 480 × 420. Pola: długość, szerokość i wysokość pokoju w metrach (liczby z przecinkiem, 1–15), liczba okien (0–5), liczba warstw (przyciski opcji 1 / 2), farba (lista: biała 10 m²/l 45 zł za 2,5 l; kolorowa 8 m²/l 62 zł za 2,5 l). Przycisk „Oblicz”. Powierzchnia ścian = 2 × (długość + szerokość) × wysokość − 1,5 m² za każde okno; potrzebne litry = powierzchnia × warstwy / wydajność; puszki po 2,5 l zaokrąglone w górę. Wynik w napisie pod przyciskiem: powierzchnia, liczba puszek, koszt. Metodę LiczbaPuszek opisz komentarzem.
pokaż wskazówkę
- Wydajność i cenę puszki trzymaj w tablicach w kolejności pozycji listy. Puszki:
(int)Math.Ceiling(litry / 2.5).
Czas: 60 min. Nagłówek „Wystawa psów rasowych — Lębork 2027” na zielonym tle. Formularz: imię psa, rasa (lista 4 ras — po wyborze obok pojawia się zdjęcie rasy), data urodzenia psa (tekst dd.mm.rrrr), klasa wystawowa wyliczana automatycznie z wieku i pokazywana w napisie (szczenięta 4–9 mies., młodzież 9–18 mies., otwarta powyżej 18 mies.; młodszy niż 4 miesiące — „pies za młody”), właściciel, telefon, pole wyboru „pies szczepiony przeciw wściekliźnie” (wymagane). Przycisk „Zgłoś” sprawdza dane i pokazuje numer startowy „2027/K-015” (kolejny numer, litera — pierwsza litera klasy).
pokaż wskazówkę
- Wiek w miesiącach: różnica lat × 12 + różnica miesięcy, minus 1, jeśli dzień miesiąca jeszcze nie minął.
- Klasę licz przy każdej zmianie daty — w
TextChanged.
Czas: 60 min. Strefa (przyciski opcji: A — 4 zł/h, B — 3 zł/h), czas postoju suwakiem od 30 minut do 8 godzin co 15 minut (napis obok: „2 h 15 min”), numer rejestracyjny (2–3 litery, spacja, 4–5 znaków), pole wyboru „karta mieszkańca” (−50%), pole wyboru „pojazd elektryczny” (bezpłatnie w strefie B). Pierwsze rozpoczęte pół godziny kosztuje tyle co cała godzina, później opłata za każdy rozpoczęty kwadrans. Koszt pokazywany na żywo, przycisk „Kup bilet” wyświetla bilet z godziną ważności („ważny do 14:35”). Metoda Oplata z komentarzem.
pokaż wskazówkę
- Na suwaku przechowuj minuty (30–480, krok 15). Godzina ważności:
DateTime.Now.AddMinutes(minuty).
Czas: 60 min. Uczeń zgłasza zdjęcie: imię i nazwisko, klasa (lista), kategoria (przyciski opcji: przyroda, ludzie, architektura), tytuł zdjęcia (5–40 znaków, licznik obok), wybór jednego z czterech przykładowych zdjęć z folderu (lista rozwijana — podgląd obok), zgoda na publikację. Zgłoszenia trafiają do listy „Imię Nazwisko — „Tytuł” (kategoria)”. Jeden uczeń może zgłosić najwyżej 2 zdjęcia, a w każdej kategorii przyjmuje się najwyżej 5 zgłoszeń — pasek postępu pokazuje zapełnienie wybranej kategorii.
pokaż wskazówkę
- Policz zgłoszenia ucznia i kategorii w pętli po elementach listy albo trzymaj liczniki w polach klasy.
Czas: 60 min. Sektor (lista: płyta 189 zł / 40 miejsc, trybuna A 149 zł / 30 miejsc, trybuna B 119 zł / 30 miejsc), liczba biletów normalnych i ulgowych (ulga 30%, najwyżej 6 biletów w zamówieniu), pole wyboru „parking” (+25 zł za zamówienie). Pod listą sektorów pasek „Wolne miejsca: 34 / 40” dla wybranego sektora. Zamówienie zmniejsza liczbę wolnych miejsc; gdy biletów brakuje, komunikat podaje, ile zostało. Przycisk „Kup” jest aktywny tylko przy poprawnych danych. Metoda CenaZamowienia z komentarzem.
pokaż wskazówkę
- Wolne miejsca w tablicy
int[3]; pasek:Maximum= liczba miejsc sektora,Value= wolne.
Czas: 90 min. Pełny arkusz z klasą. Klasa Wizyta w osobnym pliku (właściciel, telefon, imię zwierzęcia, gatunek, data, godzina, cel wizyty, cena). Okno: nagłówek z logo gabinetu (obraz), formularz po lewej (gatunek — lista z ikoną gatunku obok, data jako tekst, godzina z listy co 30 minut 8:00–15:30, cel: przyciski opcji szczepienie 90 zł / kontrola 70 zł / zabieg 150 zł, pole wyboru „wizyta domowa” +60 zł), lista wizyt po prawej posortowana według daty i godziny, szczegóły zaznaczonej wizyty pod listą, przycisk „Odwołaj”. Ten sam termin nie może być zajęty dwa razy. Walidacja w stylu lekcji 22 (wszystkie błędy, czerwone pola). Metoda CenaWizyty z komentarzem. Zrzuty: pusta rejestracja z błędami, lista z trzema wizytami.
pokaż wskazówkę
- Termin wizyty zapisz jako jedno pole
DateTime(data + godzina) — porównywanie i sortowanie stanie się proste. - Sortowanie bez specjalnych metod: wstawiaj nową wizytę do listy w odpowiednim miejscu (pętla szukająca pierwszej późniejszej i
Insert).
Co trzeba zapamiętać
- Przed pisaniem kodu zamień treść arkusza na listę wymagań do odhaczenia.
- Kolejność: okno i obrazy → układ i kontrolki → zdarzenia → walidacja i obliczenia → komentarz → test i zrzuty.
- Teksty, kolory, nazwy i format wyniku przepisuj dokładnie z treści.
- Obliczenia w osobnej metodzie z parametrami i zwracaną wartością, opisanej komentarzem w wymaganym formacie.
- Obrazy dołączaj do projektu, a zrzuty ekranu rób dla sytuacji wskazanych w treści.
Informacje o egzaminie: Centralna Komisja Egzaminacyjna — egzamin zawodowy.