help me to avoid enter same number of book and how to create query or search for the book number and display its details... pls... thanks in advance
Code:
#include <stdio.h>
#include <stdlib.h>
FILE *addbook;
struct book
{
int bno; /*book#*/
char btitle[30];
char bversion[30];
char bauthorfn[30];
char bauthorln[30];
float bprice;
}b;
main()
{
int mainchoice;
char a;
mainmenu:
{
system("CLS");
printf("\n\n\n\n\n\n\n\t\t\t\t* MAIN MENU *");
printf("\n\t\t--------------------------------------------");
printf ("\n\n\t\t [1] BOOK PURCHASE (ADD)");
printf ("\n\n\t\t [2] BOOK LIST");
printf ("\n\n\t\t [3] QUERY BY BOOK");
printf ("\n\n\t\t [4] EMPTY BOOK RECORD");
printf ("\n\n\t\t [5] EXIT");
printf ("\n\n\n\t\t Enter your choice: ");
scanf("%d",&mainchoice);
switch (mainchoice)
{
case 1: goto bookpurchase;
case 2: goto booklist;
case 3: goto qbook;
case 4: goto emptybookrecord;
case 5: goto exxit;
default:
printf("\n\t\t Invalid Choice!!!\n\n\t\t Please refer to the menu...\n\n\n\t\t");
getchar();
goto mainmenu;
}
}
bookpurchase:
{
system("CLS");
printf("\n\n\n\n\n\n\n\t\t\t * NEW BOOK ENTRY *");
printf("\n\n\n\n\n\n\n\t\t * Input N/A if no Availabe Information*");
printf("\n\t\t---------------------------------------------");
fflush(stdin);
printf("\n\n\t\tBook Number: ");
scanf("%d",&b.bno);
printf("\t\tBook Title: ");
scanf("%s",&b.btitle);
printf("\t\tBook Version: ");
scanf("%s",&b.bversion);
printf("\t\tBook Author First Name: ");
scanf("%s",&b.bauthorfn);
printf("\t\tBook Author Last Name: ");
scanf("%s",&b.bauthorln);
printf("\t\tPrice: ");
scanf("%f",&b.bprice);
/* SAVE FILE */
addbook=fopen("books.txt","a+");
if ((addbook) == NULL)
{
printf("Error: Could not open file! \n");
exit(1);
}
else
{
fprintf(addbook,"\n\t\tBook# : %d\n",b.bno);
fprintf(addbook,"\t\tBook Title : %s\n",b.btitle);
fprintf(addbook,"\t\tBook Version : %s\n",b.bversion);
fprintf(addbook,"\t\tBook Author : %s %s\n",b.bauthorfn,b.bauthorln);
fprintf(addbook,"\t\tBook Price : P%.2f\n",b.bprice);
fflush(addbook);
fclose(addbook);
}
/*SHOW MESSAGE*/
printf("\n\n\t\t\t **** Record Added! ****");
fflush(stdin);
entry:
printf("\n\n\t\tAdd new entry? [y/n]: ");
scanf("%s",&a);
if ((a=='y')||(a=='Y'))
goto bookpurchase;
else if ((a=='n')||(a=='N'))
goto mainmenu;
else
system("CLS");
printf("\n\n\n\n\n\n\n\t\t\t * NEW BOOK ENTRY *");
printf("\n\t\t---------------------------------------------");
printf("\n\n\t\t Invalid Choice!!!\n\n");
goto entry;
}
booklist:
{
system("CLS");
printf("\n\n\n\t\t\t * BOOK LIST *");
printf("\n\t\t---------------------------------------------\n\n\t\t");
system("type books.txt");
printf("\n\n\t\t=> End of List!\n\n\t\t");
system("pause");
goto mainmenu;
}
qbook:
{
FILE *ft;
int found = 0;
int bno;
int target;
system("CLS");
printf("\n\n\n\t\t\t * QUERY BY BOOK *");
printf("\n\t\t---------------------------------------------\n\n\t\t");
ft= fopen("books.txt","r");
if(ft==NULL)
printf("File not found");
else
printf("\n\t\tEnter Book#: ");
fflush(stdin);
scanf("%d",&target);
do
{
fscanf(ft,"%d %s %s %s %s %.2f",&bno,&b.btitle,&b.bversion,&b.bauthorfn,&b.bauthorln,&b.bprice);
if(target==bno)
{
found =1;
}
}while(!feof(ft) && found == 0);
if(found==1)
{
printf("\n\t\tBook# : %d\n",bno);
printf("\n\t\tBook Title : %s\n",b.btitle);
printf("\n\t\tBook Version : %s\n",b.bversion);
printf("\n\t\tBook Author : %s %s\n",b.bauthorfn,b.bauthorln);
printf("\n\t\tBook Price : %.2f\n",b.bprice);
}
else
{
printf("\n\n\n\t\t=============================================");
printf("\n\t\t\t\t Not Found!");
fclose(ft);
getch();
}
qbanother1:
printf("\n\n\t\tSearch Again? [y/n]: ");
scanf("%s",&a);
if ((a=='y')||(a=='Y'))
goto qbook;
else if ((a=='n')||(a=='N'))
goto mainmenu;
else
system("CLS");
printf("\n\n\n\t\t\t * QUERY BY BORROWER *");
printf("\n\t\t---------------------------------------------\n\n\t\t");
printf("\n\n\t\t Invalid Choice!!!\n\n");
goto qbanother1;
goto mainmenu;
}
emptybookrecord:
{
system("CLS");
printf("\n\n\n\n\n\n\t\t--------------------------------------------");
printf("\n\n\t\t\t Book Record Emptied!!\n\n");
addbook=fopen("books.txt","w+");
fclose(addbook);
printf("\n\t\t--------------------------------------------\n\n\n\n\n\t\t\t");
system("Pause");
goto mainmenu;
}
exxit:
{
system("CLS");
printf("\n\n\n\n\n\t\t\t press any key to exit...");
getch();
}
return 0;
}