Professional Documents
Culture Documents
Library Manage Ment System
Library Manage Ment System
Submitted By:
Name: Anurag Gautam
Content:
Problem Statement
Input Code
Output Code
PROBLEM STATEMENT
Write a menu-driven program in C that uses a file to store the above-
mentioned component of library management system and perform
the listed operations.
• To display all the records in the system.
• To add/drop record from the system.
• Search any book within the system. i• Fine calculation if book is
deposited after due date.
1.input Code
#include<stdio.h>
#include<stdlib.h>
typedef struct date
{
int dd;
int mm;
int yyyy;
} date;
struct bookinfo
{
int bookid;
char bookname[50];
char authorname[50];
char studentname[50];
date issuedate;
date returndate;
int duedays;
int fine;
};
int initialization()
{
int i;
for (int i=0; i<50; i++)
{
printf("*-");
}
printf("*\n");
printf("\t\t\t\tLibrary Database Management System\n");
for (int i=0; i<50; i++)
{
printf("*-");
}
printf("*\n");
menu();
}
int menu()
{
int i;
printf("\n");
printf("Press any key to continue\n");
fflush(stdin);
getchar();
printf("\t\t\t\tEnter your choice to proceed further\n");
printf("\t\t 1-Add Records\n\t\t 2-View Records\n\t\t 3-Delete Records\n\t\t
4-SearchRecords\n\t\t 5-Evaluate Fine\n\t \t 0-Exit");
getchar();
printf("Your choice:");
scanf("%d",&i);
printf("Your choice is %d\n",i);
switch(i)
{
case 0:
exitcord();
break;
case 1:
addrecord();
break;
case 2:
viewrecords();
break;
case 3:
deleterecords();
break;
case 4:
searchrecord();
break;
case 5:
finecalculator();
break;
}
}
int addrecord()
{
FILE *ptr;
ptr = fopen("Database.bin","ab+");
int days;
struct bookinfo book= {0};
printf("\n\n Enter Book ID\n");
scanf("%d", &book.bookid);
printf("Enter Book name\n ");
fflush(stdin);
gets(book.bookname);
printf("Enter Author Name\n ");
gets(book.authorname);
printf("Enter Student Name\n");
gets(book.studentname);
printf("Enter Issue date\n");
scanf("%d/%d/%d",
&book.issuedate.dd,&book.issuedate.mm,&book.issuedate.yyyy);
printf("Enter Return date\n");
scanf("%d/%d/%d",
&book.returndate.dd,&book.returndate.mm,&book.returndate.yyyy);
fwrite(&book, sizeof(book), 1, ptr);
menu();
}
int deleterecords()
{
int deltbookid;
struct bookinfo book= {0};
int found=0;
FILE *ptr;
FILE *tmpfileptr;
ptr= fopen("Database.bin","rb");
tmpfileptr=fopen("tmpdata.bin","wb");
printf("Enter the book ID to be deleted:");
scanf("%d", &deltbookid);
fflush(stdin);
while(fread(&book, sizeof(book), 1, ptr))
{
if(deltbookid!= book.bookid)
{
fwrite(&book, sizeof(book), 1, tmpfileptr);
}
else
{
found=1;
}
}
(found) ? printf("record deleted"): printf("No record found");
fclose(ptr);
fclose(tmpfileptr);
remove("Database.bin");
rename("tmpdata.bin","Database.bin");
menu();
}
int viewrecords()
{
FILE *ptr;
ptr = fopen("Database.bin","rb");
struct bookinfo book= {0};
while(fread(&book, sizeof(book), 1, ptr))
{
printf("\n");
printf("Book ID: %d\n", book.bookid);
printf("Book Name : %s\n",book.bookname);
printf("Author Name : %s\n", book.authorname);
printf("Student Name : %s\n",book.studentname);
printf("Issue Date :%d/%d/%d\
n",book.issuedate.dd,book.issuedate.mm,book.issuedate.yyyy );
printf("Return Date :%d/%d/%d\
n",book.returndate.dd,book.returndate.mm,book.returndate.yyyy);
printf("\n");
}
menu();
}
int searchrecord()
{
struct bookinfo book= {0};
int id;
FILE *ptr;
ptr= fopen ("Database.bin","rb");
printf("Enter the Book ID you want to search");
scanf("%d", & id);
int found=0;
while(fread(&book, sizeof(book), 1, ptr))
{
if(book.bookid== id)
{
printf("\n");
printf("Book ID: %d\n", book.bookid);
printf("Book Name : %s\n",book.bookname);
printf("Author Name : %s\n", book.authorname);
printf("Student Name : %s\n",book.studentname);
printf("Issue date : %d/%d/%d\
n",book.issuedate.dd,book.issuedate.mm,book.issuedate.yyyy );
printf("Return date : %d/%d/%d\
n",book.returndate.dd,book.returndate.mm,book.returndate.yyyy);
printf("\n");
found=1;
}
}
(found)? printf("\n"): printf("BookID not available");
menu();
}
int finecalculator()
{
FILE *ptr;
ptr= fopen("Database.bin", "rb");
struct bookinfo book= {0};
int id, found=0;
int duedays;
int fine, fineamt;
printf("Enter the fine amt per day:\n");
scanf("%d", &fineamt);
fflush(stdin);
printf("Enter the book ID\n");
scanf("%d", &id);
printf("Enter the due days:\n");
scanf("%d", &duedays);
while(fread(&book, sizeof(book), 1, ptr))
{
if(book.bookid== id)
{
fine =fineamt* duedays;
printf("\n");
printf("Book ID: %d\n", book.bookid);
printf("Book Name : %s\n",book.bookname);
printf ("Author Name : %s \n", book.authorname);
printf ("Student Name : %s\n",book.studentname);
printf ("Issue date : %d/%d/%d\
n",book.issuedate.dd,book.issuedate.mm,book.issuedate.yyyy );
printf("Return date : %d/%d/%d\
n",book.returndate.dd,book.returndate.mm,book.returndate.yyyy);
printf("\n");
printf("Fine: %d",fine);
found=1;
}
}
(found)? printf("\n"): printf("BookID not available");
menu();
}
int exitcord()
{
int i;
for (int i=0; i<100; i++)
{
printf("#");
}
printf("#\n");
printf("\t\t\t\t\t\tThank You!\n");
for (int i=0; i<100; i++)
{
printf(".");
}
printf(".\n");
}
int main()
{
initialization();
return 0;
}
3.Output Code
1.Add data
2.Delete record
3.Display Data
4.fine calculation
5.Search Book
*******THANKYOU*****
*