Menu
CoddyTech

Récapitulatif - Gestionnaire de compte bancaire

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy. Leçon 33 sur 104.

challenge icon

Défi

Facile

Construisons un gestionnaire de comptes bancaires complet qui réunit tous les concepts de propriétés de classe que vous avez appris dans ce chapitre : membres privés avec accesseurs et mutateurs, fonctions membres const, membres mutable, variables et méthodes statiques, et fonctions amies.

Vous allez créer deux fichiers pour organiser votre code :

  • BankAccount.h : définissez une classe BankAccount qui gère les données des comptes avec un encapsulage approprié. Votre classe doit comporter :
    • Des membres privés : accountNumber (string), ownerName (string), balance (double), et un mutable int queryCount pour suivre le nombre de fois où le solde a été consulté
    • Un membre statique privé totalAccounts pour suivre le nombre de comptes existants
    • Un constructeur qui prend le numéro de compte, le nom du propriétaire et le solde initial. Il doit initialiser queryCount à 0 et incrémenter totalAccounts
    • Des accesseurs const : getAccountNumber(), getOwnerName() et getBalance() : l’accesseur du solde doit incrémenter queryCount chaque fois qu’il est appelé
    • Un accesseur const getQueryCount() qui renvoie le nombre de fois où le solde a été consulté
    • Une méthode deposit(double amount) qui ajoute au solde uniquement si le montant est positif
    • Une méthode withdraw(double amount) qui soustrait du solde uniquement si le montant est positif et ne dépasse pas le solde actuel
    • Une méthode statique getTotalAccounts() qui renvoie le nombre total de comptes créés
    • Déclarez une fonction amie transfer(BankAccount& from, BankAccount& to, double amount) qui transfère de l’argent entre des comptes. Elle ne doit effectuer le transfert que si le montant est positif et que le compte source dispose de fonds suffisants

    Définissez le membre statique et la fonction amie après la définition de la classe.

  • main.cpp : montrez toutes ces fonctionnalités en action. Lisez deux noms de propriétaires et deux soldes initiaux depuis l’entrée (quatre lignes au total : name1, balance1, name2, balance2), puis :
    • Créez deux objets BankAccount avec les numéros de compte "ACC001" et "ACC002"
    • Affichez "Total accounts: <count>"
    • Affichez "<name>: $<balance>" pour le premier compte
    • Affichez "<name>: $<balance>" pour le deuxième compte
    • Déposez 500.0 sur le premier compte
    • Affichez "After deposit - <name>: $<balance>" pour le premier compte
    • Transférez 300.0 du premier compte vers le deuxième à l’aide de la fonction amie
    • Affichez "After transfer:"
    • Affichez " <name>: $<balance>" pour le premier compte
    • Affichez " <name>: $<balance>" pour le deuxième compte
    • Affichez "Query count for <name>: <count>" pour le premier compte

Formatez toutes les valeurs de solde avec deux décimales à l’aide de std::fixed et de std::setprecision(2) de <iomanip>. Convertissez les entrées de solde, de chaînes en nombres de type double, à l’aide de std::stod().

N’oubliez pas les gardes d’inclusion dans votre fichier d’en-tête et d’inclure <string> et <iostream> là où c’est nécessaire.

Essayez vous-même

#include <iostream>
#include <string>
#include <iomanip>
#include "BankAccount.h"

int main() {
    // Lire les données d’entrée
    std::string name1, name2;
    std::string balance1Str, balance2Str;
    
    std::getline(std::cin, name1);
    std::getline(std::cin, balance1Str);
    std::getline(std::cin, name2);
    std::getline(std::cin, balance2Str);
    
    double balance1 = std::stod(balance1Str);
    double balance2 = std::stod(balance2Str);
    
    // Définir le format d’affichage avec 2 décimales
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Créer deux objets BankAccount avec les numéros de compte "ACC001" et "ACC002"
    
    // TODO: Afficher "Total accounts: <count>"
    
    // TODO: Afficher "<name>: $<balance>" pour le premier compte
    
    // TODO: Afficher "<name>: $<balance>" pour le deuxième compte
    
    // TODO: Déposer 500.0 sur le premier compte
    
    // TODO: Afficher "After deposit - <name>: $<balance>" pour le premier compte
    
    // TODO: Transférer 300.0 du premier compte vers le deuxième à l’aide de la fonction amie
    
    // TODO: Afficher "After transfer:"
    
    // TODO: Afficher "  <name>: $<balance>" pour le premier compte (noter l’indentation de 2 espaces)
    
    // TODO: Afficher "  <name>: $<balance>" pour le deuxième compte (noter l’indentation de 2 espaces)
    
    // TODO: Afficher "Query count for <name>: <count>" pour le premier compte
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C++ en ligne