WPF_03_wpf_duze_zadanie_uczniowie.md

#03wpfduzezadanieuczniowie

Opis Przykładowe większe zadanie WPF: dodawanie uczniów, liczenie średniej i wyświetlanie listy.

#MainWindow.xaml

XML<Window x:Class="Uczniowie.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Uczniowie" Height="400" Width="500">
    <StackPanel Margin="20">
        <TextBlock Text="Dodaj ucznia" FontSize="24" Margin="0 0 0 15"/>

        <TextBox x:Name="ImieTextBox" Margin="0 0 0 10" Text="Kuba"/>
        <TextBox x:Name="OcenaTextBox" Margin="0 0 0 10" Text="5"/>

        <Button Content="Dodaj ucznia" Click="Dodaj_Click" Margin="0 0 0 10"/>

        <TextBlock x:Name="InfoTextBlock" Margin="0 0 0 10"/>

        <ListBox x:Name="UczniowieListBox" Height="150" Margin="0 0 0 10"/>

        <Button Content="Oblicz średnią" Click="Srednia_Click"/>
        <TextBlock x:Name="SredniaTextBlock" FontSize="18" Margin="0 10 0 0"/>
    </StackPanel>
</Window>

#MainWindow.xaml.cs

CSHARPusing System.Collections.Generic;
using System.Windows;

namespace Uczniowie
{
    public partial class MainWindow : Window
    {
        List<Uczen> uczniowie = new List<Uczen>();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Dodaj_Click(object sender, RoutedEventArgs e)
        {
            string imie = ImieTextBox.Text;

            if (!int.TryParse(OcenaTextBox.Text, out int ocena))
            {
                InfoTextBlock.Text = "Ocena musi być liczbą";
                return;
            }

            if (imie.Length < 2)
            {
                InfoTextBlock.Text = "Imię jest za krótkie";
                return;
            }

            if (ocena < 1 || ocena > 6)
            {
                InfoTextBlock.Text = "Ocena musi być od 1 do 6";
                return;
            }

            Uczen nowy = new Uczen(imie, ocena);
            uczniowie.Add(nowy);

            UczniowieListBox.Items.Add(nowy.Pokaz());
            InfoTextBlock.Text = "Dodano ucznia";
        }

        private void Srednia_Click(object sender, RoutedEventArgs e)
        {
            if (uczniowie.Count == 0)
            {
                SredniaTextBlock.Text = "Brak uczniów";
                return;
            }

            double suma = 0;

            foreach (Uczen uczen in uczniowie)
            {
                suma += uczen.Ocena;
            }

            double srednia = suma / uczniowie.Count;

            SredniaTextBlock.Text = "Średnia ocen: " + srednia.ToString("0.00");
        }
    }

    public class Uczen
    {
        public string Imie { get; set; }
        public int Ocena { get; set; }

        public Uczen(string imie, int ocena)
        {
            Imie = imie;
            Ocena = ocena;
        }

        public string Pokaz()
        {
            return Imie + " - ocena: " + Ocena;
        }
    }
}