Compte bancaire sous C/C++

Fermé
akanLG Messages postés 3 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 6 novembre 2008 - 4 nov. 2008 à 11:01
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 nov. 2008 à 15:20
Bonjour,

Je suis étudiant en informatique de gestion. Je prépare un mémoire de fin de cycle BTS. Mon thème s’intitule Application Bancaire sous Langage C/C++. Le but est mettre au point une application de gestion de compte bancaire, mais je suis vraiment mal barré.
Voici les applications que je voudrai mettre dans le code :
-Ouverture de compte
-Clôture de compte
-Consultation(demande de loggin et password)
-Opérations : dépôt, retrait et virement intra bancaire.
J’ai commencé à élaborer un code mais ça ne donne pas gran chose . Il manque pas mal de chose surtout concernant les opérations(dépôt, virement, retrait).
----------------------------------------------
Help me.

#include<stdio.h>
#include<conio.h>
#include<string.h>

typedef struct
{
char titulaire[10];
char numero[5];

}
bank; /*création de type bank*/


void ouvrir_compte(FILE*compte,char titulaire[10])
{
bank fiche;
char numero[5];
clrscr();
printf("\n--------Ouverture d\'un compte-------\n");
compte=fopen("C:\\comptes.dat","w+");
puts("Donner le nom du titulaire:"); gets(titulaire);
puts("Lui attribuer un numero de compte:"); scanf("%s",&numero[5]);
flushall();
fwrite(&fiche,sizeof(bank),1,compte);
fclose(compte);

}

void consulter_compte(FILE*compte)
{

bank fiche;
char trouve=0,num[5];
clrscr();
puts("-------Consultation de compte------\n");
flushall();
compte=fopen("C:\\comptes","r");
printf("Entrer le numero de compte:"); scanf("%s",&num[5]);
flushall();
while((fread(&fiche,sizeof(bank),1,compte))!=0&&(trouve==0))
{
if(strcmp(fiche.numero,num)==0)
{
trouve=1;
printf("Compte trouve !\n");
printf(" Nom:%s\nNumero de compte:",fiche.titulaire,fiche.numero);
}
}
if(trouve=0) printf("Compte inexistant!\n");
fclose(compte);
getch();
}

void cloturer_compte(void)
{
char numero[5];
char choix;
printf(" Entrez le numero du compte a supprimer \n");
gets(numero);
if(numero==NULL)
{
puts("Desole,ce compte n'existe pas");
}
if(numero!=NULL)
{
puts("Etes-vous sûr de vouloir supprimer ce compte?(O/n)");
scanf("%c",&choix);
if(choix=='O'||'o')
{
remove(numero);
printf("le compte numero %s a ete supprime avec succes\n",numero);
}

if(choix=='N'||'n')
{
printf("le compte numero %s n'a pas ete supprime\n",numero);
}
}

void main()
{

char choix;
do
{
clrscr();
printf("Ouvrir un compte -->1\n ");
printf("Consulter un compte-->2\n");
printf("Cloturer un compte-->3\n");
choix=(char)getchar();
fushall();
{
switch(choix)
{
case'1':ouvrir_compte(compte,numero);break;
case'2':consulter_compte(compte,numero);break;
case'3': cloturer_compte();break;
}
}
}
while(choix!='S');
return 0;

}

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 nov. 2008 à 14:21
C'est possible en C, bien sur. Mais dans le titre tu met C++, et avec des objets c'est plus simple pour ce genre de problème je trouve, surtout qu'il y a pas mal de conteneurs qui permettent de ne pas s'occuper de la mémoire, type string et vector.
Du coup ça allège pas mal la programmation.

Je viens de jeter un oeil à ton programme, tu fais n'importe quoi en plus. Exemple :
void ouvrir_compte(FILE*compte,char titulaire[10])//utilisation de compte sans aucun intéret !
{
bank fiche;                  //creation d'une fichier qui n'est pas modifié!
char numero[5];
clrscr();
printf("\n--------Ouverture d\'un compte-------\n");
compte=fopen("C:\\comptes.dat","w+");
puts("Donner le nom du titulaire:"); gets(titulaire);      
puts("Lui attribuer un numero de compte:"); scanf("%s",&numero[5]); // modification de la chaine de caratère locale, en commençant par une casse en dehors du tableau : bonjour l'erreur mémoire. De plus, variable utilisé nulle par et détruite à la fin de la fonction
flushall();
fwrite(&fiche,sizeof(bank),1,compte);        //ecriture d'une fiche vide sur le fichier...
fclose(compte);

}

Bref, tu as tout intéret à tout revoir. à titre d'exemple, voici ce que ça donnerai en C++:
void bank::ouvrir_compte()
{
clrscr();
printf("\n--------Ouverture d\'un compte-------\n");
compte=fopen("C:\\comptes.dat","w+");
puts("Donner le nom du titulaire:"); gets(titulaire);      
puts("Lui attribuer un numero de compte:"); scanf("%s",numero); 
flushall();
fwrite(this,sizeof(bank),1,compte);        
fclose(compte);
}

Ce n'est pas 100% C++, mais c'est au moins objet.
1
akanLG Messages postés 3 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 14:36
Bon là j'ai essayé de corriger les erreurs.Sa me donne ceci:


#include<stdio.h>
#include<conio.h>
#include<string.h>

typedef struct
{
char titulaire[10];
char numero[5];

}
bank; /*création de type bank*/


void ouvrir_compte(void)
{ FILE*compte;
char titulaire[10];
bank fiche;
char numero[5];
clrscr();
printf("\n--------Ouverture d\'un compte-------\n");
compte=fopen("C:\\comptes.dat","w+");
puts("Donner le nom du titulaire:"); gets(titulaire);
puts("Lui attribuer un numero de compte:"); scanf("%s",&numero[5]);
flushall();
fwrite(&fiche,sizeof(bank),1,compte);
fclose(compte);

}

void consulter_compte()
{
FILE*compte;
bank fiche;
char trouve=0,num[5];
clrscr();
puts("-------Consultation de compte------\n");
flushall();
compte=fopen("C:\\comptes","r");
printf("Entrer le numero de compte:"); scanf("%s",&num[5]);
flushall();
while((fread(&fiche,sizeof(bank),1,compte))!=0&&(trouve==0))
{
if(strcmp(fiche.numero,num)==0)
{
trouve=1;
printf("Compte trouve !\n");
printf(" Nom:%s\nNumero de compte:",fiche.titulaire,fiche.numero);
}
}
if(trouve=0) printf("Compte inexistant!\n");
fclose(compte);
getch();
}

void cloturer_compte(void)
{
char numero[5];
char choix;
printf(" Entrez le numero du compte a supprimer \n");
gets(numero);
if(numero==NULL)
{
puts("Desole,ce compte n'existe pas");
}
if(numero!=NULL)
{
puts("Etes-vous sûr de vouloir supprimer ce compte?(O/n)");
scanf("%c",&choix);
if(choix=='O'||'o')
{
remove(numero);
printf("le compte numero %s a ete supprime avec succes\n",numero);
}

if(choix=='N'||'n')
{
printf("le compte numero %s n'a pas ete supprime\n",numero);
}
}
}
main()
{

char choix;
do
{
clrscr();
printf("Ouvrir un compte -->1\n ");
printf("Consulter un compte-->2\n");
printf("Cloturer un compte-->3\n");
scanf("%c",&choix);
flushall();
{
switch(choix)
{
case'1':ouvrir_compte();break;
case'2':consulter_compte();break;
case'3': cloturer_compte();break;
}
}
}
while(choix!='S');

getch();
}
0