J'espère que vous allez tous bien.
J'ai un mini projet pour l'école où je dois écrire un programme pour la gestion d'une banque.
Le programme devrait permettre d'effectuer les opérations suivantes:
Menu avec Choix:
1- Ajouter un compte
2- Rechercher un Compte
3- Afficher tous les comptes
4- Débiter un compte
5- Créditer un compte
6- Effectuer un virement
7- Quitter le programme
J'ai essayé de faire les fonctions qui vont avec mais je n'arrive pas à trouver ce qui cloche. Je ne peux même pas afficher tous les comptes crées.
Si quelqu'un pouvait jeter un coup d'oeil et me dire ce qui ne va pas et comment bien écrire.
Le programme est bien indenté mais lors de la previsualisation et de la validation, l'indentation a disparu.
//méthode CompteBancaire rechercherCompte(int numero) qui recherche un compte par son numéro et retourne celui-ci s'il est dans la liste des comptes ou null dans le cas contraire
char * rechercheCompte(int numero){
int i;
if (taille=0)
printf( "Pas de compte ouvert.");
else {
for (i=0; i < taille_courante; i++)
if (c[i].numero == num)
return "c[i].number";
}
if (i > taille_courante)
return "null";
}
//une méthode afficherTous() pour afficher convenablement la liste des comptes
void afficherTous(){
int i;
printf ("Affichage de tous les comptes:\n");
for (i=0; i < taille_courante; i++){
printf ("\nInformation compte %d", i);
printf ("\nProprietaire: %s", c[i].nom);
printf ("\nAdresse: %s", c[i].adresse);
printf ("\nNumero de compte: %d", c[i].numero);
printf ("\nSolde du compte: %d\n", c[i].solde);
}
}
void debiterCompte(int montant){
int solde;
printf ("Veillez saisir le montant a debiter: ");
scanf ("%d", &montant);
if (solde > montant){
solde = solde - montant;
printf("Votre solde est de %d FCFA.", solde);
}
else
printf("Votre solde est insuffisant pour effectuer cette operation");
}
void crediterCompte(int montant){
int solde=0;
printf ("Veillez saisir le montant a debiter: ");
scanf ("%d", &montant);
solde = solde + montant;
printf("Votre solde est de %d FCFA.", solde);
}
int main () {
int choix, num,solde=0,i,montant;
char nom[15], adresse[50];
printf("Donner le nombre total de comptes: ");
scanf("%d", &taille) ;
system("cls");
menu: printf("********************* Gestion de Comptes Bancaires **********************\n");
printf("** **");
printf("\n** 1. Ajouter un compte. **");
printf("\n** 2. Rechercher un compte. **");
printf("\n** 3. Afficher tous les comptes. **");
printf("\n** 4. Debiter un compte. **");
printf("\n** 5. Crediter un compte. **");
printf("\n** 6. Effectuer un virement. **");
printf("\n** 7. Quitter le programme. **");
printf("\n** **");
printf("\n*****************************************************************************\n");
do{
printf("\nVeuillez choisir une operation a effectuer: ");
scanf("%d", &choix);
}while(choix > 7 || choix < 0);
// Allocation dynamique de la mémoire
c = (CompteBancaires*)malloc(taille*sizeof(CompteBancaires)) ;
switch (choix)
{
case 1:
printf("\nDonner le nom du titulaire du compte: ");
scanf("%s", nom);
printf("\nDonner son adresse: ");
scanf("%s", adresse);
printf("\nDonner son numero de compte: ");
scanf("%d", &num);
printf("\nDonner le solde du compte: ");
scanf("%d", &solde);
ajouterCompte(nom, adresse, num, solde);
printf("\nUn compte a ete cree au nom de %s.\n", nom);
system("pause");
printf("\nAppuyer sur une touche pour continuer...\n");
system("cls");
goto menu;
break;
case 2:
printf ("\nDonner le numero du compte a rechercher: ");
scanf ("%d", &num);
printf("%d",rechercheCompte(num));
system("pause");
printf("\nAppuyer sur une touche pour continuer...\n");
system("cls");
goto menu;
break;
case 3:
afficherTous();
system("pause");
printf("\nAppuyer sur une touche pour continuer...\n");
system("cls");
goto menu;
break;
case 4:
printf("Choisissez le compte a debiter.");
scanf("%d", &montant);
debiterCompte(montant);
break;
case 5:
printf("Choisissez le compte a crediter.");
scanf("%d", &montant);
crediterCompte(montant);
break;
case 6:
printf("Virement compte a compte: \n");
printf("Choisissez le compte a debiter: ");
scanf("%d", &montant);
debiterCompte(montant);
printf("\nChoisissez le compte a crediter: ");
scanf("%d", &montant);
crediterCompte(montant);
system("pause");
break;
case 7:
printf("\nMerci Aurevoir et a bientot!\n");
system("exit");
break;
}
fiddy
Messages postés11069Date d'inscriptionsamedi 5 mai 2007StatutContributeurDernière intervention23 avril 20221 844 Modifié par fiddy le 1/07/2013 à 21:32
Bonjour,
Alors, déjà, je te conseille d'éviter les goto. Cela n'est vraiment pas terrible d'un point de vue algorithmique. Fais d'autres fonctions à la place. Ou un while. Bref, tu peux t'en passer facilement.
CompteBancaires * c;
//Methode ajouterCompte(CompteBancaire c) qui ajoute le compte cree dans le tableau des comptes
int taille_courante = 0,taille,num; Il vaut mieux éviter les variables globales. Très mauvaises habitudes.
Pour info, ajouterCompte() n'est pas une méthode mais une fonction. Les méthodes sont propres au paradigme objet.
char * rechercheCompte(int numero){
int i;
if (taille=0)
...
return "null"; Attention, taille=0 affecte taille à 0 et renvoie 0 (faux). Donc cette boucle n'a jamais lieu. L'opérateur de comparaison est ==. Ce qui donne if(taille==0)
Mets plutôt return NULL; (à la place de "null"). Ca sera mieux.
c = (CompteBancaires*)malloc(taille*sizeof(CompteBancaires)) ; Le cast est superflu.
Et enfin, main() renvoie un 0 : return 0.
Voilà pour les erreurs que j'ai vues rapidement. Si tu as toujours des erreurs, reposte ton code avec les corrections et poste-le entre deux balises "code" (bouton <> à droite du bouton "Souligné" (S)).
Cdlt,
1 juil. 2013 à 21:20
De plus, ça lui explique pas d'où viennent ces erreurs ^^.