Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Create a system managing a mini library system. Every book corresponds to a reco

ID: 3705307 • Letter: C

Question



Create a system managing a mini library system. Every book corresponds to a record (line) in a text file named "mylibrary.txt". Each record consists of 6 fields (Book ID, Title, Author, Possession, Checked out Date, Due Date) separated by comma: Mvlibrarv.txt 1,Book1,Author1,Library.null,null 2,Book1,Author1,User1,2014-10-22,2014-11-21 3,Book2,Author2,User1,2014-10-23,2014-11-22 4,Book3,Author2,User2,2014-10-23,2014-11-22 5,Book4,Atuhor3,User2,2014-09-22,2014-10-22 No comma ""in title or author name. This mini library keeps the record for each book in the library. Different books can share the book "Title". But the "Book ID" for each book is unique. One author may have multiple books. Eg. Both book2 and book3 are written by author1 Possession field is "Library" means this book is kept in library, such as book #001. Otherwise, this book is checked out by the corresponding user. Eg. book #3 is checked out by User1. A user is allowed to check out up to 3 books. The "Checked out Date" field specifies the time of the latest checked out date. The loan period for each book is 30 days. "The Due Data" filed specifies the time the book should be returned. This system should provide a menu with following functionalities that the bookkeeper can choose from at the top level menu: 1. Enter "a" to add a book into library 1) Ask for title (read). 2) Ask for author 3) Generate a book ID by adding one to the current largest book ID. 4) Add the record of the new book into library with generated book ID, title, author, possession-"library", checked out date-"null" and due date-"null". After that, print message "book* added successfully!" and go to step 5). 5) Provide options " for Try again" and "b" for "Back to main menu". (If "Try again" go to step 1)) 2. Enter "d" to delete a book from library 1) Ask for book ID. .2) Examine if this book exists. If no, print a message "No such book! and then go to 4). Otherwise, 3) .3) Remove the book with the given book ID from the library and then go to 4). 4) Provide options "t" for "Try again" or "b" for "Back to main menu. (If "Try again", go to step 1))

Explanation / Answer

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>

//defining the properties of the fields used in the program


#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;


//initializing the files used in the program

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;
            //opening the librecord file
    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];
    //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<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);
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote