#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void graf(int n)
{
int i;
char sg[200];
for(i=0;i<n;i++)
{
sg[i]='-';
if(i==n-1)
{
sg[i]='\n';
sg[i+1]='\0';
}
}
printf("%s",sg);
}
struct coins
{
char metal[80];
char country[100];
double price;
int year;
int count;
double nominal;
};
struct coins input(void)
{
struct coins m;
fflush(stdin);
puts("Enter country:");
gets(m.country);
puts("Enter metal:");
gets(m.metal);
puts("Enter nominal:");
scanf("%lf", &m.nominal);
puts("Enter year:");
scanf("%d", &m.year);
puts("Enter count:");
scanf("%d", &m.count);
puts("Enter price:");
scanf("%lf", &m.price);
return m;
}
void add(char *file)
{
FILE *f;
struct coins m;;
system("cls");
if ((f=fopen(file,"ab"))==NULL)
{
puts("Error open file");
system("PAUSE");
}
m=input();
fwrite(&m,sizeof(m),1,f);
fclose(f);
}
void show(char *file)
{
FILE *f;
struct coins m;
int n=0;
char ch;
system("cls");
if ((f=fopen(file,"rb"))== NULL)
{
puts("Error open file");
system("PAUSE");
}
puts("¹ | METAL | COUNTRY | NOMINAL | YEAR | COUNT |PRICE ");
while(fread(&m,sizeof(m),1,f))
{
n++;
graf(80);
printf("%2d| %11s| %12s| %8.1lf| %6d| %12d| %7.1lf\n",n,m.metal, m.country,m.nominal,m.year,m.count,m.price);
}
if(n==0)
{
system("cls");
puts("No coins");
}
fclose(f);
system("PAUSE");
}
void edit(char *file)
{
FILE *f;
char yes;
struct coins m;
int n=0, year;
system("cls");
if ((f=fopen(file,"r+b"))== NULL)
{
puts("Error open file");
system("PAUSE");
return;
}
puts("Enter year:");
fflush(stdin);
scanf("%d", &year);
puts("¹ | METAL | COUNTRY | NOMINAL | YEAR | COUNT |PRICE ");
while(fread(&m,sizeof(m),1,f))
{
if(year == m.year)
{
graf(80);
n++;
printf("%2d| %11s| %12s| %8.1lf| %6d| %12d| %7.1lf\n",n,m.metal, m.country,m.nominal,m.year,m.count,m.price);
puts("\nEdit?:'y' Not edit:'n'");
do
{
yes=getchar();
}
while(yes!='y' && yes!='n' && yes!='Y' && yes!='N');
if(yes=='y' || yes=='Y')
{
m=input();
fseek(f,-sizeof(m), SEEK_CUR);
fwrite(&m,sizeof(m),1,f);
fseek(f,0, SEEK_CUR);
puts("EDITED");
}
}
}
if(n==0)
{
system("cls");
puts("No coins");
}
fclose(f);
system("PAUSE");
}
void del(char *file)
{
FILE *f, *buf;
char yes;
struct coins m;
int year, st=0, n=0;
char name[100];
system("cls");
if ((f=fopen(file,"rb"))== NULL)
{
puts("Error open file");
system("PAUSE");
exit(1);
}
if ((buf=fopen("buf.dat","wb"))== NULL)
{
puts("Error open file");
system("PAUSE");
exit(2);
}
puts("Enter year:");
fflush(stdin);
scanf("%d", &year);
puts("¹ | METAL | COUNTRY | NOMINAL | YEAR | COUNT |PRICE ");
while(fread(&m,sizeof(m),1,f))
{
if(year == m.year)
{
graf(80);
n++;
printf("%2d| %11s| %12s| %8.1lf| %6d| %12d| %7.1lf\n",n,m.metal, m.country,m.nominal,m.year,m.count,m.price);
puts("Delete:'y' Not delete:'n'");
do
{
yes=getchar();
}
while(yes!='y' && yes!='n' && yes!='Y' && yes!='N');
if(yes == 'y' || yes =='Y')
{
st=1;
puts("DELETED");
}
}
if(st==0)
{
fwrite(&m,sizeof(m),1,buf);
}
}
if(n==0)
{
system("cls");
puts("No coins");
}
fclose(f);
fclose(buf);
remove(file);
rename("buf.dat",file);
system("PAUSE");
}