Gestion d'une classe d'élèves

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 883 fois - Téléchargée 31 fois

Contenu du snippet

console pour gestion d'une classe d'élèves(vous pouvez changer le nombre d'élève biensur).vous pouvez aussi utiliser les fonction pour autre chose il suffit de les adapter aux besoins de votre projet -) enjoy it.

Source / Exemple :


#include<stdio.h>
 #include<conio.h>
 #include<stdlib.h>
       //la declaration des nouveaux types
 typedef struct  {
				 	  	char nom[10],prenom[10];
				 		int mat;
				 		float note;
                 }eleve;
        //la declaration des fonctions
 void  menu(void);
 FILE* creer_fichier(void);
 void  ajout(eleve,FILE *);
 void  affichage(eleve,FILE *);
 void  suppression(eleve,FILE *);
 void  suppression_logique(eleve,FILE *);
 void  recherche(eleve,FILE *);
 int   fichier_vide(void);

 main()
 {
	 menu();
	 getch();
 }
    //la definition de la fonction menu
 void menu(void)
 {
     char b;
     FILE *f;
     eleve e;
     do
        {

      		    printf("\n\n\t\t\t\tmenu:\n");
                printf("\t\t\t\t----\n\n");
                printf("\n   'c' : creer un fichier.\n\n   'a' : ajout d'un etudiant.\n\n   'p' : affichage.\n\n   'd' : suppression.\n\n   's' : suppression_logique.\n\n   'f' : recherche d'un etudiant par son matricule.\n\n   'q' : quitter.\n\n\t\tTapez votre choix?:");
				scanf("%c",&b);
				switch (b)
					{ 		case 'c': f=creer_fichier();  if(f==NULL) printf("pas de memoire");  break;
                            case 'a': ajout(e,f);break;                 ///////////////////
            			    case 'p': affichage(e,f);break;             // l'appelle des //
			  				case 'd': suppression(e,f);break;           //   fonctions   //
			  				case 's': suppression_logique(e,f);break;   ///////////////////
                            case 'f': recherche(e,f);break;             
					}
        }while (b!='q');
 }
      //la definition de la fonction creer_fichier
 FILE* creer_fichier(void)
 {
       FILE* f;
       f=fopen("classe.dat","wt");
       fclose(f);
       return f;
 }      
      //la definition de la fonction ajout
 void ajout(eleve e,FILE *f)
 {
     f=fopen("classe.dat","at");
	 if(f==NULL)
            printf("le fichier n'a pas encore ete cree");
     else
     {
        getchar();
        printf("\n   donner le nom de l'etudiant : ");
	    gets(e.nom);
	    printf("\n   donner le prenom de l'etudiant : ");
	    gets(e.prenom);
	    printf("\n   donner la matricule: ");
	    scanf("%i",&e.mat);
	    printf("\n   la moyenne : ");
	    scanf("%f",&e.note);
        if(fwrite(&e,sizeof(e),1,f)<1)
                printf("l'ecriture n'a pas ete faite");
     }  
     fclose(f);
 }
      //la definition de la fonction d'affichage
 void affichage(eleve e,FILE *f)
 {
    int compt=0;
    if(fichier_vide()==1)
	   printf("le fichier est vide\n");
    else
    {
      f=fopen("classe.dat","rt");
	  if(f==NULL)
            printf("le fichier n'a pas encore ete cree");
      else
        {
            if(fread(&e,sizeof(e),1,f)<1)
       	       printf("le fichier contient %d eleve(s)\n",compt);
            else  
               while(feof(f)==0)
                     {
                        if(e.mat!=-1)
                           {
                              printf("\nle nom est : %s\nle prenom est : %s\nle matricule est : %d\nla note est : %f\n",e.nom,e.prenom,e.mat,e.note);
                              printf("\n-------------------\n");
                              compt++;
                           }
                        if(fread(&e,sizeof(e),1,f)<1)
       	                   printf("le fichier contient %d eleve(s)\n",compt);
                     }
        }
      fclose(f); 
    }
    getch();
 }
   //la definition de la fonction de suppression
 void suppression(eleve e,FILE *f)
 {
	FILE *cf;
	int a,trouve=1;
	if(fichier_vide()==1)
	   printf("le fichier est vide\n");
    else
    {
       f=fopen("classe.dat","rt");
	   if(f==NULL)
           printf("le fichier n'a pas encore ete cree");
       else
       { 	  
	      cf=fopen("cloneclasse.dat","wt");
	      if(cf==NULL)
	         printf("pas de memoire\n");
          else
          {
             printf("\ndonner la matricule de l'etudiant a supprimer:");
	         scanf("%d",&a);
	         if(fread(&e,sizeof(e),1,f)<1)
                printf("le fichier n'a pas encore ete ouvert\n");
             else
             {
	            while(feof(f)==0)
                    {
                       if(e.mat!=a)
                          if(fwrite(&e,sizeof(e),1,cf)<1)
                              printf("cannot write here\n");
                       if(e.mat==a)
                          {
                             printf("L'eleve a ete supprime\n");
                             trouve=0;
                          }       
                       if(fread(&e,sizeof(e),1,f)<1 && feof(f)==0)
                          printf("le fichier n'a pas encore ete ouvert\n");
                    }
             }
             if(trouve==1)
                printf("cet eleve n'existe pas\n"); 
          } 
       }
       fclose(f);
       remove("classe.dat");                  
 	   fclose(cf);
 	   rename("cloneclasse.dat","classe.dat");
    } 
    getch();
 }
       //la definition de la fonction de recherche
 void recherche(eleve e,FILE *f)
{
    int a,trouve=1;
    if(fichier_vide()==1)
	   printf("le fichier est vide\n");
    else
    {
      f=fopen("classe.dat","rt");
	  if(f==NULL)
             printf("le fichier n'a pas encore ete cree");
      else
      { 	  
	     printf("\n   donnez la matricule de l'etudiant:");
         scanf("%d",&a);
         if(fread(&e,sizeof(e),1,f)<1)
             printf("le fichier n'a pas encore ete ouvert\n");
         else
         {
             while(feof(f)==0)
                 {
                     if(e.mat==a && feof(f)==0)
                        {
                            printf("\n   \tl'etudiant s'appelle: %s %s\n",e.nom,e.prenom);
                            printf("\n   \tsa moyenne est: %.2f\n",e.note); 
                            trouve=0; 
                        }
                     if(fread(&e,sizeof(e),1,f)<1 && feof(f)==0)
                         printf("le fichier n'a pas encore ete ouvert\n");
                 }
         }
         if(trouve)
            printf("cet eleve n'existe pas\n");
      }
      fclose(f);
    }
    getch();
 }
 void suppression_logique(eleve e, FILE *f)
 {
     int a,b=0,trouve=1;
     if(fichier_vide()==1)
	   printf("le fichier est vide\n");
     else
     {
       f=fopen("classe.dat","r+t");
       if(f==NULL)
             printf("le fichier n'a pas encore ete cree");
       else
       { 
           printf("\ndonner la matricule de l'etudiant a supprimer:");
	       scanf("%d",&a);
	       if(fread(&e,sizeof(e),1,f)<1)
                  printf("le fichier n'a pas encore ete ouvert\n");
           else
              {
                  while(feof(f)==0)
                    {
                       b++;
                       if(e.mat==a)
                          {    
                             trouve=0;
                             fseek(f,(b-1)*sizeof(e),0);
                             e.mat=-1;
                             if(fwrite(&e,sizeof(e),1,f)<1)
                                  printf("cannot write here\n");
                             printf("l'eleve a ete supprimer\n"); 
                             break;
                          }
                       if(fread(&e,sizeof(e),1,f)<1 && feof(f)==0)
                          printf("le fichier n'a pas encore ete ouvert\n");
                     }
                  if(trouve==1)
                     printf("cet eleve n'existe pas\n");
              }
       }
       fclose(f);
     }
     getch();
 }
 int fichier_vide(void)
 {
     FILE *f;
     eleve e;
     int a=0;
     f=fopen("classe.dat","rt");
     if(f==NULL)
         printf("le fichier n'a pas encore ete cree");
     else
         {
            if(fread(&e,sizeof(e),1,f)<1)
                    a=1;
            else
                if(e.mat==-1)
                    a=1;
         }
     fclose(f);
     return a;
 }

A voir également

Ajouter un commentaire

Commentaires

Messages postés
45
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
7 juin 2013

Bjr! c programme marche bien,sauf qu'il n'a pas gerer le cas ou on se trompe d'étudiant et on veut plus continuer son enrégistrement;on peut l'arrêter en appuyant sur une touche et revenir au menu,au lieu d'allez encore supprimer l'étudiant qu'on n 'a pas fini l'enrégistrement.
N.B:pour nous qui sommes débutant trouvonsque ce bon,et c'est encourrageant.
Messages postés
1
Date d'inscription
dimanche 1 juillet 2007
Statut
Membre
Dernière intervention
1 juillet 2007

svp moi je cherche le meme programme ne language c qui permet d ajouter et supprimer eleves et chercher et plus que ca le paiment des leves ...tu peux m aider stp j attend votre reponse
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
marik7335 : Un tableau de structure dynamique ça peut être bon aussi non?? ça évite la manip de temps de pointeur pour rien.
Messages postés
13
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
20 février 2006

bonsoir,
comme dit precedemment c bien mais dommage que ce ne soit pas en C++ car moi aussi j'apprend le langage et je rame pour comprendre ce code car pour la gestion des flux, c pas reelement comme ca dans mon bouquin.
Mais sinon c vraiment bien comme programme y marche bien et y bug pas. Je vais essayer de mettre ca a la sauce C++....Enfin j'ai dis essayer, je debute/
mathieu
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
12
ok
merci
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.