password for responsable is working + some bugs fixed

pull/8/head
yannis.doumir_fernandes 2 years ago
parent 2d9adf3f26
commit e2e8789113

BIN
app

Binary file not shown.

@ -0,0 +1 @@
qtqnqtq 5

@ -5,6 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "responsable.h"
#include "../interface/interface_resp.h"
@ -103,6 +104,14 @@ int ajouterArticle( int tRef[], float tPoids[], float tVol[], float tPrix[], int
fprintf(stderr,"Tableau plein !");
return -2;
}
for ( int j = 0; j < *tLogique; ++j )
{
if ( ref == tRef[j] )
{
fprintf(stderr, "\t /!/ Article déjà existant. /!/ \n");
return -1;
}
}
tRef[i] = ref;
tPoids[i] = poids;
tVol[i] = volume;
@ -210,3 +219,43 @@ void ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogiqu
return;
}
void dechiffrerCesar(char *texte, int decalage) {
int i;
int longueur = strlen(texte);
for (i = 0; i < longueur; ++i) {
if (texte[i] >= 'a' && texte[i] <= 'z') {
texte[i] = 'a' + (texte[i] - 'a' + decalage) % 26;
} else if (texte[i] >= 'A' && texte[i] <= 'Z') {
texte[i] = 'A' + (texte[i] - 'A' + decalage) % 26;
}
}
}
int decodageMDP(char *mdpEnter)
{
int decalage;
char mdpRead[20];
FILE *fe;
fe = fopen("donnee/mdp.txt","r");
if ( fe == NULL )
{
return -1;
}
fscanf(fe, "%s %d", mdpRead, &decalage);
printf("%s", mdpRead);
fclose(fe);
dechiffrerCesar(mdpEnter, decalage);
if ( strcmp(mdpRead, mdpEnter) == 0 )
{
return 0;
}
else
{
return -2;
}
}

@ -103,3 +103,18 @@ void modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], in
* @param tPhysique Taille physique des tableaux.
*/
void ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique);
/**
* @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);
/**
* @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);

@ -22,16 +22,16 @@ void affiche_resp(void) {
printf("+-------------+\n");
printf("\n");
printf("+-----------------------------------------------------------------+\n");
printf("|| Que voulez-vous faire ?\t\t\t\t\t\t\t||\n");
printf("||\t1 : Afficher les articles\t\t\t\t\t\t||\n");
printf("||\t2 : Afficher un article\t\t\t\t\t\t\t||\n");
printf("||\t3 : Afficher un client\t\t\t\t\t\t\t||\n");
printf("||\t4 : Afficher les clients\t\t\t\t\t\t||\n");
printf("||\t5 : Ajouter un article\t\t\t\t\t\t\t||\n");
printf("||\t6 : Supprimer un article\t\t\t\t\t\t||\n");
printf("||\t7 : Modifier un article\t\t\t\t\t\t\t||\n");
printf("||\t8 : Ajouter un client\t\t\t\t\t\t\t||\n");
printf("||\t9 : Quittez.\t\t\t\t\t\t\t\t\t||\n");
printf("|| Que voulez-vous faire ?\t\t\t\t\t||\n");
printf("||\t1 : Afficher les articles\t\t\t\t||\n");
printf("||\t2 : Afficher un article\t\t\t\t\t||\n");
printf("||\t3 : Afficher un client\t\t\t\t\t||\n");
printf("||\t4 : Afficher les clients\t\t\t\t||\n");
printf("||\t5 : Ajouter un article\t\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("||\t8 : Ajouter un client\t\t\t\t\t||\n");
printf("||\t9 : Quittez.\t\t\t\t\t\t||\n");
printf("+-----------------------------------------------------------------+\n");
}
@ -131,6 +131,7 @@ void affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique
void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix) {
printf("\t Entrez la ref du nouveau produit\n");
while (scanf("%d", ref) != 1 || *ref <= 0) {
printf("\t Veuillez entrer une référence valide.\n");
while (getchar() != '\n');
}
@ -216,12 +217,40 @@ void affichAjoutClient(int tNumClient[], int tLogique, int *numC) {
}
for (int i = 0; i < tLogique; ++i) {
if (*numC == tNumClient[i]) {
fprintf(stderr, "\t Client déjà existant.\n");
fprintf(stderr, "\t /!/ Client déjà existant. /!/\n");
return;
}
}
}
int affichageConnexion(void)
{
char mdpEnter[20];
printf("Entrer le mot de passe responsable : ");
scanf("%s", mdpEnter);
int verif = decodageMDP(mdpEnter);
if ( verif == 0 )
{
printf("+---------------------------------------------+\n");
printf("|| \tMot de passe correct, bienvenue patron ! ||\n");
printf("+---------------------------------------------+\n");
return 0;
}
else if ( verif == -1)
{
printf("\t Problème ouverture fichier !\n");
return -1;
}
printf("+--------------------------------------------------+\n");
printf("|| \tMot de passe incorrect, Au revoir ! \t||\n");
printf("+--------------------------------------------------+\n");
return -2;
}
/**
* @brief Fonction de menu pour le responsable.
*

@ -93,6 +93,14 @@ void affichAjoutClient(int tNumClient[], int tLogique, int *numC);
*/
void menu_resp(int *choix);
/**
* @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);
/**
* @brief Fonction principale de l'interface du responsable.
*

@ -51,10 +51,16 @@ int choixInterface(void) {
* @return 0 si le programme s'est exécuté avec succès.
*/
int main() {
switch (choixInterface()) {
case 1:
int verif = affichageConnexion();
if ( verif == 0)
{
global_resp();
break;
}
break;
case 2:
global_client();
break;

Loading…
Cancel
Save