
#include<stdio.h>
#include <conio.h>

struct clientdata
{ char lastname[15];
char firstname[10];
int acctnum;
int telnum;};
int enterchoice();
void binfile(FILE *readptr);
void updaterecord(FILE *fptr);
void newrecord(FILE *fptr);
void deleterecord(FILE *fptr);
int main()
{
FILE *cfptr;
int choice;
if ((cfptr=fopen("c:\\credit.dat","ab"))==NULL)
{
printf("file couldnt be opend.\n");
}
else{
while ((choice=enterchoice() )!=5)
{
switch(choice)
{
case 1:
      binfile( cfptr );
      break;
case 2:
      updaterecord( cfptr );
      break;
case 3:
     newrecord( cfptr );
     break;
case 4:
     deleterecord ( cfptr );
     break;
default:
      printf("error choice\n" );
break;
}
}
fclose(cfptr);
}
char c;
gets(&c);
return(0);
}
void binfile(FILE *readptr)
{
FILE *writeptr;
struct clientdata client={""};
if ((writeptr=fopen("c:\\client.bin","wb"))==NULL){
printf("file can't  be opened\n");
}
else
{
rewind(readptr);
fprintf(writeptr,"%-6s%-16s%-11s%10s\n","acct","last name","first name","telnum");
while (!feof(readptr)) {
fread (&client,sizeof(struct clientdata),1,readptr);
if (client.acctnum!=0)
{
fprintf(writeptr,"%-6d%-16s%-11s%10d\n" ,client.acctnum,client.lastname,client.firstname,client.telnum);}}
fclose(writeptr);
}
}
void updaterecord (FILE *cfptr)
{int account;
double transaction;
struct clientdata client= {""};
printf("enter the number to update(1-15):");
scanf("%d",&account);
fseek(cfptr,(account -1) *sizeof (struct clientdata),SEEK_SET);
fread(&client,sizeof (struct clientdata),1,cfptr);
if (client.acctnum==0)
{
printf("account %d has no information\n",account);}
else
{
printf("%-6d%-16s%-11s%10d\n\n",client.acctnum,client.lastname,client.firstname,client.telnum);
fseek ( cfptr,(account-1) *sizeof (struct clientdata),1);

}
}
void deleterecord(FILE *fptr)
{
struct clientdata client;
struct clientdata blankclient={""};
int account;
printf("enter acc to delet (1-15):");
scanf("%d",&account);
fseek (fptr,(account-1) * sizeof(struct clientdata),SEEK_SET );
fread(&client,sizeof(struct clientdata),1,fptr);
if (client.acctnum==0){
printf("name %d does not exist.\n",account);
}
else{
fseek(fptr,(account-1)*sizeof(struct clientdata),SEEK_SET);
fwrite(&blankclient,sizeof(struct clientdata),1,fptr);
}
}
void newrecord(FILE *fptr)
{

struct clientdata client={""};
int account;
printf("enter new account\n");
scanf("%d",&account);
fseek(fptr,(account-1) *sizeof(struct clientdata),SEEK_SET);
fread(&client,sizeof(struct clientdata),1,fptr);
if (client.acctnum!=0){
printf("account %d aleady contains information.\n",client.acctnum);
}
else{
printf("enterlastname,firstname,telnum\n");
scanf("%s%s%d",&client.lastname,&client.firstname,&client.telnum);
int clientnum=account;
fseek(fptr,(clientnum-1) *sizeof(struct clientdata),SEEK_SET);
fread(&client,sizeof( struct clientdata),1,fptr);
}
}

int enterchoice ()
{
int menuchoice;
printf("\nenter you choice\n"
"1_store a formatted text file of name called\n"
"2_updata an name\n"
"3-add anew cliecnt\n"
"4_delet an client\n"
"5-end program\n");
scanf("%d",&menuchoice);
return menuchoice;
}
