merging master in client

pull/8/head
Mathéo Hersan 2 years ago
commit 99fe1a601e
No known key found for this signature in database
GPG Key ID: 4EF19C64D78EC91B

BIN
app

Binary file not shown.

@ -19,6 +19,8 @@
- Référence, Poids, Volume, PrixUnitaire - Référence, Poids, Volume, PrixUnitaire
2. clients.txt : 2. clients.txt :
- Numéro de client, solde, suspension - Numéro de client, solde, suspension
3. mdp.txt :
- Mot de passe du responsable chiffré par le code de César
## Répartition du travail : ## Répartition du travail :
@ -48,3 +50,7 @@ L'adoption d'une telle architecture permet, comme précédemment expliqué, de d
Mais nous avons, grâce a cette architecture aucun problème pour créer d'autre interface comme l'interface des responsable. 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. 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.
### Pourquoi avons-nous chiffré le mot de passe du responsable avec le code de César ?
Le code de César est un chiffrement que nous avons vu en cours de **bases mathématiques 1**. Il s'agit d'un chiffrement simple qui fonctionne grâce à un numéro qui correspond au décalage des lettres de l'alphabet. Pour obtenir le mot de passe, si nous n'avions pas mis en place ce chiffrement, il aurait simplement fallu ouvrir le fichier `mdp.txt`. Alors nous avons pensé qu'un minimum de sécurité était nécessaire.

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

@ -220,6 +220,12 @@ 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) { void dechiffrerCesar(char *texte, int decalage) {
int i; int i;
int longueur = strlen(texte); int longueur = strlen(texte);
@ -232,7 +238,11 @@ 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 decodageMDP(char *mdpEnter)
{ {
int decalage; int decalage;

@ -11,6 +11,7 @@
#define MAX_CLIENTS 100 #define MAX_CLIENTS 100
#define MAX_ARTICLES 100 #define MAX_ARTICLES 100
#define MENU_QUIT 11
/** /**
* @brief Affiche le menu principal de l'interface du responsable. * @brief Affiche le menu principal de l'interface du responsable.
@ -31,8 +32,9 @@ void affiche_resp(void) {
printf("||\t6 : Supprimer un article\t\t\t\t||\n"); printf("||\t6 : Supprimer un article\t\t\t\t||\n");
printf("||\t7 : Modifier un article\t\t\t\t\t||\n"); printf("||\t7 : Modifier un article\t\t\t\t\t||\n");
printf("||\t8 : Ajouter un client\t\t\t\t\t||\n"); printf("||\t8 : Ajouter un client\t\t\t\t\t||\n");
printf("||\t9 : Modifier le statu du client\t\t\t\t||\n"); printf("||\t9 : Modifier le statut du client\t\t\t||\n");
printf("||\t10 : Quittez.\t\t\t\t\t\t||\n"); printf("||\t10 : Supprimer un client\t\t\t\t||\n");
printf("||\t11 : Quittez.\t\t\t\t\t\t||\n");
printf("+----------------------------------------------------------------+\n"); printf("+----------------------------------------------------------------+\n");
} }
@ -225,7 +227,11 @@ void affichAjoutClient(int tNumClient[], int tLogique, int *numC) {
} }
/**
* @brief Affiche les informations nécessaires pour entrer le mod de passe responsable.
*
* Cette fonction permet au responsable de confirmer son identité
*/
int affichageConnexion(void) int affichageConnexion(void)
{ {
char mdpEnter[20]; char mdpEnter[20];
@ -353,7 +359,7 @@ void suppressionClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLo
void menu_resp(int *choix) { void menu_resp(int *choix) {
affiche_resp(); affiche_resp();
printf("Vous choisissez: "); printf("Vous choisissez: ");
while (scanf("%d", choix) != 1 || *choix < 0 || *choix > 11) { while (scanf("%d", choix) != 1 || *choix < 0 || *choix > MENU_QUIT) {
while (getchar() != '\n'); while (getchar() != '\n');
affiche_resp(); affiche_resp();
printf("Veuillez entrer un choix valide : "); printf("Veuillez entrer un choix valide : ");
@ -412,13 +418,15 @@ void global_resp() {
break; break;
case 11: case 11:
sauvegardArticles(tRef, tPoids, tVol, tPrix, tLogArticle); sauvegardArticles(tRef, tPoids, tVol, tPrix, tLogArticle);
sauvegarde_clients(tNumClient, tCagnotte, tSus, tLogClient);
printf("Sauvegarde des articles effectuée.\n"); printf("Sauvegarde des articles effectuée.\n");
printf("Sauvegarde des clients effectuée.\n");
printf("Au revoir !\n"); printf("Au revoir !\n");
return; return;
default: default:
printf("Veuillez entrer un choix valide ! \n"); printf("Veuillez entrer un choix valide ! \n");
break; break;
} }
} while (choix != 11); } while (choix != MENU_QUIT);
} }

@ -101,6 +101,9 @@ void menu_resp(int *choix);
*/ */
int affichageConnexion(void); int affichageConnexion(void);
/**
* @brief Affiche le menu qui permet de modifier l'état de la cagnotte d'un client.
*/
void affichModifClient(int tNumClient[], int tSus[], int tLogique); void affichModifClient(int tNumClient[], int tSus[], int tLogique);
/** /**

Loading…
Cancel
Save