begin process at 2012 05 27 16:38:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > GESTION DE COMPTE(PRIMITIF)

GESTION DE COMPTE(PRIMITIF)


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Classé sous :gestion, compte Niveau :Débutant Date de création :31/01/2006 Date de mise à jour :31/01/2006 23:21:44 Vu :5 621

Auteur : tbpacker

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

C'est en gros mon premier programme que je peux utiliser.(je débute en c++)Il cree des fichier .bank dans lesquels on peut saisir ses lignes de compte,et calcule automatiquement le nouveau solde a partir des operations effectuées.Il utilise surtout les entrees/sorties sur disque dur, et les moyens pas tres esthétiques que g inventés pr trier et recupérer des informations dans des fichiers puis les afficher a l'ecran.Persuader de la faiblesse de mon code je le soumet a vos critiques dans l'espoir de progresser.J'amerai notemment pouvoir supprimer des lignes dans un fichier, et trouver un moyen de formater autrement les données que je rentre.


Source

  • #include <iostream>
  • #include <iomanip>
  • #include <stdio.h>
  • #include <fstream>
  • #include <string.h>
  • #include <sstream>
  • using namespace std;
  • void menu_1(void);
  • void menu_2(void);
  • void recup_ligne(void);
  • void cut_ligne(const string &,BOOL);
  • void modification_compte(void);
  • void quit(int);
  • float recup_solde(void);
  • float trans_str(const string &); //transforme une chaine de caractere en un float
  • void creer_nouv_compte (void );
  • void acces_compte(void);
  • int appel_erreur (int);
  • float recup;
  • string nom_compte_courant;
  • int main()
  • {
  • menu_1();
  • quit(1);
  • return 0;
  • }
  • void menu_1()
  • {
  • int choix;
  • cout << "MENU : \n";
  • cout << "1-Creer nouveau compte \n";
  • cout << "2-Acces compte existant \n";
  • cout << "3-Quit \n";
  • cout << "CHOIX : "; cin >> choix;
  • switch(choix)
  • {
  • case 1 :
  • creer_nouv_compte();
  • case 2 :
  • acces_compte();
  • case 3 :
  • quit(1);
  • default: quit(1);
  • }
  • }
  • void menu_2()
  • {
  • int choix;
  • cout << "MENU : \n";
  • cout << "1-Consultation de solde \n";
  • cout << "2-Modifications \n";
  • cout << "3-Retour \n";
  • cout << "4-Quit\n";
  • cout << "CHOIX : "; cin >> choix;
  • switch(choix)
  • {
  • case 1 :
  • recup_ligne();
  • case 2 :
  • modification_compte();
  • case 3 :
  • cout << "\n";
  • menu_1();
  • case 4 :
  • quit(2);
  • default: quit(2);
  • }
  • }
  • void creer_nouv_compte()
  • {
  • string ch1, ch2 (".bank"), nom, separator = "*"; //l'extension ".bank" est rajoutee au nom
  • cout << "nom du compte : "; cin >> ch1;
  • nom = ch1 + ch2;
  • ofstream fichier (nom.c_str(), ios_base::app);
  • if (fichier)
  • {
  • cout << "Compte cree!!! \n";
  • fichier.close();
  • ofstream fichier ("INDEX.bank", ios_base::app); //ouvre un fichier index ou st stockes les noms des comptes existants
  • if (fichier)
  • {
  • fichier << nom << separator;
  • fichier.close();
  • }
  • else
  • {
  • appel_erreur (1);
  • cout << "\n";
  • menu_1();
  • }
  • cout << "\n";
  • menu_1();
  • }
  • else
  • {
  • appel_erreur (1);
  • cout << "\n";
  • menu_1();
  • }
  • }
  • void acces_compte() //liste les comptes crees et permet d'y acceder.
  • {
  • int no_line = 0, choix;
  • string tbl_line[10], line;
  • ifstream fichier ("INDEX.bank");
  • if (fichier)
  • {
  • cout << "\n";
  • while ( getline ( fichier, line, '*') ) //cut tous les '*' et stock danss line
  • {
  • tbl_line [no_line] = line; no_line++;
  • cout << no_line << "->" << line << endl;
  • }
  • cout << "No du compte a consulter?: ";
  • if (cin >> choix)
  • {
  • if (choix <= no_line)
  • {
  • nom_compte_courant = tbl_line[ choix - 1]; //recupere le nom du compte a ouvrir "choix - 1 " car les tableaux commencent a 0 et la liste affichee a 1.
  • fichier.close();
  • cout << "\n";
  • menu_2();
  • }
  • else
  • {
  • cout << "\n";
  • cout << "ERREUR: COMPTE INEXISTANT\n" ;
  • cout << "\n";
  • menu_1();
  • }
  • }
  • else
  • {
  • appel_erreur (2);
  • cout << "\n";
  • menu_2();
  • }
  • }
  • else
  • {
  • appel_erreur (1);
  • cout << "\n";
  • menu_1();
  • }
  • }
  • int appel_erreur(int erreur)
  • {
  • if (erreur == 1)
  • {
  • cerr << "ERREUR: ACCES FICHIER IMPOSSIBLE";
  • }
  • if (erreur == 2)
  • {
  • cerr << "ERREUR: SAISIE INCORECTE";
  • }
  • }
  • void recup_ligne() //recupere les lignes de compte et les affiche
  • {
  • string ligne;
  • ifstream fichier( nom_compte_courant.c_str() ); //le nom du fichier a lire doit etre de type const *char
  • if ( fichier )
  • {
  • cout << "DATE" << setw(19) << "CREDIT" << setw(13) << "DEBIT" << setw(13) << "SOLDE" << setw(25) << "COMMENTAIRE" << endl;
  • while ( getline( fichier, ligne, '%' ) )
  • {
  • cut_ligne(ligne,0); //coupe la chaine ligne et l'affiche par morceaux
  • }
  • fichier.close();
  • }
  • // cette boucle s'arrête dès qu'une erreur de lecture survient
  • else
  • {
  • appel_erreur (1);
  • quit(2);
  • }
  • cout << endl;
  • menu_2();
  • }
  • void modification_compte() //permet de creer des nouvelles lignes de compte
  • {
  • float solde;
  • string separator = "*",fl = "%", date, credit, debit, commentaire;
  • cout << "\n\n" << "DATE? ( / / ) : ";cin >> date;
  • cout << "credit? : ";cin >> credit;
  • cout << "debit? : "; cin >> debit;
  • cout << "commentaire?: (Pas plus de 20!)"; cin >> commentaire;
  • solde = recup_solde(); //recuper l'ancien solde et calcule le nouveau avec le debit et le credit
  • solde = solde +trans_str(credit);
  • solde = solde - trans_str(debit);
  • ofstream file (nom_compte_courant.c_str() , ios_base::app);
  • if (file)
  • {
  • file << date << separator << credit << separator << debit << separator << solde << separator << commentaire << fl;
  • file.close();
  • }
  • else
  • {
  • appel_erreur (1);
  • quit(2);
  • }
  • cout << "\n";
  • menu_2();
  • }
  • float recup_solde()
  • {
  • string ligne;
  • string tbl_ligne[2];
  • float solde;
  • int compteur = 0, i = 0;
  • ifstream fichier (nom_compte_courant.c_str() );
  • if ( fichier )
  • {
  • while ( getline( fichier, ligne, '%' ) ) {tbl_ligne[i] = ligne; i++; compteur++; cout << "\n"; } //recupere la derniere ligne du fichier
  • fichier.close();
  • }
  • else
  • {
  • appel_erreur (1);
  • quit(2);
  • }
  • if ((ligne == "") && (compteur == 0)) //si rien ds fichier requete du solde initial
  • {
  • cout << "Solde initial?: "; cin >> solde;
  • return solde;
  • }
  • else
  • {
  • cut_ligne(tbl_ligne[i-1], 1); //coupe la chaine et extrait le solde (BOOL = 1)
  • return recup;
  • }
  • }
  • float trans_str( const string & str) //transforme une string en float
  • {
  • istringstream iss( str );
  • float nombre;
  • iss >> nombre;
  • return nombre;
  • }
  • void cut_ligne(const string & str, BOOL B) //cut str
  • {
  • string tbl_mot[10], mot;
  • int i = 0;
  • istringstream iss( str );
  • while (getline( iss, mot, '*' ) ) //coupe la chaine tous les * et stock les coupes ds tbl_mot
  • {
  • tbl_mot[i] = mot;
  • i++ ;
  • }
  • if (B == 0)
  • {
  • cout << tbl_mot[0] << setw(15) << tbl_mot[1] << setw(13) << tbl_mot[2] << setw(13) << tbl_mot[3] << setw(25) << tbl_mot[4] << endl;
  • }
  • if (B == 1)
  • {
  • recup = trans_str(tbl_mot[3]); //la fonction recup_solde retourne recup qui est une variable locale
  • }
  • }
  • void quit(int param)
  • {
  • string reponse;
  • cerr << "\n" << "Quitter? O/N :\n"; cin >> reponse;
  • if (reponse == "o" || reponse == "O") {
  • exit(0); }
  • if (reponse == "n" || reponse == "N")
  • {
  • cout << endl;
  • if (param == 1)
  • {
  • menu_1();
  • }
  • else
  • {
  • menu_2();
  • }
  • }
  • }
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <fstream>
#include <string.h>
#include <sstream>
using namespace std;

void menu_1(void);
void menu_2(void);
void recup_ligne(void);
void cut_ligne(const string &,BOOL);
void modification_compte(void);
void quit(int);
float recup_solde(void);
float trans_str(const string &);                   //transforme une chaine de caractere en un float
void creer_nouv_compte (void );
void acces_compte(void);
int appel_erreur (int);
float recup;                                       
string nom_compte_courant;         




int main()
{
    menu_1();
    quit(1);
    return 0;
}
    
void menu_1()                                              
{
     int choix;
     cout << "MENU  :                 \n";
     cout << "1-Creer nouveau compte  \n"; 
     cout << "2-Acces compte existant \n";
     cout << "3-Quit \n";
     cout << "CHOIX : "; cin >> choix;
     switch(choix)
     {
        case 1 :
             creer_nouv_compte();
        case 2 :
             acces_compte();
        case 3 :
             quit(1); 
        default: quit(1);        
     }
}     
     
     
    
void menu_2()
{
     int choix;
     cout << "MENU  : \n";
     cout << "1-Consultation de solde \n"; 
     cout << "2-Modifications \n";
     cout << "3-Retour \n";
     cout << "4-Quit\n";
     cout << "CHOIX : "; cin >> choix;
     
     switch(choix)
     {
        case 1 :
             recup_ligne();
        case 2 :
             modification_compte();
        case 3 :
             cout << "\n";
             menu_1();     
        case 4 :
             quit(2); 
        default: quit(2);        
     }
     
      
}

void creer_nouv_compte()
{
     string ch1, ch2 (".bank"), nom, separator = "*";       //l'extension ".bank" est rajoutee au nom
     cout << "nom du compte : "; cin >> ch1;
     nom = ch1 + ch2;
     
     ofstream fichier (nom.c_str(), ios_base::app); 
     if (fichier) 
     {
         cout << "Compte cree!!! \n";
         fichier.close();
     
         ofstream fichier ("INDEX.bank", ios_base::app);      //ouvre un fichier index ou st stockes les noms des comptes existants
         if (fichier)
         {
             fichier << nom << separator;
             fichier.close();
         }
         else
         {
             appel_erreur (1);
             cout << "\n";
             menu_1();
         }                
         cout << "\n";        
         menu_1();
     }
     else
     {
         appel_erreur (1);
         cout << "\n";
         menu_1();
     }                 
}
     
void acces_compte()                                                                    //liste les comptes crees et permet d'y acceder.
{
     int no_line = 0, choix;
     string tbl_line[10], line;
     ifstream fichier ("INDEX.bank");
     if (fichier)
     {
                 cout << "\n";
                 while ( getline ( fichier, line, '*') )                              //cut tous les '*' et stock danss line
                 {
                        tbl_line [no_line] = line; no_line++;
                        cout << no_line << "->" << line << endl;
                 }
                 
                 cout << "No du compte a consulter?:  ";
                 if (cin >> choix) 
                 {        
                     if (choix <= no_line)
                     {
                         nom_compte_courant = tbl_line[ choix - 1];                     //recupere le nom du compte a ouvrir "choix - 1 " car les tableaux commencent a 0 et la liste affichee a 1.
                         fichier.close(); 
                         cout << "\n";
                         menu_2(); 
                     }
                     else 
                     { 
                          cout << "\n";
                          cout << "ERREUR: COMPTE INEXISTANT\n" ;
                          cout << "\n";
                          menu_1();
                     }        
                 }
                 else
                 {
                     appel_erreur (2);
                     cout << "\n";
                     menu_2();
                 }    
                    
     }
     else 
     {
     appel_erreur (1);
     cout << "\n";
     menu_1();
     }
}     
     
     
     
int appel_erreur(int erreur)
{
    if (erreur == 1)
    {
               cerr << "ERREUR: ACCES FICHIER IMPOSSIBLE";
    }
    if (erreur == 2)
    {
               cerr << "ERREUR: SAISIE INCORECTE";
    }                              
}     


     
void recup_ligne()                                               //recupere les lignes de compte et les affiche
{
    string ligne; 
    ifstream fichier( nom_compte_courant.c_str() );             //le nom du fichier a lire doit etre de type const *char

    if ( fichier )                                                            
    {   
        cout << "DATE" << setw(19) << "CREDIT" << setw(13) << "DEBIT" << setw(13) << "SOLDE" << setw(25) << "COMMENTAIRE" << endl;                                                                                                              
        while ( getline( fichier, ligne, '%' ) )
        {
               cut_ligne(ligne,0);                               //coupe la chaine ligne et l'affiche par morceaux
        }   
        fichier.close(); 
    }     
                                                                 // cette boucle s'arrête dès qu'une erreur de lecture survient 
    else
    {
        appel_erreur (1);
        quit(2);
    }
    cout << endl;
    menu_2();
}
    
    
void modification_compte()                                                        //permet de creer des nouvelles lignes de compte 
{
     float solde;
     string separator = "*",fl = "%", date, credit, debit, commentaire;
     cout << "\n\n" << "DATE? (  /  /  ) : ";cin >> date;
     cout <<  "credit? : ";cin >> credit;
     cout <<  "debit? : "; cin >> debit;
     cout << "commentaire?: (Pas plus de 20!)"; cin >> commentaire;
     solde = recup_solde();                                                         //recuper l'ancien solde et calcule le nouveau avec le debit et le credit
     
     solde = solde +trans_str(credit);
     solde = solde - trans_str(debit);                                    
     
     
     
     ofstream file (nom_compte_courant.c_str() , ios_base::app);
     if (file)
     {
         file << date << separator << credit << separator << debit << separator << solde << separator << commentaire << fl;
         file.close();
     }
     else
     {
         appel_erreur (1);
         quit(2);
     }
     cout << "\n";
     menu_2();
}


float recup_solde()
{
      string ligne;
      string tbl_ligne[2];
      float solde;
      int compteur = 0, i = 0;
      
      ifstream fichier (nom_compte_courant.c_str() );
      if ( fichier )
      {
          while ( getline( fichier, ligne, '%' ) ) {tbl_ligne[i] = ligne; i++; compteur++; cout << "\n"; }      //recupere la derniere ligne du fichier
          fichier.close();
      } 
      else
      {
          appel_erreur (1);
          quit(2);
      }       
      
      if ((ligne == "") && (compteur == 0))                                                                  //si rien ds fichier requete du solde initial
      {
          cout << "Solde initial?:  "; cin >> solde;
          return solde; 
      }   
      else 
      { 
          cut_ligne(tbl_ligne[i-1], 1);                                                                      //coupe la chaine et extrait le solde (BOOL = 1)
          return recup;
      }
}

float trans_str( const string & str)                                                                           //transforme une string en float
{
      istringstream iss( str );
      float nombre;
      iss >> nombre;
      return nombre;
}

void cut_ligne(const string & str, BOOL B)                                                                      //cut str
{
     string tbl_mot[10], mot;
     int i = 0;
    
        istringstream iss( str );
        while (getline( iss, mot, '*' ) )                          //coupe la chaine tous les * et stock les coupes ds tbl_mot
        {
              tbl_mot[i] = mot; 
              i++ ; 
        }
        
     if (B == 0)
     {   
        cout << tbl_mot[0] << setw(15) << tbl_mot[1] << setw(13) << tbl_mot[2] << setw(13) << tbl_mot[3] << setw(25) << tbl_mot[4] << endl;
     }
     if (B == 1)
     {
         recup = trans_str(tbl_mot[3]);                                          //la fonction recup_solde retourne recup qui est une variable locale
     }
}

         
            
void quit(int param)
{ 
     string reponse;
     cerr << "\n" << "Quitter? O/N :\n"; cin >> reponse;
     if (reponse == "o" || reponse == "O") {
     exit(0); } 
     if (reponse == "n" || reponse == "N")
     {
                 cout << endl; 
                 if (param == 1)
                 {
                     menu_1();
                 }
                 else
                 {
                     menu_2();
                 }
     }
                          
}



 Historique

31 janvier 2006 23:14:34 :
petite correction d'orthographe.Sorry
31 janvier 2006 23:21:44 :
re correction d'orthographe (decidément jsuis mauvais!)

 Sources de la même categorie

COMPTER LE NOMBRE DE PAGES D'UN FICHIER PDF par Renfield
Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip Source avec une capture GESTION DE BIBLIOTHEQUE par moujahid88
GESTION DE FICHIER ET DOSSIER + AUTRES par shinji63

Commentaires et avis

Commentaire de tbpacker le 20/02/2006 20:44:56

Meme pas une petite critique pr m'aider à progresser?:(

Commentaire de EnfantdeDieu le 09/02/2007 11:31:46

Il y a des erreurs de frappe,comme pour les entetes qui manquent le .h. SInon la déclaration des  aussi n'est pas tres claire, parceque ce souvent mieux a mon humble avis de declarer les fonctions juste avant leurs utilisations en C+.
Sinon je l'ai essayer dans un compilateur et il y a 26 erreurs, je continu a chercher et je te dirais plus.
GBU

Commentaire de MiloudGrini le 15/02/2009 16:20:07

merci pour votre travaille

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

gestion de compte bancaire [ par fantadjene ] slt! j ai un projet de gestion de comptes bancaires en c  et  ce qui me bloque c est qu il   faut prelever une certaine somme dans tous les comptes ou Aide sur les classes [ par mouadsa ] Bonsoir, J'ai un programmes en c++ où je dois créer une classe compte et puis créer n comptes (tableau dynamique), les afficher tous et saisir leurs p Quel langage pour gestion de données, Tri, présentation [ par zonette ] gestion des taches [ par aatabjamila ] bonsoir, je cherche un projet ou des liens pouvant m'aider à concevoir le processus de gestion des taches d'une entreprise (je dois realiser une appli MyOS : Free and OpenSource OS [ par SamyPesse ] Bonjour à tous, je viens vous presenter mon projet de systéme d'exploitation, cela fait 8 mois que je bosse sur ce projet, durant ces vacances j'ai pu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales