diff --git a/src/main.h b/src/main.h index 07c99b8..b4be45d 100644 --- a/src/main.h +++ b/src/main.h @@ -21,7 +21,7 @@ void sauvegardeArticles(int reference[], float weight[], float volume[], float u void sauvegardeClients(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int tLogClient); //! GESTION CLIENTS -void inputClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int *tlog); +int inputClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int *tlog); void modifyClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int tlog); void deleteClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int *tlog); diff --git a/src/modif.c b/src/modif.c index 04cfdeb..78f59d3 100644 --- a/src/modif.c +++ b/src/modif.c @@ -1,34 +1,53 @@ #include "main.h" -void inputClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int *tlog) +/** + * @brief Fonction d'inserion d'un client + * @param clientID: Tableau des identifiants client + * @param cagnotte: Tableau des cagnottes client + * @param suspended: Tableau des états de compte client + * @param isAdmin: Tableau des statuts Administrateur des clients + * @param tlog: Taille logique de ces tableaux + * @return 0 > Tout s'est bien passé, -1 > L'utilisateur a quitté, -2 > La taille physique du tableau est dépassée +*/ +int inputClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int *tlog) { - /* - Ajout d'un ou plusieurs clients dans les tableaux - - +param clientID: tableau des identifiants des clients - +param cagnotte: tableau des cagnottes des clients - +param suspended: tableau de l'état du compte des clients - +param tlog: taille logique des tableaux des clients + int index, found, id = -1; + float cagnotteClient; - +var numClient: identifiant du client à ajouter - */ - int numClient = -1; + // Vérification du dépassement de la taille physique du tableau + if (*tlog == tmaxClients) + { + printf("[ERREUR] - La taille physique du tableau est dépassée, impossible d'ajouter un nouveau client.\n"); + return -2; + } - while (numClient != 0) + while(id != 0) { - printf("Entrez le numéro du client ou 0 si vous souhaitez arrêter la saisie: "); - scanf("%d", &numClient); - while (numClient < 0) + printf("Entrez l'identifiant du client ou 0 si vous souhaitez arrêter la saisie: "); + scanf("%d%*c", &id); + while(id < 0) { - printf("Erreur, le numéro du client doit être positif, entrez le numéro du client ou 0 si vous souhaitez arrêter la saisie: "); - scanf("%d", &numClient); + printf("[ERREUR] - L'identifiant doit être positif, entrez l'identifiant du client ou 0 si vous souhaitez arrêter la saisie: "); + scanf("%d%*c", &id); + } + index = searchTab(clientID, id, *tlog, &found); + while(found == 1) + { + printf("Cet identifiant existe déjà, réessayer ou tapez 0 si vous souhaitez arrêter la saisie: "); + scanf("%d%*c", &id); + index = searchTab(clientID, id, *tlog, &found); + } + if(id != 0) + { + clientID[index] = id; + cagnotte[index] = 0; + suspended[index] = 0; + isAdmin[index] = 0; + *tlog++; + return 0; // Tout s'est bien passé } - clientID[*tlog] = numClient; - cagnotte[*tlog] = 0; - suspended[*tlog] = 0; - isAdmin[*tlog] = 0; - *tlog ++; } + return -1; // L'utilisateur a quitté } void modifyClient(int clientID[], float cagnotte[], int suspended[], int isAdmin[], int tlog)