You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

330 lines
8.4 KiB

/**
* \file sae102.h
* \author Erwan. M & Corentin. L
* \date 11/12/22
* \brief Résumé : Fichier .h regroupant les fonctions utilisées dans SAE2.c
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
typedef struct maillon{
char departement[32];
int nbP;
char nomResp[22];
struct maillon *suiv;
}MaillonDept, *ListeDept;
typedef struct{
char ville[30];
ListeDept ldept;
}VilleIUT;
typedef struct maillonNotes{
float v;
struct maillonNotes *suiv;
}MaillonNotes, *ListeNotes;
typedef struct{
char ville[30];
char departement[30];
int decision;
int validation;
}Choix;
typedef struct maillonChoix{
Choix c;
struct maillonChoix *suiv;
}MaillonChoix, *ListeChoix;
typedef struct{
int numCandid;
char nom[30];
char prenom[30];
float notes[4];
ListeChoix choix;
}Candidat;
typedef struct maillonCandidat{
Candidat c;
struct maillonCandidat *suiv;
}MaillonCandidat, *ListeCandidats;
typedef struct maillonFile{
Candidat c;
struct maillonFile *suiv;
}MaillonFile, *File;
void menuPrincipal(void);
void sousMenuAdministrateur(VilleIUT **tiut, int tlog, int *etatPhase, ListeCandidats liste);
void switchAdministrateur(int choix, VilleIUT** tiut, int tlog, int *etatPhase, ListeCandidats liste);
int fonctionChoix(void);
void affichageSousMenuUtilisateur(void);
void switchUtilisateur(int choix, VilleIUT **tiut, int tlog, ListeCandidats liste, ListeCandidats *admis, File *attente, int *etatPhase);
void sousMenuUtilisateur(VilleIUT **tiut, int tlog, ListeCandidats liste, ListeCandidats *admis, File *attente, int *etatPhase);
void clear(void);
int phaseCandid(void);
void switchPhase(int *etat);
void modifFichierPhase(int etat);
void rechercheDeptTousCandidat(ListeCandidats liste, char* nomVille, char* nomDep);
ListeDept inserer(ListeDept l, char* departement, int nbP, char* nomResp);
ListeDept insererEnTete(ListeDept l, char* departement, int nbP, char* nomResp);
int saisieNbPlaces(int *nbP);
void modifResp(VilleIUT* tiut[], int positionTab, int position, char* nomResp);
void sousMenuResponsable(ListeCandidats liste, ListeCandidats *admis, File *attente);
void affichageSousMenuResponsable(void);
void switchResponsable(int choix, ListeCandidats liste, ListeCandidats *admis, File *attente);
int rechercheCandidat(ListeCandidats liste, char* nom, char* prenom, int *trouve);
void affichageMenuPrincipal(void);
void affichageMenuPrincipal2(void);
void switchPrincipal(int choix, VilleIUT **tiut, int tlog, int *etatPhase, ListeCandidats liste, ListeCandidats *admis, File *attente);
void affichageErreurSaisie(void);
void affichageMenuAdministrateur(void);
void affichageErreurMdp(void);
int saisieNvResp(char resp[]);
void attributionNote(ListeCandidats liste, int tlog);
int ecritureNoteMoyenne(ListeCandidats liste, int tlog);
int saisieDept(char departement[]);
int saisieNbPlace(void);
ListeDept supprimer(ListeDept l, char* departement);
ListeDept supprimerEnTete(ListeDept l);
int chargerFichier(VilleIUT *tiut[], int tmax);
VilleIUT lireVille(FILE* flot);
void afficher(VilleIUT* tiut[], int tlog);
int saisieVille(char* ville, VilleIUT** tiut, int tlog);
int insertionVille(VilleIUT* tiut[], VilleIUT vIUT, int tlog);
int rechercheVille(VilleIUT** tiut, char ville[], int tlog, int *trouve);
void afficherListe(ListeDept l);
void decalageADroite(VilleIUT *tiut[], int tlog, int index);
void sauvegarderListe(ListeDept l, FILE* flot, char* ville);
int rechercheDepartement(VilleIUT* tiut[], char ville[], char departement[], int tlog, int *trouve);
int rechercheDept(ListeDept l, char departement[], int *trouve, int compteur);
void modifNbPlaces(VilleIUT* tiut[], int positionTab, int position, int nbP);
void afficherVillesIUT(VilleIUT *tiut[], int tlog);
void afficherDepartementsIUT(VilleIUT *tiut[], int pos);
void afficherNbPlaces(VilleIUT **tiut, int tlog, char* ville, char* departement);
void nbPDepartement(VilleIUT** tiut, int tlog);
void rechercheTousDepartement(VilleIUT** tiut, int tlog, char* departement, int *trouve);
ListeCandidats chargerBinCandidats(ListeCandidats liste, int *tlog);
ListeCandidats chargerTxtCandidats(ListeCandidats liste, int *tlog);
int lectureMoyennes(int tabNumCandidat[30], float tabMoyennes[30]);
Candidat lireBinCandidat(FILE* flot);
ListeChoix lireBinChoix(FILE* flot, int nbChoix);
Candidat lireTxtCandidat(FILE* flot);
ListeChoix lireTxtChoix(FILE* flot, int nbChoix);
ListeChoix ajouterChoix(ListeChoix liste, Choix choix);
ListeCandidats insertionCandidat(ListeCandidats liste, Candidat c);
ListeCandidats listeCandidatsNouv();
ListeChoix listeChoixNouv();
void affichageCandidats(ListeCandidats liste);
void gestionCandidats(ListeCandidats liste, int tlog, float noteMin, int maxAdmis);
void affichageChoix(ListeChoix liste);
void sauverCandidats(ListeCandidats liste, int tlog, char* nomFichier);
void sauverChoix(FILE *flot, ListeChoix liste);
int longueurListeChoix(ListeChoix liste);
void afficher1Candidat(Candidat c);
int longueurListeCandidats(ListeCandidats liste);
File filenouv(void);
File adjonctionEnQueueFile(File f, Candidat c);
File suppressionEnTeteFile(File f);
Candidat teteFile(File f);
int longueurFile(File f);
bool videFile(File f);
void afficherFile(File f);
ListeCandidats rechercheVoeux(ListeCandidats l);
void triSelection(int tabNumCandidat[30], float tabMoyennes[30], int tlog);
ListeCandidats changerDecisionAdmis(ListeCandidats listeC, int maxAdmis, int noteMin, File* attente);
int rechercheDeptCandidat(ListeChoix l);
void rechercheDeptCandidatE(ListeChoix l, char* nomVille, char* NomDep, ListeCandidats liste);
void sousMenuCandidature(Candidat c, VilleIUT** tiut, int tlog, ListeCandidats *admis, File *attente, int *etatPhase);
void affichageSousMenuCandidature(void);
void switchCandidature(int choix, Candidat c, VilleIUT** tiut, int tlog, ListeCandidats *admis, File *attente, int *etatPhase);
ListeChoix supprimerVoeuxCandidatEnTete(ListeChoix choix);
ListeChoix supprimerVoeuxCandidat(ListeChoix choix, char* ville, char* departement, int* trouve);
ListeCandidats supprimerEnTeteCandidats(ListeCandidats l);
ListeCandidats supprimerCandidats(ListeCandidats l, int numCandid);
ListeCandidats actualiseDecision(File file, ListeCandidats liste, int decision);
ListeCandidats listerCandidats(File file, ListeCandidats liste, int decision);
ListeChoix modifieDecision(ListeChoix liste, int decision);
ListeCandidats changeDecision(ListeCandidats liste, int tlog, float noteMin, int maxAdmis, ListeCandidats *admis, File *attente);
ListeCandidats refuser(ListeCandidats listeC, ListeCandidats liste, float noteMin);
ListeCandidats listerRefuse(ListeCandidats listeC, ListeCandidats liste, int decision);
Candidat plusGrand(ListeCandidats liste, int *pge);
ListeCandidats copierListeCandidats(ListeCandidats liste);
void sauverFile(File file, char* nomFichier);
File chargerBinFile(File file, char* nomFichier);
void libererFile(File file);
ListeCandidats remettreAZero(File *file, ListeCandidats listeC);
ListeChoix remetChoixZero(ListeChoix liste);
void freeFile(MaillonFile *file);
ListeChoix validationVoeux(ListeChoix liste, char *ville, char *departement, int decision);
ListeChoix validerVoeux(ListeChoix liste, char *ville, char *departement, ListeCandidats *admis, File *attente, int numCandid);
ListeCandidats diviserFusion(ListeCandidats liste);
ListeCandidats fusionListes(ListeCandidats liste, ListeCandidats liste2);
ListeCandidats triFusion(ListeCandidats liste);
void affichageCandidatAdmis(Candidat c, int decision);
int rechercheCandidatVoeu(ListeChoix liste, char* ville, char* departement, int* validation, int *decision);
ListeCandidats insererCandidats(ListeCandidats l, Candidat c);
ListeCandidats supprimerCandidats(ListeCandidats l, int numCandid);
ListeCandidats insererEnTeteListeCandidats(ListeCandidats l, Candidat c);
ListeCandidats chargerBinListe(ListeCandidats liste, char* nomFichier, int *tlog);
ListeCandidats listerListeCandidats(ListeCandidats listeAdmis, ListeCandidats liste, int decision);
ListeCandidats actualiseDecisionListe(ListeCandidats listeAdmis, ListeCandidats liste, int decision);
void freeListe(ListeCandidats liste);
ListeCandidats remettreAZeroListe(ListeCandidats *listeAdmis, ListeCandidats listeC);
int rechercheCandidatAdmis(ListeCandidats liste, char *nom, char *prenom, int *trouveCandidat, int *trouveVoeu, char *ville, char *departement);
int recherche1Voeu(ListeChoix liste, char *ville, char *departement, int *trouveVoeu);