From c2d1e3da99d7b3a2cb11d2fc7957a8d3655c0ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Math=C3=A9o=20Hersan?= Date: Tue, 7 Nov 2023 20:54:09 +0100 Subject: [PATCH] some funny modifications MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mathéo Hersan --- app | Bin 64264 -> 57536 bytes donnee/client.txt | 4 +- src/app/core_logic/client.c | 6 +- src/app/interface/interface_client.c | 82 ++++++++++++++------------- src/app/interface/interface_client.h | 2 +- 5 files changed, 48 insertions(+), 46 deletions(-) diff --git a/app b/app index f9cf9a939fd164ab8762249e948d9333957480d1..d77277aff8f113e51f3c53caa9bab8044022249b 100755 GIT binary patch literal 57536 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

Y^g$3s#l=rs6AoJ02%jpgQp^`c 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 chargeMaximale) { depassementCharge = poidsTotal - chargeMaximale; @@ -60,7 +60,7 @@ void ajouter_article_au_panier(int numClient, int tRef[], float tPoids[], float depassementBudget = montantTotal - budget; } - montantTotal = tPrixUnitaire[articleIndex] * quantite; + montantTotal = tPrixUnitaire[articleIndex] * (float)quantite; clientIndex = trouver_index_client(numClient, tNumClient, tLogClient); @@ -108,14 +108,14 @@ void supprimer_article_du_panier(int tPanier[], int tQuantite[], int *tLogPanier articleIndex = trouver_index_article(reference, tPanier, *tLogPanier); while (articleIndex == -1) { - printf("Article non trouvé dans le panier. Veuillez entrer une référence valide : "); + fprintf(stderr, "\x1B[31mERREUR : Article non trouvé dans le panier. Veuillez entrer une référence valide :\x1B[0m "); verifInt(&reference); articleIndex = trouver_index_article(reference, tPanier, *tLogPanier); } supprimer_article(tPanier, tQuantite, tLogPanier, reference, numClient, tNumClient, tLogClient, tRef, tPrixUnitaire, tCagnotte); - printf("Article supprimé du panier avec succès.\n"); + printf("\033[32mArticle supprimé du panier avec succès.\033[0m\n"); } @@ -127,12 +127,6 @@ void affiche_recap_panier(int tPanier[], int tLogPanier, int tRef[], float tPoid float poidsTotal = 0, volumeTotal = 0, montantTotal = 0, prixArticle = 0, poidsArticle = 0, volumeArticle = 0; char attentionDepassement[200] = ""; - printf("Contenu du panier : "); - for (int i = 0; i < tLogPanier; i++) { - printf("%d ", tPanier[i]); - } - printf("\n"); - printf("Récap :\n"); printf("Réf Qté Poids Vol PrixU PoidsTot VolTot PrixTot\n"); @@ -147,7 +141,7 @@ void affiche_recap_panier(int tPanier[], int tLogPanier, int tRef[], float tPoid printf("%d\t %d\t %.2f\t %.2f\t %.2f\t %.2f\t %.2f\t %.2f\n", reference, quantite, poidsArticle, volumeArticle, - prixArticle, poidsArticle * quantite, volumeArticle * quantite, prixArticle * quantite); + prixArticle, poidsArticle * (float)quantite, volumeArticle * (float)quantite, prixArticle * (float)quantite); poidsTotal += poidsArticle * (float)quantite; volumeTotal += volumeArticle * (float)quantite; @@ -181,12 +175,13 @@ void affiche_recap_panier(int tPanier[], int tLogPanier, int tRef[], float tPoid printf("Charge Actuelle: %.2f kg\n", poidsTotal); if (strlen(attentionDepassement) > 0) { - printf("Attention : %s", attentionDepassement); + printf("Attention : \n"); + printf("%s", attentionDepassement); } } void configurer_session_client(int tNumClient[], int tLogClient, double *budget, float *volumeCoffre, float *chargeMaximale, int *numClient) { - int indexClient, choixBudget = 0, choix; + int indexClient, choixBudget = 0; printf("Veuillez saisir votre numéro de client : "); verifInt(numClient); @@ -195,7 +190,7 @@ void configurer_session_client(int tNumClient[], int tLogClient, double *budget, indexClient = trouver_index_client(*numClient, tNumClient, tLogClient); while (indexClient == -1) { - printf("ERREUR : Veuillez entrer un numéro de client valide : "); + fprintf(stderr, "\x1B[31mERREUR : Veuillez entrer un numéro de client valide :\x1B[0m "); verifInt(numClient); indexClient = trouver_index_client(*numClient, tNumClient, tLogClient); } @@ -204,14 +199,14 @@ void configurer_session_client(int tNumClient[], int tLogClient, double *budget, printf("Voulez-vous définir un budget à ne pas dépasser ? (1 pour Oui, 0 pour Non) : "); while (scanf("%d", &choixBudget) != 1 || (choixBudget != 0 && choixBudget != 1)) { while (getchar() != '\n'); - printf("ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non : "); + fprintf(stderr, "\x1B[31mERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non :\x1B[0m "); } if (choixBudget == 1) { printf("Entrez le budget à ne pas dépasser : "); while (scanf("%lf", budget) != 1 || *budget <= 0) { while (getchar() != '\n'); - printf("ERREUR : Veuillez entrer un budget valide (nombre positif) : "); + fprintf(stderr, "\x1B[31mERREUR : Veuillez entrer un budget valide (nombre positif) :\x1B[0m "); } } @@ -233,7 +228,7 @@ void modifier_quantite_article_panier(int tPanier[], int tQuantite[], int *tLogP articleIndex = trouver_index_article(reference, tPanier, *tLogPanier); while (articleIndex == -1) { - printf("Article non trouvé dans le panier. Veuillez entrer une référence valide : "); + fprintf(stderr, "\x1B[31mERREUR : Article non trouvé dans le panier. Veuillez entrer une référence valide :\x1B[0m "); verifInt(&reference); articleIndex = trouver_index_article(reference, tPanier, *tLogPanier); } @@ -249,7 +244,7 @@ void modifier_quantite_article_panier(int tPanier[], int tQuantite[], int *tLogP tQuantite[articleIndex] = quantite; - printf("Quantité modifiée avec succès.\n"); + printf("\033[32mQuantité modifiée avec succès.\033[0m\n"); } void reinitialiser_panier(int tPanier[], int tQuantite[], int *tLogPanier, float tCagnotte[], int numClient, int tNumClient[], int tLogClient, int tRef[], float tPrixUnitaire[]) { @@ -257,26 +252,28 @@ void reinitialiser_panier(int tPanier[], int tQuantite[], int *tLogPanier, float supprimer_article(tPanier, tQuantite, tLogPanier, tPanier[i], numClient, tNumClient, tLogClient, tRef, tPrixUnitaire, tCagnotte); } *tLogPanier = 0; + printf("\033[32mLe panier a été réinitialisé avec succès.\033[0m\n"); } -void deduire_cagnotte(int numClient, float montant, int tNumClient[], float tCagnotte[], int tLogClient, int tSus[]) { +void deduire_cagnotte(int numClient, float montant, int tNumClient[], float tCagnotte[], int tLogClient) { int clientIndex; clientIndex = trouver_index_client(numClient, tNumClient, tLogClient); if (clientIndex == -1) { - printf("Client non trouvé. Impossible de déduire la cagnotte.\n"); + fprintf(stderr, "\x1B[31mERREUR : Client non trouvé. Impossible de déduire la cagnotte.\x1B[0m\n "); return; } if (tCagnotte[clientIndex] < montant) { - printf("Cagnotte insuffisante. Impossible de déduire la cagnotte.\n"); + fprintf(stderr, "\x1B[31mERREUR : Cagnotte insuffisante. Impossible de déduire la cagnotte.\x1B[0m\n "); return; } tCagnotte[clientIndex] -= montant; - printf("Montant déduit de la cagnotte avec succès.\n"); + printf("\033[32mMontant déduit de la cagnotte avec succès.\033[0m\n"); + printf("Il vous reste %.2f euros dans votre cagnotte.\n", tCagnotte[clientIndex]); } void quitter_application(int tPanier[], int tLogPanier, int tRef[], float tPoid[], float tVol[], @@ -294,7 +291,7 @@ void quitter_application(int tPanier[], int tLogPanier, int tRef[], float tPoid[ prixArticle = tPrixUnitaire[articleIndex]; quantite = tQuantite[i]; - montantTotal += prixArticle * quantite; + montantTotal += prixArticle * (float)quantite; if (budget > 0 && montantTotal > budget) { depassement = montantTotal - budget; @@ -312,7 +309,14 @@ void quitter_application(int tPanier[], int tLogPanier, int tRef[], float tPoid[ printf("Budget : %.2f euros\n", budget); } - if(tSus[clientIndex] == 1) { + if(tSus[clientIndex] == 1 && budget > 0 && montantTotal > budget) { + printf("Attention : %s", attentionDepassement); + printf("Vous ne pourrez pas payer. De plus vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu.\n"); + printf("Payement non effectué.\n"); + return; + } + + if(tSus[clientIndex] == 1 && budget > 0 && montantTotal < budget) { printf("Vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu.\n"); return; } @@ -324,17 +328,15 @@ void quitter_application(int tPanier[], int tLogPanier, int tRef[], float tPoid[ if (budget > 0 && montantTotal > budget && tCagnotte[clientIndex] < (montantTotal - budget)) { printf("Attention : %s", attentionDepassement); printf("Vous ne pourrez pas payer. De plus vous n'avez pas assez dans votre cagnotte pour la déduire et payer\n"); - printf("Montant de votre cagnotte %.2f\n", tCagnotte[clientIndex]); } if (budget > 0 && montantTotal > budget && montantTotal < budget + tCagnotte[clientIndex]) { printf("Attention : %s", attentionDepassement); - printf("Vous ne pourrez pas payer, mais vous avez suffisamment dans votre cagnotte pour payer.\n"); - printf("Montant de votre cagnotte %.2f\n", tCagnotte[clientIndex]); + printf("Vous ne pourrez pas payer, mais vous avez suffisamment dans votre cagnotte pour déduire le prix.\n"); printf("Voulez-vous déduire de votre cagnotte avant de quitter ? (1 pour Oui, 0 pour Non) : "); while (scanf("%d", &choixCagnotte) != 1 || (choixCagnotte != 0 && choixCagnotte != 1)) { while (getchar() != '\n'); - printf("ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non : "); + fprintf(stderr, "\x1B[31mERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non :\x1B[0m "); } if (choixCagnotte == 1) { @@ -342,28 +344,29 @@ void quitter_application(int tPanier[], int tLogPanier, int tRef[], float tPoid[ verifFloat(&montantDeduction); while (montantDeduction < (montantTotal - budget)) { - printf("ERREUR : Vous devez déduire suffisamment pour payer l'intégralité du montant dû.\n"); + fprintf(stderr, "\x1B[31mERREUR : Vous devez déduire suffisamment pour payer l'intégralité du montant dû.\x1B[0m\n"); printf("Montant minimum à déduire pour payer : %.2f\n", montantTotal - budget); printf("Entrez le montant à déduire de votre cagnotte : "); verifFloat(&montantDeduction); } - - deduire_cagnotte(numClient, montantDeduction, tNumClient, tCagnotte, tLogClient, tSus); - printf("Il vous reste %.2f euros dans votre cagnotte.\n", tCagnotte[clientIndex]); + deduire_cagnotte(numClient, montantDeduction, tNumClient, tCagnotte, tLogClient); + return; + } else { + printf("Payement non effectué.\n"); + return; } } printf("Voulez-vous déduire de votre cagnotte avant de quitter ? (1 pour Oui, 0 pour Non) : "); while (scanf("%d", &choixCagnotte) != 1 || (choixCagnotte != 0 && choixCagnotte != 1)) { while (getchar() != '\n'); - printf("ERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non : "); + fprintf(stderr, "\x1B[31mERREUR : Veuillez entrer 1 pour Oui ou 0 pour Non :\x1B[0m "); } if (choixCagnotte == 1) { printf("Entrez le montant à déduire de votre cagnotte : "); verifFloat(&montantDeduction); - deduire_cagnotte(numClient, montantDeduction, tNumClient, tCagnotte, tLogClient, tSus); - printf("Il vous reste %.2f euros dans votre cagnotte.\n", tCagnotte[clientIndex]); + deduire_cagnotte(numClient, montantDeduction, tNumClient, tCagnotte, tLogClient); } } @@ -372,7 +375,7 @@ void menu_client(int *choix) { printf("Vous choisissez: "); while (scanf("%d", choix) != 1 || *choix < 0 || *choix > 9 || (*choix > 6 && *choix < 9)) { while (getchar() != '\n'); - printf("ERREUR : Veuillez entrer un choix valide : "); + fprintf(stderr, "\x1B[31mERREUR : Veuillez entrer un choix valide :\x1B[0m "); } } @@ -414,7 +417,6 @@ void global_client(void) { break; case 6: reinitialiser_panier(tPanier, tQuantite, &tLogPanier, tCagnotte, numClient, tNumClient, tLogClient, tRef, tPrixUnitaire); - printf("Le panier a été réinitialisé.\n"); break; case 9: quitter_application(tPanier, tLogPanier, tRef, tPoids, tVol, tPrixUnitaire, tQuantite, tCagnotte, numClient, tNumClient, tLogClient, budget, tSus); diff --git a/src/app/interface/interface_client.h b/src/app/interface/interface_client.h index c603dce..ae2f2cf 100644 --- a/src/app/interface/interface_client.h +++ b/src/app/interface/interface_client.h @@ -134,7 +134,7 @@ void reinitialiser_panier(int tPanier[], int tQuantite[], int *tLogPanier, float * @param tLogClient - Le nombre total de clients. * @param tSus - Un tableau d'état des clients suspendus. */ -void deduire_cagnotte(int numClient, float montant, int tNumClient[], float tCagnotte[], int tLogClient, int tSus[]); +void deduire_cagnotte(int numClient, float montant, int tNumClient[], float tCagnotte[], int tLogClient); /** * @brief Quitter l'application client.