j'ai un problème concernant un Mini projet en Langage C, j'arrive pas a terminé le programme, car je suis débutant en programmation
et j'espère que vous me donnez un coup de main
voici Le Mini Projet :)
GESTION d'UNE BANQUE
Soit les 2 structures suivantes :
* « Client » il contient les informations sur les clients.
o Id _client: entier.
o nom : chaîne de caractères.
o prénom : chaîne de caractères.
o profession : chaîne de caractères.
o Num_tel: chaîne de caractères.
o Date d'ouverture.
o Profession.
* « compte » il contient les informations sur les comptes des clients.
o Id_compte : entier.
o Id_client : entier.
o Solde de base : réel.
Travail à faire :
Réaliser les programmes menus suivants :
1. MENU GENERAL.
MENU GENERAL
A. Gestion des clients
B. Gestion des comptes
C. Gestion des opérations
D. Quitter
Id_client :
Nom :
Prenom :
Profession :
Num_tel :
Retour
Nom :
Prenom :
Profession :
Num_tel :
Retour
2. MENU GESTION DES CLIENTS
MENU GESTION DES CLIENTS
1. Ajout client
2. Modification
3. Suppression
4. Recherche
5. MENU GENERAL
supression se fait ==> 1.Un par un
2.Tout
la recherche se fait a partir de==> 1. Par id_client
2. Par nom
Id_compte : nouveau compte se fait a partir de id client et idcompte!
Id_client :
Solde de base :
Date d'ouverture :
3. MENU GESTION DES Comptes :
MENU GESTION DES COMPTES
1. Nouveau compte
2. Consultation
3. Fermeture du compte
4. MENU GENERAL
et ça c'est un tableau que l'on doit afficher!
Id_client :
Id_compte| Nom & Prénom| Solde de base| Opérations effectuées/date
|
-
-
-
-
4. MENU GESTION DES OPERATIONS :
Id_compte :
Id_client :
Montant retiré :
MENU GESTION DES OPEARTIONS
1 .Retrait
2. Virement
3. MENU GENERAL
Id_compte :
Id_client :
Montant versé : le virement se fait à partir de ces 3 donnés
« Gestion des clients »
1) On ne peut pas ajouter un client qui existe déjà.
2) la Modification et la Suppression se font par id_client.
3) La suppression doit être confirmé (Supprimer O/N ?).
« Gestion des comptes»
1) On ne peut pas ajouter un compte qui existe déjà.
2) Un client peut avoir plusieurs comptes.
3) la fermeture du compte se fait par id_compte.
4) La suppression doit être confirmer (Supprimer O/N ?).
5) Le solde de base doit être supérieur à 1000DH.
case 3:
printf("Suppression");
// Suppression();
break;
case 4:
Recherche();
break;
case 5:
Menu();
break;
default : printf("le choix est incorrect ! ");
}while(choix!=5);
}
}
// *************** AJOUTER UN CLIENT ******************** //
void Ajout_client(client *T,int *n)
{
{
printf("Entrez l'identifiant du client : "); scanf("%d",&T[n].id_client);
fflush(stdin);
printf("Entrez le Nom du client : "); gets(T[n].nom);
fflush(stdin);
printf("Entrez le Prenom du client : "); gets(T[n].prenom);
fflush(stdin);
printf("Entrez la Profession du client : "); gets(T[n].profession);
fflush(stdin);
printf("Entrez la Num Tel du client : "); gets(T[n].num_tel);
}
n++;
Gestion_des_clients();
}
// **************** RECHERCHE UN CLIENT **************** //
int Recherche(client T[],int N,int x)
{
int i;
for(i=0;i<N;i++)
if(T[i].id_client==x)
return i;
return -1;
}
// ***************** MODIFIER UN CLIENT ****************** //
void Modification(client T[],int N)
{
int pos,x;
printf("entrez l'id client ! "); scanf("%d",&x);
pos=Recherche(T,N,x);
if(pos==-1)
printf("ID client incorrect !");
else
{
printf("Entrez Le Nom : "); fflush(stdin); gets(T[pos].nom);
printf("Entrez Le Prenom : "); fflush(stdin); gets(T[pos].prenom);
printf("Entrez La Profession : "); fflush(stdin); gets(T[pos].profession);
printf("Entrez Le Num Tel : "); fflush(stdin); gets(T[pos].num_tel);
}
Tu n'as pas posté la partie de ton code posant problème.
Sinon, ce code ne compile pas avec gcc, et renvoie déjà au moins les warnings et erreurs suivants :
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\CCM.o" "..\\src\\CCM.c"
..\src\CCM.c: In function 'Menu':
..\src\CCM.c:27:5: attention : implicit declaration of function 'clrscr' [-Wimplicit-function-declaration]
..\src\CCM.c:29:5: attention : implicit declaration of function 'gotoxy' [-Wimplicit-function-declaration]
..\src\CCM.c: In function 'Ajout_client':
..\src\CCM.c:133:23: erreur: l'indice du tableau n'est pas un entier
..\src\CCM.c:136:15: erreur: l'indice du tableau n'est pas un entier
..\src\CCM.c:139:15: erreur: l'indice du tableau n'est pas un entier
..\src\CCM.c:142:15: erreur: l'indice du tableau n'est pas un entier
..\src\CCM.c:145:15: erreur: l'indice du tableau n'est pas un entier
..\src\CCM.c: In function 'Recherche':
..\src\CCM.c:161:28: attention : comparaison entre un pointeur et un entier [enabled by default]
En dehors des warnings concernant clrscr et gotoxy (qui sont peut-être des fonctions définies dans ton conio.h, mais pas dans le mien), tu as quand même des erreurs qui devraient t'interpeller (quel est ton compilateur ?).
Voilà ce que tu fais :
Si le switch / case vaut 1, tu appelles Ajout_client(); (donc sans paramètres)
Cependant ton prototype pour cette fonction est : void Ajout_client(client *T, int *n)
C'est un peu embêtant...
Ensuite, dans ta fonction, la ligne suivante est, par exemple, au nombre de celles signalées en erreur : scanf("%d", &T[n].id_client);
C'est normal, car tu définis n dans ton prototype de fonction comme étant un pointeur sur un entier, et non un entier. Tu dois déréférencer le pointeur en faisant *n.
Ce n'est pas tout. T est un tableau, et une référence à un de ses éléments avec T[] est déjà un pointeur. Donc, je pense que tu n'as pas besoin d'un prototype void Ajout_client(client *T, int *n), mais plutôt void Ajout_client(client T[], int *n), et ton scanf devient :scanf("%d", T[*n].id_client);
De cette façon, les gets à la suite ont un sens aussi.
De même, un peu plus bas, je pense que tu voudras faire : *n = *n + 1; et non pas n++; (ce qui incrémenterai le pointeur et non la valeur pointée par le pointeur).
Dans ta fonction int Recherche(client T[], int N, int x), tu as une erreur de même type, cela devrait être : if ( *(T[i].id_client) == x)
vu que le membre de la structure id_client est un pointeur sur un entier et que tu le compares à x qui est un entier.
Ce n'est qu'une partie des erreurs (les plus visibles, signalées par le compilateur).
Tu devrais re-potasser tes pointeurs, et passer ton code sur un compilateur (un vrai, récent et conforme au standard ANSI du C dans lequel tu programmes) avec les warnings. Si tu peux, passe le aussi sur un outil comme Splint. Tu apprendras beaucoup, en comprenant les messages renvoyés et en réduisant Splint au silence en faisant ce que tu dois faire dans ton code pour cela.
(ou mieux, si tu es sous Linux, avec Valgrind qui analysera le code dynamiquement)
Autrement, il y a de nombreux autres problèmes, à commencer par l'absence de contrôle de la saisie.