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.
419 lines
13 KiB
419 lines
13 KiB
/**
|
|
*\file function.c
|
|
*\brief ensemble des fonctions applelé dans menu.c et qui uttilise les functions de struct.c.
|
|
*author Ludovic CASTIGLIA
|
|
*/
|
|
|
|
|
|
#include"struct.h"
|
|
#include"main.h"
|
|
#include"menu.h"
|
|
|
|
/**
|
|
\brief affiche toutes les villes possédant un IUT
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void affiche_villes(VilleIUT *tiut[], int tl)
|
|
{
|
|
clear();
|
|
printf("############################\n");
|
|
printf("#\t\tnom de la ville\n");
|
|
for (int i=0; i<tl; i++)
|
|
printf("#\t%s\n",tiut[i]->ville);
|
|
}
|
|
/**
|
|
\brief affiche toute les département dans un IUT ansi que le nombre de place et le nom du responsable
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void affiche_departement(VilleIUT *tiut[], int tl)
|
|
{
|
|
char ville[31];
|
|
int trouve=0,pos;
|
|
clear();
|
|
printf("\n\nquelle ville voulez vous affichez: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
pos = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\ndépartement\tplace\tnom du responsable\n\n");
|
|
affiche_ListeDept(tiut[pos]->ldept);
|
|
}
|
|
/**
|
|
\brief affiche le nombre de place dans un département particulier
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void affiche_nb_place(VilleIUT *tiut[], int tl)
|
|
{
|
|
char ville[31], dep[31];
|
|
int trouve=0,pos,nbp;
|
|
clear();
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
pos = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\nde quelle département sagit t'il: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
nbp = nb_place_departement(tiut[pos]->ldept,dep);
|
|
if (nbp == -1)
|
|
{
|
|
printf("\n\n%s ne comporte pas de département %s\n",ville,dep);
|
|
return;
|
|
}
|
|
printf("\n\nle département %s de %s à %d place disponible\n",dep,ville,nbp);
|
|
}
|
|
/**
|
|
\brief affiche tout les IUT qui possède un certain département
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void affiche_iut(VilleIUT *tiut[], int tl)
|
|
{
|
|
int trouve=0;
|
|
char dep[31];
|
|
clear();
|
|
printf("\n\nquelle département chercher vous?: ");
|
|
scanf("%*c");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
while (tl > 0)
|
|
{
|
|
tl-=1;
|
|
if (departement_in_ville(tiut[tl]->ldept, dep) == 1)
|
|
{
|
|
if (trouve == 0)
|
|
{
|
|
printf("\n\nil y a un département %s à:\n",dep);
|
|
trouve=1;
|
|
}
|
|
printf("%s\n",tiut[tl]->ville);
|
|
}
|
|
}
|
|
if (trouve==0) printf("aucune ville ne possède ce département.\n");
|
|
}
|
|
/**
|
|
\brief permet de crée un nouveau département dans un certain IUT
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void cree_departement(VilleIUT *tiut[], int tl)
|
|
{
|
|
char ville[31], dep[31], nom[31];
|
|
int trouve=0,pos,nbp;
|
|
clear();
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
pos = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\nquelle département voulez vous ajouter: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
if (departement_in_ville(tiut[pos]->ldept, dep) == 1)
|
|
{
|
|
printf("désolé, ce département existe déjà");
|
|
return;
|
|
}
|
|
printf("\n\ncombien de place sont disponible: ");
|
|
scanf("%d",&nbp);
|
|
printf("\n\nquelle est le nom du responsable du département: ");
|
|
scanf("%*c");
|
|
fgets(nom,31,stdin);
|
|
nom[strlen(nom)-1] = '\0';
|
|
tiut[pos]->ldept = ajouter_departement(tiut[pos]->ldept,dep,nbp,nom);
|
|
}
|
|
/**
|
|
\brief permet de supprimer un derpartement d'un certain IUT
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void suppr_departement(VilleIUT *tiut[], int tl)
|
|
{
|
|
char ville[31], dep[31];
|
|
int trouve=0,pos;
|
|
clear();
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
pos = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\nquelle département voulez vous supprimer: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
if (departement_in_ville(tiut[pos]->ldept, dep) == 0)
|
|
{
|
|
printf("désolé, ce département n'existe pas dans cette ville");
|
|
return;
|
|
}
|
|
tiut[pos]->ldept = supprimer_departement(tiut[pos]->ldept, dep);
|
|
}
|
|
/**
|
|
\brief permet de modifier le nom du responsable d'un certain département
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures VilleIUT possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void modif_nom_departement(VilleIUT *tiut[], int tl)
|
|
{
|
|
char ville[31], dep[31], nom[31];
|
|
int trouve=0,pos,nbp=0;
|
|
clear();
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
pos = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\nquelle département voulez vous modifier: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
if (departement_in_ville(tiut[pos]->ldept, dep) == 0)
|
|
{
|
|
printf("désolé, ce département n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\nquelle est le nom du responsable du département: ");
|
|
fgets(nom,31,stdin);
|
|
nom[strlen(nom)-1] = '\0';
|
|
tiut[pos]->ldept = ajouter_departement(tiut[pos]->ldept,dep,nbp,nom);
|
|
}
|
|
/**
|
|
\brief affiche toutes les informations d'un certain candidat (nom,prenom,note,nombre de voeux et les voeux en question)
|
|
\param [out] void void
|
|
\param [in] tc tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tlc taille logique du tableau tc
|
|
\return void
|
|
*/
|
|
void affiche_un_candidat(Candidat** tc, int tlc)
|
|
{
|
|
int pos, trouve, numc;
|
|
clear();
|
|
printf("\n\nquelle est le numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
while (numc <= 0)
|
|
{
|
|
clear();
|
|
printf("\nnuméro de candidat non valide");
|
|
printf("\nquelle est le numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
}
|
|
pos = recherche_candidat(tc,numc,tlc,&trouve);
|
|
if (trouve == 0)
|
|
{
|
|
printf("\nce candidat n'existe pas\n");
|
|
return;
|
|
}
|
|
printf("\n\nn°candidat\tnom\tprenom\t\t\tnote\t\t\t\t\tnombre de veux\n");
|
|
affiche_candidat(*tc[pos]);
|
|
printf("\n\nville\t\tdepartement\n");
|
|
affiche_ListeChoix(tc[pos]->lchoix);
|
|
}
|
|
/**
|
|
\brief affiche tout les candidats ayant postulé dans un département
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\return void
|
|
*/
|
|
void affiche_candidat_departement(VilleIUT *tiut[], int tl)
|
|
{
|
|
char ville[31], dep[31];
|
|
int trouve=0,pos,nbp;
|
|
clear();
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
pos = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\nde quelle département sagit t'il: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
affiche_candidat_departement_ldept(tiut[pos]->ldept,dep);
|
|
}
|
|
/**
|
|
\brief affiche tout les voeux d'un certain candidat
|
|
\param [out] void void
|
|
\param [in] tc tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tlc taille logique du tableau tc
|
|
\return void
|
|
*/
|
|
void affiche_les_voeux(Candidat** tc, int tlc)
|
|
{
|
|
int pos, trouve, numc;
|
|
clear();
|
|
printf("\n\nquelle est votre numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
while (numc <= 0)
|
|
{
|
|
clear();
|
|
printf("\nnuméro de candidat non valide");
|
|
printf("\nquelle est votre numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
}
|
|
pos = recherche_candidat(tc,numc,tlc,&trouve);
|
|
if (trouve == 0)
|
|
{
|
|
printf("\nce numéro de candidat n'est pas attribué\n");
|
|
return;
|
|
}
|
|
printf("\n\nville\t\tdepartement\n");
|
|
affiche_ListeChoix(tc[pos]->lchoix);
|
|
}
|
|
/**
|
|
\brief permet à un candidat de postuler dans un département
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\param [in] tc tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tlc taille logique du tableau tc
|
|
\return void
|
|
*/
|
|
void ajouter_un_voeux(VilleIUT *tiut[], int tl, Candidat** tc, int tlc)
|
|
{
|
|
int posCan, posVil, trouve, numc;
|
|
char dep[31],ville[31];
|
|
clear();
|
|
printf("\n\nquelle est votre numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
while (numc <= 0)
|
|
{
|
|
clear();
|
|
printf("\nnuméro de candidat non valide");
|
|
printf("\nquelle est votre numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
}
|
|
posCan = recherche_candidat(tc,numc,tlc,&trouve);
|
|
if (trouve == 0)
|
|
{
|
|
printf("\nce numéro de candidat n'est pas attribué\n");
|
|
return;
|
|
}
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
posVil = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\ndans quelle département voulez vous candidater: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
if (departement_in_ville(tiut[posVil]->ldept, dep) == 0)
|
|
{
|
|
printf("désolé, ce département n'existe pas dans cette ville");
|
|
return;
|
|
}
|
|
if (demande_existe(tc[posCan]->lchoix,ville,dep))
|
|
{
|
|
printf("vous avez déjà postulé pour ce département");
|
|
return;
|
|
}
|
|
ajouter_demande_ldept(tiut[posVil]->ldept,dep, tc[posCan]->nom, tc[posCan]->numc, 0, 0);
|
|
tc[posCan]->lchoix = ajouter_choix(tc[posCan]->lchoix, ville, dep, 0, 0);
|
|
tc[posCan]->nbchoix += 1;
|
|
}
|
|
/**
|
|
\brief permet à un candidat d'annuler ça candidature dans un département
|
|
\param [out] void void
|
|
\param [in] tiut tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tl taille logique du tableau tiut
|
|
\param [in] tc tableau de pointeur vaire des structures Candidat possédant une liste chainé
|
|
\param [in] tlc taille logique du tableau tc
|
|
\return void
|
|
*/
|
|
void supprimer_un_voeux(VilleIUT *tiut[], int tl, Candidat** tc, int tlc)
|
|
{
|
|
int posCan, posVil, trouve, numc;
|
|
char dep[31],ville[31];
|
|
clear();
|
|
printf("\n\nquelle est votre numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
while (numc <= 0)
|
|
{
|
|
clear();
|
|
printf("\nnuméro de candidat non valide");
|
|
printf("\nquelle est votre numéro de candidat ");
|
|
scanf("%d",&numc);
|
|
}
|
|
posCan = recherche_candidat(tc,numc,tlc,&trouve);
|
|
if (trouve == 0)
|
|
{
|
|
printf("\nce numéro de candidat n'est pas attribué\n");
|
|
return;
|
|
}
|
|
printf("\n\ndans quelle ville est le département: ");
|
|
scanf("%*c");
|
|
fgets(ville,31,stdin);
|
|
ville[strlen(ville) -1] = '\0';
|
|
posVil = recherche_ville(tiut,ville,&trouve, tl);
|
|
if (!trouve)
|
|
{
|
|
printf("désolé, cette ville n'existe pas");
|
|
return;
|
|
}
|
|
printf("\n\ndans quelle département voulez vous supprimer votre candidature: ");
|
|
fgets(dep,31,stdin);
|
|
dep[strlen(dep) -1] = '\0';
|
|
if (departement_in_ville(tiut[posVil]->ldept, dep) == 0)
|
|
{
|
|
printf("désolé, ce département n'existe pas dans cette ville");
|
|
return;
|
|
}
|
|
if (!demande_existe(tc[posCan]->lchoix,ville,dep))
|
|
{
|
|
printf("vous n'avez jamais postulé pour ce département");
|
|
return;
|
|
}
|
|
supprimer_demande_ldept(tiut[posVil]->ldept,dep, tc[posCan]->nom);
|
|
tc[posCan]->lchoix = supprimer_choix(tc[posCan]->lchoix, ville, dep);
|
|
tc[posCan]->nbchoix -= 1;
|
|
} |