# Компьютерные технологии > Прикладное программирование > C\C++ >  помогите с прогой пожалуйста

## parahod

в программе должно быть: создание файла(типа базы данных), запись в файл, загрузка и удаление файла.
вот код:

			  #include <iostream.h>
              #include <stdlib.h>
              #include <time.h>
              #include <stdio.h>
              #include <string.h>
              #include <conio.h>
              #include <io.h>
              #include <fcntl.h>
              #include <sys\stat.h>
              struct baza{char name[20];int kolvo;};
              struct zapis {float mark;float age; int course; char sex[6];char fio[20];int nz;};
              zapis res[30];
			  int mar=0; 

			  void record(FILE *f, int i, zapis zap1);
			  void data(int n,char s[20]);
              void operate(char s[20]);
			  void create();
			  zapis reading(FILE *f, int i);
              void main()
			  {
				  char s[20];
				  int wrk,k,num;
				  baza base;
				  FILE *f,*sav,*fb;
Choose:			  system("cls"); 
            	  cout<<"Create new base------1"<<endl;
				  cout<<"Load existent base---2"<<endl;
				  cout<<"Delete data base-----3"<<endl;
				  cout<<"Exit-----------------4"<<endl;
				  cout<<endl;
			  cout<<"Enter your choise:  ";
				  cin>>wrk;
				  switch (wrk)
				  {
				  case 1: create();break;
				  case 2: 
					  {
						  k=1;
						  sav=fopen("data.dnt","rb");
						  while (fread(&base,sizeof(baza),1,sav))
							{ 
								cout<<k<<" .  "<<base.name<<endl;
								k++;
							}
						  fclose(sav);
						  cout<<"Enter the number of chosen data base: ";
						  cin>> num;
						  k=1;
						  sav=fopen("data.dnt","rb");
						  while (fread(&base,sizeof(baza),1,sav))
						  {
							  if(k==num) strcpy(s,base.name);
						  }
						  fclose(sav);
						  operate(s);
					  };break;
				  case 3:
					  {
						  k=1;
						  sav=fopen("data.dnt","rb");
						  while (fread(&base,sizeof(baza),1,sav))
							{ 
								cout<<k<<".  "<<base.name<<endl;
								k++;
							}
						  fclose(sav);



						  cout<<"Enter number of data base you want to delete:  ";
                          cin>>num;
				          sav=fopen("data.dnt","rb");
						  f=fopen("system.dnt","wb");
						  int i=1;
						  while ((fread(&base,sizeof(baza),1,sav))&&(i<num))//если номер текущей записи  меньше нужного, записываемв резервный файл и  берем следующую
						  {
						  fwrite(&base, sizeof(baza),1,f);
						  i++;
						  }//записаны все записи до удаляемой, удаляемая уже прочитана, значит при следующем чтении будет взята следующая после удаляемой
						  while (fread(&base,sizeof(baza),1,sav))//запись оставшихся записей(после удаляемой)
						  {
						  fwrite(&base, sizeof(baza),1,f);
						  }
						  fclose(sav);
						  fclose(f);
						  sav=fopen("data.dnt","wb");
						  f=fopen("system.dnt","rb");
						  while (fread(&base,sizeof(baza),1,f))//запись обратно в наш файл(удаляемой записи уже нет)
						  {
						  fwrite(&base, sizeof(baza),1,sav);
						  }
						  fclose(sav);
						  fclose(f);
						  getch();
						  goto Choose;
					  };break;
				  case 4:  exit(1);break;
				  default: {cout<<"You entered incorrect number, please, choose again"; getch(); goto Choose;}
				  };
				  goto Choose;
			  };

			  void create()
			  { 
				  system("cls"); 
			  zapis zap1;//это создаваемая запись
              baza base;
			  int n,i,num;
			  char s[20];
              FILE *f,*sav,*fb;
               //для имени файла
			  printf("enter file name(you can't use symbols ?,/,|,\,:,<,>,space) ");
			  scanf("%s",s); 
			  f=fopen(s,"wb");//открытие файла(создание если нету)

			  cout <<"count of zapis= ";
              cin>>n;//сколько записей

			  for (i=1;i<=n;i++)
              {
              cout<<"enter nomer zachetki =";//ввод новой записи
              cin>>zap1.nz;
              cout<<"enter age =";
              cin>>zap1.age;
              cout<<"enter sex(male/female) =";
              cin>>zap1.sex;//нужен try
              cout<<"enter course =";
              cin>>zap1.course;
              cout<<"enter mark =";
              cin>>zap1.mark;
              cout<<"enter FIO =";
              cin>>zap1.fio;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,f);//запись данных в файл
              }

              fclose(f);
			  sav=fopen("data.dnt","rb");
			  fb=fopen("system.dnt","wb");
			  while (fread(&base,sizeof(baza),1,sav))  fwrite(&base,sizeof(baza),1,fb);
			  base.kolvo=n;
			  strcpy(base.name,s);
			  fwrite(&base,sizeof(baza),1,fb);
			  fclose(sav);
			  fclose(fb);
			  sav=fopen("data.dnt","wb");
			  fb=fopen("system.dnt","rb");
			  while (fread(&base,sizeof(baza),1,fb))  fwrite(&base,sizeof(baza),1,sav);
			  fclose(sav);
			  fclose(fb);
			  cout<<"Do you want to work with this data base? Y(1) / N(2)";
			  cin>>num;
			  switch (num)
			  {
			  case 1: operate(s);
			  case 2: exit(0);
			  };
			  };

				void operate(char s[20])
              {
              FILE *f,*fd,*sav,*fb;//f -для нашего файла, fd - для резервного файла 
              int n,g,i,del, corr, output, sort, item, zikl;
              int deln, corrn, outn, sortn;
			  float s1;
              zapis zap1;
			  baza base;
			  char s2[20],s3[1],a1[20];
              system("cls");
			  cout<<endl;
			cout<<"MENU:"<<endl;
              cout<<"Enter new data--------------(1)"<<endl;
              cout<<"Delete data--------------(2)"<<endl;
              cout<<"Change data--------------(3)"<<endl;
              cout<<"vivod-(4)"<<endl;
              cout<<"Sortirovat------------------(5)"<<endl;
              cout<<"Otmena----------------------(8)"<<endl;
              cout<<endl;
              n=0;
			  f=fopen(s,"rb");

			  while (fread(&zap1,sizeof(zapis),1,f))
              {
              n++;
              }



			  fclose(f);
			  sav=fopen("data.dnt","rb");
			  while (fread(&base,sizeof(baza),1,sav))
			  {
				  if(strcmp(s,base.name)==0)
				  g=base.kolvo;
			  };
			  fclose(sav);
			  if (n!=g){cout <<"Eta baza povrezhdena, viberite drygyu"<<endl;getch();return;};
              cout<<"Viberite punkt menu ";
              cin>>item;
              cout<<endl;
              //сколько записей
              while (item!=8)//работа меню
              {
              switch (item)
              {
              case 1:
              {
				 // system("cls");
			  fd=fopen("system.dnt","wb");//открытие резервного файла для записи\чтения
              f=fopen(s,"rb");//открытие нашего файла только для чтения
              while (fread(&zap1,sizeof(zapis),1,f))
              {
			  fwrite(&zap1, sizeof(zapis),1,fd);//копирование файла в резервный
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))//копирование обратно
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }

			  cout<<"enter nomber of a student record-book = ";//ввод новой записи
              cin>>zap1.nz;
			  cout<<"enter age = ";
              cin>>zap1.age;
              cout<<"enter sex(male/female) = ";
              cin>>zap1.sex;
              cout<<"enter course =";
              cin>>zap1.course;
              cout<<"enter mark = ";
              cin>>zap1.mark;
              cout<<"enter FIO =";
              cin>>zap1.fio;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,f);//запись в наш файл
              fclose(fd);//закрытие файлов
              fclose(f);
			  data(n,s);
			  }; break;
              case 2://удаление записи
              {
				  //system("cls");
              cout<<"Vvedite nomer zapisi dlya udaleniya ";
              cin>>deln;
              cout<<endl;
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<deln))//если номер текущей записи  меньше нужного, записываемв резервный файл и  берем следующую
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }//записаны все записи до удаляемой, удаляемая уже прочитана, значит при следующем чтении будет взята следующая после удаляемой
              while (fread(&zap1,sizeof(zapis),1,f))//запись оставшихся записей(после удаляемой)
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))//запись обратно в наш файл(удаляемой записи уже нет)
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
			  data(n,s);
			  }; break;
              case 3://исправление записи
              {
				  //system("cls");
              cout<<"Vvedite nomer zapisi dlya ispravleniya ";
              cin>>corrn;
              cout<<endl;
              int pol;
              cout<<endl<<"Vvedite nomer polya dlya redaktirovaniya"<<endl;
              cout<<"1 - Nomber of a student record-book"<<endl; 
              cout<<"2 - Age"<<endl;
              cout<<"3 - Sex"<<endl;
              cout<<"4 - Course"<<endl;
              cout<<"5 - Mark"<<endl;
              cout<<"6 - FIO"<<endl;
              cin>>pol;
              switch (pol)
              {
              case 1:
              {system("cls");
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<corrn))//ищет нужную запись(как в удалении)
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }
              cout<<"Vvedite icpravlennii dannii"<<endl;
              cout<<"Nomber of a student record-book =";
              cin>>zap1.nz;//изменяет поле "фамилия"
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,fd);//перезаписывает запись
              while (fread(&zap1,sizeof(zapis),1,f))//дозаписывает оставшиеся записи в резервный файл
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))//запись обратно в наш файл
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
              };break;
              case 2://точно так же изменяет иостальные поля
              {system("cls");
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<corrn))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }
              cout<<"Vvedite icpravlennii dannii"<<endl;
              cout<<"Age =";
              cin>>zap1.age;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,fd);
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
              };break;
              case 3:
              {system("cls");
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<corrn))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }
              cout<<"Vvedite icpravlennii dannii"<<endl;
              cout<<"Enter sex =";
              cin>>zap1.sex;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,fd);
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
              };break;
              case 4:
              {system("cls");
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<corrn))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }
              cout<<"Vvedite icpravlennii dannii"<<endl;
              cout<<"Enter course =";
              cin>>zap1.course;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,fd);
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
              };break;
              case 5:
              {system("cls");
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<corrn))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }
			  cout<<"Vvedite icpravlennii dannii"<<endl;
              cout<<"Enter mark =";
              cin>>zap1.mark;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,fd);
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
              };break;
              case 6:
              {system("cls");
              fd=fopen("system.dnt","wb");
              f=fopen(s,"rb");
              i=1;
              while ((fread(&zap1,sizeof(zapis),1,f))&&(i<corrn))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              i++;
              }
              cout<<"Enter FIO=";
              cin>>zap1.fio;
              cout<<endl;
              fwrite(&zap1, sizeof(zapis),1,fd);
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              fwrite(&zap1, sizeof(zapis),1,fd);
              }
              fclose(fd);
              fclose(f);
              f=fopen(s,"wb");
              fd=fopen("system.dnt","rb");
              while (fread(&zap1,sizeof(zapis),1,fd))
              {
              fwrite(&zap1, sizeof(zapis),1,f);
              }
              fclose(fd);
              fclose(f);
              };break;
              default:cout<<"Vi neverno vveli znachenie"<<endl;
              };
              }; break;
              case 4://вывод данных на экран
              {
				system("cls");
              i=1;
              f=fopen(s,"rb");
              cout<<"===========================================  ============================="<<endl;
              cout<<"| N p/p *     FIO      *  Age  *  Sex   *  Cours *   Mark  * Nom. r-b. |"<<endl;
              cout<<"===========================================  ============================="<<endl;
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              cout<<"|";
              cout.width(7);cout<<i;
              cout<<"*";
              cout.width(7);cout<<zap1.fio; 
              cout<<"*";
              cout.width(9);cout<<zap1.age;
              cout<<"*";
              cout.width(13);cout<<zap1.sex;
              cout<<"*";
              cout.width(7);cout<<zap1.course;
              cout<<"*";
              cout.width(11);cout<<zap1.mark;
              cout<<"*";
              cout.width(14);cout<<zap1.nz; 
              cout<<"|"<<endl;
              cout<<"===========================================  ============================="<<endl;
              i++;
              }
              fclose(f);
              cout<<endl;
              }; break;
              case 5://сортировка
              {
              zapis zap1;
              int pol;
              n=0,
              f=fopen(s,"r+b");
              fseek(f,0,SEEK_SET);
              while (fread(&zap1,sizeof(zapis),1,f))
              {
              n++;
              }
              cout<<endl<<"Vvedite nomer polya po kotoromu predpolagaetsya sortirovka"<<endl;
              cout<<"1 - FIO"<<endl; 
              cout<<"2 - Age"<<endl;
              cout<<"3 - Sex"<<endl;
              cout<<"4 - Mark"<<endl;
              cin>>pol;
              int i=0,j=0,k=0,m=0;
              zapis B,V;
              for (i=0;i<n;i++)
              {
              B=reading(f,i);
              j=0; 
              switch (pol)
              {
              case 1: 
              {
              while (B.fio>reading(f,j).fio)
              j++;
              break;
              };
              case 2: {
              while (B.age>reading(f,j).age)
              j++;
              break;
              };
              case 3: {
              while (strcmp(B.sex,reading(f,j).sex)>0)
              j++;
              break;
              };
              case 4: {
              while (B.mark>reading(f,j).mark)
              j++;
              break;
              };
              default:{cout<<"Sortirovka nevozmozhna"<<endl;
              }; 
              };  
              for(k=i-1;k>=j;k--)
              {
              m=k;
              V=reading(f,k);
              record(f,++m,V);
              }
              record(f,j,B);
              };
              fclose(f);
              }; break;

              default:cout<<"Vi vibrali nevernii punkt"<<endl;
              };


              cout<<"add-(1), delete-(2), correct-(3), output-(4), sorting-(5), cancel-(6)"<<endl;
              cout<<"Viberite punkt menu ";
              cin>>item;
              cout<<endl;

              };
			  return;

			  };
              ///////////////////////////////////////////////////////////////////////////
              zapis reading(FILE *f, int i)
              {
              zapis vsp;
              fseek(f,i*sizeof(zapis),SEEK_SET);
              fread(&vsp,sizeof(zapis),1,f);
              return vsp;
              };
              void record(FILE *f, int i, zapis zap1)
              {
              fseek(f,i*sizeof(zapis),SEEK_SET);
              fwrite(&zap1,sizeof(zapis),1,f);
              };

			  void data(int n,char s[20])
			  {FILE *sav,*fb;
			  baza base;
              sav=fopen("data.dnt","rb");
			   fb=fopen("system.dnt","wb");
			   n=0;
			   			   while (fread(&base,sizeof(baza),1,sav)) 
			   {
				   fwrite(&base,sizeof(baza),1,fb);
				   n++;}
			  base.kolvo=n;
			  strcpy(base.name,s);
			 fwrite(&base,sizeof(baza),1,fb);
			  fclose(sav);
			  fclose(fb);
			  sav=fopen("data.dnt","wb");
			  fb=fopen("system.dnt","rb");
			  while (fread(&base,sizeof(baza),1,fb))  fwrite(&base,sizeof(baza),1,sav);
			  fclose(sav);
			  fclose(fb);
			  }




    подскажите что не так написано.

----------

