Gestion d'une classe d'élèves

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

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.