Symulator bankomatu — tutorial (C#)

Cel: napisać prosty symulator bankomatu uczący pracy ze zmiennymi, metodami, walidacją danych i utrzymywaniem stanu konta.

Plan

  1. Utwórz projekt: dotnet new console -n AtmSimulator.
  2. Zamień zawartość Program.cs na kod poniżej.
  3. Uruchom: dotnet run.

Przykładowy kod (Program.cs)

Skopiuj do Program.cs.

// Program.cs
using System;
using System.Globalization;

class Program
{
    static decimal ReadAmount(string prompt)
    {
        while (true)
        {
            Console.Write(prompt);
            var s = Console.ReadLine();
            if (s == null) throw new OperationCanceledException();
            s = s.Trim().Replace(',', '.');
            if (decimal.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out var v) && v >= 0)
                return v;
            Console.WriteLine("Nieprawidłowa kwota. Wprowadź wartość dodatnią (np. 100.50).");
        }
    }

    static int ReadChoice()
    {
        Console.Write("Wybierz opcję: ");
        var c = Console.ReadLine();
        if (int.TryParse(c, out var n)) return n;
        return -1;
    }

    static void Main()
    {
        decimal balance = 1000m; // stan konta
        Console.WriteLine("Symulator bankomatu (C#)");
        while (true)
        {
            Console.WriteLine();
            Console.WriteLine("1) Sprawdź saldo");
            Console.WriteLine("2) Wypłać środki");
            Console.WriteLine("3) Wpłać środki");
            Console.WriteLine("4) Historia (tymczasowa)");
            Console.WriteLine("5) Wyjdź");
            var choice = ReadChoice();
            switch (choice)
            {
                case 1:
                    Console.WriteLine($"Saldo: {balance:F2} PLN");
                    break;
                case 2:
                    var withdraw = ReadAmount("Podaj kwotę do wypłaty: ");
                    if (withdraw == 0)
                    {
                        Console.WriteLine("Kwota zero — nic nie zmieniono.");
                        break;
                    }
                    if (withdraw > balance)
                    {
                        Console.WriteLine("Brak wystarczających środków.");
                        break;
                    }
                    balance -= withdraw;
                    Console.WriteLine($"Wypłacono {withdraw:F2} PLN. Nowe saldo: {balance:F2} PLN");
                    // tutaj możesz dodać zapis transakcji do listy
                    break;
                case 3:
                    var deposit = ReadAmount("Podaj kwotę do wpłaty: ");
                    if (deposit == 0)
                    {
                        Console.WriteLine("Kwota zero — nic nie zmieniono.");
                        break;
                    }
                    balance += deposit;
                    Console.WriteLine($"Wpłacono {deposit:F2} PLN. Nowe saldo: {balance:F2} PLN");
                    break;
                case 4:
                    Console.WriteLine("Funkcja historii: jeszcze niezaimplementowana w przykładzie.");
                    break;
                case 5:
                    Console.WriteLine("Do zobaczenia!");
                    return;
                default:
                    Console.WriteLine("Nieprawidłowa opcja. Wybierz numer z menu.");
                    break;
            }
        }
    }
}

Zadania do samodzielnej pracy

Zadanie 1: Dodaj prosty PIN (np. 4 cyfry) sprawdzany przed dostępem do menu.
Zadanie 2: Zaimplementuj historię transakcji (List) i wyświetlaj ją w opcji 4.
Zadanie 3: Zapisuj saldo i historię do pliku i wczytuj przy starcie programu.

Powrót do listy tutoriali