IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Difficulté pour coder petit programme Compte banquaire (C++)


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 199
    Points : 37
    Points
    37
    Par défaut Difficulté pour coder petit programme Compte banquaire (C++)
    Bonjour ,
    Désolé de vous "prendre la tete" régulierement avec mes petits problèmes .
    Je suis encore sur ce petit code de compte bancaire , plus ou moins bien fait .
    J'ai 2 classes :
    L'une avec les identifiants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #ifndef IDENTIFIANT_H_
    #define IDENTIFIANT_H_
    #include <string>
     
    class Identifiant
    {
     public:
    	Identifiant();
    	~Identifiant();
    	void afficherIdentifiant();
    	std::string get_nom();
    	std::string get_prenom();
     
    	void set_nom(std::string x);
    	void set_prenom(std::string x);
     
     private:
    	std::string nom;
    	std::string prenom;
     
    };
    #endif /* IDENTIFIANT_H_ */
    L'autre avec les méthodes du compte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #ifndef COMPTE_H_
    #define COMPTE_H_
    #include "identifiant.h"
    #include <string>
    class Compte
    {
     public:
    	Compte();
    	~Compte();
    	void saisir(long numCpte,double solde);
    	void crediter(double montant);
    	bool debiter(double montant);
    	bool virement(double montant,Compte &c);
    	int get_solde();
    	void set_solde(int b);
    	void afficher();
     private:
    	double m_solde;
    	long m_numCompte;
    };
     
    #endif /* COMPTE_H_ */
    et puis le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    #include "compte.h"
    #include <iostream>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    int main()
    {
     Compte ccp , livretA;
     int a(0);
     Identifiant identifiant;
     identifiant.afficherIdentifiant();
     {
      fstream file("sauvegarde.txt",ios::in);
     
      if(file.is_open())
      {
     	int input;
     
     	file >> input;
     	ccp.set_solde(input);
     	file >> input;
     	livretA.set_solde(input);
     	file.close();
     	cout << "solde lu avec succès" << endl;
     	}else{
     		  cout << "solde non lu"<< endl;
     	}
     
      }
     
     do {
     cout << "Quelle operation souhaitez vous faire ?" << endl;
     
     cout << "1 : Afficher le solde de votre compte CCP: " << endl;
     cout << "2 : Afficher le solde de votre livret A : " << endl;
     cout << "3 : Saisir votre nouveau solde CCP : " << endl;
     cout << "4 : Saisir votre nouveau solde livret A : " << endl;
     cout << "5 : Faire un depot sur votre compte CCP : " << endl;
     cout << "6 : Faire un depot sur votre livret A : " << endl;
     cout << "7 : Faire un retrait sur votre compte CCP : " << endl;
     cout << "8 : Faire un retrait sur votre livret A : " << endl;
     cout << "9 : Faire un virement sur votre compte CCP : " << endl;
     cout << "10 : Faire un virement sur votre livret A : " << endl;
     cout << "11 : Quitter le programme " << endl;
     cin >> a;
     cin.ignore();
     switch(a)
     {
      case 1 :
    	  ccp.afficher();
    	  break;
      case 2 :
    	  livretA.afficher();
    	  break;
      case 3 :
         {
          long numCpte(0);
          double solde(0);
          cout << "Entrez votre solde : " << endl;
          cin >> solde;
          ccp.saisir(numCpte,solde);
         }
    	  break;
      case 4 :
         {
          long numCpte(0);
          double solde(0);
          cout << "Entrez votre solde : " << endl;
          cin >> solde;
          livretA.saisir(numCpte,solde);
         }
         break;
      case 5 :
         {
    	  int s(0);
    	  cout << " Quel est le montant de votre depot : " << endl;
    	  cin >> s ;
    	  ccp.crediter(s);
         }
         break;
      case 6 :
         {
      	  int s(0);
      	  cout << " Quel est le montant de votre depot : " << endl;
      	  cin >> s ;
      	  livretA.crediter(s);
         }
         break;
      case 7 :
         {
          int s(0);
          cout << " Quel est le montant de votre retrait : " << endl;
          cin >> s ;
          ccp.debiter(s);
         }
         break;
      case 8 :
         {
          int s(0);
          cout << " Quel est le montant de votre retrait : " << endl;
          cin >> s ;
          livretA.debiter(s);
         }
         break;
      case 11 :
    	 {
    	  fstream file("sauvegarde.txt",ios::out);
    	  if(file.is_open())
    	  {
    		  file << ccp.get_solde()<< endl;
              file << livretA.get_solde()<<endl;
    		  file.close();
    		  cout << "solde enregistré avec succès" << endl;
    	  }else{
    		  cout << "solde non enregistré"<< endl;
    	  }
    	  cout << "Aurevoir" << endl;
    	 }
    	  break;
      default :
    	  cout << "Mauvais choix " << endl;
    	  break;
     }
    }while( a != 11);
     
     return 0;
    }
    Jusqu'a présent il n'y avait qu'une seule personne qui utilisait les méthodes de ces 2 classes , moi .
    Je voudrai que plusieurs personnes puissent utiliser les méthodes de ces classes .
    Je ne vois pas trop comment m'y prendre .
    Merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Ce qui manque dans ta structure de données, c'est qu'il existe forcément un lien entre les comptes et les identifiants.
    Si on suppose un système centré sur la banque. Elle dispose d'une liste d'usagers, elle a aussi des comptes qui sont soit ccp, soit LivretA. On voit bien qu'il faut ajouter un lien. Chaque compte correspond à un usager bien précis.
    Pour aller plus loin, tu as besoin de connaître les concepts de :
    - liste de Choses ou de tableau de Choses.
    - avoir la notion de liens (références et pointeurs) entre les objets. Tes exemples n'utilisent que la notion d'inclusion, par exemple dans un Compte il y a un solde.

    On ne peut pas dire qu'un Compte contient un Identifiant. Sinon une personne ayant un CCP et un Livret, devrait être à la fois dans le CCP et dans Livret. On doit dire qu'un compte référence un Identifiant. Ça nous donne une structure ressemblant à ça
    Nom : Banque.gif
Affichages : 338
Taille : 3,7 Ko
    Avec une vue centrée sur les usagers, on peut aussi créer un objet "Usager" qui contiendrait : Un identifiant, un CCP et un Livret. Cette structure n'a pas vraiment de sens, elle suppose que tout le monde a forcément 2 comptes et que le compte n'est pas directement lié à un propriétaire. Mais ici c'est peu être plus simple pour ton exercice
    Nom : Usagers.gif
Affichages : 330
Taille : 3,5 Ko
    Ensuite tu n'as plus qu'à gérer tes usagers en demandant quel est le numéro de l'usager courant, par exemple 0 1 ou 2. Puis d'agir dessus, quel est son nom, quel est le solde de son CPP, ...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par dalfab Voir le message
    Ensuite tu n'as plus qu'à gérer tes usagers en demandant quel est le numéro de l'usager courant, par exemple 0 1 ou 2. Puis d'agir dessus, quel est son nom, quel est le solde de son CPP, ...
    C'est complètent stupide ta solution

    C'est le principe d'1 table d'association (pour des relations 1-N) Tu fais une table (*) avec 1 champ clef personne (clef étrangère), 1 champ clef compte (clef étrangère) et 1 champ enum "type de compte" (CCP, Livret A, ...)
    Le champ "type de compte" est juste là au cas où que tu aies plusieurs tables compte (1 pour les CCP, 1 pour les Livret A, ...) parce que chaque compte a des attributs propres.

    Et la clef primaire de cette table (*) est une clef composée de la clef personne et de la clef compte ( peut-être également le champ enum si les clefs des comptes ne sont pas uniques pour tous les comptes réunis)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 199
    Points : 37
    Points
    37
    Par défaut
    Je te remercie dalfab , ce n'est pas du tout stupide pour le debutant que je suis !
    Tu me donne deja une idée de ce que je dois faire .
    Je te remercie toi aussi foetus meme si ce que tu dit n'est pas du tout accessible a un débutant comme moi . ( parfois je me demande si ce ne serai pas une bonne chose de créer un sous sous sous forum débutant pour que nous puissions enfin comprendre )
    Le but n'est il pas de nous faire progresser ?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par chris7522 Voir le message
    Je te remercie toi aussi foetus meme si ce que tu dit n'est pas du tout accessible a un débutant comme moi . ( parfois je me demande si ce ne serai pas une bonne chose de créer un sous sous sous forum débutant pour que nous puissions enfin comprendre )
    Le but n'est il pas de nous faire progresser ?
    Effectivement tu as raison c'est un problème de conception de bases de données (MCD - Modèle Conceptuel des Données). Mets cela dans 1 coin , tu reviendras dessus lorsque tu feras des bases de données avec SQL ou lorsque tu t’intéressera sérieusement à l'organisation du stockage de tes données

    Situation 1:

    Nom : SQL1.png
Affichages : 328
Taille : 6,3 Ko

    Situation 2:

    Nom : SQL2.png
Affichages : 314
Taille : 8,6 Ko

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/05/2007, 23h58
  2. Aide pour un petit programme
    Par multeamage dans le forum C++
    Réponses: 13
    Dernier message: 19/08/2006, 17h36
  3. Besoin d'aide pour un petit programme
    Par Nico35 dans le forum C
    Réponses: 13
    Dernier message: 25/05/2006, 22h21
  4. Réponses: 2
    Dernier message: 06/05/2006, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo