#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class prod
{
public:
string prodname;
int prodid;
double amount;
int seqno;
prod* next;
prod(string, int, double, int, prod*);
};
prod::prod(string tempname,int tempid, double tempamount, int seq_no, prod* tempNext)
{
prodname=tempname;
prodid=tempid;
amount=tempamount;
seqno=seq_no;
next=tempNext;
}
typedef prod* prodPtr;
void getline(istream &stream, string &str, char delimiter)
{ char temp[500];
stream.get(temp, 500, delimiter);
stream.ignore(500, delimiter);
str = temp;
}
void getline(istream &stream, int &num, char delimiter)
{ int temp;
stream >> temp;
stream.ignore(500, delimiter);
num= temp;
}
void readFile(prodPtr &root);
void insert (prodPtr &root);
void delprod(prodPtr &root);
prodPtr locateNode(prodPtr temp, string titl);
void searchname(prodPtr temp);
void printList(prodPtr temp);
void saveFile(prodPtr temp);
int countNodes(prodPtr temp);
void readFile(prodPtr &root)
{
int numprod,prodi,sqn;
string prodn;
double prodamt;
ifstream infile ("PRODUCTS.txt", ios::in);
infile >> numprod;
infile.ignore(500,'\n');
for (int count = 0; count < numprod; count++)
{
getline(infile,prodn, '\n');
getline(infile, prodi, '\n');
getline(infile, prodamt, '\n');
getline(infile,sqn, '\n');
root = new prod (prodn,prodi, prodamt, sqn, root);
}
}
void insert (prodPtr &root)
{
int numprod,prodi,sqn;
string prodn;
double prodamt;
cout << "PRODUCT NAME:\t\t\t";
cin.ignore(500,'\n');
getline(cin, prodn, '\n');
cout << "PRODUCT ID:\t\t\t";
getline(cin, prodi, '\n');
cout << "PRODUCT AMOUNT:\t\t";
getline(cin,prodamt, '\n');
cout << "PRODUCT SEQ NO:\t\t\t";
getline(cin,sqn, '\n');
root = new prod (prodn,prodi, prodamt, sqn, root);
}
void searchname(prodPtr temp)
{
string prodn;
cout << "PRODUCT NAME PLEASE:\t\t\t";
cin.ignore(500,'\n');
getline(cin, prodn, '\n');
while (temp != NULL)
{
if (prodn == temp->prodname)
{
cout << temp->prodname << "\n";
cout << temp->prodid << "\n";
cout << temp->amount<< "\n";
cout << temp->seqno << "\n";
}
temp = temp->next;
}
cout << "\n";
}
void printList(prodPtr temp)
{
while (temp != NULL)
{
cout << temp->prodname << "\n";
cout << temp->prodid << "\n";
cout << temp->amount << "\n";
cout << temp->seqno << "\n";
temp = temp->next;
}
cout << "\n";
}
void saveFile(prodPtr temp)
{
int count = countNodes(temp);
ofstream outFile("Input_records.txt",ios::out);
outFile << count << "\n";
while (temp != NULL)
{
outFile << temp->prodname<< "\n";
outFile << temp->prodid << "\n";
outFile << temp->amount << "\n";
outFile << temp->seqno << "\n";
temp = temp->next;
}
cout << "\n";
}
int countNodes(prodPtr temp)
{
int countB = 0;
while (temp != NULL)
{
countB++;
temp = temp->next;
}
return countB;
}
int main()
{
int choice;
prodPtr root = NULL;
readFile(root);
do
{
cout << "\t\t<<=========================>>";
cout << "\n\t\t>>LIBRARY MANAGEMENT SYSTEM<<";
cout << "\n\t\t<<=========================>>";
cout << "\n\nMenu: Select your option\n\n";
cout << "(1) Add a product to the list\n";
cout << "(2) Delete by produvt name\n";
cout << "(3) Search a product by name.\n";
cout << "(4) List all products\n";
cout << "(5) Quit.\n\n";
cout << "Enter your choice ---> ";
cin >> choice;
if (1 <= choice && choice <= 4)
{
switch (choice)
{
case 1:
insert(root);
break;
case 2:
delprod(root);
break;
case 3:
searchname(root);
break;
case 4:
printList(root);
break;
default:
cout << "Invalid choice. Enter again.\n\n";
break;
}
}
}
while (choice != 5);
saveFile(root);
return 0;
}