diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..70e34ec --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.errorSquiggles": "disabled" +} \ No newline at end of file diff --git a/app b/app index fd5f53a..12c9f3b 100755 Binary files a/app and b/app differ diff --git a/donnee/client.txt b/donnee/client.txt index a941733..f4ea830 100644 --- a/donnee/client.txt +++ b/donnee/client.txt @@ -1,3 +1,4 @@ 32 0.00 1 660 68.00 0 5079 75.50 0 +53 0.00 0 diff --git a/donnee/mdp.txt b/donnee/mdp.txt index 3d7ac61..83d37f7 100644 --- a/donnee/mdp.txt +++ b/donnee/mdp.txt @@ -1 +1 @@ -yescdsds 10 \ No newline at end of file +flz 17 \ No newline at end of file diff --git a/donnee/promotion.txt b/donnee/promotion.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/app/core_logic/responsable.c b/src/app/core_logic/responsable.c index e2d6cf7..18afcc6 100644 --- a/src/app/core_logic/responsable.c +++ b/src/app/core_logic/responsable.c @@ -9,21 +9,8 @@ #include "responsable.h" #include "../interface/interface_resp.h" -#define MAX_SIZE_MDP 20 +#define MAX_SIZE_MDP 21 -/** - * @brief Charge les informations des articles à partir d'un fichier dans des tableaux. - * - * Cette fonction lit les informations des articles à partir du fichier "donnee/articles.txt" et les stocke - * dans les tableaux tRef, tPoids, tVol, et tPrix. - * - * @param tRef Tableau des références d'articles. - * @param tPoids Tableau des poids des articles. - * @param tVol Tableau des volumes des articles. - * @param tPrix Tableau des prix unitaires des articles. - * @param tPhysique Taille physique des tableaux. - * @return Le nombre d'articles chargés avec succès ou -1 en cas d'erreur. - */ int chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique) { int i=0, ref; @@ -50,18 +37,6 @@ int chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], return i; } -/** - * @brief Sauvegarde les informations des articles dans un fichier. - * - * Cette fonction sauvegarde les informations des articles depuis les tableaux tRef, tPoids, tVol et tPrix - * dans le fichier "donnee/articles.txt". - * - * @param tRef Tableau des références d'articles. - * @param tPoids Tableau des poids des articles. - * @param tVol Tableau des volumes des articles. - * @param tPrix Tableau des prix unitaires des articles. - * @param tLogique Taille logique des tableaux. - */ void sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique) { int i; @@ -80,27 +55,10 @@ void sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], fclose(fe); } -/** - * @brief Ajoute un nouvel article aux tableaux d'articles. - * - * Cette fonction ajoute un nouvel article aux tableaux tRef, tPoids, tVol, et tPrix et incrémente la taille logique. - * - * @param tRef Tableau des références d'articles. - * @param tPoids Tableau des poids des articles. - * @param tVol Tableau des volumes des articles. - * @param tPrix Tableau des prix unitaires des articles. - * @param tLogique Taille logique des tableaux. - * @param tPhysique Taille physique des tableaux. - * @param ref Référence du nouvel article. - * @param poids Poids du nouvel article. - * @param volume Volume du nouvel article. - * @param prix Prix unitaire du nouvel article. - * @return 0 en cas de succès, -2 si le tableau est plein. - */ int ajouterArticle( int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix) { int i = *tLogique; - affichAjoutArticle(&ref, &poids, &volume, &prix); + affichAjoutArticle(&ref, &poids, &volume, &prix, tRef, *tLogique); if ( *tLogique == tPhysique) { fprintf(stderr,"Tableau plein !"); @@ -122,16 +80,6 @@ int ajouterArticle( int tRef[], float tPoids[], float tVol[], float tPrix[], int return 0; } -/** - * @brief Recherche une référence d'article dans le tableau tRef. - * - * Cette fonction recherche une référence d'article dans le tableau tRef et renvoie l'index si l'article est trouvé. - * - * @param tRef Tableau des références d'articles. - * @param ref Référence de l'article à rechercher. - * @param index Pointeur vers la variable pour stocker l'index de l'article trouvé. - * @param tLogique Taille logique des tableaux. - */ void rechercheRefArticle(int tRef[], int ref, int *index, int tLogique) { for (int i = 0; i - /** * @brief Charge les informations des articles à partir d'un fichier dans des tableaux. * @author Yannis Doumir Fernandes diff --git a/src/app/interface/interface_resp.c b/src/app/interface/interface_resp.c index a5f3ee9..762513d 100644 --- a/src/app/interface/interface_resp.c +++ b/src/app/interface/interface_resp.c @@ -8,7 +8,7 @@ #define MAX_CLIENTS 100 #define MAX_ARTICLES 100 -#define MAX_SIZE_MDP 20 +#define MAX_SIZE_MDP 21 #define MENU_QUIT 12 @@ -51,9 +51,10 @@ void affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], in printf("\tEntrez une référence valide\n"); while (getchar() != '\n'); } - printf("\t Ref\t Poids\t Volume\t Prix\n"); + for (int i = 0; i < tLogique; ++i) { if (ref == tRef[i]) { + printf("\t Ref\t Poids\t Volume\t Prix\n"); printf("\t %d\t %.2f\t %.2f\t %.2f\n\n", tRef[i], tPoids[i], tVol[i], tPrix[i]); return; } @@ -69,14 +70,14 @@ void affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogiqu printf("\t Veuillez entrez un numéro valide !\n"); while (getchar() != '\n'); } - printf("\t NumClient\t Cagnotte\t Etat\n"); for (int i = 0; i < tLogique; ++i) { if (numC == tNumClient[i]) { - printf("\t %d\t\t %.2f\t %d\n\n", tNumClient[i], tCagnotte[i], tSus[i]); + printf("\t NumClient\t Cagnotte\t Etat\n"); + printf("\t %d\t\t %.2f\t\t %d\n\n", tNumClient[i], tCagnotte[i], tSus[i]); return; } } - printf("Client introuvable\n"); + printf("\t Client introuvable\n"); } void affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique) { @@ -88,7 +89,7 @@ void affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique printf("\t Fin de la liste !\n"); } -void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix) { +void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix, int tRef[], int tLogArticle) { printf("\t Entrez la ref du nouveau produit\n"); while (scanf("%d", ref) != 1 || *ref <= 0) { @@ -96,23 +97,35 @@ void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix) { while (getchar() != '\n'); } - printf("\t Entrez le poids du nouveau produit\n"); - while (scanf("%f", poids) != 1 || *poids <= 0) { - printf("\t Veuillez entrer un poids valide.\n"); - while (getchar() != '\n'); + if ( trouver_index_article(*ref, tRef, tLogArticle) != -1) + { + return; } + else + { + printf("\t Entrez le poids du nouveau produit\n"); + while (scanf("%f", poids) != 1 || *poids <= 0) + { + printf("\t Veuillez entrer un poids valide.\n"); + while (getchar() != '\n'); + } printf("\t Entrez le volume du nouveau produit\n"); - while (scanf("%f", volume) != 1 || *volume <= 0) { - printf("\t Veuillez entrer un volume valide.\n"); - while (getchar() != '\n'); - } + while (scanf("%f", volume) != 1 || *volume <= 0) + { + printf("\t Veuillez entrer un volume valide.\n"); + while (getchar() != '\n'); + } printf("\t Entrez le prix du nouveau produit\n"); - while (scanf("%f", prix) != 1 || *prix <= 0) { - printf("\t Veuillez entrer un prix valide.\n"); - while (getchar() != '\n'); + while (scanf("%f", prix) != 1 || *prix <= 0) + { + printf("\t Veuillez entrer un prix valide.\n"); + while (getchar() != '\n'); + } } + + } void affichSupprimerArticle(int *ref) { @@ -194,9 +207,13 @@ void affichModifClient(int tNumClient[], int tSus[], int tLogique) { int choix, numC; printf("\tEntrez le numéro du client : "); - scanf("%d", &numC); + while( scanf("%d", &numC) != 1 || numC <=0 ) + { + printf("\t Entrez une valeur valide ! \n"); + while (getchar() != '\n'); + } - for ( int i = 0; i < tLogique; ++i) + for ( int i = 0; i <= tLogique; i++) { if ( numC == tNumClient[i] ) { @@ -206,6 +223,7 @@ void affichModifClient(int tNumClient[], int tSus[], int tLogique) while(scanf("%d", &choix) != 1 || choix < 0 || choix > 1) { printf("\t Veuillez entrer un choix valide ! \n"); + while (getchar() != '\n'); } if ( choix == 0 ) { @@ -225,6 +243,7 @@ void affichModifClient(int tNumClient[], int tSus[], int tLogique) while(scanf("%d", &choix) != 1 || choix < 0 || choix > 1) { printf("\t Veuillez entrer un choix valide ! \n"); + while (getchar() != '\n'); } if ( choix == 0 ) { @@ -239,9 +258,9 @@ void affichModifClient(int tNumClient[], int tSus[], int tLogique) } } } - printf("\t Le client %d n'a pas été trouvé. \n", numC); - return; } + printf("\t Le client %d n'a pas été trouvé. \n", numC); + return; } @@ -249,7 +268,12 @@ void suppressionClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLo { int choix, numC; printf("\tEntrez le numéro du client : "); - scanf("%d", &numC); + while( scanf("%d", &numC) != 1 || numC <=0 ) + { + printf("\t Entrez une valeur valide ! \n"); + while (getchar() != '\n'); + } + for ( int i = 0; i < *tLogique; ++i) { @@ -262,11 +286,12 @@ void suppressionClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLo } if ( choix == 0 ) { - for ( int j = i; j < *tLogique-1; j++) + while ( i < *tLogique-1 ) { - tNumClient[j] = tNumClient[j+1]; - tCagnotte[j] = tCagnotte[j+1]; - tSus[j] = tSus[j+1]; + tNumClient[i] = tNumClient[i+1]; + tCagnotte[i] = tCagnotte[i+1]; + tSus[i] = tSus[i+1]; + i++; } printf("Le client %d a été supprimé.\n", tNumClient[i]); (*tLogique)--; @@ -283,7 +308,7 @@ void suppressionClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLo return; } -void affichModifMDP() +void affichModifMDP(void) { int choix, decalage; char newMDP[MAX_SIZE_MDP], confirmMDP[MAX_SIZE_MDP]; @@ -292,6 +317,7 @@ void affichModifMDP() while (scanf("%d", &choix) !=1 || choix < 0 || choix > 1) { printf("/!/ Entrez une valeur valide /!/"); + while (getchar() != '\n'); } if ( choix == 1 ) { @@ -300,20 +326,34 @@ void affichModifMDP() } else { - printf("Veuillez entrer le nouveau mot de passe.\n\n\tMAXIXMUM 20 CARACTERES ET SEULEMENT DES LETTRES\n"); + printf("Veuillez entrer le nouveau mot de passe.\n\n\tMAXIXMUM 20 CARACTERES ET SEULEMENT DES LETTRES\n\t"); while (scanf("%s", newMDP) != 1) { printf("Veuillez recommencer la saisie : "); + while (getchar() != '\n'); + } + + for ( int verif = 0; newMDP[verif] != '\0'; verif++) + { + if ( verif > 20 ) + { + printf("\t /!/ Mot de passe trop long /!/ \n"); + return; + } } - printf("Veuillez entrer à nouveau le mot de passe.\n"); + + printf("Veuillez entrer à nouveau le mot de passe.\n\t"); while (scanf("%s", confirmMDP) != 1) { printf("Veuillez recommencer la saisie : "); + while (getchar() != '\n'); } + printf("\t Veuillez entrer le nouveau décalage\n"); while (scanf("%d", &decalage) != 1 || decalage < 0) { printf("\t Veuillez entrer un nombre valide : "); + while (getchar() != '\n'); } int verif = verifModifMDP(newMDP, confirmMDP, decalage); if ( verif == 0 ) @@ -328,6 +368,18 @@ void affichModifMDP() } } } +/* +void appliquerReduc( int tRefProm[], int tReduc[], int *tLogReduc, int tPhysiqueReduc) +{ + int i, ref; + printf("\tA quel article voulez-vous ajouter une promotion ?\n"); + while (scanf("%d", &ref) !=1 || ref < 0) + { + fprintf("\t Entrez une référence correcte !\n"); + } + if () +} +*/ void menu_resp(int *choix) { affiche_resp(); @@ -339,7 +391,7 @@ void menu_resp(int *choix) { } } -void global_resp() { +void global_resp(void) { int choix, ref = 0; float poids = 0, volume = 0, prix = 0; int tRef[MAX_ARTICLES]; @@ -352,6 +404,7 @@ void global_resp() { int tLogArticle = chargementArticles(tRef, tPoids, tVol, tPrix, MAX_ARTICLES); int tLogClient = charger_clients(tNumClient, tCagnotte, tSus, MAX_CLIENTS); + // system("clear"); do { menu_resp(&choix); switch (choix) { diff --git a/src/app/interface/interface_resp.h b/src/app/interface/interface_resp.h index d96c486..05cd078 100644 --- a/src/app/interface/interface_resp.h +++ b/src/app/interface/interface_resp.h @@ -6,6 +6,7 @@ /** * @brief Affiche la liste des articles. * @author Yannis Doumir Fernandes + * * @param tRef - Tableau des références des articles. * @param tPoids - Tableau des poids des articles. * @param tVol - Tableau des volumes des articles. @@ -56,8 +57,10 @@ void affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique * @param poids - Poids du nouvel article. * @param volume - Volume du nouvel article. * @param prix - Prix du nouvel article. + * @param tRef - Tableau de référence des articles. + * @param tLogArticle - Taille logique du tableau des références. */ -void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix); +void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix, int tRef[], int tLogArticle); /** * @brief Affiche les informations nécessaires pour supprimer un article. @@ -83,7 +86,7 @@ void affichModifierArticle(int *ref, float *poids, float *volume, float *prix); * @author Yannis Doumir Fernandes * */ -void problemRechercheArticle(); +void problemRechercheArticle(void); /** * @brief Affiche les informations nécessaires pour ajouter un nouveau client. @@ -125,10 +128,10 @@ void affichModifClient(int tNumClient[], int tSus[], int tLogique); * * Cette fonction permet au responsable d'effectuer diverses actions telles que la gestion des articles et des clients. */ -void global_resp(); +void global_resp(void); /** * @brief Affiche le menu principal de l'interface du responsable. * @author Yannis Doumir Fernandes */ -void affiche_resp(); +void affiche_resp(void);