Objectives: class associations, arrays, operator overloading, sort, and multiple
ID: 3605962 • Letter: O
Question
Objectives: class associations, arrays, operator overloading, sort, and multiple file l/Os This is the first iteration on the development of a textbook warehouse inventory management system. This iteration requires a minimum of two user-defined classes. A Book class, with the required interfaces shown below, is used to represent each book in the warehouse. Each is required to have the following attributes: title, one or more authors (no more than 20), publisher, year of publication, cover type (hard/paperback), price, ISBN, and number of available copies. The Book class uses its overloaded stream extraction operator >>) to retrieve its attributes from the provided database. The Book class also uses its overloaded stream insertion operator () to retrieve all the books from the provided database and it uses its overloaded stream insertion operator (Explanation / Answer
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<conio.h>
#include<iomanip.h>
#include<string.h>
void cover();
//************************************************
//***************Class User***********************
class user{
public:
char full_name[20];
char name[10];
char password[5];
char issued_book_no[3];
void create_user()
{
cout<<" Enter Full Name:";
gets(full_name);
cout<<" Enter User Name:";
gets(name);
cout<<" Enter Password:";
cin>>password;
}
friend void add_user();
friend void login();
friend void show_allu();
friend void admin_menu();
friend void user_menu();
friend void issue_book();
friend void show_account();
};
//***********************************************
//*************Class Book************************
class book{
char book_no[3];
char book_name[50];
char author[20];
int no_of_book;
void create_book()
{
cout<<" Enter The Serial No. :";
cin>>book_no;
cout<<" Enter Tha Name of The Book :";
gets(book_name);
cout<<" Enter The Author Name :";
gets(author);
cout<<" Enter No of Books :";
cin>>no_of_book;
}
void show_book()
{
cout<<setw(4)<<book_no<<"."<<setw(35)<<book_name<<setw(20)<<author<<setw(12)<<no_of_book<<" ";
}
void modify_book()
{
cout<<" Book no. : "<<book_no;
cout<<" Modify Book Name : ";
gets(book_name);
cout<<" Modify Author's Name of Book : ";
gets(author);
cout<<" Modify Book Count : ";
cin>>no_of_book;
}
friend void add_book();
friend void show_allb1();
friend void show_allb2();
friend void book_bno();
friend void book_bna();
friend void book_bar();
friend void delete_book();
friend void mod_book();
friend void issue_book();
friend void deposite_book();
friend void show_account();
};
//***************************************************
//*****************class Admin***********************
class admin{
private:
char pass_admin[4];
void create_admin()
{
cout<<"Enter the password: ";
cin>>pass_admin;
}
friend void admin_login();
friend void add_admin();
};
//***************************************************
//****************global obj*************************
user u;
book b;
admin a;
//*************************************************************************
//****************global variable for current user*************************
char current_user[10];
char book_serial_no[3];
char current_book_name[50];
//***************************************************
//********************add user***********************
void add_user()
{
u.create_user();
ofstream out("user.dat",ios::app);
if(!out){
cout<<"cannot open the user.dat file. ";
}
strcpy(u.issued_book_no,"0");
out.write((char*) &u,sizeof(user));
cout<<" Your Account Has Been Created";
}
//***************************************************
//********************add admin***********************
void add_admin()
{
a.create_admin();
ofstream out("admin.dat",ios::app);
if(!out){
cout<<"cannot open the user.dat file. ";
}
out.write((char*) &a,sizeof(admin));
cout<<"Your Account Has Been Created";
}
//****************************************************
//*********************log in for user****************
void user_login()
{
char n[25],p[5];
int flag=0;
ifstream in("user.dat",ios::in|ios::out);
cout<<" Enter The User Name: ";
gets(n);
cout<<" Enter The Password: ";
cin>>p;
if(!in)
{
cout<<"File NOt Found";
}
while(in.read((char *)&u,sizeof(user)))
{
if(strcmp(u.name,n)==0 &&strcmp(u.password,p)==0)
{
strcpy(current_user,u.name);
strcpy(book_serial_no,u.issued_book_no);
flag=1;
cout<<" WELCOME "<<u.full_name<<" ";
user_menu();
}
}
if(flag==0)
{
cout<<" Wrong User Name or Password";
user_login();
}
in.close();
}
//****************************************************
//*********************log in for Admin****************
void admin_login()
{
char x[4];
ifstream in("admin.dat",ios::in|ios::out);
cout<<" Enter The Password: ";
cin>>x;
if(!in)
{
cout<<"File NOt Found";
}
while(in.read((char *)&a,sizeof(admin)))
{
if(strcmp(a.pass_admin,x)==0)
{
cout<<" LOGGED IN" ;
admin_menu();
}
else
{
cout<<" wrong password";
admin_login();
}
}
in.close();
}
//**********************************************
//****************search book by book no********
void book_bno()
{
ifstream in;
char n[3],x;
int flag=0;
do{
cout<<" Enter The Serial No of The Book: ";
cin>>n;
in.open("book.dat");
while(in.read((char*)&b,sizeof(book)))
{
if(strcmpi(b.book_no,n)==0)
{ cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
b.show_book();
flag=1;
break;
}
}
if(flag==0)
{
cout<<"Book Not Found";
}
flag=0;
cout<<" Do you want to search again..(y/n?)";
cin>>x;
in.close();
}while(x=='y'||x=='Y');
user_menu();
}
//*************************************************
//*******************search book by name***********
void book_bna()
{
ifstream in;
char n[50],x;
int flag=0;
do{
cout<<" Enter The Name of The Book:";
gets(n);
in.open("book.dat");
while(in.read((char*)&b,sizeof(book)))
{
if(strcmpi(b.book_name,n)==0)
{ cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
b.show_book();
flag=1;
break;
}
}
if(flag==0)
{
cout<<"Book Not Found";
}
flag=0;
cout<<" Do you want to search again..(y/n?)";
cin>>x;
in.close();
}while(x=='y'||x=='Y');
user_menu();
}
//*************************************************
//*******************search book by author**********
void book_bar()
{
ifstream in;
char n[20],x;
int flag=0;
cout<<" Enter The Name of The Author:";
gets(n);
cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
do{
in.open("book.dat");
while(in.read((char*)&b,sizeof(book)))
{
if(strcmpi(b.author,n)==0)
{
b.show_book();
flag=1;
}
}
if(flag==0)
{
cout<<"Book Not Found";
}
cout<<" Do You Want To Search Again..(y/n?)";
cin>>x;
in.close();
}while(x=='y'||x=='Y');
user_menu();
}
//***********************************************
//*******************add_book********************
void add_book()
{
char c;
do{
b.create_book();
ofstream out("book.dat",ios::app);
if(!out){
cout<<"cannot open the user.dat file. ";
}
out.write((char*) &b,sizeof(book));
cout<<" Do You Want To Add More Book To The Record(y/n?)";
cin>>c;
out.close();
} while(c=='y'||c=='Y');
admin_menu();
}
//***********************************************
//*******************show_allb for admin*******************
void show_allb1()
{
ifstream in("book.dat");
if(!in)
{
cout<<"File not Found";
}
cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
while(in.read((char*)&b,sizeof(book)))
{
b.show_book();
}
admin_menu();
in.close();
}
//***********************************************
//*******************show_allb for user*******************
void show_allb2()
{
ifstream in("book.dat");
if(!in)
{
cout<<"File not Found";
}
cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
while(in.read((char*)&b,sizeof(book)))
{
b.show_book();
}
user_menu();
in.close();
}
//***********************************************
//*******************show_allu*******************
void show_allu()
{
ifstream in("user.dat");
if(!in)
{
cout<<"File not Found";
}
cout<<" |Name|"<<setw(33)<<"|User Name|"<<" ";
cout<<" *************************************** ";
while(in.read((char*)&u,sizeof(user)))
{
cout<<" "<<u.full_name<<" "<<u.name<<" ";
}
in.close();
}
//***********************************************
//********************Delete Book****************
void delete_book()
{
char n[3];
char c2;
int flag=0;
fstream f1;
fstream f2;
cout<<" DELETE Specific Book...";
do{
cout<<" Enter The Serial no. of the Book To Delete : ";
cin>>n;
f1.open("book.dat",ios::in|ios::out);
f2.open("temp.dat",ios::out);
f1.seekg(0,ios::beg);
while(f1.read((char*)&b,sizeof(book)))
{
if(strcmpi(b.book_no,n)!=0)
f2.write((char*)&b,sizeof(book));
else
flag=1;
}
f2.close();
f1.close();
remove("book.dat");
rename("temp.dat","book.dat");
cout<<b.book_no;
if(flag==1)
{
cout<<" Record Deleted ..";
cout<<" Do you want to add more record..(y/n?)";
cin>>c2;
}
else
{ cout<<" Record not found";
cout<<" Do you want to add more record..(y/n?)";
cin>>c2;
}
}while(c2=='y'||c2=='Y');
admin_menu();
}
//***************************************************
//*********************modify book*******************
void mod_book()
{ char n[6],ch;
fstream fp;
int found=0;
clrscr();
cout<<" MODIFY BOOK REOCORD.... ";
cout<<" Enter The book no. of The book :";
cin>>n;
fp.open("book.dat",ios::in|ios::out);
while(fp.read((char*)&b,sizeof(book)) && found==0)
{
if(strcmpi(b.book_no,n)==0)
{
do{
clrscr();
cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
b.show_book();
cout<<" **********************";
cout<<" Book Modifiaction Menu";
cout<<" **********************";
cout<<" 1.Modify Book Serial No";
cout<<" 2.Modify Book Name";
cout<<" 3.Modify Book Author";
cout<<" 4.Modify Book Count";
cout<<" 5.Go To Admin Menu ";
cout<<" Enter Your Choice: ";
ch=getche();
switch(ch)
{
case '1':
{
cout<<" Modify Book Serial No : ";
cin>>b.book_no;
int pos=-1*sizeof(b);
fp.seekp(pos,ios::cur);
fp.write((char*)&b,sizeof(book));
found=1;
fp.close();
break;
}
case '2':
{
cout<<" Modify Book Name : ";
gets(b.book_name);
int pos=-1*sizeof(b);
fp.seekp(pos,ios::cur);
fp.write((char*)&b,sizeof(book));
cout<<" Record Updated";
found=1;
fp.close();
break;
}
case '3':
{
cout<<" Modify Book Author Name : ";
gets(b.author);
int pos=-1*sizeof(b);
fp.seekp(pos,ios::cur);
fp.write((char*)&b,sizeof(book));
cout<<" Record Updated";
found=1;
fp.close();
break;
}
case '4':
{
cout<<" Modify Book count : ";
cin>>b.no_of_book;
int pos=-1*sizeof(b);
fp.seekp(pos,ios::cur);
fp.write((char*)&b,sizeof(book));
cout<<" Record Updated";
found=1;
fp.close();
break;
}
case '5':
{
clrscr();
admin_menu();
break;
}
}
}while(ch!='5');
}
}
fp.close();
if(found==0)
cout<<" Record Not Found ";
admin_menu();
}
//********************************************
//*****************issue Book*****************
void issue_book()
{
char n[3];
fstream fp,f;
int found=0;
clrscr();
cout<<" Enter The serial no. of The book:";
cin>>n;
fp.open("book.dat",ios::in|ios::out);
while(fp.read((char*)&b,sizeof(book)) && found==0)
{
if(strcmpi(b.book_no,n)==0)
{ found=1;
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
b.show_book();
if(b.no_of_book==0)
{
cout<<" ********This Book Is Not Available For Issuing.******** ";
break;
}
else
{
b.no_of_book=b.no_of_book-1;
strcpy(current_book_name,b.book_name);
int pos=-1*sizeof(b);
fp.seekp(pos,ios::cur);
fp.write((char*)&b,sizeof(book));
cout<<" Book Has Been Issued For 7 Days.Late Fee 1 Rs Per Day ";
}
}
}
fp.close();
if(found==0)
cout<<" Record Not Found ";
f.open("user.dat",ios::in|ios::out);
while(f.read((char*)&u,sizeof(user)))
{
if(strcmpi(u.name,current_user)==0)
{
strcpy(u.issued_book_no,n);
strcpy(book_serial_no,u.issued_book_no);
int pos=-1*sizeof(u);
f.seekp(pos,ios::cur);
f.write((char*)&u,sizeof(user));
}
}
user_menu();
}
//*************************************
//***************book_deposite*********
void deposite_book()
{
char n[6];
fstream fp,f;
int found=0;
clrscr();
f.open("user.dat",ios::in|ios::out);
while(f.read((char*)&u,sizeof(user)))
{
if(strcmpi(u.name,current_user)==0)
{
strcpy(n,u.issued_book_no);
strcpy(u.issued_book_no,"0");
int pos=-1*sizeof(u);
f.seekp(pos,ios::cur);
f.write((char*)&u,sizeof(user));
}
}
fp.open("book.dat",ios::in|ios::out);
while(fp.read((char*)&b,sizeof(book)) && found==0)
{
if(strcmpi(b.book_no,n)==0)
{ cout<<" *Book List* ";
cout<<"|Book No.|"<<setw(20)<<"|Book Name|"<<setw(25)<<"|Author|"<<setw(20)<<"|Book Count| ";
cout<<"*************************************************************************** ";
b.show_book();
b.no_of_book=b.no_of_book+1;
int pos=-1*sizeof(b);
fp.seekp(pos,ios::cur);
fp.write((char*)&b,sizeof(book));
cout<<" Book Has Been Deposited ";
found=1;
}
}
fp.close();
if(found==0)
cout<<" No Book To Deposite ";
user_menu();
}
//****************************************************
//***************Show Account Detail************************
void show_account()
{
ifstream in,i;
i.open("book.dat");
while(i.read((char*)&b,sizeof(book)))
{
if(strcmpi(b.book_no,book_serial_no)==0)
{
strcpy(current_book_name,b.book_name);
}
}
in.open("user.dat");
while(in.read((char*)&u,sizeof(user)))
{
if(strcmpi(u.name,current_user)==0)
{
cout<<" |Name|"<<setw(25)<<"|Password|"<<setw(30)<<"|Issued Book|"<<" ";
cout<<" ********************************************************** ";
cout<<" "<<u.full_name<<setw(20)<<u.password<<setw(30)<<current_book_name<<" ";
}
}
in.close();
user_menu() ;
}
//*********************************************
//**************admin_menu*********************
void admin_menu()
{
char c1;
cout<<" *****************";
cout<<" Admin Menu";
cout<<" *****************";
cout<<" 1.Show All Book";
cout<<" 2.Add Book";
cout<<" 3.Modify Book";
cout<<" 4.Delete Book";
cout<<" 5.Show All User";
cout<<" 6.LogOut ";
cout<<" Enter Your Choice: ";
c1=getche();
switch(c1)
{
case '1':clrscr();
show_allb1();
break;
case '2':clrscr();
add_book();
break;
case '3':clrscr();
mod_book();
break;
case '4':clrscr();
delete_book();
break;
case '5':clrscr();
show_allu();
break;
case '6':clrscr();
cover();
break;
}
}
//************************************
//****************user_menu***********
void user_menu()
{
char c1;
cout<<" *****************";
cout<<" User Menu";
cout<<" *****************";
cout<<" 1.Show Account Detail";
cout<<" 2.Show All Book";
cout<<" 3.Search Book By No";
cout<<" 4.Search Book By Name";
cout<<" 5.Search Book By Author";
cout<<" 6.Issue Book";
cout<<" 7.Deposite Book";
cout<<" 8.LogOut ";
cout<<" Enter Your Choice: ";
c1=getche();
switch(c1)
{
case '1':clrscr();
show_account();
break;
case '2':clrscr();
show_allb2();
break;
case '3':clrscr();
book_bno();
break;
case '4':clrscr();
book_bna();
break;
case '5':clrscr();
book_bar();
break;
case '6':clrscr();
issue_book();
break;
case '7':clrscr();
deposite_book();
break;
case '8':clrscr();
strcpy(current_user,"");
cover();
break;
}
}
void cover()
{
char ch;
cout<<" *************************** ";
cout<<" [LIBRARY MANAGEMENT SYSTEM]";
cout<<" ***************************";
gotoxy(10,15);
cout<<" 1.User Login";
cout<<" 2.Admin Login";
cout<<" 3.Create An User Account ";
ch=getche();
switch(ch)
{
case '1':clrscr();
user_login();
break;
case '2':clrscr();
admin_login();
break;
case '3':clrscr();
add_user();
break;
}
}
void main()
{
cover();
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.