In: Computer Science
Create a library system
Description:
Library system is aimed to computerize the library management
operations. Example, registring a student,
issuing a book,Handling book returns,etc.
Required skill set: OOP,Arrays
Use File handling if necessary
The language is visual studio c++
Note: Done accordingly. Please comment for any problem. Please Uprate. Thanks.Full code is not posted because of size restrictions.
librarian password is in password file.
Download code:
https://drive.google.com/open?id=1ypnE9v62mYyLLnDVgOamIIGTwF0ASUSx
Code:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<fstream>
#include<string.h>
#include<conio.h>
using namespace std;
class Lib
{
public:
char bookname[100],auname[50],sc[20],sc1[50];
int q,B,p;
Lib()
{
strcpy(bookname,"NO Book Name");
strcpy(auname,"No Author Name");
strcpy(sc,"No Book ID");
strcpy(sc1,"No Book ID");
q=0;
B=0;
p=0;
}
void get();
void student();
void pass();
void librarian();
void password();
void getdata();
void show(int);
void booklist(int);
void modify();
void see(int);
int branch(int);
void issue();
void der(char[],int,int);
void fine(int,int,int,int,int,int);
};
void Lib::getdata()
{
int i;
fflush(stdin);
cout<<"\n\t\tEnter the details :-\n";
cout<<"\n\t\tEnter Book's Name : ";
cin.getline(bookname,100);
for(i=0;bookname[i]!='\0';i++)
{
if(bookname[i]>='a'&&bookname[i]<='z')
bookname[i]-=32;
}
cout<<"\n\t\tEnter Author's Name : ";
cin.getline(auname,50);
cout<<"\n\t\tEnter Publication name : ";
cin.getline(sc1,50);
cout<<"\n\t\tEnter Book's ID : ";
cin.getline(sc,20);
cout<<"\n\t\tEnter Book's Price : ";
cin>>p;
cout<<"\n\t\tEnter Book's Quantity : ";
cin>>q;
}
void Lib::show(int i)
{
cout<<"\n\t\tBook Name : "<<bookname<<endl;
cout<<"\n\t\tBook's Author Name :
"<<auname<<endl;
cout<<"\n\t\tBook's ID : "<<sc<<endl;
cout<<"\n\t\tBook's Publication :
"<<sc1<<endl;
if(i==2)
{
cout<<"\n\t\tBook's Price : "<<p<<endl;
cout<<"\n\t\tBook's Quantity : "<<q<<endl;
}
}
void Lib::booklist(int i)
{
int b,r=0;
system("cls");
b=branch(i);
system("cls");
ifstream intf("Booksdata.txt",ios::binary);
if(!intf)
cout<<"\n\t\tFile Not Found.";
else
{
cout<<"\n\t ************ Book List ************ \n\n";
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
if(b==B)
{
if(q==0 && i==1)
{
}
else
{
r++;
cout<<"\n\t\t********** "<<r<<". **********
\n";
show(i);
}
}
intf.read((char*)this,sizeof(*this));
}
}
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
if(i==1)
student();
else
librarian();
}
void Lib::modify()
{
char ch,st1[100];
int i=0,b,cont=0;
system("cls");
cout<<"\n\t\t>>Please Choose one option :-\n";
cout<<"\n\t\t1.Modification In Current Books\n\n\t\t2.Add New
Book\n\n\t\t3.Delete A Book\n\n\t\t4.Go back\n";
cout<<"\n\n\t\tEnter your choice : ";
cin>>i;
if(i==1)
{
system("cls");
b=branch(2);
ifstream intf1("Booksdata.txt",ios::binary);
if(!intf1)
{
cout<<"\n\t\tFile Not Found\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
librarian();
}
intf1.close();
system("cls");
cout<<"\n\t\tPlease Choose One Option :-\n";
cout<<"\n\t\t1.Search By Book Name\n\n\t\t2.Search By Book's
ID\n";
cout<<"\n\t\tEnter Your Choice : ";
cin>>i;
fflush(stdin);
if(i==1)
{
system("cls");
cout<<"\n\t\tEnter Book Name : ";
cin.getline(st1,100);
system("cls");
fstream
intf("Booksdata.txt",ios::in|ios::out|ios::ate|ios::binary);
intf.seekg(0);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;b==B&&bookname[i]!='\0'&&st1[i]!='\0'&&(st1[i]==bookname[i]||st1[i]==bookname[i]+32);i++);
if(bookname[i]=='\0'&&st1[i]=='\0')
{
cont++;
getdata();
intf.seekp((int)intf.tellp()-(int)sizeof(*this));
intf.write((char*)this,sizeof(*this));
break;
}
intf.read((char*)this,sizeof(*this));
}
intf.close();
}
else if(i==2)
{
cout<<"\n\t\tEnter Book's ID : ";
cin.getline(st1,100);
system("cls");
fstream
intf("Booksdata.txt",ios::in|ios::out|ios::ate|ios::binary);
intf.seekg(0);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;b==B&&sc[i]!='\0'&&st1[i]!='\0'&&st1[i]==sc[i];i++);
if(sc[i]=='\0'&&st1[i]=='\0')
{
cont++;
getdata();
intf.seekp((int)intf.tellp()-(int)sizeof(*this));
intf.write((char*)this,sizeof(*this));
break;
}
intf.read((char*)this,sizeof(*this));
}
intf.close();
}
else
{
cout<<"\n\t\tIncorrect Input.....:(\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
modify();
}
if(cont==0)
{
cout<<"\n\t\tBook Not Found.\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
modify();
}
else
cout<<"\n\t\tUpdate Successful.\n";
}
else if(i==2)
{
system("cls");
B=branch(2);
system("cls");
getdata();
ofstream outf("Booksdata.txt",ios::app|ios::binary);
outf.write((char*)this,sizeof(*this));
outf.close();
cout<<"\n\t\tBook added Successfully.\n";
}
else if(i==3)
{
system("cls");
b=branch(2);
ifstream intf1("Booksdata.txt",ios::binary);
if(!intf1)
{
cout<<"\n\t\tFile Not Found\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
intf1.close();
system("cls");
librarian();
}
intf1.close();
system("cls");
cout<<"\n\t\tPlease Choose One Option for
deletion:-\n";
cout<<"\n\t\t1.By Book Name\n\n\t\t2.By Book's ID\n";
cout<<"\n\t\tEnter Your Choice : ";
cin>>i;
fflush(stdin);
if(i==1)
{
system("cls");
cout<<"\n\t\tEnter Book Name : ";
cin.getline(st1,100);
ofstream outf("temp.txt",ios::app|ios::binary);
ifstream intf("Booksdata.txt",ios::binary);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;b==B&&bookname[i]!='\0'&&st1[i]!='\0'&&(st1[i]==bookname[i]||st1[i]==bookname[i]+32);i++);
if(bookname[i]=='\0'&&st1[i]=='\0')
{
cont++;
intf.read((char*)this,sizeof(*this));
}
else
{
outf.write((char*)this,sizeof(*this));
intf.read((char*)this,sizeof(*this));
}
}
intf.close();
outf.close();
remove("Booksdata.txt");
rename("temp.txt","Booksdata.txt");
}
else if(i==2)
{
cout<<"\n\t\tEnter Book's ID : ";
cin.getline(st1,100);
ofstream outf("temp.txt",ios::app|ios::binary);
ifstream intf("Booksdata.txt",ios::binary);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;b==B&&sc[i]!='\0'&&st1[i]!='\0'&&st1[i]==sc[i];i++);
if(sc[i]=='\0'&&st1[i]=='\0')
{
cont++;
intf.read((char*)this,sizeof(*this));
}
else
{
outf.write((char*)this,sizeof(*this));
intf.read((char*)this,sizeof(*this));
}
}
outf.close();
intf.close();
remove("Booksdata.txt");
rename("temp.txt","Booksdata.txt");
}
else
{
cout<<"\n\t\tIncorrect Input.....:(\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
modify();
}
if(cont==0)
{
cout<<"\n\t\tBook Not Found.\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
modify();
}
else
cout<<"\n\t\tDeletion Successful.\n";
}
else if(i==4)
{
system("cls");
librarian();
}
else
{
cout<<"\n\t\tWrong Input.\n";
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
modify();
}
cout<<"\n\t\tPress any key to continue.....";
getch();
system("cls");
librarian();
}
int Lib::branch(int x)
{
int i;
cout<<"\n\t\t>>Please Choose one Branch :-\n";
cout<<"\n\t\t1.BIT\n\n\t\t2.EE\n\n\t\t3.EC\n\n\t\t4.CIVIL\n\n\t\t5.MECHANICAL\n\n\t\t6.1ST
YEAR\n\n\t\t7.Go to menu\n";
cout<<"\n\t\tEnter youur choice : ";
cin>>i;
switch(i)
{
case 1: return 1;
break;
case 2: return 2;
break;
case 3: return 3;
break;
case 4: return 4;
break;
case 5: return 5;
break;
case 6: return 6;
break;
case 7: system("cls");
if(x==1)
student();
else
librarian();
default : cout<<"\n\t\tPlease enter correct option :(";
getch();
system("cls");
branch(x);
}
}
void Lib::issue()
{
char st[50],st1[20];
int b,i,j,d,m,y,dd,mm,yy,cont=0;
system("cls");
cout<<"\n\t\t->Please Choose one option :-\n";
cout<<"\n\t\t1.Issue Book\n\n\t\t2.View Issued
Book\n\n\t\t3.Search student who isuued books\n\n\t\t4.Reissue
Book\n\n\t\t5.Return Book\n\n\t\t6.Go back to menu\n\n\t\tEnter
Your Choice : ";
cin>>i;
fflush(stdin);
if(i==1)
{
system("cls");
b=branch(2);
system("cls");
fflush(stdin);
cout<<"\n\t\t->Please Enter Details :-\n";
cout<<"\n\t\tEnter Book Name : ";
cin.getline(bookname,100);
cout<<"\n\t\tEnter Book's ID : ";
cin.getline(sc,20);
//strcpy(st,sc);
der(sc,b,1);
cout<<"\n\t\tEnter Student Name : ";
cin.getline(auname,100);
cout<<"\n\t\tEnter Student's ID : ";
cin.getline(sc1,20);
cout<<"\n\t\tEnter date : ";
cin>>q>>B>>p;
ofstream outf("student.txt",ios::binary|ios::app);
outf.write((char*)this,sizeof(*this));
outf.close();
cout<<"\n\n\t\tIssue Successfully.\n";
}
else if(i==2)
{
ifstream intf("student.txt",ios::binary);
system("cls");
cout<<"\n\t\t->The Details are :-\n";
intf.read((char*)this,sizeof(*this));
i=0;
while(!intf.eof())
{
i++;
cout<<"\n\t\t********** "<<i<<". **********
\n";
cout<<"\n\t\tStudent Name :
"<<auname<<"\n\t\t"<<"Student's ID :
"<<sc1<<"\n\t\t"<<"Book Name :
"<<bookname<<"\n\t\t"<<"Book's ID :
"<<sc<<"\n\t\t"<<"Date :
"<<q<<"/"<<B<<"/"<<p<<"\n";
intf.read((char*)this,sizeof(*this));
}
intf.close();
}
else if(i==3)
{
system("cls");
fflush(stdin);
cout<<"\n\t\t->Please Enter Details :-\n";
cout<<"\n\n\t\tEnter Student Name : ";
cin.getline(st,50);
cout<<"\n\n\t\tEnter Student's ID : ";
cin.getline(st1,20);
system("cls");
ifstream intf("student.txt",ios::binary);
intf.read((char*)this,sizeof(*this));
cont=0;
while(!intf.eof())
{
for(i=0;sc1[i]!='\0'&&st1[i]!='\0'&&st1[i]==sc1[i];i++);
if(sc1[i]=='\0'&&st1[i]=='\0')
{
cont++;
if(cont==1)
{
cout<<"\n\t\t->The Details are :-\n";
cout<<"\n\t\tStudent Name : "<<auname;
cout<<"\n\t\tStudent's ID : "<<sc1;
}
cout<<"\n\n\t\t******* "<<cont<<". Book details
*******\n";
cout<<"\n\t\tBook Name : "<<bookname;
cout<<"\n\t\tBook's ID : "<<sc;
cout<<"\n\t\tDate :
"<<q<<"/"<<B<<"/"<<p<<"\n";
}
intf.read((char*)this,sizeof(*this));
}
intf.close();
if(cont==0)
cout<<"\n\t\tNo record found.";
}
else if(i==4)
{
system("cls");
fflush(stdin);
cout<<"\n\t\t->Please Enter Details :-\n";
cout<<"\n\n\t\tEnter Student's ID : ";
cin.getline(st,50);
cout<<"\n\t\tEnter Book's ID : ";
cin.getline(st1,20);
fstream
intf("student.txt",ios::in|ios::out|ios::ate|ios::binary);
intf.seekg(0);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;sc[i]!='\0'&&st1[i]!='\0'&&st1[i]==sc[i];i++);
for(j=0;sc1[j]!='\0'&&st[j]!='\0'&&st[j]==sc1[j];j++);
if(sc[i]=='\0'&&sc1[j]=='\0'&&st[j]=='\0'&&st1[i]=='\0')
{
d=q;
m=B;
y=p;
cout<<"\n\t\tEnter New Date : ";
cin>>q>>B>>p;
fine(d,m,y,q,B,p); //fn1
intf.seekp((int)intf.tellp()-(int)sizeof(*this)); //fn3
intf.write((char*)this,sizeof(*this)); //fn5
cout<<"\n\n\t\tReissue successfully."; //fn3
break;
}
intf.read((char*)this,sizeof(*this));
}
intf.close();
}
else if(i==5)
{
system("cls");
b=branch(2);
system("cls");
fflush(stdin);
cout<<"\n\t\t->Please Enter Details :-\n";
cout<<"\n\t\tEnter Book's ID : ";
cin.getline(st1,20);
der(st1,b,2);
cout<<"\n\n\t\tEnter Student's ID : ";
cin.getline(st,20);
cout<<"\n\t\tEnter Present date : ";
cin>>d>>m>>y;
ofstream outf("temp.txt",ios::app|ios::binary);
ifstream intf("student.txt",ios::binary);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;sc[i]!='\0'&&st1[i]!='\0'&&st1[i]==sc[i];i++);
for(j=0;sc1[j]!='\0'&&st[j]!='\0'&&st[j]==sc1[j];j++);
if(sc[i]=='\0'&&sc1[j]=='\0'&&st[j]=='\0'&&st1[i]=='\0'&&cont==0)
{
cont++;
intf.read((char*)this,sizeof(*this));
fine(q,B,p,d,m,y);
cout<<"\n\t\tReturned successfully.";
}
else
{
outf.write((char*)this,sizeof(*this));
intf.read((char*)this,sizeof(*this));
}
}
intf.close();
outf.close();
getch();
remove("student.txt");
rename("temp.txt","student.txt");
}
else if(i==6)
{
system("cls");
librarian();
}
else
cout<<"\n\t\tWrong Input.\n";
cout<<"\n\n\t\tPress any key to continue.....";
getch();
system("cls");
librarian();
}
void Lib::fine(int d,int m,int y,int dd,int mm,int yy)
{
long int n1,n2;
int years,l,i;
const int monthDays[12] = {31, 28, 31, 30, 31, 30,31, 31, 30, 31,
30, 31};
n1 = y*365 + d;
for (i=0; i<m - 1; i++)
n1 += monthDays[i]; //fn1353
years = y;
if (m <= 2)
years--;
l= years / 4 - years / 100 + years / 400;
n1 += l;
n2 = yy*365 + dd;
for (i=0; i<mm - 1; i++)
n2 += monthDays[i];
years = yy;
if (m <= 2)
years--;
l= years / 4 - years / 100 + years / 400;
n2 += l;
n1=n2-n1;
n2=n1-15;
if(n2>0)
cout<<"\n\t\tThe Total Fine is : "<<n2;
}
void Lib::der(char st[],int b,int x)
{
int i,cont=0;
fstream
intf("Booksdata.txt",ios::in|ios::out|ios::ate|ios::binary);
intf.seekg(0);
intf.read((char*)this,sizeof(*this));
while(!intf.eof())
{
for(i=0;b==B&&sc[i]!='\0'&&st[i]!='\0'&&st[i]==sc[i];i++);
if(sc[i]=='\0'&&st[i]=='\0')
{
cont++;
if(x==1)
{
q--;
}
else
{
q++;
}
intf.seekp((int)intf.tellp()-(int)sizeof(*this));
intf.write((char*)this,sizeof(*this));
break;
}
intf.read((char*)this,sizeof(*this));
}
if(cont==0)
{
cout<<"\n\t\tBook not found.\n";
cout<<"\n\n\t\tPress any key to continue.....";
getch();
system("cls");
issue();
}
intf.close();
}
void Lib::get()
{
int i;
cout<<"\n\t*********** LIBRARY MANAGEMENT SYSTEM
***********\n"<<"\n\t\t\t L M S C++\n";
cout<<"\n\t\t>>Please Choose Any Option To login
\n";
cout<<"\n\t\t1.Student\n\n\t\t2.Librarian\n\n\t\t3.Close
Application\n";
cout<<"\n\t\tEnter your choice : ";
cin>>i;
if(i==1)
{
system("cls");
student();
}
else if(i==2)
pass();
else if(i==3)
exit(0);
else
{
cout<<"\n\t\tPlease enter correct option :(";
getch();
system("CLS");
get();
}
}
void Lib::student()
{
int i;
cout<<"\n\t************ WELCOME STUDENT
************\n";
cout<<"\n\t\t>>Please Choose One Option:\n";
cout<<"\n\t\t1.View BookList\n\n\t\t2.Search for a
Book\n\n\t\t3.Go to main menu\n\n\t\t4.Close Application\n";
cout<<"\n\t\tEnter your choice : ";
cin>>i;
if(i==1)
booklist(1);
else if(i==2)
see(1);
else if(i==3)
{
system("cls");
get();
}
else if(i==4)
exit(0);
else
{
cout<<"\n\t\tPlease enter correct option :(";
getch();
system("cls");
student();
}
}
void Lib::pass()
{
int i=0;
char ch,st[21],ch1[21]={"pass"};
cout<<"\n\t\tEnter Password : ";
while(1)
{
ch=getch();
if(ch==13)
{
st[i]='\0';
break;
}
else if(ch==8&&i>0)
{
i--;
cout<<"\b \b";
}
else
{
cout<<"*";
st[i]=ch;
i++;
}
}
ifstream inf("password.txt");
inf>>ch1;
inf.close();
for(i=0;st[i]==ch1[i]&&st[i]!='\0'&&ch1[i]!='\0';i++);
if(st[i]=='\0'&&ch1[i]=='\0')
{
system("cls");
librarian();
}
else
{
cout<<"\n\n\t\tWrong Password.\n\n\t\ttry
again.....\n";
getch();
system("cls");
get();
}
}
void Lib::librarian()
{
int i;
cout<<"\n\t************ WELCOME LIBRARIAN
************\n";
cout<<"\n\t\t>>Please Choose One Option:\n";
cout<<"\n\t\t1.View BookList\n\n\t\t2.Search for a
Book\n\n\t\t3.Modify/Add Book\n\n\t\t4.Issue Book\n\n\t\t5.Go to
main menu\n\n\t\t6.Change Password\n\n\t\t7.Close
Application\n";
cout<<"\n\t\tEnter your choice : ";
cin>>i;
switch(i)
{
case 1:booklist(2);
break;
case 2:see(2);
break;
case 3:modify();
break;
case 4:issue();
break;
case 5:system("cls");
get();
break;
case 6:password();
break;
case 7:exit(0);
default:cout<<"\n\t\tPlease enter correct option :(";
cin.clear();
cin.ignore();
system("cls");
librarian();
}
}
void Lib::password()
{
int i=0,j=0;
char ch,st[21],ch1[21]={"pass"};
system("cls");
cout<<"\n\n\t\tEnter Old Password : ";
while(1)
{
ch=getch();
if(ch==13)
{
st[i]='\0';
break;
}
else if(ch==8&&i>0)
{
i--;
cout<<"\b \b";
}
else
{
cout<<"*";
st[i]=ch;
i++;
}
}
ifstream intf("password.txt");
intf>>ch1;
intf.close();
for(i=0;st[i]==ch1[i]&&st[i]!='\0'&&ch1[i]!='\0';i++);
if(st[i]=='\0'&&ch1[i]=='\0')
{
system("cls");
cout<<"\n\t**The Password Should be less than 20 characters
& don't use spaces**\n\n";
cout<<"\n\t\tEnter New Password : ";
fflush(stdin);
i=0;
while(1)
{
j++;
ch=getch();
if(ch==13)
{
for(i=0;st[i]!=' '&&st[i]!='\0';i++);
if(j>20 || st[i]==' ')
{
cout<<"\n\n\t\tYou did't follow the instruction \n\n\t\tPress
any key for try again.....";
getch();
system("cls");
password();
librarian();
}
st[i]='\0';
break;
}
else if(ch==8&&i>0)
{
i--;
cout<<"\b \b";
}
else
{
cout<<"*";
st[i]=ch;
i++;
}
}
ofstream outf("password.txt");
outf<<st;
outf.close();
cout<<"\n\n\t\tYour Password has been changed
Successfully.";
cout<<"\n\t\tPress any key to continue......";
getch();
system("cls");
librarian();
}
else
{
cout<<"\n\n\t\tPassword is incorrect.....\n";
cout<<"\n\t\tEnter 1 for retry or 2 for menu";
cin>>i;
if(i==1)
{
system("cls");
password();
}
else
{
system("cls");
librarian();
}
}
}
int main()
{
Lib obj;
obj.get();
getch();
return 0;
}