GESTION D'UNE CLASSE D'ÉLÈVES

Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
- - Dernière réponse : Debord10
Messages postés
45
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
7 juin 2013
- 23 avril 2011 à 18:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31259-gestion-d-une-classe-d-eleves

Afficher la suite 
Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Tu lis directement les infos dans le fichier ? Ca doit pas être la méthode la plus rapide
Aussi, quand tu vérifie d'éventuelles erreurs quand tu appelle tes fonctions (affichage par ex), ne met pas de 'else' et place le getch() et le fclose() supplémentaires. Sinon on se perd avec les alinéas.
marik7335
Messages postés
117
Date d'inscription
samedi 27 décembre 2003
Statut
Membre
Dernière intervention
11 mai 2009
-
Aprés étude de ton code, je peux constater que tu traite les éléves directement à partir de ton fichier et pour reprendre les dires de Saros, ce n'est pas la meilleure méthode. J'aurais plutôt penser à une liste chaînée. En effet, avec les listes chaînées, tous les traitements seront effectués directement en mémoire (c déjà plus rapide), puis ça te permet de traiter autant d'élèves que tu veux, sans te soucier de leur effectif dans une classe (tant que la mémoire le permet).

Exemple de déclaration en reprenant ta structure :

struct eleve
{
char nom[10], prenom[10];
int mat;
float note;

struct eleve *suivant;
}depart, *noeud, *noeud_precedent;

----Au départ
depart.suivant = NULL; // liste vide
noeud = &depart; // pointe vers le départ de la liste

----Ajouter un élève
noeud->suivant = (struct eleve *) malloc(sizeof(struct eleve));
noeud = noeud->suivant;
strcpy(noeud->nom,"nom");
strcpy(noeud->prenom,"prenom");
noeud->mat = 1;
noeud->note = 12,5;
noeud->suivant = NULL;

----Supprimer un élève (matricule = 1)
noeud = depart.suivant;
noeud_precedent = &depart;
while (noeud)
{
if (noeud->mat == 1)
{
noeud_precedent->suivant = noeud->suivant;
free(noeud);
}
else
{
noeud = noeud->suivant;
noeud_precedant = noeud_precedent->suivant;
}
}
klinux
Messages postés
4
Date d'inscription
jeudi 9 novembre 2000
Statut
Membre
Dernière intervention
16 juillet 2005
-
merci pour les remarques.
effectivement le traitement sur les eleves sera plus vite en memoire (le temps dacces est plus rapide),mais jvoulai juste proposer des fonctions que les debutants peuvent lire pour se familiariser avec la manipulation des fichiers.
en fait il existe plusieurs methodes qui facilitent la manipulation comme le hashcoding et les fichiers indexes.
merci encore pour vos commentaires -)
nb: jai oublié de supprimer les directions vers le fichier comme
f=fopen("C:/Documents and Settings/kamal kimakhe/Mes documents/classe.dat","rt");
qui devient
f=fopen("classe.dat","rt");
sheorogath
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
10 -
en effet je vois ce prog comme une aide mais dommage qu'il ne soit pas en c++
je voulais apprendre sur les gestion des flux
sheorogath
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
10 -
a quoi sert getch()?
merci