Urgent mini-projet de gestion des clients
Ammy-Driss
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
j'ai fait un mini-projet de la gestion des clients-produits-factures mais apres l'execution du programme!!!
Il m'affiche le programme a cessé de fonctionner :
voila mon programme!!
EDIT: Ajout de la coloration syntaxique.
Il m'affiche le programme a cessé de fonctionner :
voila mon programme!!
#include <stdio.h> #include <stdlib.h> #include <string.h> // client*************// void saisie_un_client(){ int num; char nom; char adresse; FILE *f; printf("\n"); printf("***************** << Saisir les informations de votre client >> *************** \n"); printf(" >> Numero de client : "); scanf("%d",&num); printf(" >> Nom : "); scanf("%s",&nom); printf(" >> Adresse : "); scanf("%s",&adresse); f=fopen("information_client.txt","w"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); } fprintf(f,"%d\t%s\t%s\n",num,nom,adresse); fclose(f); system("cls"); } void saisir_plusieur_clients(){ int nb,i; int num; char nom; char adresse; FILE *f; printf(" \n==>> Entrer le nombre des clients que vous voullez saisie : "); scanf("%d",&nb); printf("\n"); for(i=1;i<=nb;i++){ printf("\n--------------- Saisir les informations du client numero [%d] --------------\n",i); printf(" >> Numero d'inscription : "); scanf("%d",&num); printf(" >> Nom : "); scanf("%s",&nom); printf(" >> Adresse : "); scanf("%s",&adresse); i++; f=fopen("information_client.txt","a+"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); } fprintf(f,"%d\t%s\t%s\n",num,nom,adresse); i++; fclose(f); } system("cls"); } void afficher_les_clients(){ int num; char nom; char adresse; FILE *f; int i=0; printf("\n\n"); f=fopen("information_client.txt","r"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); }while(!feof(f)){ printf(" ===========================================================================\n"); fscanf(f,"%d\t%s\t%s\n",&num,&nom,&adresse); printf(" Le client Num: %d Nom: %s adresse: %s \n",num,nom,adresse); } printf(" ==========================================================================="); printf(" \n\n\n\n\n\n Cliquer sur ENTRER pour retour OK"); system("PAUSE>null"); system("cls"); fclose(f); } // produit*************// struct produit{ int ref; char libelle; float prix_HT; float TVA; float prix_TTC; }; void saisie_un_produit(){ int ref; char libelle; float prix_HT; float TVA; float prix_TTC; FILE *f; printf("\n"); printf("***************** << Saisir les informations de votre produit >> *************** \n"); printf(" >> reference du produit : "); scanf("%d",&ref); printf(" >> libelle : "); scanf("%s",&libelle); printf(" >> prix_HT : "); scanf("%f",&prix_HT); printf(" >> TVA : "); scanf("%f",&TVA); printf(" >> prix_TTC : "); scanf("%f",&prix_TTC); f=fopen("information_produit.txt","a+"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); } fprintf(f,"%d\t%s\t%f\t%f\t%f\n",ref,libelle,prix_HT,TVA,prix_TTC); fclose(f); system("cls"); } void saisir_plusieur_produits(){ int ref; char libelle; float prix_HT; float TVA; float prix_TTC; FILE *f; int nb,i; int n=0; printf(" \n==>> Entrer le nombre des produits que vous voullez saisie : "); scanf("%d",&nb); printf("\n"); for(i=1;i<=nb;i++){ printf("\n--------------- Saisir les informations du produit numero [%d] --------------\n",n+1); printf(" >> ref : "); scanf("%d",&ref); printf(" >> libelle : "); scanf("%s",&libelle); printf(" >> prix_HT : "); scanf("%f",&prix_HT); printf(" >> TVA : "); scanf("%f",&TVA); printf(" >> prix_TTC : "); scanf("%f",&prix_TTC); printf("\n"); i++; n++; f=fopen("information_produit.txt","a+"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); } fprintf(f,"%d\t%s\t%f\t%f\t%f\n",ref,libelle,prix_HT,TVA,prix_TTC); i++; n=n+1; fclose(f); } system("cls"); } void afficher_les_produits(){ int ref; char libelle; float prix_HT; float TVA; float prix_TTC; FILE *f; printf("\n\n"); f=fopen("information_produit.txt","r"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); }while(!feof(f)){ printf(" ===========================================================================\n"); fscanf(f,"%d\t%s\t%f\t%f\t%f\n",&ref,&libelle,&prix_HT,&TVA,&prix_TTC); printf(" Le produit::> ref: %d libelle: %s prix_HT: %.2f TVA: %.2f prix_TTC: %.2f \n", ref,libelle,prix_HT,TVA,prix_TTC); } printf(" ==========================================================================="); printf(" \n\n\n\n\n\n Cliquer sur ENTRER pour retour OK"); system("PAUSE>null"); system("cls"); fclose(f); } void s_facture(){ int num_fact; int date; FILE *f; printf("\n"); printf("***************** << Saisir le numero et la date de la facture:: >> *************** \n"); printf(" >> Le numero de la facture:: "); scanf("%d",&num_fact); printf(" >> La date : "); scanf("%s",&date); f=fopen("information_facture.txt","a+"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); } fprintf(f,"%d\t%d\n",num_fact,date); fclose(f); system("cls"); } void afficher_facture(){ int num_fact; int date; FILE *f; printf("\n\n"); f=fopen("information_facture.txt","r"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); }while(!feof(f)){ printf(" ===========================================================================\n"); fscanf(f,"%d\t%d\n",&num_fact,&date); printf(" La facture numero::::> %d La date: %d \n",num_fact,date); } fclose(f); system("cls"); } float calcul_TVA(float n){ float TVA; printf("Entrez le prix_HT:"); scanf("%f",&n); TVA=(n*0.2); return TVA; } void ligne_facture(){ char design; float prix_HT; float qte; float prix_TTC; int num_fact; int date; FILE *f; int n; printf("\n"); printf("***************** << Saisir les informations de la facture:: >> *************** \n"); printf(" >> Le numero de la facture:: "); scanf("%d",&num_fact); printf(" >> La date : "); scanf("%d",&date); printf(" >> Design::: "); scanf("%s",&design); printf(" >> prix_HT : "); scanf("%f",&prix_HT); printf(" >> La quantité : "); scanf("%f",&qte); printf(" >> TVA : "); printf("la valeur du TVA est : %f",calcul_TVA(n)); printf("\n"); f=fopen("information_facture_ligne.txt","a+"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); } fprintf(f,"%d\t%d\t%s\t%f\t%f\t%f\n",num_fact,date,design,prix_HT,qte,calcul_TVA(n)); fclose(f); system("cls"); } void afficher_facture_ligne(){ char design; float prix_HT; float qte; float prix_TTC; int num_fact; int date; FILE *f; int n; printf("\n\n"); f=fopen("information_facture.txt","r"); if(f==NULL){ printf("erreur d'ouverture de fichier"); exit(-1); }while(!feof(f)){ printf(" ===========================================================================\n"); fscanf(f,"%d\t%d\t%s\t%f\t%f\t%f\n",&num_fact,&date,&design,&prix_HT,&qte,calcul_TVA(n)); printf(" La facture numero::::> %d \n La date: %d \n Design: %s \n Le prix_HT: %f \n La quantité: %f \n TVA: %f \n",num_fact,date,design,prix_HT,qte,calcul_TVA(n)); } fclose(f); system("cls"); } void quitter(){ system("cls"); printf("\n\n\n\n\n\n\n\n\n------------------------------------FIN----------------------------------------\n"); printf("\n-----------------------------------MERCI----------------------------------------"); } int main(int argc, char *argv[]) { system("color f0"); int choix; do{ printf("\n************************ << Gestion des clients et factures >> *************************\n\n"); printf(" |====|=============================================================| \n"); printf(" | | ====> 1. Saisir un client. | \n"); printf(" | | ====> 2. Saisir plusiurs clients. | \n"); printf(" | | ====> 3. Afficher la list des clients. | \n"); printf(" | M | ====> 4. Saisir un produit. | \n"); printf(" | | ====> 5. Saisir plusieurs produits. | \n"); printf(" | E | ====> 6. Affichier les produits. | \n"); printf(" | | ====> 7. Saisir les informations de la facture:. | \n"); printf(" | N | ====> 8. Afficher les informations de la facture. | \n"); printf(" | | ====> 9. Saisir les informations de la ligne facture. | \n"); printf(" | U | ====> 10. afficher les informations de la ligne facture. | \n"); printf(" | | ====> 0. Quitter. |\n"); printf(" |====|=============================================================| \n"); printf("\n >> Entrez votre choix :"); scanf("%d",&choix); printf("\n\n"); switch(choix){ case 1: system("cls");saisie_un_client(); break; case 2: system("cls");saisir_plusieur_clients();break; case 3: system("cls");afficher_les_clients();break; case 4: system("cls");saisie_un_produit();break; case 5: system("cls");saisir_plusieur_produits();break; case 6: system("cls");afficher_les_produits();break; case 7: system("cls");s_facture();break; case 8: system("cls");afficher_facture();break; case 9: system("cls");ligne_facture();break; case 10:system("cls");afficher_facture_ligne();break; case 0:system("cls");quitter();break; default:system("cls");printf("\n\n\n >>>>>> votre choix n'est pas valide !!! <<<<<<\n\n\n\n"); } }while(choix!=0); system("PAUSE>null"); return 0; }
EDIT: Ajout de la coloration syntaxique.
A voir également:
- Urgent mini-projet de gestion des clients
- Opera mini pc - Télécharger - Navigateurs
- Pourquoi sfr perd des clients - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Filigrane projet - Guide
1 réponse
Salut Ammy-Driss,
réserve la mémoire nécessaire au stockage d'un char, c'est à dire un seul caractère.
cette instruction va stocker à l'adresse de
Si tu veux pouvoir stocker dans nom des chaînes de caractères de 50 lettres, par exemple, tu dois réserver de la place pour 51 chars (50 + le caractère de fin de chaîne '\0') et définir nom comme
https://openclassrooms.com/courses/la-saisie-securisee-avec-scanf
Je n'ai pas regardé le reste, à vrai dire, cela fait un peu peur.
A titre d'exemple, lorsque tu saisis un client, tu écrases le fichier client.
En passant, si tu compiles avec les Warnings, tu as quand même des trucs qui sautent aux yeux.
Dal
N.B., quand tu postes du code sur le forum, utilise les balises code, autrement c'est illisible.
char nom;
réserve la mémoire nécessaire au stockage d'un char, c'est à dire un seul caractère.
scanf("%s",&nom);
cette instruction va stocker à l'adresse de
nomla série de caractères récupérés de stdin, et va donc écrire en mémoire au-delà de la mémoire réservée disponible à cette variable.
Si tu veux pouvoir stocker dans nom des chaînes de caractères de 50 lettres, par exemple, tu dois réserver de la place pour 51 chars (50 + le caractère de fin de chaîne '\0') et définir nom comme
char nom[51];ou comme
char * nomet allouer la mémoire avec
malloc(et la libérer avec
free). Tu devrais aussi veiller à ce que le texte entré ne dépasse pas la limite de mémoire allouée.
https://openclassrooms.com/courses/la-saisie-securisee-avec-scanf
Je n'ai pas regardé le reste, à vrai dire, cela fait un peu peur.
A titre d'exemple, lorsque tu saisis un client, tu écrases le fichier client.
En passant, si tu compiles avec les Warnings, tu as quand même des trucs qui sautent aux yeux.
$ gcc -Wall ammy-driss.c
ammy-driss.c: In function `saisie_un_client':
ammy-driss.c:26:2: warning: format `%s' expects argument of type `char *', but argument 4 has type `int' [-Wformat=]
fprintf(f,"%d\t%s\t%s\n",num,nom,adresse);
^
ammy-driss.c:26:2: warning: format `%s' expects argument of type `char *', but argument 5 has type `int' [-Wformat=]
ammy-driss.c: In function `saisir_plusieur_clients':
ammy-driss.c:62:3: warning: format `%s' expects argument of type `char *', but argument 4 has type `int' [-Wformat=]
fprintf(f,"%d\t%s\t%s\n",num,nom,adresse);
^
ammy-driss.c:62:3: warning: format `%s' expects argument of type `char *', but argument 5 has type `int' [-Wformat=]
ammy-driss.c: In function `afficher_les_clients':
ammy-driss.c:85:3: warning: format `%s' expects argument of type `char *', but argument 3 has type `int' [-Wformat=]
printf(" Le client Num: %d Nom: %s adresse: %s \n",num,nom,adresse);
^
etc.
Dal
N.B., quand tu postes du code sur le forum, utilise les balises code, autrement c'est illisible.