continuité de la partie 3 ainsi que du systeme de connexion

master
Antoine PEREDERII 3 years ago
parent caacc9891c
commit 81e9f85a90

@ -46,17 +46,18 @@ void afficherCandidats(Admission candidat)
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.noteMaths, candidat.noteFrançais, candidat.noteAnglais, candidat.noteSpe, candidat.nbChoix, candidat.ville);
for(i = 0; i < candidat.nbChoix; i++)
{
afficherDpt(candidat.ldept[i]);
afficherDpt(candidat.ldept->v);
ldept = ldept->suiv;
}
printf("\n");
}
Admission chargerCandidats(FILE *ficAdmission, char dptResAdmi[30])
// Regarder si le nombre de choix est = à 0 Que se passe-t-il ?
ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30])
{
Admission candidat = listeNouvCandidat();
char departement[30];
int decisionAdmission, decisionCandidat;
int i, nbCandidats = 0;
ListeAdmission listeCandidats = listeNouvCand();
Admission candidat;
FILE *flot;
flot=fopen(ficAdmission, "r");
if(flot == NULL)
@ -64,18 +65,100 @@ Admission chargerCandidats(FILE *ficAdmission, char dptResAdmi[30])
printf("Erreur d'ouverture du fichier !\n");
exit(1);
}
fscanf(flot, "%d\n", &nbCandidats);
candidat = lireCandidat(flot);
while(!feof(flot))
{
listeCandidats = insererCand(listeCandidats, candidat);
candidat = lireCandidat(flot);
}
return candidat;
fclose(flot);
return listeCandidats;
}
// REGARDER QUE CA TRIE LE BON DEPARTEMENT !!!!
void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30])
{
FILE *flot;
flot=fopen("admissionInfo.txt", "w");
if(flot == NULL)
{
printf("Erreur d'ouverture du fichier !\n");
exit(1);
}
while(! videCand(listeCandidats))
{
fprintf(flot, "%d\n%s\n%s\n%d\t%d\t%d\t%d\n%d\n%s\n", listeCandidats->v.num, listeCandidats->v.nom, listeCandidats->v.prenom, listeCandidats->v.tabMatiere[0], listeCandidats->v.tabMatiere[1], listeCandidats->v.tabMatiere[2], listeCandidats->v.tabMatiere[3], listeCandidats->v.nbChoix, listeCandidats->v.ville);
while(! videDpt(listeCandidats->v.ldept))
{
fprintf(flot, "%s\n%d\n%d\n", listeCandidats->v.ldept->v.departement, listeCandidats->v.ldept->v.decisionAdmission, listeCandidats->v.ldept->v.decisionCandidat);
listeCandidats->v.ldept = listeCandidats->v.ldept->suiv;
}
listeCandidats = listeCandidats->suiv;
}
fclose(flot);
}
void afficherCandidatsAdmis(ListeAdmission listeCandidats)
{
while(! videCand(listeCandidats))
{
if(listeCandidats->v.admis == 1)
{
afficherCandidats(listeCandidats->v);
}
listeCandidats = listeCandidats->suiv;
}
}
void afficherCandidatsNonAdmis(ListeAdmission listeCandidats)
{
while(! videCand(listeCandidats))
{
if(listeCandidats->v.admis == 0)
{
afficherCandidats(listeCandidats->v);
}
listeCandidats = listeCandidats->suiv;
}
}
void afficherCandidatsAttente(ListeAdmission listeCandidats)
{
while(! videCand(listeCandidats))
{
if(listeCandidats->v.admis == 2)
{
afficherCandidats(listeCandidats->v);
}
listeCandidats = listeCandidats->suiv;
}
}
void afficherCandidatsDpt(ListeAdmission listeCandidats)
{
while(! videCand(listeCandidats))
{
afficherCandidats(listeCandidats->v);
listeCandidats = listeCandidats->suiv;
}
}
ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats)
{
ListeAdmission listeMoyenne = listeNouvCand();
while(! videCand(listeCandidats))
{
listeCandidats->v.moyenne = (listeCandidats->v.noteMaths + listeCandidats->v.noteFrançais + listeCandidats->v.noteAnglais + listeCandidats->v.noteSpe) / 4;
listeMoyenne = insererCand(listeMoyenne, listeCandidats->v);
listeCandidats = listeCandidats->suiv;
}
return listeMoyenne;
}
// Comment definir la note sur 20 mise lors de l'etude du dossier ?
// Ajouter une variable dans la structure Admission ?
// Ou mettre la liste et la note dans un tableau ?
// Après examen de chaque dossier de candidature,
// le jury doit regarder ou la note peut etre calculée automatiquement ?
@ -137,7 +220,7 @@ int modifNoteMinAdmis()
}
}
modifNbAdmisMax()
int modifNbAdmisMax()
{
int nbAdmisMax;
printf("Entrez le nouveau nombre d'admis maximum : ");

32
SAE.h

@ -46,7 +46,21 @@ typedef struct {
typedef struct maillonAdmission {
Admission v;
struct maillonAdmission *suiv;
} MaillonAdmission, *FileAdmission;
} MaillonAdmission, *ListeAdmission;
Departement lireDpt(FILE *flot);
void afficherDpt(Departement dpt);
Admission lireCandidat(FILE *flot);
void afficherCandidat(Admission candidat);
ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30]);
void sauvegarderCandidats(ListeAdmission lAdmission, char dptResAdmi[30]);
void afficherCandidatsAdmis(ListeAdmission listeCandidats);
void afficherCandidatsNonAdmis(ListeAdmission listeCandidats);
void afficherCandidatsAttente(ListeAdmission listeCandidats);
void afficherCandidatsDpt(ListeAdmission listeCandidats);
ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats);
int modifNoteMinAdmis();
int modifNbAdmisMax();
/* V1
@ -84,3 +98,19 @@ typedef struct maillonAdmission {
struct maillonAdmission *suiv;
} MaillonAdmission, *FileAdmission;
*/
// Authentification
int ConnexionUtilisateur(char *login, char *mdp);
ListeUtilisateurs chargerUtilisateurs(char *ficUtilisateurs, ListeUtilisateurs Utilisateurs);
Utilisateur lireUtilisateur(FILE *flot);
void afficherUtilisateur(Utilisateur utilisateur);
void afficherUtilisateurs(ListeUtilisateurs listeUtilisateurs);
ListeUtilisateurs insererUtilisateur(ListeUtilisateurs listeUtilisateurs, Utilisateur utilisateur);
ListeUtilisateurs supprimerUtilisateur(ListeUtilisateurs listeUtilisateurs, char *nomUtilisateur);
int videUtilisateurs(ListeUtilisateurs listeUtilisateurs);
void sauveUtilisateurs(char *ficUtilisateurs, ListeUtilisateurs listeUtilisateurs);
int rechercherUtilisateur(ListeUtilisateurs listeUtilisateurs, char *nomUtilisateur);
int supprimerUtilisateur(ListeUtilisateurs listeUtilisateurs, char *nomUtilisateur);
int menuUtilisateur(ListeUtilisateurs listeUtilisateurs);
void global(void);

@ -0,0 +1,232 @@
#include "SAE.h"
int ConnexionUtilisateur(void)
{
char nomUtilisateur[9], motDePasse[11], typeUtilisateur[9];
printf("Veuillez entrer votre nom d'utilisateur : ");
scanf("%s", &nomUtilisateur);
while(strlen(nomUtilisateur) != 8)
{
printf("Nom d'utilisateur incorrect. Veuillez recommencer : ");
scanf("%s", &nomUtilisateur);
}
printf("Veuillez entrer votre mot de passe : ");
system("stty -echo");
scanf("%s", &motDePasse);
system("stty echo");
while(strlen(motDePasse) != 10)
{
printf("Mot de passe incorrect. Veuillez recommencer : ");
system("stty -echo");
scanf("%s", &motDePasse);
system("stty echo");
}
printf("Connexion réussie en tant qu%s!\n", typeUtilisateur);
if(typeUtilisateur == "Admin")
{
return 1;
}
else if(typeUtilisateur == "RespAdm")
{
return 2;
}
else if(typeUtilisateur == "RespDept")
{
return 3;
}
}
ListeUtilisateurs chargeUtilisateurs(char *ficUtilisateurs, ListeUtilisateurs Utilisateurs)
{
FILE *flot;
Utilisateur utilisateur;
flot = fopen(ficUtilisateurs, "rb");
if(flot == NULL)
{
printf("Erreur lors de l'ouverture du fichier %s\n", ficUtilisateurs);
return 0;
}
utilisateur = lireUtilisateur(flot);
while(!feof(flot))
{
Utilisateurs = insererUtilisateur(Utilisateurs, utilisateur);
utilisateur = lireUtilisateur(flot);
}
fclose(flot);
return Utilisateur;
}
Utilisateur lireUtilisateur(FILE *flot)
{
Utilisateur utilisateur;
fread(&utilisateur, sizeof(Utilisateur), 1, flot);
return utilisateur;
}
void afficherUtilisateur(Utilisateur utilisateur)
{
printf("%s\t%s\n", utilisateur.nomUtilisateur, utilisateur.motDePasse);
}
void afficherUtilisateurs(ListeUtilisateurs Utilisateurs)
{
while(! videUtilisateurs(Utilisateurs))
{
afficherUtilisateur(Utilisateurs->utilisateur);
Utilisateurs = Utilisateurs->suiv;
}
printf("\n");
}
ListeUtilisateurs insererUtilisateur(ListeUtilisateurs Utilisateurs, Utilisateur utilisateur)
{
ListeUtilisateurs p;
p = (ListeUtilisateurs)malloc(sizeof(MaillonUtilisateur));
if(p == NULL)
{
printf("Opérations interdites !!!!\n");
exit(1);
}
p->utilisateur = utilisateur;
p->suiv = Utilisateurs;
return p;
}
ListeUtilisateurs supprimerUtilisateur(ListeUtilisateurs Utilisateurs, char *nomUtilisateur)
{
ListeUtilisateurs p, q;
if(videUtilisateurs(Utilisateurs))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
if(strcmp(Utilisateurs->utilisateur.nomUtilisateur, nomUtilisateur) == 0)
{
p = Utilisateurs;
Utilisateurs = Utilisateurs->suiv;
free(p);
return Utilisateurs;
}
q = Utilisateurs;
p = Utilisateurs->suiv;
while(p != NULL && strcmp(p->utilisateur.nomUtilisateur, nomUtilisateur) != 0)
{
q = p;
p = p->suiv;
}
if(p == NULL)
{
printf("Opérations interdites !!!!\n");
exit(1);
}
q->suiv = p->suiv;
free(p);
return Utilisateurs;
}
int videUtilisateurs(ListeUtilisateurs Utilisateurs)
{
return Utilisateurs == NULL;
}
void sauveUtilisateurs(char *ficUtilisateurs, ListeUtilisateurs Utilisateurs)
{
FILE *flot;
flot = fopen(ficUtilisateurs, "wb");
if(flot == NULL)
{
printf("Erreur lors de l'ouverture du fichier %s\n", ficUtilisateurs);
return;
}
fprintf(flot, "%d\n", nbUtilisateurs);
while(! videUtilisateurs(Utilisateurs))
{
fwrite(&Utilisateurs->utilisateur, sizeof(Utilisateur), 1, flot);
Utilisateurs = Utilisateurs->suiv;
}
fclose(flot);
}
int rechercheUtilisateur(ListeUtilisateurs Utilisateurs, char *nomUtilisateur)
{
while(! videUtilisateurs(Utilisateurs))
{
if(strcmp(Utilisateurs->utilisateur.nomUtilisateur, nomUtilisateur) == 0)
{
return 1;
}
Utilisateurs = Utilisateurs->suiv;
}
return 0;
}
int supprimerUtilisateur(ListeUtilisateurs Utilisateurs, char *nomUtilisateur)
{
ListeUtilisateurs p, q;
if(videUtilisateurs(Utilisateurs))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
if(strcmp(Utilisateurs->utilisateur.nomUtilisateur, nomUtilisateur) == 0)
{
p = Utilisateurs;
Utilisateurs = Utilisateurs->suiv;
free(p);
return 1;
}
q = Utilisateurs;
p = Utilisateurs->suiv;
while(p != NULL && strcmp(p->utilisateur.nomUtilisateur, nomUtilisateur) != 0)
{
q = p;
p = p->suiv;
}
if(p == NULL)
{
return 0;
}
q->suiv = p->suiv;
free(p);
return 1;
}
int menuUtilisateurs(ListeUtilisateurs Utilisateurs)
{
int choix;
printf("1. Ajouter un utilisateur\n");
printf("2. Supprimer un utilisateur\n");
printf("3. Afficher la liste des utilisateurs\n");
printf("4. Quitter\n");
printf("Votre choix : ");
scanf("%d", &choix);
return choix;
}
void global()
{
ListeUtilisateurs Utilisateurs;
Utilisateurs = chargerUtilisateurs("utilisateurs.bin");
menuUtilisateurs(Utilisateurs);
while(choix != 4)
{
if(choix == 1)
{
ajouterUtilisateur(Utilisateurs);
}
elseif(choix == 2)
{
supprimerUtilisateur(Utilisateurs);
}
elseif(choix == 3)
{
afficherUtilisateurs(Utilisateurs);
}
else
{
printf("choix impossible\n");
}
menuUtilisateurs(Utilisateurs);
}
sauveUtilisateurs("utilisateurs.bin", Utilisateurs);
}

@ -2,41 +2,5 @@
void global(void)
{
}
int ConnexionUtilisateur(void)
{
char nomUtilisateur[9], motDePasse[11], typeUtilisateur[9];
printf("Veuillez entrer votre nom d'utilisateur : ");
scanf("%s", &nomUtilisateur);
while(strlen(nomUtilisateur) != 8)
{
printf("Nom d'utilisateur incorrect. Veuillez recommencer : ");
scanf("%s", &nomUtilisateur);
}
printf("Veuillez entrer votre mot de passe : ");
system("stty -echo");
scanf("%s", &motDePasse);
system("stty echo");
while(strlen(motDePasse) != 10)
{
printf("Mot de passe incorrect. Veuillez recommencer : ");
system("stty -echo");
scanf("%s", &motDePasse);
system("stty echo");
}
printf("Connexion réussie en tant qu%s!\n", typeUtilisateur);
if(typeUtilisateur == "Admin")
{
return 1;
}
else if(typeUtilisateur == "RespAdm")
{
return 2;
}
else if(typeUtilisateur == "RespDept")
{
return 3;
}
}
Loading…
Cancel
Save