// FileStructProc.cpp : Defines the entry point for the console application.
// Открыть или создать файл игрушек, предусмотреть возможность добавления инфоримации при старом файле
// вывести список игрушек, цена которых ниже или равна введенной.Удалить запись с указанным номером
//Все действия выполнять с процедурами и функциями
#include <locale.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct toys
{
    char name[20];
    float cost;
    int kol;
};
void printfile(FILE *f)
{   toys toy;int k=0;
    rewind(f);
    //setlocale(0,"russian");
    //puts("------------Игрушки------------------");
    puts("--------------TOY----------------------");

    puts("-------------------------------------" );
       // puts("| N |   Название   |  Цена  | кол-во |");
    puts("| N |   Name toy   |  Cost  |   Kol  |");
    puts("-------------------------------------" );
       // setlocale(LC_ALL,".866");
    while(fread(&toy,sizeof(toy),1,f)>0)
    {k++;
      printf("|%3d|%10s   |%7.3f | %5d  |\n",k,toy.name,toy.cost,toy.kol);
    }
    puts("-------------------------------------" );
}
FILE * formopen(char *fname)
{  int i,d;
    toys toy;
    FILE * f;
    char st[20],s_cost[20];
    //setlocale(0,"russian");
    //puts("Введите имя файла");
    puts("Input File Name");
    gets(fname);
    f=fopen(fname,"rb");
    if(f==NULL)
    {
        f=fopen(fname,"a+b");
        while(puts("Input Name toy, cost, kol OR empty string:"),
        gets(st),strlen(st)!=0)
       {   strcpy(toy.name,st);
          toy.cost=atof(gets(s_cost));
          toy.kol=atoi(gets(s_cost));
          fwrite(&toy,sizeof(toy),1,f);
        }
    }
    else {  //puts("Открыт старый файл");
            puts("Opened old file");
           f=fopen(fname,"a+b");
           puts("Input\n 1 - Add new informftion\n 2 - Continue without add");
           scanf("%d",&d);
           if(d==1)
           {   puts("Print file? Input \n 1 - Print\n 2- Continue without print");
           scanf("%d",&d);
           if(d==1) printfile(f);
           else fseek(f,0L,2);
               fflush(stdin);
                //setlocale(0,"russian");
                while(puts("Input name toy, cost,kol OR empty string:"),
                gets(st),strlen(st)!=0)
                {   strcpy(toy.name,st);
                    toy.cost=atof(gets(s_cost));
                    toy.kol=atoi(gets(s_cost));
                    fwrite(&toy,sizeof(toy),1,f);
                 }
                //puts("Информация в Файл добавлена");
                puts("Information is added");
           }
           else
             // puts("Файл готов к работе");
               puts("File is ready for work");
         }
  return f;

}
void findtoy(FILE *f, float cost)
{ toys toy;
    rewind(f);
    //setlocale(LC_ALL,"russian");
   // puts("Список доступных игрушек");
    puts("Spisok of TOYS");
   // setlocale(LC_ALL,".866");
    while(fread(&toy,sizeof(toy),1,f)>0)
        if(toy.cost<=cost)
            printf("%10s -  %7.3f\n",toy.name,toy.cost);
}
FILE * delnum(FILE * f, char * fname,int num)
{   toys toy;
    int k=0;
    rewind(f);
    FILE * tmp;
    tmp=fopen("tmpf","wb");
    while(fread(&toy,sizeof(toy),1,f)>0)
     {k++;
      if(k!=num)
       fwrite(&toy,sizeof(toy),1,tmp);
      }

     fclose(f);
     fclose(tmp);
     remove(fname);
     rename("tmpf",fname);
     f=fopen(fname,"a+b");
     rewind(f);
     return f;
}
int main()
{
   // setlocale(0,"russian");
    FILE *f;
    char s_cost[20],filename[20];
     f=formopen(filename);
//rewind(f);
     printfile(f);
     float cost;int num;
     //setlocale(0,"russian");
     //puts("ВВедите максимальную стоимость игрушки для покупки");
     puts("Input max cost for pay");
     scanf("%f",&cost);
     findtoy(f,cost);
    // setlocale(0,"russian");
     //puts("Введите номер удаляемой записи");
     puts("Input number deleted toy");
     scanf("%d",&num);
     f=delnum(f,filename,num);
    // setlocale(0,"russian");
     //puts("Файл после удаления");
     puts("File after deleted");
    // FILE *tmp;
    //  tmp=fopen("tmpf","a+b");
    // printfile(tmp);
    printfile(f);
    fclose(f);
    //setlocale(0,"russian");
    puts("Enter key for continue");
    _getch();
    return 0;
}
