i need help drawing a Binary Tree for the following: /* file_name: books.txt pag
ID: 3694575 • Letter: I
Question
i need help drawing a Binary Tree for the following:
/* file_name: books.txt
pages_offset:null
price_offset: null
title_offset: null
type_offset: null
The Lord of the Rings,HARDBACK,120,29.99
parts has 4elements
The Lord of the Rings
HARDBACK
120
29.99
Book [numOfpages=120, title=The Lord of the Rings, price=29.99, type=HARDBACK]
And Then There Were None,SOFTBACK,156,19.99
parts has 4elements
And Then There Were None
SOFTBACK
156
19.99
Book [numOfpages=156, title=And Then There Were None, price=19.99, type=SOFTBACK]
The Hobbit,HARDBACK,212,32.50
parts has 4elements
The Hobbit
HARDBACK
212
32.50
Book [numOfpages=212, title=The Hobbit, price=32.5, type=HARDBACK]
Harry Potter and the Goblet of Fire,ELECTRONIC,-9,19.99
parts has 4elements
Harry Potter and the Goblet of Fire
ELECTRONIC
-9
19.99
The Da Vinci Code,HARDBACK,253,25.00
parts has 4elements
The Da Vinci Code
HARDBACK
253
25.00
Cannot instantiate Book for Harry Potter and the Goblet of Fire,ELECTRONIC,-9,19.99Number of pages cannot be less than 1.
Book [numOfpages=253, title=The Da Vinci Code, price=25.0, type=HARDBACK]
Harry Potter and the Prisoner of Azkaban,HARDBACK,546,-99.00
parts has 4elements
Harry Potter and the Prisoner of Azkaban
HARDBACK
546
-99.00
Cannot instantiate Book for Harry Potter and the Prisoner of Azkaban,HARDBACK,546,-99.00price must be more than $0.00.
Harry Potter and the Half-Blood Prince,ELECTRONIC,439,19.99
parts has 4elements
Harry Potter and the Half-Blood Prince
ELECTRONIC
439
19.99
Book [numOfpages=439, title=Harry Potter and the Half-Blood Prince, price=19.99, type=ELECTRONIC]
The Soloman Curse,HARDBACK,829,23.95
parts has 4elements
The Soloman Curse
HARDBACK
829
23.95
Book [numOfpages=829, title=The Soloman Curse, price=23.95, type=HARDBACK]
,HARDBACK,92,22.99
parts has 4elements
HARDBACK
92
22.99
Cannot instantiate Book for ,HARDBACK,92,22.99Title Must Contain Characters
American Sniper,HARDBACK,320,16.20
parts has 4elements
American Sniper
HARDBACK
320
16.20
Book [numOfpages=320, title=American Sniper, price=16.2, type=HARDBACK]
The Girl on the Train,SOFTBACK,391,23,87
parts has 5elements
The Girl on the Train
SOFTBACK
391
23
87
Book [numOfpages=391, title=The Girl on the Train, price=23.0, type=SOFTBACK]
*/
in the order i added them.
help!
thankyou.
Explanation / Answer
program :
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
#define IN 1
#define OUT 0
void Addbook();
void Searchbook();
void Displaybook();
void Author();
void Titlelist();
void Stock();
void Issue();
void bookret();
void Addmembr();
void Exit();
char info[500];
struct
{
int bid;
char bname[25] ;
char author[25];
int nooftitles;
char titles[500];
int status;
}
book;
struct
{
int mid;
char mname[25] ;
char department[25];
int availibcard;
int phno;
}
membr;
FILE *librecord;
FILE *membrrecord;
FILE *fp1;
FILE *fp2;
FILE *temp1;
FILE *temp2;
int main()
{
int choice=0,i;
printf(" <<LIBRARY MANAGEMENT SYSTEM>>(Beta version ) ");
do{
printf(" ~~MENU~~ 1> Add A New Book 2> Search a book 3> Display Complete Information 4> Display All Books of An Author 5> List Titles of a Book 6> List Count of Books (Issued & On Stock) 7> To Issue a Book 8> To Rreturn a Book 9> Add A New Member 10> Exit the program Enter your choice <1-10>: ");
scanf("%i",&choice);
switch (choice)
{
case 1:
Addbook();
break;
case 2:
Searchbook();
break;
case 3:
Displaybook();
break;
case 4:
Author();
break;
case 5:
Titlelist();
break;
case 6:
Stock();
break;
case 7:
Issue();
break;
case 8:
bookret();
break;
case 9:
Addmembr();
break;
case 10:
Exit();
default:
printf(" ! Invalid Input... ");
}
}
while(choice!=10);
return (0);
}
void Addbook()
{
int i;book.status=IN;
librecord = fopen("librecord.txt","a+");
printf("Enter The uniqueid of The Book :(Integer) ");
scanf("%d",&book.bid);
printf("Enter The Name of The Book : ");
scanf("%s",book.bname);
printf("Enter The Name of Author : ");
scanf("%s",book.author);
printf("Enter The Number of Titles Of The Book:(Integer) ");
scanf("%d",&book.nooftitles);
fprintf(librecord," %d %s %s %d %d ",book.bid,book.bname,book.author,book.status,book.nooftitles);
printf("Enter The Titles Of The Book : ");
for(i=0;i<book.nooftitles;i++)
{
scanf("%s",book.titles);
fprintf(librecord,"%s ",book.titles);
}
fclose(librecord);
printf(" (' ' ) A New Book has been Added Successfully... ");
}
void Displaybook()
{
librecord = fopen("librecord.txt","a+");
printf(" Bookid Name Author Status No. Titles ",info);
do
{
fgets(info,500,librecord);
printf("%s ",info);
}
while(!feof(librecord));
fclose(librecord);
membrrecord = fopen("membrrecord.txt","a+");
printf(" Mid Name Dept Ph.no Availablecards ");
do
{
fgets(info,500,membrrecord);
printf("%s ",info);
}while(!feof(membrrecord));
fclose(membrrecord);
}
void Searchbook()
{
int i;
char Target[25],stats[3];
int Found=0;
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The File is Empty... ");
else
{
printf(" Enter The Name Of Book : ");
scanf("%s",Target);
while(!feof(librecord)&& Found==0)
{
fscanf(librecord,"%d %s %s %d %d", &book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(strcmp(Target,book.bname)==0)
Found=1;
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
if(Found)
{
if(book.status==IN)
strcpy(stats,"IN");
else
strcpy(stats,"OUT");
printf(" The Unique ID of The Book: %d The Name of Book is: %s The Author is: %s The Book Status:%s ",book.bid,book.bname,book.author,stats);
}
else if(!Found)
printf("! There is no such Entry... ");
fclose(librecord);
}
}
void Author()
{
int i;
char Target[500];
int Found=0;
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
printf(" Enter The Name Of Author : ");
scanf("%s",Target);
printf(" Books:");
while(!feof(librecord))
{
fscanf(librecord,"%d %s %s %d %d",&book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(strcmp(Target,book.author)==0)
{
Found=1;
printf(" %s",book.bname);
}
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
if(!Found)
printf(" ! There is no such Entry... ");
fclose(librecord);
}
}
void Titlelist()
{
int i;
char Target[500];
int Found=0;
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
printf(" Enter The Book Name :");
scanf("%s",Target);
while(!feof(librecord)&& Found==0)
{
fscanf(librecord,"%d %s %s %d %d",&book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(strcmp(Target,book.bname)==0)
{
Found=1;
break;
}
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
if(Found)
{
//printf("The Name of book is: %s ",book.bname);
printf(" The Titles: ");
for(i=0;i<book.nooftitles;i++)
{
fscanf(librecord,"%s",book.titles);
printf("%d.%s...... ",i+1,book.titles);
}
}
else if(!Found)
printf(" ! There is no such Entry... ");
fclose(librecord);
}
}
void Stock()
{
int i,issuecount=0,stockcount=0;
char Issued[100][20];
int Found=0;
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(librecord))
{
fscanf(librecord,"%d %s %s %d %d",&book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(book.status==IN)
{
stockcount++;
}
else
{
issuecount++;
}
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
fclose(librecord);
printf(" Count of issued Books:%d Count of Books in Stock:%d ",issuecount,stockcount-1);
}
}
void Addmembr()
{
int i;
membrrecord = fopen("membrrecord.txt","a+");
printf("Enter The userid of the Member(Integer) : ");
scanf("%d",&membr.mid);
printf("Enter The Name of the Member : ");
scanf("%s",membr.mname);
printf("Enter The Department ");
scanf("%s",membr.department);
printf("Enter The phone number of the member: ");
scanf("%d",&membr.phno);
membr.availibcard=5;
fprintf(membrrecord," %d %s %s %d %d ",membr.mid,membr.mname,membr.department,membr.phno, membr.availibcard);
fclose(membrrecord);
printf(" (' ') Added A New member Successfully... ");
}
void Issue()
{
int mid,i,Found1=0,Found2=0;char issubookname[20];
printf(" Enter The userid of the Member : ");
scanf("%d",&mid);
if((membrrecord=fopen("membrrecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(membrrecord)&& Found1==0)
{
fscanf(membrrecord,"%d %s %s %d %d ",&membr.mid,membr.mname,membr.department,&membr.phno,&membr.availibcard);
if(mid==membr.mid)
{
Found1=1;
}
}
if(Found1)
{
if(membr.availibcard<1)
{
printf(" ! Library card not available... ");
}
else
{ printf(" Enter The Name of book :");
scanf("%s",issubookname);
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(librecord)&& Found2==0)
{
fscanf(librecord,"%d %s %s %d %d", &book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(strcmp(issubookname,book.bname)==0)
Found2=1;
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
if(Found2)
{
if(book.status==0)
{
printf(" ! Book already issued... ");
}
else
{
fp2=fopen("fp2.txt","w");
if((temp2=fopen("membrrecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(temp2))
{
fscanf(temp2,"%d %s %s %d %d ",&membr.mid,membr.mname,membr.department,&membr.phno,&membr.availibcard);
if(mid==membr.mid)
{
membr.availibcard--;
fprintf(fp2," %d %s %s %d %d ",membr.mid,membr.mname,membr.department,membr.phno, membr.availibcard);
}
else{
fprintf(fp2," %d %s %s %d %d ",membr.mid,membr.mname,membr.department,membr.phno,membr.availibcard);}
if(feof(temp2))
break;
}
}
fclose(temp2);
fclose(fp2);
fp1=fopen("fp1.txt","w");
if((temp1=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(temp1))
{
fscanf(temp1,"%d %s %s %d %d", &book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(feof(temp1))
break;
if(strcmp(issubookname,book.bname)!=0)
{
fprintf(fp1," %d %s %s %d %d ",book.bid,book.bname,book.author,book.status,book.nooftitles);
}
else
{
fprintf(fp1," %d %s %s %d %d ",book.bid,book.bname,book.author,0,book.nooftitles);
}
for(i=0;i<book.nooftitles;i++)
{
fscanf(temp1,"%s",book.titles);
fprintf(fp1,"%s ",book.titles);
}
}
}
fclose(temp1);
fclose(fp1);
fclose(librecord);
fclose(membrrecord);
remove("librecord.txt");
rename("fp1.txt","librecord.txt");
remove("membrrecord.txt");
rename("fp2.txt","membrrecord.txt");
printf(" (' ') Book Successfully issued... ");
}
}
else if(!Found2)
printf(" ! There is no such Book... ");
}
}
}
else if(!Found1)
printf(" ! Invalid User id... ");
}
}
void bookret()
{
int mid,i,Found1=0,Found2=0,flag=0;char retbookname[20];
temp1=librecord;temp2=membrrecord;
printf(" Enter The userid of the Member : ");
scanf("%d",&mid);
if((membrrecord=fopen("membrrecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(membrrecord)&& Found1==0)
{
fscanf(membrrecord,"%d %s %s %d %d ",&membr.mid,membr.mname,membr.department,&membr.phno,&membr.availibcard);
if(mid==membr.mid)
{
Found1=1;
}
}
if(Found1)
{
if(membr.availibcard>=5)
{
printf(" ! Error... ");
}
else
{ printf(" Enter The Name of book :");
scanf("%s",retbookname);
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty ");
else
{
while(!feof(librecord)&& Found2==0)
{
fscanf(librecord,"%d %s %s %d %d", &book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(strcmp(retbookname,book.bname)==0)
Found2=1;
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
if(Found2)
{
if(book.status==1)
{
printf(" ! Error:Book already in stock... ");
}
else
{
fp2=fopen("fp2.txt","w");
if((temp2=fopen("membrrecord.txt","a+"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(temp2))
{
fscanf(temp2,"%d %s %s %d %d ",&membr.mid,membr.mname,membr.department,&membr.phno,&membr.availibcard);
if(mid==membr.mid)
{
membr.availibcard++;
fprintf(fp2," %d %s %s %d %d ",membr.mid,membr.mname,membr.department,membr.phno, membr.availibcard);
}
else
{
fprintf(fp2," %d %s %s %d %d ",membr.mid,membr.mname,membr.department,membr.phno,membr.availibcard);
}
if(feof(temp2))
break;
}
}
fclose(temp2);
fclose(fp2);
fp1=fopen("fp1.txt","w");
if((temp1=fopen("librecord.txt","r"))==NULL)
printf(" ! The file is empty... ");
else
{
while(!feof(temp1))
{
fscanf(temp1,"%d %s %s %d %d", &book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(feof(temp1))
break;
if(strcmp(retbookname,book.bname)!=0)
{
fprintf(fp1," %d %s %s %d %d ",book.bid,book.bname,book.author,book.status,book.nooftitles);
}
else
{
fprintf(fp1," %d %s %s %d %d ",book.bid,book.bname,book.author,1,book.nooftitles);
}
for(i=0;i<book.nooftitles;i++)
{
fscanf(temp1,"%s",book.titles);
fprintf(fp1,"%s ",book.titles);
}
}
}
fclose(temp1);
fclose(fp1);
fclose(librecord);
fclose(membrrecord);
printf("('') Book Successfully Returned... ");
remove("librecord.txt");
rename("fp1.txt","librecord.txt");
remove("membrrecord.txt");
rename("fp2.txt","membrrecord.txt");
}
}
else if(!Found2)
printf("! There is no such Book... ");
}
}
}
else if(!Found1)
printf("! Invalid User id... ");
}
}
void Exit()
{
exit(0);
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.