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.
449 lines
11 KiB
449 lines
11 KiB
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include "sae1-02.h"
|
|
|
|
// général
|
|
|
|
// f enregistrement
|
|
|
|
// Partie 1
|
|
/*
|
|
|
|
void affichageVilleIUT() {
|
|
printf("%s\t%s\t%d\t%s")
|
|
}
|
|
|
|
int rechercheVille() {
|
|
|
|
}
|
|
|
|
VilleIUT lire(FILE * fe) {
|
|
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;
|
|
}
|
|
*/
|
|
// Partie 2
|
|
|
|
/*
|
|
|- décision ( admis - 1 /attente 0 default /refusé -2 )
|
|
|- validation candidat ( 0 default / -1 refus de ce choix / 2 accepte )
|
|
|
|
combien de fonctionnalité en combien de fonction ...
|
|
|
|
V charger fichier
|
|
V ajouter choix
|
|
V modifier choix
|
|
V supp choix
|
|
V enregistrer fichier
|
|
- section affichage
|
|
|
|
*/
|
|
|
|
//chargement ============================================================================================
|
|
|
|
Listchoixdept listvide(void){return NULL;}
|
|
|
|
Listchoixdept lireCarte(FILE *fe, int nbchoix){
|
|
if(nbchoix==0){return NULL;}
|
|
Maillonchoix* cc;
|
|
cc = (Maillonchoix*)malloc(sizeof(Maillonchoix));
|
|
fscanf(fe, "%s %s %d %d", cc->Ville, cc->dep, &cc->decision, &cc->validation);
|
|
cc->suivant = lireCarte(fe, nbchoix-1);
|
|
return cc;
|
|
}
|
|
|
|
listetuinfo lireEtu(FILE *fe){
|
|
listetuinfo b;
|
|
int i;
|
|
fscanf(fe, "%d %s %s %d %d %d %d %d", &b.numeroetu, b.nometu, b.prenometu, &b.notes[0], &b.notes[1], &b.notes[2], &b.notes[3], &b.nbchoix);
|
|
return b;
|
|
}
|
|
|
|
int chargeretudiant(char nomFich[], listetuinfo *tetu[], int tmax){
|
|
int i=0, nbetu;
|
|
listetuinfo a;
|
|
Listchoixdept b;
|
|
FILE *fe;
|
|
fe = fopen( nomFich, "r");
|
|
if(fe==NULL){printf("<! pb ouverture fichier in chargeretudiant !>\n");return-1;}
|
|
fscanf(fe, "%d", &nbetu);
|
|
b = listvide();
|
|
for(i=0; i<nbetu; i++){
|
|
if(i==tmax){printf("<! erreur fichier in chargeetudiant !>");fclose(fe);return-1;}
|
|
tetu[i] = (listetuinfo*)malloc(sizeof(listetuinfo));
|
|
if(tetu[i]==NULL){printf("<! pb malloc in chargeretudiant !>\n");fclose(fe);return-1;}
|
|
a = lireEtu(fe);
|
|
b = lireCarte(fe, a.nbchoix);
|
|
a.carte = b;
|
|
*tetu[i] = a;
|
|
}
|
|
fclose(fe);
|
|
return nbetu;
|
|
}
|
|
|
|
//enregistrement ========================================================================================
|
|
|
|
void enregistrementcarte(FILE *fe, Maillonchoix* b){
|
|
if(b==NULL){return;}
|
|
fprintf(fe, "%s\n%s\n%d\n%d\n", b->Ville, b->dep, b->decision, b->validation);
|
|
enregistrementcarte(fe, b.suivant, nb-1);
|
|
free(b);
|
|
}
|
|
|
|
void enregistrementinfo(FILE *fe, listetuinfo etu){
|
|
Listchoixdept b;
|
|
int i=0;
|
|
b = etu.carte;
|
|
fprintf(fe, "%d\n%s\n%s\n%d %d %d %d\n%d\n", etu->numeroetu, etu->nometu, etu->prenometu, etu->notes, etu->nbchoix);
|
|
enregistrementcarte(fe, b, etu.nbchoix);
|
|
}
|
|
|
|
int enregistrementetudiant(char nomFich[], listetuinfo *tetu[], int nb){
|
|
int i=0;
|
|
FILE *fe;
|
|
fe = fopen( nomFich, "w");
|
|
if(fe==NULL){printf("<! pb fichier in enregistrementetudiant !>\n");return-1;}
|
|
fprintf(fe, "%d\n", nb);
|
|
for(i=0; i<nb; i++){
|
|
enregistrementinfo(fe, tetu[i]);
|
|
free(tetu[i]);
|
|
}
|
|
fclose(fe);
|
|
}
|
|
|
|
//affichage =============================================================================================
|
|
|
|
|
|
|
|
//général fonction for ajouter modifier et supprimer ===========
|
|
|
|
void affichagedep(MaillonDept* b){
|
|
if(b==NULL){return;}
|
|
printf("%s", b->departement);
|
|
affichagedep(b.suivant);
|
|
}
|
|
|
|
void affichagecarte(Maillonchoix* carte){
|
|
if(carte==NULL){return;}
|
|
printf("%s - %s\n", carte->Ville, carte->dep);
|
|
afficherchoix(carte.suivant);
|
|
}
|
|
|
|
void affichageville(Maillon *tville[], int nbville){
|
|
int i;
|
|
Listdept b;
|
|
for(i=0; i<nbville; i++){
|
|
b = tville[i].ldept;
|
|
printf("%s :\n", tville[i]->Ville);
|
|
affichagedep(b);
|
|
printf("\n");
|
|
}
|
|
}
|
|
|
|
void affichervillechoix(Maillon villechoix){
|
|
int i;
|
|
Listdept b;
|
|
b = villechoix.ldept;
|
|
printf("%s :\n", villechoix->Ville);
|
|
affichagedep(b);
|
|
printf("\n");
|
|
}
|
|
|
|
int cherchelistcorrespond(MaillonDept* dep, char choixdep[]){
|
|
if(dep==NULL){return -1}
|
|
if(strcmp(dep->departement,choixdep)==0){return 1;}
|
|
return cherchelistcorrespond(dep.suivant);
|
|
}
|
|
|
|
int correspondville(char choixville[], char choixdep[], Maillon *tville[], int nbville){
|
|
Listdept b;
|
|
for(i=0; i<nbville; i++){
|
|
if(strcmp(tville[i]->Ville,choixville)==0){
|
|
b = tville[i].ldept;
|
|
ok = cherchelistcorrespond(b, choixdep);
|
|
if(ok==1){return 1;}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int correspondcarte(char choixville[], char choixdep[], Maillonchoix* carte){
|
|
if(carte==NULL){return 0;}
|
|
if(strcmp(choixville,carte->Ville)==0){
|
|
if(strcmp(choixdep,carte->dep)==0){
|
|
return 1;
|
|
}
|
|
}
|
|
correspondcarte(choixville, choixdep, carte.suivant);
|
|
}
|
|
|
|
//ajouter ===============================================================================================
|
|
|
|
void choix(Maillon *tville[], int nbville, char choixville[], char choixdep[]){
|
|
int i, ok;
|
|
printf("ville : \n");
|
|
fgets(choixville, 31, stdin);
|
|
choixville[strlen(choixville)-1]='\0';
|
|
printf("departement : \n");
|
|
fgets(choixdep, 31, stdin);
|
|
choixdep[strlen(choixdep)-1]='\0';
|
|
ok = correspondville(choixville, choixdep, tville[i], nbville);
|
|
while(ok!=1){
|
|
printf("ville : \n");
|
|
fgets(choixville, 31, stdin);
|
|
choixville[strlen(choixville)-1]='\0';
|
|
printf("departement : \n");
|
|
fgets(choixdep, 31, stdin);
|
|
choixdep[strlen(choixdep)-1]='\0';
|
|
ok = correspondville(choixville, choixdep, tville[i], nbville);
|
|
}
|
|
}
|
|
|
|
Listchoixdept ajoutercarte(Maillonchoix* a, char choixville, char choixdep){
|
|
Maillonchoix* carte;
|
|
carte = (Maillonchoix*)malloc(sizeof(Maillonchoix));
|
|
if(carte==NULL){printf("<! erreur malloc in ajoutercarte !>\n");exit(1);}
|
|
strcpy(carte->Ville,choixville);
|
|
strcpy(carte->departement,choixdep);
|
|
carte->decision=0;
|
|
carte->validation=0;
|
|
carte->suviant=a;
|
|
return carte;
|
|
}
|
|
|
|
int allajoutprocess(Maillon *tville[], listetuinfo etu, int nbville){
|
|
int i;
|
|
Listchoixdept b;
|
|
b = etu.carte;
|
|
char choixville[31], choixdep[31];
|
|
afficheville(tville, nbville);
|
|
choix(tville, nbville, choixville, choixdep);
|
|
ok = correspondcarte(choixville, choixdep, b);
|
|
if(ok==0){b = ajoutercarte(b, choixville, choixdep);}
|
|
else{printf("\t< choix deja existant >\n");}
|
|
}
|
|
|
|
//modifier ==============================================================================================
|
|
|
|
void choix2(Listchoixdept lcarte, char choixville[], char choixdep[]){
|
|
printf("ville : \n");
|
|
fgets(choixville, 31, stdin);
|
|
choixville[strlen(choixville)-1]='\0';
|
|
printf("departement : \n");
|
|
fgets(choixdep, 31, stdin);
|
|
choixdep[strlen(choixdep)-1]='\0';
|
|
ok = correspondcarte(choixville, choixdep, lcarte);
|
|
while(ok!=1){
|
|
printf("ville : \n");
|
|
fgets(choixville, 31, stdin);
|
|
choixville[strlen(choixville)-1]='\0';
|
|
printf("departement : \n");
|
|
fgets(choixdep, 31, stdin);
|
|
choixdep[strlen(choixdep)-1]='\0';
|
|
ok = correspondcarte(choixville, choixdep, lcarte);
|
|
}
|
|
}
|
|
|
|
void choixdep(char choixville[], char choixdep[], Maillon *tville[], int nbville){
|
|
int ok;
|
|
printf("\n< quel departement voulez vous choisir ? >\n==>");
|
|
fgets(choixdep, 31, stdin);
|
|
choixdep[strlen(choixdep)-1]='\0';
|
|
ok = correspondville(choixville, choixdep, tville[i], nbville);
|
|
while(ok!=1){
|
|
printf("\n< quel departement voulez vous choisir ? >\n==>");
|
|
fgets(choixdep, 31, stdin);
|
|
choixdep[strlen(choixdep)-1]='\0';
|
|
ok = correspondville(choixville, choixdep, tville[i], nbville);
|
|
}
|
|
}
|
|
|
|
listetuinfo choixmodifcarte(char choixville[], char choixdep[], Maillon *tville[], int nbville){
|
|
if(b==NULL){return -1;}
|
|
Listdept dep;
|
|
if(strcmp(b->Ville,choixville)==0){
|
|
if(strcmp(b->dep,choixdep)==0){
|
|
choixdep(choixville, choixdep, tville, nbville);
|
|
b->dep=choixville;
|
|
return b;
|
|
}
|
|
}
|
|
b->suivant = choixmodifcarte(b.suivant, choixville, choixdep);
|
|
}
|
|
|
|
int correspondvilleonly(char choixville[], Maillon ville){
|
|
Listdept b;
|
|
if(strcmp(ville->Ville,choixville)==0){
|
|
affichervillechoix(ville);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
void modificationcarte(listetuinfo etu, Maillon *tville[], int nbville){
|
|
int i, ok;
|
|
char choixville[31], choixdep[31];
|
|
Listchoixdept lcarte;
|
|
lcarte=etu.carte;
|
|
affichagecarte(lcarte);
|
|
choix2(lcarte, choixville, choixdep);
|
|
for(i=0; i<nbville; i++){
|
|
ok = correspondvilleonly(choixville, tville[i]);
|
|
if(ok==1){
|
|
choixdep(choixville, choixdep, tville, nbville);
|
|
lcarte = choixmodifcarte(choixville, choixdep, tville, nbville);
|
|
}
|
|
else{printf("\t< choix deja existant >\n");}
|
|
}
|
|
}
|
|
|
|
//supprimer =============================================================================================
|
|
|
|
Maillonchoix suppressioncartechoix(char choixville[], char choixdep[], Maillonchoix carte){
|
|
Maillon tmp;
|
|
if(carte==NULL){return;}
|
|
if(strcmp(carte->Ville,choixville)==0){
|
|
if(strcmp(choixdep,carte->dep)==0){
|
|
tmp=carte->suivant;
|
|
free(carte);
|
|
return tmp;
|
|
}
|
|
}
|
|
suppressioncartechoix(choixville, choixdep, carte.suivant);
|
|
}
|
|
|
|
void suppcarte(listetuinfo etu,){
|
|
int i, ok;
|
|
char choixville[31], choixdep[31];
|
|
Listchoixdept lcarte;
|
|
lcarte=etu.carte;
|
|
affichagecarte(lcarte);
|
|
choix2(lcarte, choixville, choixdep);
|
|
lcarte = suppressioncartechoix(choixville, choixdep, lcarte);
|
|
}
|
|
|
|
//=======================================================================================================
|
|
|
|
|
|
|
|
// zone de test =========================================================================================
|
|
|
|
//affiche uniquement les cartes (choix d'iut)
|
|
void affichage(Listchoixdept c){
|
|
if(c==NULL){printf("\n");return;}
|
|
printf("%s %s %d %d", c->Ville, c->dep, c->decision, c->validation);
|
|
if(c->suivant==NULL){affichage(c->suivant);}
|
|
else{
|
|
printf("\n -");
|
|
affichage(c->suivant);
|
|
}
|
|
}
|
|
|
|
//affiche que la personne
|
|
void affichageetu(listetuinfo a){
|
|
printf(" %d\n %s %s\n", a.numeroetu, a.nometu, a.prenometu);
|
|
printf(" mathématique : %d\n", a.notes[0]);
|
|
printf(" français : %d\n", a.notes[1]);
|
|
printf(" anglais : %d\n", a.notes[2]);
|
|
printf(" matière spé : %d\n", a.notes[3]);
|
|
}
|
|
|
|
//affichage general
|
|
void affichealletu(listetuinfo *tetu[], int nb){
|
|
int j=0;
|
|
Listchoixdept b;
|
|
b = listvide();
|
|
for(j=0; j<nb; j++){
|
|
affichageetu(*tetu[j]);
|
|
printf("tout les choix : \n -");
|
|
b = tetu[j]->carte;
|
|
affichage(b);
|
|
printf("\n\n");
|
|
}
|
|
}
|
|
|
|
void test1(void){
|
|
listetuinfo *tetu[5000];
|
|
int nb;
|
|
char nomFich[20];
|
|
strcpy( nomFich, "candidature.txt");
|
|
nb = chargeretudiant(nomFich, tetu, 5000);
|
|
affichealletu(tetu, nb);
|
|
}
|
|
|
|
//==========================================================================================================
|
|
|
|
// Partie 3
|
|
|
|
// Partie 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Général (menu et ce qui en ai relié)
|
|
/*
|
|
questionadmin(){
|
|
printf("\nQuel numéro détudiant ?\n==>");
|
|
scanf("%d%*c", &choix);
|
|
printf("\n");
|
|
}
|
|
|
|
int menu(void){
|
|
|
|
|
|
//charger
|
|
|
|
|
|
int i=0, choix;
|
|
while(i!=1){
|
|
printf("\n\tmenu\n\n");
|
|
printf("1\tutilisateur\n");
|
|
printf("2\tadmin\n");
|
|
printf("3\tresponsable d'admission\n");
|
|
printf("\nQuel est votre choix ?\n==>");
|
|
scanf("%d%*c", &choix);
|
|
printf("\n");
|
|
if(choix==1){
|
|
}
|
|
if(choix==2){
|
|
}
|
|
if(choix==3){
|
|
}
|
|
if(choix<1 || choix>6){
|
|
printf("mauvaise saisie\n");
|
|
}
|
|
}
|
|
|
|
//enregister
|
|
|
|
return 1;
|
|
}
|
|
*/
|