Have
the following structs, for Book, Author and Shelf. Book has multiple authors
and Shelf has multiple books. Write a program to create a functions new_author
(), new_book (), print_book (), add_author_to_book (), new_shelf (),
delete_shelf (), print_shelf(), add_book_to_shelf() with required return types
and parameters.
#include<stdio.h>
#include <stdlib.h>
#define NA 100
#define NB 100
#define NS 100
int ca=0,cb=0,cs=0;
struct author
{
int aid;
char name[20];
}a[NA];
struct book
{
char title[25];
int bid,faid[5],cab;
}b[NB];
struct shelf
{
int sid,fbid[100],csb;
}s[NS];
void add_author()
{
a[ca].aid=ca;
printf("enter the name of author");
scanf("%s",&a[ca].name);
ca++;
}
void add_book()
{
int temp;
b[cb].bid=cb;
printf("enter the title of the book ");
scanf("%s",&b[cb].title);
b[cb].cab=0;
cb++;
}
void add_author_to_book()
{
int t1,t2,c1;
printf("enter the book id and author id");
scanf("%d%d",&t1,&t2);
c1=b[t1].cab;
b[t1].faid[c1]=t2;
b[t1].cab++;
}
print_author()
{
int i;
for(i=0;i<ca;i++)
{
printf("\n%d\t%s",a[i].aid,a[i].name);
}
}
print_book()
{
int i,j;
for(i=0;i<cb;i++)
{
printf("\n%d\t%s",b[i].bid,b[i].title);
for(j=0;j<b[i].cab;j++)
{
printf("\n author = %s",a[b[i].faid[j]].name);
}
}
}
void add_shelf()
{
s[cs].sid=cs;
s[cs].csb=0;
cs++;
}
void add_book_to_shelf()
{
int b1,s1;
printf("enter shelf id and book id");
scanf("%d%d",&s1,&b1);
s[s1].fbid[s[s1].csb]=b1;
s[s1].csb++;
}
void print_shelfid()
{
int i;
for( i = 0 ; i < cs; i++ )
printf("%d\n", s[i].sid);
}
void print_books_in_shelf()
{
int sid1,i;
printf("enter shelf id");
scanf("%d",&sid1);
for(i=0;i<=s[sid1].csb;i++)
{
printf("\n%s",b[s[sid1].fbid[i]].title);
}
}
void delete_shelf()
{
int sid2,i;
printf("enter shelf id");
scanf("%d",&sid2);
if ( sid2 >cs )
printf("Deletion not possible.\n");
else
{
for ( i = sid2 - 1 ; i < cs ; i++ )
s[i] = s[i+1];
cs--;
}
}
main()
{
int choice;
printf("\n Press 1. add author\n2. print authors \n");
printf("3. add book\n4. add author to book\n5. print book");
printf(" 6. add shelf\n7. print shelf \n");
printf("8. add book to shelf\n9. print books in shelf \n10. delete shelf\n11. exit\n");
while(1)
{
printf("enter ur choice");
scanf("%d",&choice);
switch(choice)
{
case 1: add_author();
break;
case 2: print_author();
break;
case 3: add_book();
break;
case 4: add_author_to_book();
break;
case 5: print_book();
break;
case 6: add_shelf();
break;
case 7: print_shelfid();
break;
case 8: add_book_to_shelf();
break;
case 9: print_books_in_shelf();
break;
case 10: delete_shelf();
break;
case 11: exit(0);
default: printf("invalid choice");
}
}
}