khal22 | Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void saisir_fichier(FILE* fp_etudiant);
- void menu();
- int verif_lettre(char* c);
- int verif_cin(char *ncin,FILE *fp);
- int chiffre(char* c);
- void ajouter_etudiant();
- FILE* moyenne_etudiant(FILE* fp_etudiant);
- void modifier_note(FILE* fp);
- void recherche_par_cin(FILE* fp);
- void rattrapage();
- void main()
- {
- FILE *fp_etudiant=NULL;
- int choix;
- do
- {
- menu();
- do
- {
- scanf("%d",&choix);
- if(choix<0||choix>6)
- printf("choix invalide\n" );
- }while(choix<0||choix>6);
- switch (choix)
- {
- case 1 : saisir_fichier(fp_etudiant); break;
- case 2 : moyenne_etudiant(fp_etudiant); break;
- case 3 : modifier_note(fp_etudiant); break;
- case 4 : rattrapage(); break;
- case 0 : exit(0);
- }
- }while(1);
- }
- void menu()
- {
- printf("1.saisir les donnees d'un etudiant\n" );
- printf("2.liste de ratrappage\n" );
- printf("3.modifier la note d'un etudiant\n" );
- printf("4.afficher (l'/les)etudiant(s) qui (est/sont) 1er(s) dans la matiere\n" );
- printf("5.recherche num. d'inscri d'un etudiant\n" );
- printf("6.trier les etudiant par ordre alphabetique\n" );
- }
- void saisir_fichier(FILE* fp_etudiant)
- {
- char ch[200]="",ch2[200]="";
- char cin[8]="";
- char num_inscri[8]="",classe[10]="",matiere[10]="";
- float note_control,note_exam;
- char prenom[15]="";
- char nom[15]="";
- int i;
- printf("entrer le cin de l'etudiant : " );
- do
- {
- scanf("%s",cin);
- }while(strlen(cin)!=8||!chiffre(cin)||!verif_cin(cin,fp_etudiant));
- fp_etudiant=fopen("etudiant.txt","r+" );
- if(fp_etudiant!=NULL)
- {
- while(fgetc(fp_etudiant)!=EOF);
- fputc('\n',fp_etudiant);
- fputs(cin,fp_etudiant);
- fclose(fp_etudiant);
- }
- printf("\nentrer le prenom de l'etudiant : " );
- do
- {
- scanf("%s",prenom);
- }while(strlen(prenom)>15||strlen(prenom)<1||!verif_lettre(prenom));
- printf("\nentrer le nom de l'etudiant : " );
- do
- {
- scanf("%s",nom);
- }while(strlen(nom)>15||strlen(nom)<1||!verif_lettre(nom));
- printf("\nentrer le num. d'inscri de l'etudiant : " );
- do
- {
- scanf("%s",num_inscri);
- }while(strlen(num_inscri)!=8||!chiffre(num_inscri)||!verif_cin(num_inscri,fp_etudiant));
- printf("\nentrer la classe de l'etudiant : " );
- do
- {
- scanf("%s",classe);
- }while(strlen(classe)<1||strlen(classe)>10);
- printf("\nentrer la matiere: " );
- do
- {
- scanf("%s",matiere);
- }while(!verif_lettre(matiere)||strlen(matiere)<1||strlen(matiere)>10);
- printf("\nentrer le note de controle de l'etudiant : " );
- do
- {
- scanf("%f",¬e_control);
- }while(note_control<0||note_control>20);
- printf("\nentrer le note de l'exam de l'etudiant : " );
- do
- {
- scanf("%f",¬e_exam);
- }while(note_exam<0||note_exam>20);
- sprintf(ch," %-20s %-20s %8s %-10s %-10s %-10f %-10f",nom,prenom,num_inscri,classe,matiere,note_control,note_exam);
- fp_etudiant=fopen("etudiant.txt","a" );
- if(fp_etudiant!=NULL)
- {
- fputs(ch,fp_etudiant);
- fclose(fp_etudiant);
- }
- }
- int verif_cin(char *ncin,FILE *fp)
- {
- char ch[200];
- rewind(fp);
- while(fgets(ch,199,fp))
- {
- if(!memcmp(ch,ncin,8))
- {
- printf("CIN existe deja \n " );
- return(0);
- }
- }
- return(1);
- }
- int verif_lettre(char* c)
- {
- int i;
- for(i=0;i<strlen(c);i++)
- {
- if((c[i]<='z'&&c[i]>='a')||(c[i]<='Z'&&c[i]>='A'))
- return 1;
- }
- return 0;
- }
- int chiffre(char* c)
- {
- int i;
- for(i=0;i<strlen(c);i++)
- {
- if(c[i]<='9'&&c[i]>='0')
- return 1;
- }
- return 0;
- }
- FILE* moyenne_etudiant(FILE* fp_etudiant)
- {
- float a[2]={0},m=0; int i=0,b=95,p=-1,l;
- char ch_moy[100]="",ch_boucl[150]="",c;
- FILE* fp;
- fp_etudiant=fopen("etudiant.txt","r" );
- if(fp_etudiant!=NULL)
- {
- rewind(fp_etudiant);
- c=fgetc(fp_etudiant);
- while(c!=EOF)
- {
- p++;
- l=p;
- i=0;
- fgets(ch_moy,51,fp_etudiant);
- printf("%s\n",ch_moy);
- while(c!=EOF&&i<32)
- {
- c=fgetc(fp_etudiant);
- i++;
- }
- fscanf(fp_etudiant,"%f",&a[0]);
- printf("%f",a[0]);
- rewind(fp_etudiant);
- c=fgetc(fp_etudiant);
- while(l>0&&fgets(ch_boucl,150,fp_etudiant)!=NULL)
- {
- l--;
- }
- i=0;
- while(c!=EOF&&i<93)
- {
- c=fgetc(fp_etudiant);
- i++;
- }
- fscanf(fp_etudiant,"%f",&a[1]);
- printf(" %f",a[1]);
- printf("\n" );
- m=(a[0]*3+a[1]*7)/10;
- fp=fopen("moyenne_etudiant.txt","a" );
- if(fp!=NULL)
- {
- fputs(ch_moy,fp);
- fprintf(fp,"%f",m);
- fputc('\n',fp);
- fclose(fp);
- }
- while(c!=EOF&&c!='\n')
- {
- c=fgetc(fp_etudiant);
- }
- }
- fclose(fp_etudiant);
- }
- }
- void modifier_note(FILE* fp)
- {
- int i=0,b;
- float n;
- char chaine[150]="", rnom[10]="",cpnom[10]="",c;
- int l=0,m;
- printf("saisir le nom a chercher : " );
- scanf("%s",rnom);
- fp=fopen("etudiant.txt","r+" );
- if(fp!=NULL)
- {
- rewind(fp);
- c=fgetc(fp);
- while(fgets(chaine,150,fp)!=NULL)
- {
- l++;
- sscanf(chaine,"%8s %20s",cpnom,cpnom);
- if(!strcmp(cpnom,rnom))
- {
- m=l-1;
- i++;
- printf("%s",chaine);
- }
- }
- rewind(fp);
- c=fgetc(fp);
- if(i==1)
- {
- while(fgets(chaine,150,fp)!=NULL&&m>0)
- {
- m--;
- }
- }
- if(i>1)
- {
- recherche_par_cin(fp);
- }
- printf("saisir la note a modifier : " );
- printf("1.ds 2.exam : " );
- scanf("%d",&b);
- printf("saisir la nouvelle note : " );
- scanf("%f",&n);
- switch(b)
- {
- case 1 : fseek(fp,-23,SEEK_CUR); fprintf(fp,"%f",n); break;
- case 2 : fseek(fp,-12,SEEK_CUR); fprintf(fp,"%f",n); break;
- default: printf("choix invalide\n" ); break;
- }
- fclose(fp);
- }
- }
- void recherche_par_cin(FILE* fp)
- {
- char chaine[150]="", rcin[8]="",cpcin[8]="",c;
- int i=0,m,l=0;
- printf("saisir le num de cin a chercher : " );
- scanf("%s",rcin);
- fp=fopen("etudiant.txt","r" );
- if(fp!=NULL)
- {
- rewind(fp);
- c=fgetc(fp);
- while(fgets(chaine,150,fp)!=NULL)
- {
- l++;
- sscanf(chaine,"%8s",cpcin);
- if(!strcmp(cpcin,rcin))
- {
- m=l-1;
- printf("%s",chaine);
- }
- }
- rewind(fp);
- c=fgetc(fp);
- while(fgets(chaine,150,fp)!=NULL&&m>0)
- {
- m--;
- }
- fclose(fp);
- }
- }
- void rattrapage()
- {
- FILE* fp=NULL;
- float a;
- char ch[100]="",c;
- fp=fopen("moyenne_etudiant.txt","r" );
- if (fp!=NULL)
- {
- printf("La liste des etudiants qui vont passer l'exam de rattrapage : \n\n" );
- while(fgets(ch,100,fp)!=NULL)
- {
- fseek(fp,-11,SEEK_CUR);
- fscanf(fp,"%f",&a);
- if(a<10)
- printf("%s",ch);
- c=fgetc(fp);
- while(c!='\n'&&c!=EOF)
- {
- c=fgetc(fp);
- }
- }
- fclose(fp);
- printf("\n" );
- }
- }
|
Message édité par gilou le 03-05-2013 à 13:33:06
|