many many problems solved and function Reduction is started

pull/13/head
yannis.doumir_fernandes 1 year ago
parent 0af48df2c6
commit fdc89f93d2

@ -0,0 +1,3 @@
{
"C_Cpp.errorSquiggles": "disabled"
}

BIN
app

Binary file not shown.

@ -1,3 +1,4 @@
32 0.00 1
660 68.00 0
5079 75.50 0
53 0.00 0

@ -1 +1 @@
yescdsds 10
flz 17

@ -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<tLogique; i++)
@ -147,17 +95,6 @@ void rechercheRefArticle(int tRef[], int ref, int *index, int tLogique)
return;
}
/**
* @brief Supprime un article des tableaux d'articles.
*
* Cette fonction supprime un article des tableaux tRef, tPoids, tVol, et tPrix et met à jour 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 Pointeur vers la taille logique des tableaux.
*/
void supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique)
{
int ref, index;
@ -174,17 +111,6 @@ void supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], i
(*tLogique)--;
}
/**
* @brief Modifie les informations d'un article existant.
*
* Cette fonction permet de modifier les informations (poids, volume, prix) d'un article existant.
*
* @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 modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
{
int ref, index;
@ -198,17 +124,6 @@ void modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], in
}
/**
* @brief Ajoute un nouveau client aux tableaux de clients.
*
* Cette fonction ajoute un nouveau client aux tableaux tNumClient, tCagnotte et tSus et incrémente la taille logique.
*
* @param tNumClient Tableau des numéros de client.
* @param tCagnotte Tableau des cagnottes des clients.
* @param tSus Tableau des états de suspension des clients.
* @param tLogique Pointeur vers la taille logique des tableaux.
* @param tPhysique Taille physique des tableaux.
*/
void ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique)
{
int numC = 0;
@ -222,12 +137,7 @@ void ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogiqu
}
/**
* @brief Lis le mot de passe codé dans le fichier mdp.txt, le compare au mot de passe entré à laide de decodageMDP
*
* @param texte chaine de caractère comparé avec le mot de passe du fichier.
* @param decalage entier qui sert de clé pour déchiffrer le mot de passe.
*/
void dechiffrerCesar(char *texte, int decalage) {
int i;
int longueur = strlen(texte);
@ -240,11 +150,7 @@ void dechiffrerCesar(char *texte, int decalage) {
}
}
/**
* @brief Décode le mot de passe du fichier mdp.txt pour le comparer avec le mdp entré.
*
* @param mdpEnter Mot de passe entrer par l'utilisateur.
*/
int decodageMDP(char *mdpEnter)
{
int decalage;
@ -312,4 +218,23 @@ int enregistrerMotDePasse(char *mdp, int decalage)
fprintf(fe,"%s %d", mdp, decalage);
fclose(fe);
return 0;
}
}
/*
int chargementReduc( int tRefProm[], int tReduc[])
{
int i = 0, ref, reduc;
FILE *fe;
fe = fopen("promotion.txt", "r");
if ( fe == NULL )
{
fprintf(fe, "Problème ouverture fichier");
return -1;
}
while ( scanf("%d %d", &ref, &reduc) == 2)
{
tRefProm[i] = ref;
tReduc[i] = reduc;
++i;
}
}
*/

@ -3,8 +3,6 @@
* @brief Déclaration des fonctions de responsable.c.
*/
#include <stdio.h>
/**
* @brief Charge les informations des articles à partir d'un fichier dans des tableaux.
* @author Yannis Doumir Fernandes

@ -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) {

@ -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);

Loading…
Cancel
Save