include #include #include #include struct info { char sn[30]; int mark[4]; }; int add(char*); int edit(char *); int show(char *); int delet(char *); void loosers(char *,int); void succes(char*,int); int main(int argc,char* argv[]) { SetConsoleCP(1251); SetConsoleOutputCP(1251); char filename[50]="data.bin"; if(argc>1) strcpy(filename,argv[1]); else { printf("Введите имя файла\n"); scanf("%s",filename); } char menu; int ball=240; do { system("cls"); puts("1 Добавить ученика"); puts("2 Редактировать данные"); puts("3 Показать список"); puts("4 Удалить из списка "); puts("5 Процент не прошедших конкурс"); puts("6 Прошедшие конкурс"); puts("7 Выход"); menu=getchar(); switch(menu) { case '1' : add(filename); break; case '2' : edit(filename); break; case '3' : show(filename); break; case '4' : delet(filename); break; case '5' : loosers(filename,ball); break; case '6' : succes(filename,ball); } } while(menu!='7'); return 0; } int add(char *file) { struct info puipl; FILE *f; f=fopen(file,"ab"); if(!f) { printf("Ошибка открытия файла\n"); return 1; } system("cls"); printf("Максимальный балл за результаты ЕГЭ: 100,за дополнительный экзамен:70\n"); puts("Surname"); scanf("%s",&puipl.sn); puts("Math"); scanf("%d",&puipl.mark[0]); puts("Rus"); scanf("%d",&puipl.mark[1]); puts("Engl"); scanf("%d",&puipl.mark[2]); puts("Dop"); scanf("%d",&puipl.mark[3]); if((puipl.mark[0]>100 || puipl.mark[1]>100 || puipl.mark[2]>100 || puipl.mark[3]>70) || (puipl.mark[0]<0 || puipl.mark[1]<0 || puipl.mark[2]<0 || puipl.mark[3]<0)) { printf("Произошла ошибка ввода!\n"); system("pause"); fclose(f); return 1; } fwrite(&puipl,sizeof(puipl),1,f); fclose(f); return 0; } int show(char *file) { FILE *f; int k=0; struct info puipl; f=fopen(file,"rb"); if(!f) { printf("Ошибка открытия файла\n"); return 1; } system("cls"); puts(" |Фамилия| |Матем.| |Рус.| |Англ.| |Доп.испытание"); while(fread(&puipl,sizeof(puipl),1,f)) { printf("%-4d|%-14s|%-15d|%-15d|%-13d|%-12d\n",++k,puipl.sn,puipl.mark[0],puipl.mark[1],puipl.mark[2],puipl.mark[3]); } fclose(f); system("pause"); return 0; } int edit(char* file) { FILE *f,*fout; struct info puipl; int num; system("cls"); f=fopen(file,"r+b"); char temp[10]="temp.bin"; fout=fopen(temp,"a+b"); if(!f || !fout) { printf("opening error!!!\n"); system("pause"); return 1; } fseek(fout,0L,SEEK_SET); printf("Введите номер ученика,чьи данные вы хотите изменить\n"); scanf("%d",&num); while(fread(&puipl,sizeof(puipl),1,f)) { if(ftell(f)==(num*sizeof(puipl))) { puts("Фамилия"); scanf("%s",&puipl.sn); puts("Математика"); scanf("%d",&puipl.mark[0]); puts("Русский"); scanf("%d",&puipl.mark[1]); puts("Английский"); scanf("%d",&puipl.mark[2]); puts("Доп.испытание"); scanf("%d",&puipl.mark[3]); if((puipl.mark[0]>100 || puipl.mark[1]>100 || puipl.mark[2]>100 || puipl.mark[3]>70) || (puipl.mark[0]<0 || puipl.mark[1]<0 || puipl.mark[2]<0 || puipl.mark[3]<0)) { printf("Произошла ошибка ввода!\n"); system("pause"); fclose(f); return 1; } fwrite(&puipl,sizeof(puipl),1,f); } else fwrite(&puipl,sizeof(puipl),1,f); } fclose(f); fclose(fout); /*remove(file); rename(temp,file);*/ system("pause"); return 0; } void succes(char* file,int ball) { FILE *f; struct info puipl; int sum=0; f=fopen(file,"rb"); if(!f) { printf("Ошибка открытия файла!!!\n"); return 1; } system("cls"); while(fread(&puipl,sizeof(puipl),1,f)) { sum=(puipl.mark[0] + puipl.mark[1]+puipl.mark[2]+puipl.mark[3]); if(sum>ball) printf("%s\n",puipl.sn); } fclose(f); system("pause"); } void loosers(char* file,int ball) { FILE *f; int sum=0; double percesnt=0,k=0,vsego=0; struct info puipl; f=fopen(file,"rb"); system("cls"); if(!f) { printf("Ошибка открытия файла!\n"); return 1; } while(fread(&puipl,sizeof(puipl),1,f)) { sum=(puipl.mark[0] + puipl.mark[1]+puipl.mark[2]+puipl.mark[3]); vsego++; if(sum