From af59684e99ae54e5748e9ea0aa106b2dae047e3f Mon Sep 17 00:00:00 2001 From: "ange.bardet" Date: Wed, 18 Oct 2023 12:50:30 +0200 Subject: [PATCH] table article boss --- FICHIERANGE/Makefile | 2 + FICHIERANGE/ange.c | 195 +++++++++++++++++++++++++++++++++++++++ FICHIERANGE/ange.h | 9 ++ FICHIERANGE/articles.txt | 4 + FICHIERANGE/testange.c | 56 +++++++++++ 5 files changed, 266 insertions(+) create mode 100644 FICHIERANGE/Makefile create mode 100644 FICHIERANGE/ange.c create mode 100644 FICHIERANGE/ange.h create mode 100644 FICHIERANGE/articles.txt create mode 100644 FICHIERANGE/testange.c diff --git a/FICHIERANGE/Makefile b/FICHIERANGE/Makefile new file mode 100644 index 0000000..817e4ee --- /dev/null +++ b/FICHIERANGE/Makefile @@ -0,0 +1,2 @@ +final: + gcc *.c -o sae-S1.01 \ No newline at end of file diff --git a/FICHIERANGE/ange.c b/FICHIERANGE/ange.c new file mode 100644 index 0000000..c3f41a8 --- /dev/null +++ b/FICHIERANGE/ange.c @@ -0,0 +1,195 @@ +#include "ange.h" +#include +#include + +void AjoutArticle(void) +{ + int ref; + float poid,volume,prix; + FILE *flot; + flot = fopen("articles.txt","a"); + if (flot == NULL) + { + printf("Problème avec la création du fichier\n"); + exit(1); + } + printf("Saisir la référence de l'article (-1 pour arrêter): "); + scanf("%d",&ref); + while (ref < -1) + { + printf("Erreur ; Le numéro doit être positif (ou -1 pour arrêter); retapez : "); + scanf("%d",&ref); + } + while (ref >= 0) + { + printf("Saisir le poid(kg): "); + scanf("%f",&poid); + while (poid < 0) + { + printf("Erreur ; Le poid doit être positif ; retapez : "); + scanf("%f",&poid); + } + + printf("Saisir le volume: "); + scanf("%f",&volume); + while (volume < 0) + { + printf("Erreur ; Le volume doit être positif ; retapez : "); + scanf("%f",&volume); + } + + printf("Saisir le prix: "); + scanf("%f",&prix); + while (prix < 0) + { + printf("Erreur ; Le prix doit être positif ; retapez : "); + scanf("%f",&prix); + } + + fprintf(flot,"%d\t%.3f\t%.2f\t%.2f\n",ref,poid,volume,prix); + printf("Saisir la référence de l'article (-1 pour arrêter): "); + scanf("%d",&ref); + while (ref < -1) + { + printf("Erreur ; Le numéro doit être positif (ou -1 pour arrêter); retapez : "); + scanf("%d",&ref); + } + } + fclose(flot); + printf("Fin de l'ajout.\n"); +} + +int TableArticle(int Tref[], float Tpoid[],float Tvolume[],float Tprix[]) +{ + int ref,i=0; + float poid,volume,prix; + + FILE *flot; + flot = fopen("articles.txt","r"); + if (flot == NULL) + { + printf("Problème avec la lecture du fichier\n"); + exit(1); + } + + fscanf(flot,"%d %f %f %f",&ref,&poid,&volume,&prix); + while(feof(flot) == 0) + { + Tref[i] = ref; + Tpoid[i] = poid; + Tvolume[i] = volume; + Tprix[i] = prix; + i++; + fscanf(flot,"%d %f %f %f",&ref,&poid,&volume,&prix); + } + fclose(flot); + return i; +} + +void AffichTable(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n) +{ + int i; + printf("référence\tpoids(kg)\tvolume(l)\tprix Unitaire\n"); + for (i=0;i < n;i++) + { + printf("%d\t\t%.2f\t\t%.3f\t\t%.2f\n",Tref[i],Tpoid[i],Tvolume[i],Tprix[i]); + } +} + +void ModifArticle(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n) +{ + int refR; + printf("Saisir la référence de l'article a modifier: "); + scanf("%d",&refR); + while (refR < -1) + { + printf("Erreur ; Le numéro doit être positif; retapez : "); + scanf("%d",&refR); + } + int i; + for (i=0;i < n;i++) + { + if (Tref[i] == refR) + { + printf("Saisir le nouveau poid(kg): "); + scanf("%f",&Tpoid[i]); + while (Tpoid[i] < 0) + { + printf("Erreur ; Le poid doit être positif ; retapez : "); + scanf("%f",&Tpoid[i]); + } + + printf("Saisir le nouveau volume: "); + scanf("%f",&Tvolume[i]); + while (Tvolume[i] < 0) + { + printf("Erreur ; Le volume doit être positif ; retapez : "); + scanf("%f",&Tvolume[i]); + } + + printf("Saisir le nouveau prix: "); + scanf("%f",&Tprix[i]); + while (Tprix[i] < 0) + { + printf("Erreur ; Le prix doit être positif ; retapez : "); + scanf("%f",&Tprix[i]); + } + } + } +} + +void EcrireFichier(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n) +{ + FILE *flot; + flot = fopen("articles.txt","w"); + if (flot == NULL) + { + printf("Problème avec la création du fichier\n"); + exit(1); + } + int i; + for (i=0;i < n;i++) fprintf(flot,"%d\t%.2f\t%.3f\t%.2f\n",Tref[i],Tpoid[i],Tvolume[i],Tprix[i]); + fclose(flot); + printf("Fichier écrit.\n"); +} + +int posRef(int Tref[],int refR, int n) +{ + int i; + for (i=0;i < n;i++) + { + if (Tref[i] == refR) + return i; + } + return -1; +} + +int SupprArticle(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n) +{ + int refR,pos; + printf("Saisir la référence de l'article a supprimer: "); + scanf("%d",&refR); + while (refR < -1) + { + printf("Erreur ; Le numéro doit être positif; retapez : "); + scanf("%d",&refR); + } + pos = posRef(Tref,refR,n); + if (pos == -1) + { + printf("L'article n'existe pas dans la base de donnée."); + return n; + } + else + { + int i; + for (i=pos;i<=n;i++) + { + Tref[i] = Tref[i+1]; + Tpoid[i] = Tpoid[i+1]; + Tvolume[i] = Tvolume[i+1]; + Tprix[i] = Tprix[i+1]; + } + return n-=1; + } +} \ No newline at end of file diff --git a/FICHIERANGE/ange.h b/FICHIERANGE/ange.h new file mode 100644 index 0000000..aca2d41 --- /dev/null +++ b/FICHIERANGE/ange.h @@ -0,0 +1,9 @@ +#include + +void AjoutArticle(void); +void ModifArticle(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n); +int TableArticle(int Tref[], float Tpoid[],float Tvolume[],float Tprix[]); +void AffichTable(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n); +void EcrireFichier(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n); +int SupprArticle(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n); +int posRef(int Tref[],int refR, int n); diff --git a/FICHIERANGE/articles.txt b/FICHIERANGE/articles.txt new file mode 100644 index 0000000..3c7b3e5 --- /dev/null +++ b/FICHIERANGE/articles.txt @@ -0,0 +1,4 @@ +101 2.25 2.500 15.75 +233 10.00 15.000 32.00 +272 6.50 10.000 29.99 +66 33.00 11.000 22.00 diff --git a/FICHIERANGE/testange.c b/FICHIERANGE/testange.c new file mode 100644 index 0000000..016bf00 --- /dev/null +++ b/FICHIERANGE/testange.c @@ -0,0 +1,56 @@ +#include "ange.h" + +void testF(void) +{ + int n=0,rep; + int Tref[100]={0}; + float Tpoid[100]={0},Tvolume[100]={0},Tprix[100]={0}; + + printf("Bienvenue Mr. le directeur :)\n"); + n = TableArticle(Tref,Tpoid,Tvolume,Tprix); + + printf("Que voulez vous faire ? (afficher[0]/ajouter[1]/modifier[2]/supprimer[3]/quitter[-1]) "); + scanf("%d",&rep); + while (rep != -1) + { + while (rep < -1 && rep > 2) + { + printf("Erreur; (afficher[0]/ajouter[1]/modifier[2]/supprimer[3]/quitter[-1]) "); + scanf("%d",&rep); + } + if (rep == 0) + { + AffichTable(Tref,Tpoid,Tvolume,Tprix,n); + printf("\n"); + } + if (rep == 1) + { + AjoutArticle(); + n = TableArticle(Tref,Tpoid,Tvolume,Tprix); + printf("\n"); + } + if (rep == 2) + { + ModifArticle(Tref,Tpoid,Tvolume,Tprix,n); + printf("\n"); + } + if (rep == 3) + { + n = SupprArticle(Tref,Tpoid,Tvolume,Tprix,n); + printf("\n"); + } + printf("Que faire ? (afficher[0]/ajouter[1]/modifier[2]/supprimer[3]/quitter[-1]) "); + scanf("%d",&rep); + if (rep == -1) + { + EcrireFichier(Tref,Tpoid,Tvolume,Tprix,n); + printf("Au revoir !\n"); + } + + } +} +int main(void) +{ + testF(); + return 0; +}