Untitled
unknown
c_cpp
3 years ago
6.0 kB
7
Indexable
#include <iostream> // Library used for basic input output
#include <stdlib.h> // Library used for exit function
#include <bits/stdc++.h> // Library used to build assossiative array
#include <fstream> //Library for file processing
using namespace std;
int choise;
void login();
void control();
void add_books();
void display();
void update();
void delete_b();
string user;
string pswd;
string book_id;
string book_name;
string author;
string no_books_str;
int no_books;
map<string, string> users;
map<string, map<string, string> > books;
int main(){
fstream user_data1("user_data.data"); //Opens Userdata file (Creates if not there)
user_data1 << "GBStaff" << " 1111"; // Adds Default Accout
user_data1.close();
ifstream user_data("user_data.data"); //Opens Userdata file in read only mode
string key, val;
//cout << "Loading Files...\n\n";
while (user_data >> key >> val) //Go through the file line by line
{
users[key]=val; //Assigning values to assossiative array
}
user_data.close();
ifstream book_data("book_data.data");
string id, name, auth, copies;
cout << "Loading Files...\n\n";
while (book_data >> id >> name >> auth >> copies){
books[id]["id"]=id;
books[id]["name"]=name;
books[id]["author"]=auth;
books[id]["no_books"]=copies;
}
user_data.close();
//cout << "Done.\n\n\n";
//users["admin"]="122";
cout<<"--------------------------------------------------------"<<endl;
cout<< "----------WELCOME TO GENIUS BOOK SHOP SYSTEM----------"<<endl;
cout<<" ----------NO.244, Yatinuwara Street, Kandy-----------"<<endl;
login();
control();
return 0;
}
/* Function for Login variable setting */
void login(){
cout << "\n\n===Login to Your Account===\n\n";
cout << "Username : ";
cin >> user;
cout << "You Entered '" + user + "'\n\n";
cout << "Password : ";
cin >> pswd;
if(users[user]==pswd){
cout << "Login Success!\n";
}else{
cout << "Login Fail\n";
cout << "1. Retry \n0. Exit \n";
cin >> choise;
if (choise==1){
login();
}else{
cout << "Exitting...";
exit(0);
}
}
}
void control(){
system("cls");
cout << "\n\n\t\t\t\tCONTROL PANEL";
cout << "\n\n1. Add New Book";
cout << "\n2. Display Available Books";
cout << "\n3. Update Book";
cout << "\n4. Delete Book";
cout << "\n5. Exit";
cout << "\n6. Logout";
cout << "\n7. manage sales details\n\n";
cin >> choise;
switch (choise) {
case 1:
add_books();
break;
case 2:
display();
break;
case 3:
update();
break;
case 4:
delete_b();
break;
case 5:
exit(0);
break;
case 6:
exit(0);
break;
default:
cout << "\n\nINVALID CHOICE\n";
control();
}
}
void add_books(){
system("cls");
cout << "\n\n===Add Book===\n\n";
cout << "Book Id : \n";
cin >> book_id;
if(books[book_id]["id"]!=""){
cout << "\nExisting Book ID\n\n";
add_books();
}else{
cout << "Book Name : \n";
cin >> book_name;
cout << "Book Author : \n";
cin >> author;
cout << "No of books : \n";
cin >> no_books_str;
cout << "You added " + book_id + " " + book_name + "\n";
books[book_id]["id"]= book_id;
books[book_id]["name"]= book_name;
books[book_id]["author"]= author;
books[book_id]["no_books"]= no_books_str;
ofstream book_data; //Open the file in write mode
book_data.open("book_data.data", std::ios_base::app); //Set the file to appened mode
book_data << "\n" + book_id + " " + book_name + " " + author + " " + no_books_str ;
book_data.close();
}
control();
}
void display(){
system("cls");
cout << "ID \t\t Name \t\t Author \t\t No.Of Copies \n\n";
for(auto const &ent1 : books) {
cout << books[ent1.first]["id"] + " \t\t ";
cout << books[ent1.first]["name"] + " \t\t ";
cout << books[ent1.first]["author"] + " \t\t ";
cout << books[ent1.first]["no_books"] + " \t\t " << endl << endl;
}
}
void update(){
cout << "Enter Book ID to update\n";
cin >> book_id;
if(books[book_id]["id"]!=""){
cout << "You Chose the book\n";
cout << books[book_id]["name"] + " by " + books[book_id]["author"] + " (" +books[book_id]["id"] +")\n";
}else{
cout << "\nNo such book exists!!!\n\n";
update();
}
cout << "Enter New Name : ";
cin >> book_name;
if(book_name!=""){
books[book_id]["name"]=book_name;
}
cout << "Enter New Author : ";
cin >> author;
if(author!=""){
books[book_id]["author"]=author;
}
cout << "Enter New No. of books : ";
cin >> no_books_str;
if(no_books_str!=""){
books[book_id]["no_books"]=no_books_str;
}
ofstream book_data;
book_data.open("book_data.data"); //Open the file in write mode
for(auto const &ent1 : books) {
book_data << "\n" + books[ent1.first]["id"]+ " " + books[ent1.first]["name"] + " " + books[ent1.first]["author"] + " " + books[ent1.first]["no_books"] ;
}
book_data.close();
control();
}
void delete_b(){
system("cls");
cout << "Enter Book ID to delete\n";
cin >> book_id;
cout << "You Chose the book\n";
cout << books[book_id]["name"] + " by " + books[book_id]["author"] + " (" +books[book_id]["id"] +")\n\n";
cout << "Are you sure (This action cannot be reversed)\n\n1.Yes\n2.No(Re-enter ID)\n9.Menu\n0.Exit\n\n Choise : ";
cin >> choise;
if(choise==1){
books.erase(book_id);
ofstream book_data;
book_data.open("book_data.data"); //Open the file in write mode
for(auto const &ent1 : books)
book_data << "\n" + books[ent1.first]["id"]+ " " + books[ent1.first]["name"] + " " + books[ent1.first]["author"] + " " + books[ent1.first]["no_books"] ;
book_data.close();
}else if(choise==2){
delete_b();
}else if(choise==9){
control();
}else if(choise==0){
exit(0);
}else{
cout << "\n\nINVALID CHOICE\n";
delete_b();
}
}
Editor is loading...