Merge pull request 'client' (#6) from client into master

Reviewed-on: #6
pull/8/head
Matheo HERSAN 2 years ago
commit c495cb2de6

@ -0,0 +1,50 @@
# Compte rendu de la SAE1.01 - Implémentation des besoins du client
## Informations sur les clients :
- Numéro de client
- Solde du client
- Son état (suspension ou non)
## Informations sur les articles :
- Référence de l'article
- Poids de l'article
- Volume de l'article
- Prix unitaire de l'article
## Fichiers de données :
1. articles.txt :
- Référence, Poids, Volume, PrixUnitaire
2. clients.txt :
- Numéro de client, solde, suspension
## Répartition du travail :
**Mathéo** a conçu l'architecture du projet. La documentation a été rédigée par **Yannis** et **Mathéo**.
Dans ce projet, nous avons réparti les tâches de la manière suivante :
- **Mathéo** s'occupe principalement de la partie client
- **Yannis** est en charge principalement de la partie responsable.
Cependant, il va sans dire que même avec une telle organisation nous avons tout de même collaboré sur les deux parties du projet. Chacun de nous a contribué aux deux parties. Vous pouvez identifier l'auteur des fonctions en fonction de leur style de codage : généralement, **Mathéo** place les accolades ouvrantes sur la même ligne que le prototype de la fonction etc. En revanche, **Yannis** a tendance à sauter une ligne après les prototypes et les structures de contrôle.
## Comment démarrer l'application ?
Pour démarrer l'application, nous vous recommandons d'utiliser le script `build.sh`. Ce script vous permet de compiler et de lancer l'application en utilisant l'option `-rb`. Vous n'avez pas besoin de compiler l'application manuellement ni d'exécuter l'exécutable vous-même. Exécutez simplement la commande `./build.sh -rb` pour que l'ensemble du processus soit automatisé.
Pour plus détail vous pouvez consulter le `README.md` afin d'y voir les différentes fonctionnalités.
## Conception
### Architecture :
L'architecture du projet a été pensée de sorte a séparer l'interface de l'application de la logique.
### Pourquoi avons-nous fait ceci ?
L'adoption d'une telle architecture permet, comme précédemment expliqué, de démarquer l'interface du reste du programme. Cette approche facilite considérablement la création d'autres types d'interfaces en se concentrant exclusivement sur leur aspect visuel, tandis que la logique est encapsulée dans la couche "logique". Par exemple, nous avons ici conçus une interface orientée vers les adhérents, où ces derniers ont accès à des opérations spécifiques offertes par l'interface par défaut, mais limitées à leurs besoins.
Mais nous avons, grâce a cette architecture aucun problème pour créer d'autre interface comme l'interface des responsable.
Un autre bénéfice majeur réside dans la facilité de maintenance. En segmentant le programme en couches et en composants distincts, nous avons la possibilité d'apporter des modifications à chacun d'eux sans altérer le code source des autres parties qui ne dépendent pas de ces modifications, préservant ainsi leur fonctionnement initial.

@ -1,4 +1,4 @@
32 0.00 0
660 11.03 0
660 57.63 0
5079 75.50 0
8043 50.50 1

@ -3,7 +3,6 @@
* @brief Fonctions liées à la gestion des clients et de leur panier.
*/
#include <stdio.h>
#include "client.h"
#define MAX_ARTICLES 100
@ -43,6 +42,69 @@ int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhy
return i;
}
/**
* @brief Sauvegarde les données clients dans un fichier.
*
* Cette fonction permet de sauvegarder les données clients, y compris les numéros de clients, les cagnottes,
* et les états de suspension, dans un fichier texte.
*
* @param numeros - Tableau des numéros de clients.
* @param cagnottes - Tableau des cagnottes des clients.
* @param suspendus - Tableau des états de suspension des clients.
* @param nombreClients - Nombre de clients.
*/
void sauvegarde_clients(int numeros[], float cagnottes[], int suspendus[], int nombreClients) {
FILE *fe;
fe = fopen("donnee/client.txt", "w");
if (fe == NULL) {
perror("fopen");
return;
}
for (int i = 0; i < nombreClients; i++) {
fprintf(fe, "%d %.2f %d\n", numeros[i], cagnottes[i], suspendus[i]);
}
fclose(fe);
}
/**
* @brief Recherche l'index de l'article dans le tableau des références.
*
* Cette fonction recherche l'index de l'article avec la référence donnée dans le tableau des références.
*
* @param reference - Référence de l'article à rechercher.
* @param references - Tableau des références des articles.
* @param nombreArticles - Nombre d'articles disponibles.
* @return L'index de l'article s'il est trouvé, sinon -1.
*/
int trouver_index_article(int reference, int references[], int nombreArticles) {
for (int i = 0; i < nombreArticles; i++) {
if (references[i] == reference) {
return i;
}
}
return -1;
}
/**
* @brief Trouve l'index d'un client dans le tableau des numéros de clients.
*
* Cette fonction recherche le numéro du client dans le tableau des numéros de clients
* et retourne l'index du client s'il est trouvé.
*
* @param numeroClient - Numéro du client à rechercher.
* @param numeros - Tableau des numéros de clients.
* @param nombreClients - Nombre de clients dans le tableau.
* @return L'index du client s'il est trouvé, -1 sinon.
*/
int trouver_index_client(int numeroClient, int numeros[], int nombreClients) {
for (int i = 0; i < nombreClients; i++) {
if (numeros[i] == numeroClient) {
return i; // Retourne l'index du client si trouvé
}
}
return -1; // Retourne -1 si le client n'est pas trouvé
}
/**
* @brief Ajoute un article au panier du client.
@ -64,63 +126,71 @@ int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhy
* @param panier - Tableau des références des articles dans le panier.
* @param quantites - Tableau des quantités de chaque article dans le panier.
* @param taillePanier - Taille du panier.
* @param budget - Budget du client.
*/
void ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[],
int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients,
float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier) {
int reference, quantite;
float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier, float budget) {
printf("Entrez la référence de l'article : ");
while (scanf("%d", &reference) != 1) {
int reference, quantite, articleIndex;
float poidsTotal, montantTotal, volumeTotal, depassementCharge = 0, depassementVolume, depassementBudget = 0;
while (1) {
printf("Entrez la référence de l'article : ");
while (scanf("%d", &reference) != 1) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer une référence valide (nombre) : ");
}
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer une référence valide (nombre) : ");
articleIndex = trouver_index_article(reference, references, nombreArticles);
if (articleIndex == -1) {
printf("ERREUR : Article non trouvé. Veuillez entrer une référence valide.\n");
} else {
break;
}
}
while (getchar() != '\n');
printf("Entrez la quantité : ");
while (scanf("%d", &quantite) != 1) {
while (getchar() != '\n');
printf("ERREUR : Veurillez entrer une quantité valide (nombre) : ");
printf("ERREUR : Veuillez entrer une quantité valide (nombre) : ");
}
while (getchar() != '\n');
int articleIndex = -1;
for (int i = 0; i < nombreArticles; i++) {
if (references[i] == reference) {
articleIndex = i;
break;
}
}
poidsTotal = poids[articleIndex] * quantite;
volumeTotal = volume[articleIndex] * quantite;
montantTotal = prixUnitaire[articleIndex] * quantite;
if (articleIndex == -1) {
printf("Article non trouvé. Veuillez entrer une référence valide.\n");
return;
if (poidsTotal > chargeMaximale) {
depassementCharge = poidsTotal - chargeMaximale;
}
for (int i = 0; i < *taillePanier; i++) {
if (panier[i] == reference) {
printf("Cet article est déjà dans le panier.\n");
return;
}
if (volumeTotal > volumeCoffre) {
depassementVolume = volumeTotal - volumeCoffre;
}
float poidsTotal = poids[articleIndex] * quantite;
float volumeTotal = volume[articleIndex] * quantite;
if (budget > 0 && montantTotal > budget) {
depassementBudget = montantTotal - budget;
}
if (poidsTotal > chargeMaximale) {
printf("Désolé, dépassement de la charge autorisée.\n");
} else if (volumeTotal > volumeCoffre) {
printf("Désolé, dépassement du volume autorisé.\n");
if (depassementCharge || depassementVolume || depassementBudget) {
printf("Attention : ");
if (depassementCharge) {
printf("dépassement de la charge autorisée de %.2f kg \n", depassementCharge);
}
if (depassementVolume) {
printf("dépassement du volume autorisé de %.2f litres \n", depassementVolume);
}
if (depassementBudget) {
printf("dépassement du budget autorisé de %.2f euros \n", depassementBudget);
}
printf("\n");
} else {
float montantTotal = prixUnitaire[articleIndex] * quantite;
int clientIndex = -1;
for (int i = 0; i < nombreClients; i++) {
if (numeros[i] == numeroClient) {
clientIndex = i;
break;
}
}
int clientIndex = trouver_index_client(numeroClient, numeros, nombreClients);
if (clientIndex != -1) {
cagnottes[clientIndex] += 0.1 * montantTotal;
@ -171,13 +241,7 @@ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanie
}
while (getchar() != '\n');
int articleIndex = -1;
for (int i = 0; i < *taillePanier; i++) {
if (panier[i] == reference) {
articleIndex = i;
break;
}
}
int articleIndex = trouver_index_article(reference, panier, *taillePanier);
if (articleIndex == -1) {
printf("Article non trouvé dans le panier. Veuillez entrer une référence valide.\n");
@ -194,11 +258,11 @@ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanie
printf("Article supprimé du panier avec succès.\n");
}
/**
* @brief Affiche un récapitulatif du contenu du panier.
*
* Cette fonction permet d'afficher un récapitulatif du contenu du panier.
* Cette fonction permet d'afficher un récapitulatif détaillé du contenu du panier du client, y compris les références des articles,
* les quantités, les poids, les volumes, les prix unitaires, les totaux de poids, de volume, de prix, et la cagnotte du client.
*
* @param panier - Tableau des références des articles dans le panier.
* @param taillePanier - Taille du panier.
@ -207,25 +271,30 @@ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanie
* @param volume - Tableau des volumes des articles.
* @param prixUnitaire - Tableau des prix unitaires des articles.
* @param quantites - Tableau des quantités de chaque article dans le panier.
* @param cagnottes - Tableau des cagnottes des clients.
* @param numeroClient - Numéro du client.
* @param numeros - Tableau des numéros de clients.
* @param nombreClients - Nombre de clients.
* @param volumeCoffre - Volume total du coffre.
* @param chargeMaximale - Charge maximale du coffre.
*/
void affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[],
float prixUnitaire[], int quantites[]) {
float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient,
int numeros[], int nombreClients, float volumeCoffre, float chargeMaximale) {
printf("Contenu du panier : ");
for (int i = 0; i < taillePanier; i++) {
printf("%d ", panier[i]);
}
printf("\n");
printf("Récap :\n");
printf("Réf Qté Poids Vol PrixU PoidsTot VolTot PrixTot\n");
float poidsTotal = 0, volumeTotal = 0, montantTotal = 0;
for (int i = 0; i < taillePanier; i++) {
int reference = panier[i];
int articleIndex = -1;
for (int j = 0; j < MAX_ARTICLES; j++) {
if (references[j] == reference) {
articleIndex = j;
break;
}
}
if (articleIndex == -1) {
printf("Article non trouvé. Veuillez entrer une référence valide.\n");
return;
}
int articleIndex = trouver_index_article(reference, references, MAX_ARTICLES);
float poidsArticle = poids[articleIndex];
float volumeArticle = volume[articleIndex];
@ -241,9 +310,14 @@ void affiche_recap_panier(int panier[], int taillePanier, int references[], floa
montantTotal += prixArticle * quantite;
}
int clientIndex = trouver_index_client(numeroClient, numeros, nombreClients);
printf("Prix total à payer: %.2f euros\n", montantTotal);
printf("Cagnotte totale : %.2f euros\n", cagnottes[clientIndex]);
printf("Volume utilise : %.2f litres\n", volumeTotal);
printf("Volume restant : %.2f litres\n", volumeCoffre - volumeTotal);
printf("Charge Actuelle: %.2f kg\n", poidsTotal);
printf("Charge restante: %.2f kg\n", chargeMaximale - poidsTotal);
}
/**
@ -336,15 +410,4 @@ void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagn
}
cagnottes[clientIndex] -= montant;
FILE *fe;
fe = fopen("donnee/client.txt", "w");
if (fe == NULL) {
perror("fopen");
return;
}
for (int i = 0; i < nombreClients; i++) {
fprintf(fe, "%d %.2f %d\n", numeros[i], cagnottes[i], suspendus[i]);
}
fclose(fe);
}

@ -20,6 +20,20 @@
*/
int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique);
/**
* @brief Sauvegarde les données clients dans un fichier.
*
* Cette fonction permet de sauvegarder les données clients, y compris les numéros de clients, les cagnottes,
* et les états de suspension, dans un fichier texte.
*
* @param numeros - Tableau des numéros de clients.
* @param cagnottes - Tableau des cagnottes des clients.
* @param suspendus - Tableau des états de suspension des clients.
* @param nombreClients - Nombre de clients.
*/
void sauvegarde_clients(int numeros[], float cagnottes[], int suspendus[], int nombreClients);
/**
* @brief Ajoute un article au panier du client.
*
@ -38,10 +52,11 @@ int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhy
* @param panier - Tableau des références des articles dans le panier.
* @param quantites - Tableau des quantités de chaque article dans le panier.
* @param taillePanier - Taille du panier.
* @param budget - Budget du client.
*/
void ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[],
int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients,
float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier);
float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier, float budget);
/**
* @brief Supprime un article du panier du client.
@ -55,6 +70,9 @@ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanie
/**
* @brief Affiche un récapitulatif du contenu du panier.
*
* Cette fonction permet d'afficher un récapitulatif détaillé du contenu du panier du client, y compris les références des articles,
* les quantités, les poids, les volumes, les prix unitaires, les totaux de poids, de volume, de prix, et la cagnotte du client.
*
* @param panier - Tableau des références des articles dans le panier.
* @param taillePanier - Taille du panier.
* @param references - Tableau des références des articles.
@ -62,10 +80,16 @@ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanie
* @param volume - Tableau des volumes des articles.
* @param prixUnitaire - Tableau des prix unitaires des articles.
* @param quantites - Tableau des quantités de chaque article dans le panier.
* @param cagnottes - Tableau des cagnottes des clients.
* @param numeroClient - Numéro du client.
* @param numeros - Tableau des numéros de clients.
* @param nombreClients - Nombre de clients.
* @param volumeCoffre - Volume total du coffre.
* @param chargeMaximale - Charge maximale du coffre.
*/
void affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[],
float prixUnitaire[], int quantites[]);
float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient,
int numeros[], int nombreClients, float volumeCoffre, float chargeMaximale);
/**
* @brief Modifie la quantité d'un article dans le panier du client.
*
@ -96,4 +120,29 @@ void reinitialiser_panier(int panier[], int quantites[], int *taillePanier);
*/
void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]);
/**
* @brief Recherche l'index de l'article dans le tableau des références.
*
* Cette fonction recherche l'index de l'article avec la référence donnée dans le tableau des références.
*
* @param reference - Référence de l'article à rechercher.
* @param references - Tableau des références des articles.
* @param nombreArticles - Nombre d'articles disponibles.
* @return L'index de l'article s'il est trouvé, sinon -1.
*/
int trouver_index_article(int reference, int references[], int nombreArticles);
/**
* @brief Trouve l'index d'un client dans le tableau des numéros de clients.
*
* Cette fonction recherche le numéro du client dans le tableau des numéros de clients
* et retourne l'index du client s'il est trouvé.
*
* @param numeroClient - Numéro du client à rechercher.
* @param numeros - Tableau des numéros de clients.
* @param nombreClients - Nombre de clients dans le tableau.
* @return L'index du client s'il est trouvé, -1 sinon.
*/
int trouver_index_client(int numeroClient, int numeros[], int nombreClients);
#endif // SAE_101_CLIENT_H

@ -4,9 +4,6 @@
*/
#include "interface_client.h"
#include "app/core_logic/client.h"
#include "app/core_logic/responsable.h"
#define MAX_ARTICLES 100
#define MAX_CLIENTS 100
@ -19,15 +16,15 @@ void affiche_client() {
printf("|| Bonjour ! ||\n");
printf("+-------------+\n");
printf("\n");
printf("+-----------------------------------------------------------------+\n");
printf("|| Que voulez-vous faire ?\t\t\t\t\t\t\t||\n");
printf("||\t1 : Afficher le récapitulatif du panier.\t\t\t||\n");
printf("||\t2 : Ajouter un article au panier.\t\t\t\t||\n");
printf("||\t3 : Supprimer un article du panier.\t\t\t\t||\n");
printf("||\t4 : Modifier la quantité d'un article du panier.\t||\n");
printf("||\t5 : Réinitialiser le panier.\t\t\t\t\t||\n");
printf("||\t9 : Quitter.\t\t\t\t\t\t\t\t\t||\n");
printf("+-----------------------------------------------------------------+\n");
printf("+----------------------------------------------------------------+\n");
printf("|| Que voulez-vous faire ?\t\t\t\t\t||\n");
printf("||\t1 : Afficher le récapitulatif du panier.\t \t||\n");
printf("||\t2 : Ajouter un article au panier. \t\t\t||\n");
printf("||\t3 : Supprimer un article du panier. \t\t\t||\n");
printf("||\t4 : Modifier la quantité d'un article du panier. \t||\n");
printf("||\t5 : Réinitialiser le panier.\t\t\t\t||\n");
printf("||\t9 : Quitter.\t\t\t\t\t\t||\n");
printf("+----------------------------------------------------------------+\n");
}
/**
@ -44,6 +41,65 @@ void menu_client(int *choix) {
}
}
/**
* @brief Affiche le récapitulatif du panier.
*
* Cette fonction affiche le récapitulatif du panier, y compris les références, les poids, les volumes, les prix unitaires, elle permet d'initialiser la session du client.
*
* @param numeros
* @param suspendus
* @param nombreClients
* @param budget
* @param volumeCoffre
* @param chargeMaximale
* @param numeroClient
*/
void configurer_session_client(int numeros[], int suspendus[], int nombreClients, float *budget, float *volumeCoffre, float *chargeMaximale, int *numeroClient) {
printf("Veuillez saisir votre numéro de client : ");
while (scanf("%d", numeroClient) != 1) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer un numéro de client valide : ");
}
int indexClient = trouver_index_client(*numeroClient, numeros, nombreClients);
if (indexClient == -1) {
printf("Client non trouvé. Impossible d'utiliser l'application.\n");
return;
}
if (suspendus[indexClient] == 1) {
printf("Le client est suspendu et ne peut pas utiliser l'application.\n");
return;
}
printf("Voulez-vous définir un budget à ne pas dépasser ? (1 pour Oui, 0 pour Non) : ");
int choixBudget;
scanf("%d", &choixBudget);
if (choixBudget == 1) {
printf("Entrez le budget à ne pas dépasser : ");
while (scanf("%f", budget) != 1 || *budget <= 0) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer un budget valide (nombre positif) : ");
}
}
printf("Veuillez saisir la taille disponible du véhicule (en litres) : ");
while (scanf("%f", volumeCoffre) != 1 || *volumeCoffre <= 0) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer une taille de coffre valide (en litres) : ");
}
printf("Veuillez saisir la charge maximale autorisée (en kg) : ");
while (scanf("%f", chargeMaximale) != 1 || *chargeMaximale <= 0) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer une charge maximale valide (en kg) : ");
}
}
/**
* @brief Fonction principale de l'interface client.
*
@ -66,56 +122,23 @@ void global_client() {
int quantites[MAX_ARTICLES];
int panier[MAX_ARTICLES];
int taillePanier = 0;
float budget = -1.0;
nombreArticles = chargementArticles(references, poids, volume, prixUnitaire, MAX_ARTICLES);
nombreClients = charger_clients(numeros, cagnottes, suspendus, MAX_CLIENTS);
printf("Veuillez saisir la taille disponible du véhicule (en litres) : ");
while (scanf("%f", &volumeCoffre) != 1 || volumeCoffre <= 0) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer une taille de coffre valide (en litres) : ");
}
printf("Veuillez saisir la charge maximale autorisée (en kg) : ");
while (scanf("%f", &chargeMaximale) != 1 || chargeMaximale <= 0) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer une charge maximale valide (en kg) : ");
}
printf("Veuillez saisir votre numéro de client : ");
while (scanf("%d", &numeroClient) != 1) {
while (getchar() != '\n');
printf("ERREUR : Veuillez entrer un numéro de client valide : ");
}
int indexClient = -1;
for (int i = 0; i < nombreClients; i++) {
if (numeros[i] == numeroClient) {
indexClient = i;
break;
}
}
if (indexClient == -1) {
printf("Client non trouvé. Impossible d'utiliser l'application.\n");
return;
}
if (suspendus[indexClient] == 1) {
printf("Le client est suspendu et ne peut pas utiliser l'application.\n");
return;
}
configurer_session_client(numeros, suspendus, nombreClients, &budget, &volumeCoffre, &chargeMaximale, &numeroClient);
do {
menu_client(&choix);
switch (choix) {
case 1:
affiche_recap_panier(panier, taillePanier, references, poids, volume, prixUnitaire, quantites);
affiche_recap_panier(panier, taillePanier, references, poids, volume, prixUnitaire, quantites, cagnottes,
numeroClient, numeros, nombreClients, volumeCoffre, chargeMaximale);
break;
case 2:
ajouter_article_au_panier(numeroClient, references, poids, volume, prixUnitaire, numeros, cagnottes,
suspendus, nombreArticles, nombreClients, volumeCoffre, chargeMaximale, panier, quantites, &taillePanier);
suspendus, nombreArticles, nombreClients, volumeCoffre, chargeMaximale, panier, quantites, &taillePanier, budget);
break;
case 3:
supprimer_article_du_panier(panier, quantites, &taillePanier);
@ -140,6 +163,7 @@ void global_client() {
printf("Le montant a été déduit de votre cagnotte.\n");
}
sauvegarde_clients(numeros, cagnottes, suspendus, nombreClients);
printf("Au revoir !\n");
return;
default:

@ -4,6 +4,8 @@
*/
#include <stdio.h>
#include "../core_logic/client.h"
#include "../core_logic/responsable.h"
/**
* @brief Affiche le menu principal de l'interface client.
@ -17,6 +19,22 @@ void affiche_client();
*/
void menu_client(int *choix);
/**
* @brief Affiche le récapitulatif du panier.
*
* Cette fonction affiche le récapitulatif du panier, y compris les références, les poids, les volumes, les prix unitaires, elle permet d'initialiser la session du client.
*
* @param numeros
* @param suspendus
* @param nombreClients
* @param budget
* @param volumeCoffre
* @param chargeMaximale
* @param numeroClient
*/
void configurer_session_client(int numeros[], int suspendus[], int nombreClients, float *budget, float *volumeCoffre, float *chargeMaximale, int *numeroClient);
/**
* @brief Fonction principale de l'interface client.
*
@ -25,3 +43,4 @@ void menu_client(int *choix);
* d'articles dans le panier.
*/
void global_client();

Loading…
Cancel
Save