Compare commits

...

2 Commits

Author SHA1 Message Date
Flavien BOUHAMDANI ce49cb2bf4 ajout des fonctions de la partie 1
2 years ago
Flavien BOUHAMDANI 3d72c04fd1 ajout des fonctions de la partie 1
2 years ago

@ -0,0 +1,17 @@
Grenoble 1
Informatique 112 Dupont Jean
Clermont-Ferrand 2
Informatique 136 Simon Carine
Biologie 120 Giroud Olivier
Aurillac 1
Bio-informatique 120 Mbappe Kylian
Valence 2
Chimie 97 Pogba Paul
Physique 130 Depay Memphis
Lyon 2
Géosciences 122 Santan Dave
Economie 135 Jean-Michel Aulas

@ -3,60 +3,369 @@
#include <stdlib.h>
#include "sae1-02.h"
// général
// f enregistrement
// Partie 1
/*
void affichageVilleIUT() {
printf("%s\t%s\t%d\t%s")
// PARTIE ENREGISTREMENT
Listdept initialisation(void) {
return NULL;
}
int rechercheVille() {
VilleIUT lireVille(FILE *fe) {
VilleIUT v;
fscanf(fe, "%s %d", v.Ville, &v.nbIUT);
return v;
}
Listdept lireDept(FILE *fe, int nbIUT) {
if(nbIUT == 0) return NULL;
MaillonDept* d;
d = (MaillonDept*)malloc(sizeof(MaillonDept));
fscanf(fe, "%s %d", d->departement, &d->nbplace);
fgets(d->responsable, 31, fe);
d->responsable[strlen(d->responsable)-1] = '\0';
d->suivant = lireDept(fe, nbIUT - 1);
return d;
}
VilleIUT lire(FILE * fe) {
int chargeIUT(VilleIUT* tIUT[], int taillemax) {
FILE * fe = fopen("donneesIUT.don", "r");
int i = 0;
VilleIUT v;
fscanf(fe, "%s", V.ville);
fscanf(fe, "%s", v.Idept->departement);
fscanf(fe, "%d", v.Idept->nbplace);
fgets(v.Idept->responsable, 31, fe);
v.Idept->responsable[strlen(v.Idept->responsable)-1] = '\0';
return v;
Listdept d = initialisation();
if(fe == NULL) { printf("Erreur ouverture fichier \n"); return -1; }
v = lireVille(fe);
while(!feof(fe)) {
if (i == taillemax) { printf("erreur taille tableau \n"); return -1; }
tIUT[i] = (VilleIUT*) malloc(sizeof(VilleIUT));
if(tIUT[i] == NULL) { printf("erreur tab\n"); return -1; }
d = lireDept(fe, v.nbIUT);
v.ldept = d;
*tIUT[i] = v;
v = lireVille(fe);
i++;
}
fclose(fe);
return i;
}
*/
// PARTIE UTILISATEUR //////////
// villes contenant un IUT
void afficheVilleIUT(VilleIUT *tville[], int nbville) {
printf("Villes contenant un IUT : \n");
for(int i = 0; i < nbville; i++) {
printf(" - %s\n", tville[i]->Ville);
}
}
// départements de chaques IUT
void afficheDepartementsIUT(VilleIUT *tville[], int nbville) {
Listdept d;
int i = rechercheVille(tville, nbville);
if (i == -1) return;// cas où rien est trouvé en parcourant le tableau
d = tville[i]->ldept;
printf("Département(s) : \n");
affichageDep(d);
}
// nombre de place
void afficheDepNbPlace(VilleIUT *tville[], int nbville) {
printf("Voici le nombre de place pour chaques départements de chaques IUT : \n");
affichageville(tville, nbville);
}
// IUT avec un département particulier
void afficheIUTdepParticulier(VilleIUT *tville[], int nbville) {
char rechercheDep[31];
Listdept d;
int cpt = 0;
printf("Quelle département recherchez vous en particulier ? : ");
scanf("%s", rechercheDep);
printf("Voici les villes avec le département %s : \n", rechercheDep);
for (int i = 0; i < nbville; i++) {
d = tville[i]->ldept;
if(strcmp(rechercheDep, d->departement) == 0) {
printf(" - %s\n", tville[i]->Ville);
cpt++;
}
}
if(cpt == 0) printf("Aucun IUT avec ce département n'a été trouvé\n");
}
// PARTIE ADMINISTRATEUR /////////
// modif nombre place département
void modifPlace(VilleIUT *tville[], int nbville) {
Listdept d;
char rechercheDep[31];
int i = rechercheVille(tville, nbville);
if (i == -1) return;// cas où rien est trouvé en parcourant le tableau
d = tville[i]->ldept;
printf("Et quel département pour %s ? : ", tville[i]->Ville);
scanf("%s", rechercheDep);
int cpt = chercheDepModif(d, rechercheDep);
if(cpt == 0) printf("Aucun département de ce nom\n");
}
int chercheDepModif(Listdept d, char rechercheDep[30]) {
int cpt = 0;
if (d == NULL) return cpt;
if(strcmp(d->departement, rechercheDep) == 0) {
printf("Nombre de place actuellement : %d\nNouveau nombre de place : ", d->nbplace);
scanf("%d", &d->nbplace);
cpt++;
}
else return chercheDepModif(d->suivant, rechercheDep);
}
// recherche ville
int rechercheVille(VilleIUT *tville[], int nbville) {
char recherche[31];
printf("Quelle IUT recherchez vous ? : ");
scanf("%s", recherche);
for(int i = 0; i < nbville; i++) {
if(strcmp(recherche, tville[i]->Ville) == 0) return i;
}
printf("L'IUT n'a pas été trouvé !\n");
return -1;
}
// ajouter un département IUT
Listdept ajoutDept(int posOptionnel, VilleIUT *tville[], int nbville) {
int i;
MaillonDept* m;
Listdept d;
m = (MaillonDept*)malloc(sizeof(MaillonDept));
if (m == NULL) { printf("Problème malloc"); exit(1);}
if(posOptionnel == -1) i = rechercheVille(tville, nbville); // Demande dans quelle IUT on souhaite ajouter le département
else i = posOptionnel;
if (i == -1) return m;
d = tville[i]->ldept;
printf("Veuillez entrer le nom du nouveau département : ");
scanf("%s", m->departement);
printf("Entrez le nombre de place pour le département %s de %s : ", m->departement, tville[i]->Ville);
scanf("%d ", &m->nbplace);
printf("Entrez le nom du responsable : ");
fgets(m->responsable, 31, stdin);
m->responsable[strlen(m->responsable)-1]='\0';
m->suivant = d;
tville[i]->nbIUT++; // augmente le nombre d'IUT enregistré
if(posOptionnel == -1) tville[i]->ldept = m;
return m;
}
// ajouter un IUT
void ajoutIUT(VilleIUT *tIUT[], int *nbville, int taillemax) {
Listdept d;
if (*nbville == taillemax) { printf("erreur taille tableau \n"); return; }
tIUT[*nbville] = (VilleIUT*) malloc(sizeof(VilleIUT));
if(tIUT[*nbville] == NULL) { printf("erreur tab\n"); return; }
printf("Entrez le nom de la ville à ajouter: ");
scanf("%s", tIUT[*nbville]->Ville);
tIUT[*nbville]->nbIUT = 0;
d = ajoutDept(*nbville, tIUT, *nbville);
tIUT[*nbville]->ldept = d;
*nbville = *nbville + 1;
}
// supprimer un département
Listdept suppressionDept(Listdept d, char rechercheDep[31]){
Listdept tmp;
if(d == NULL){ exit(1); }
if(strcmp(d->departement, rechercheDep) == 0){
tmp = d->suivant;
free(d);
return tmp;
}
d = suppressionDept(d->suivant, rechercheDep);
}
void supprDepartement(VilleIUT *tville[], int *nbville) {
int i = rechercheVille(tville, *nbville);
if (i == -1) return;
Listdept d = tville[i]->ldept;
char rech[31];
printf("Quel département à supprimer pour la ville de %s : ", tville[i]->Ville);
scanf("%s", rech);
tville[i]->ldept = suppressionDept(d, rech);
tville[i]->nbIUT = tville[i]->nbIUT - 1;
if (tville[i]->nbIUT == 0) {
for (i; i < *nbville - 1; i++) {
strcpy(tville[i]->Ville, tville[i + 1]->Ville);
tville[i]->nbIUT = tville[i + 1]->nbIUT;
tville[i]->ldept = tville[i + 1]->ldept;
}
*nbville = *nbville - 1;
}
}
void modifNomResponsable(VilleIUT *tville[], int nbville) {
int i = rechercheVille(tville, nbville);
if (i == -1) return;
Listdept d = tville[i]->ldept;
char rech[31];
printf("Modifier le nom du responsable de quel département pour %s ? : ", tville[i]->Ville);
scanf("%s", rech);
// bug a corriger
fgets(d->responsable, 31, stdin);
d->responsable[strlen(d->responsable)-1]='\0';
fgets(d->responsable, 31, stdin);
d->responsable[strlen(d->responsable)-1]='\0';
tville[i]->ldept = d;
}
// PARTIE AFFICHAGE
void affichageDep(Listdept d) {
if(d == NULL) { return; }
printf(" - %s\n", d->departement);
affichageDep(d->suivant);
}
void affichageAllDep(Listdept d){
if(d == NULL) { return; }
printf("Département : %s\nNombre place : %d\nResponsable : %s\n\n", d->departement, d->nbplace, d->responsable);
affichageAllDep(d->suivant);
}
void affichageville(VilleIUT *tville[], int nbville){
int i;
Listdept d;
for(i = 0; i < nbville; i++) {
d = tville[i]->ldept;
printf("%s -\n", tville[i]->Ville);
affichageAllDep(d);
printf("\n");
}
}
void sauvegardeDep(Listdept d, FILE *fs) {
if(d == NULL) return;
fprintf(fs, "%s\t%d%s\n\n", d->departement, d->nbplace, d->responsable);
sauvegardeDep(d->suivant, fs);
}
void sauvegarde(VilleIUT *tville[], int nbville) {
FILE *fs;
fs = fopen ("donneesIUT.don", "w");
if (fs == NULL) { printf ("Erreur, ouverture fichier"); return; }
for (int i = 0; i < nbville; i++) {
fprintf(fs, "%s\t%d\n", tville[i]->Ville, tville[i]->nbIUT);
sauvegardeDep(tville[i]->ldept, fs);
}
fclose(fs);
}
// MENU PARTIE 1
void menuP1Utilisateur(VilleIUT *v[], int nb) {
int choixP1U = 0;
printf("---------------------- MENU UTILISATEUR -----------------------\n\n");
printf(" 1 - Consulter les villes avec un IUT\n");
printf(" 2 - Consulter les départements d'un IUT\n");
printf(" 3 - Consulter le nombre de place des départements\n");
printf(" 4 - Consulter les IUT possédant un certain département\n\n");
printf(" 9 - Retour\n");
while (choixP1U >= 1 || choixP1U <= 4) {
switch (choixP1U) {
case 1:
afficheVilleIUT(v, nb);
case 2:
afficheDepartementsIUT(v, nb);
case 3:
affichageville(v, nb);
case 4:
afficheIUTdepParticulier(v, nb);
case 9:
sauvegarde(v, nb);// mettre menu général
}
}
}
void menuP1Administrateur(VilleIUT *v[], int nb) {
int choixP1A = 0;
printf("---------------------- MENU UTILISATEUR -----------------------\n\n");
printf(" 1 - Modifier le nombre de place d'un département\n");
printf(" 2 - Créer un département\n");
printf(" 3 - Créer un IUT\n");
printf(" 4 - Supprimer un département\n\n");
printf(" 5 - Modifier le nom d'un responsable\n\n");
printf(" 9 - Retour\n");
while (choixP1A >= 1 || choixP1A <= 4) {
switch (choixP1A) {
case 1:
modifPlace(v, nb);
case 2:
ajoutDept(-1, v, nb);
case 3:
ajoutIUT(v, &nb, 100);
case 4:
supprDepartement(v, &nb);
case 5:
modifNomResponsable(v, nb);
case 9:
sauvegarde(v, nb);// mettre menu général
}
}
}
/*
void test(void){
VilleIUT *v[100];
int nb = chargeIUT(v, 100);
affichageville(v, nb);
affichageville(v, nb);
sauvegarde(v, nb);
afficheVilleIUT(v, nb);
afficheDepartementsIUT(v, nb);
afficheIUTdepParticulier(v, nb);
modifPlace(v, nb);
affichageville(v, nb);
ajoutIUT(v, &nb, 100);
ajoutDept(-1, v, nb);
supprDepartement(v, &nb);
affichageville(v, nb);
}
*/
// Partie 2
//chargement ======================================================================================================================================================================
/*
Listchoixdept listvide(void){return NULL;}
Listchoixdept lireCarte(FILE *fe, int nbchoix){
@ -394,7 +703,7 @@ void affichealletu(listetuinfo *tetu[], int nb){
//=========================================================================================================================================================
// zone de test =========================================================================================
/*
void test1(void){
listetuinfo *tetu[5000];
int nb;
@ -403,7 +712,7 @@ void test1(void){
nb = chargeretudiant(nomFich, tetu, 5000);
affichealletu(tetu, nb);
}
*/
//==========================================================================================================
// Partie 3
@ -458,11 +767,11 @@ void test1(void){
-
*/
*/
// coté etu=========================================================================================================
// affichage
/*
void affichagedepresultat(Maillonchoix* carte){
if(carte==NULL){return;}
if(carte->decision==1){
@ -565,7 +874,7 @@ void chercheretuadmisindep(char choixnom[], char nomprenom[], Maillonatt etuatt)
}
chercheretuadmisindep(choixnom, choixprenom, etuatt.suivant);
}
*/
// Général (menu et ce qui en ai relié)
/*
questionadmin(){

@ -12,18 +12,53 @@
// Partie 1
typedef struct listville{
typedef struct listville {
char departement[31];
int nbplace;
char responsable[31];
struct listville* suivant;
}MaillonDept, *Listdept;
} MaillonDept, *Listdept;
typedef struct VilleIUT{
typedef struct {
char Ville[31];
int nbIUT;
Listdept ldept;
}Maillon;
} VilleIUT;
//chargement
Listdept initialisation(void);
VilleIUT lireVille(FILE *fe);
Listdept lireDept(FILE *fe, int nbIUT);
int chargeIUT(VilleIUT* tIUT[], int taillemax);
//affichage
void affichageDep(Listdept d);
void affichageAllDep(Listdept d);
void affichageville(VilleIUT *tville[], int nbville);
void afficheVilleIUT(VilleIUT *tville[], int nbville);
void afficheDepartementsIUT(VilleIUT *tville[], int nbville);
void afficheDepNbPlace(VilleIUT *tville[], int nbville);
void afficheIUTdepParticulier(VilleIUT *tville[], int nbville);
//modif
int rechercheVille(VilleIUT *tville[], int nbville);
void modifPlace(VilleIUT *tville[], int nbville);
int chercheDepModif(Listdept d, char rechercheDep[31]);
void modifNomResponsable(VilleIUT *tville[], int nbville);
//ajout / suppressions
Listdept ajoutDept(int posOptionnel, VilleIUT *tville[], int nbville);
void ajoutIUT(VilleIUT *tIUT[], int *nbville, int taillemax);
Listdept suppressionDept(Listdept d, char rechercheDep[31]);
void supprDepartement(VilleIUT *tville[], int* nbville);
void suppcarte(VilleIUT *tville[], int nbville);
void menuP1Utilisateur(VilleIUT *v[], int nb);
void menuP1Administrateur(VilleIUT *v[], int nb);
void sauvegardeDep(Listdept d, FILE *fs);
void sauvegarde(VilleIUT *tville[], int nbville);
// Partie 2

Loading…
Cancel
Save