Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compte bancaire en c#

site grandpatrice

    13 octobre 2013 à 20:12:42

    Bonsoir,

    J'essaie de résoudre le tp compte bancaire de grandpatrice à l'adresse http://www.grand-patrice.fr/drupal/tpcompte.

    J'implémente les deux constructeurs un par défaut et un autre avec quatre paramètres.

    J'ai résolu la fonction créditer.

    Mais je reste bloqué sur les fonctions débiter, transférer et supérieur.

    Est-ce que quelqu'un peut me donner un coup de main?

    • Partager sur Facebook
    • Partager sur Twitter
      14 octobre 2013 à 8:46:07

      Bonjour,

      Voici ce que j'ai fait pour l'instant. La méthode Debiter ne fonctionne pas.

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace CompteBancaire
      {
          class Compte
          {
              private int decouvertAutorise;
              private string nom;
              private int numero;
              private int solde;
      
              public Compte()
              {
      
              }
              public Compte(int _numero, string _nom, int _solde, int _decouvertAutorise)
              {
                  numero = _numero;
                  nom = _nom;
                  solde = _solde;
                  decouvertAutorise = _decouvertAutorise;
              }
      
              public override string ToString()
              {
                  return "Numéro du compte : " + numero + " nom : " + nom + " solde : " + solde + " découvert autorisé : " + decouvertAutorise;
              }
      
             
      
              public void Crediter (int solde)
              {
                this.solde += solde;
                 
              }
              public bool Debiter(int solde)
              {
                  this.solde -= solde;
      
                  if (this.decouvertAutorise>-500)
                  {
                      return true; 
                  }
                  else
                  {
                      return false;
                  }
              }
      
                
                  
              
          }
      }
      
      
      
      
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace CompteBancaire
      {
          class Program
          {
              static void Main(string[] args)
              {
                  Compte compteToto = new Compte(12345, " Toto", 3000, -500);
                  Console.WriteLine("");
                  Console.WriteLine("ETAT DU COMPTE DE TOTO");
                  Console.WriteLine(compteToto.ToString());
                  Console.ReadLine();
      
      
                  Compte b = new Compte(545454, "Laurent", 2000, 500);
                  Console.WriteLine(b);
                  Console.ReadLine();
                  b.Crediter(100);
                  Console.WriteLine(b);
                  Console.ReadLine();
      
                  bool ok = b.Debiter(100000);
                  Console.WriteLine(b.ToString());
                  Console.ReadLine();
                  if (ok)
                  {
                      Console.WriteLine("Débit réussi");
                      Console.ReadLine();
                  }
                  else
                  {
                      Console.WriteLine("Débit pas réussi");
                      Console.ReadLine();
                  }
      
                  Compte c1 = new Compte (12345,"toto",1000,-500);
                  Compte c2 = new Compte (45657,"titi",2000,-1000);
                  c1.Transferer(1300, c2);
                  Console.WriteLine(c1.ToString());
                  Console.ReadLine();
                  Console.WriteLine(c2.ToString());
                  Console.ReadLine();
              }
          }
      }
      



      • Partager sur Facebook
      • Partager sur Twitter
        14 octobre 2013 à 12:39:16

                public bool Debiter(int solde)
                {
                    this.solde -= solde;
         
                    if ( this.decouvertAutorise>-500)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
        

        C'est normal que ca ne marche pas: tu fais l'opération avant de vérifier si elle est possible...

        calcul d'abord le futur resultat, et si il est dans la plage autorisée, applique le calcul!

                public bool Debiter(int solde)
                {
        
                    if ( (this.solde - solde) >= decouvertAutorise)
                    {
                        this.solde -= solde;
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
        


        edit: modifié -500 par decouvertAutorise, bien vu Krimog ;)

        -
        Edité par breizhbugs 15 octobre 2013 à 11:45:15

        • Partager sur Facebook
        • Partager sur Twitter
        ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
          15 octobre 2013 à 9:47:05

          Salut breizhbugs,


          Merci pour ta réponse.

          Je la testerai plus tard.

          Un autre exercice m'occupe pour l'instant.

          Dès que je l'aurai testée, je te dirais si ça marche ou pas.


          A plus tard.

          • Partager sur Facebook
          • Partager sur Twitter
            15 octobre 2013 à 10:11:17

            Salut,

            Déjà, petite remarque concernant la réponse de breizhbug, d'après ce que je comprends des noms des variables, la condition n'est pas

            if ((this.solde - solde) > -500)

            mais

            if ((this.solde - solde) >= decouvertAutorise)

            Ensuite, dans ton constructeur avec 4 paramètres, ceux-ci sont préfixés par "_". C'est à éviter absolument, car (même si ce n'est pas la règle en C#) beaucoup de personnes (moi inclus) utilisent l'underscore comme préfixe des champs. En gros, quand tu lis un code source C#, les champs s'appelleront soit this.monChamp, soit _monChamp, et les paramètres n'ont pas de préfixe (monParametre).

            Enfin, ton constructeur par défaut non seulement ne sert à rien, mais est problématique. Puisque tu n'as aucun moyen de définir les valeurs autrement que via le constructeur avec 4 paramètres, donner la possibilité de créer un compte sans nom, ni numéro, ni découvert autorisé (le solde, lui, peut être modifié après coup grâce à la méthode Crediter()) induit en erreur.

            • Partager sur Facebook
            • Partager sur Twitter
            Il y a 2 types de personnes : celles qui sont capables d'extrapoler à partir de données incomplètes.

            Compte bancaire en c#

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown