Menu
Coddy logo textTech

Finał projektu: pętla główna

Część sekcji Programowanie obiektowe ścieżki C w Coddy. Lekcja 27 z 61.

challenge icon

Wyzwanie

Łatwy

Gratulacje: udało Ci się stworzyć kompletną bibliotekę kont bankowych! Teraz czas zamienić się rolami. Zamiast tworzyć bibliotekę, zostaniesz jej użytkownikiem. Twoim zadaniem jest napisanie programu głównego, który przetestuje Twój moduł Account.

Wyobraź sobie klienta, który wchodzi do banku i wykonuje serię transakcji. Utworzysz konto, wpłacisz i wypłacisz pieniądze, po drodze sprawdzisz saldo, a na koniec zamkniesz konto.

Będziesz pracować z trzema plikami:

  • account.h: kompletny plik nagłówkowy z nieprzezroczystym typem Account i wszystkimi prototypami funkcji: create_account, destroy_account, deposit, withdraw oraz get_balance.
  • account.c: kompletna implementacja z ukrytą strukturą zawierającą id i balance, a także wszystkimi implementacjami funkcji, które utworzyłeś(-aś) w trakcie tego projektu.
  • main.c: tutaj możesz zabłysnąć! Napisz program, który pokaże pełny cykl życia konta bankowego, wykonując realistyczną sekwencję transakcji.

Otrzymasz pięć danych wejściowych: identyfikator konta (liczbę całkowitą), pierwszą wpłatę, wypłatę, drugą wpłatę oraz próbę wypłaty ponad stan (wypłatę, która powinna się nie powieść z powodu niewystarczających środków).

Twój program główny powinien opowiedzieć historię tego konta:

  1. Utwórz konto i poinformuj o tym
  2. Wyświetl początkowe saldo
  3. Wykonaj pierwszą wpłatę i wyświetl nowe saldo
  4. Wypłać część środków i wyświetl zaktualizowane saldo
  5. Wykonaj kolejną wpłatę i wyświetl saldo
  6. Spróbuj wypłacić kwotę przekraczającą saldo. Ta próba powinna się nie powieść
  7. Wyświetl końcowe saldo (niezmienione po nieudanej wypłacie)
  8. Zamknij konto

Wyświetl wynik w tym formacie:

Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closed

Wartość 2001 to identyfikator konta, a kwoty odpowiadają danym wejściowym. Formatuj wszystkie kwoty z dokładnością do dwóch miejsc po przecinku, używając %.2f. Komunikat o nieudanej wypłacie powinien zostać wyświetlony, gdy withdraw zwróci 0.

To zadanie podsumowujące pokazuje wszystko, czego nauczyłeś(-aś) się o enkapsulacji. Twój program główny korzysta z Account wyłącznie za pośrednictwem publicznego interfejsu i nigdy nie odwołuje się bezpośrednio do ukrytych danych wewnętrznych.

Spróbuj swoich sił

#include <stdio.h>
#include "account.h"

int main() {
    // TODO: Wczytaj account_id, deposit1, withdraw_amount, deposit2 i overdraft z wejścia

    // TODO: Utwórz konto i wypisz "Account <id> created"

    // TODO: Wypisz saldo początkowe

    // TODO: Wpłać pierwszą kwotę, wypisz "Deposited <amount>" i nowe saldo

    // TODO: Wypłać środki, wypisz "Withdrew <amount>" i zaktualizowane saldo

    // TODO: Wpłać drugą kwotę, wypisz "Deposited <amount>" i nowe saldo

    // TODO: Spróbuj wypłacić kwotę przekraczającą saldo; jeśli się nie uda, wypisz "Withdrawal failed: insufficient funds"
    // TODO: Wypisz saldo końcowe

    // TODO: Wypisz "Account <id> closed" i usuń konto

    return 0;
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C online