Posted by rashid
  309
February 06, 2017

 

#include<iostream>
#include<string.h>
#include<fstream>
#include<conio.h>
#include <iomanip>
using namespace std;

void logo();
int login();

//********************************************************************************************************************
//            Client Class
//
//********************************************************************************************************************

class Client
{
    friend class BST;
    private:
        
        int ID;
        char Name[20];            //Name of Person
        char CNIC[20];            //CNIC of that Person
        char Phone[20];            //Phone no of that person
        char Email[20];            //Email of that person
        char Address[50];            //Address of that person
        
        Client* left;
        Client* right;    
    public:
        bool add_client();
        void cin_client();
        void cout_client();
        int search_client();
        void display_client();
        void show_client();
        void modify_client();
        void cin_modify_client();
};


//********************************************************************************************************************
//            Room Class
//
//********************************************************************************************************************

class room
{
    friend class BST;
    private:
        
        int ID;
        int Room;                //Room of Person
        char Name[20];            //Name of Person
        char CNIC[20];            //CNIC of that Person
        char Phone[20];            //Phone no of that person
        char Email[20];            //Email of that person
        char Address[50];            //Address of that person
        
        room* left;
        room* right;    
    public:
        bool add_room();
        void cin_room();
        void cout_room();
        int search_room();
        void display_room();
        void show_room();
        void cin_modify_room();
        void modify_room();
};


//********************************************************************************************************************
//            BST Class
//
//********************************************************************************************************************

class BST
{
    private:
        Client* root;        //Pointer Object
        room* root1;
    public:
        BST()                //Constructor
        {
            root=0;
            root1=0;
        }
        ~BST()                //Destructor
        {
            destroy(root);
            root1=0;
            root=0;
        }        
        void destroy(Client* t)
        {
            if(t)
            {
                destroy(t->left);
                destroy(t->right);
                delete t;
                t=0;
            }
        }
        int login();
        bool add();
        void search_client();
        void main_menu();
        void client_menu();
        void room_menu();
        void display();
        void complaint();
        bool add_room();
        void menu();
        void calculate();        
};

//********************************************************************************************************************
//            Login
//
//********************************************************************************************************************

int login()
{
    int i = 0,username_key,password_key,result;
    char temp_pass[20], password[20],username[20],fusername[20],fpassword[20];
    
    
    cout<<"please enter username : "<<endl;
    cin>>username;
    cout<<"please enter password : "<<endl;
    while ((temp_pass[i] = _getch())!='\0'){
        if (temp_pass[i] == 13){ // 13 is the ASCII of Enter
            break;
        }
        else if (temp_pass[i] == 8){ // 8 is the ASCII of BackSpace
        if (i != 0){
            cout<<"\b \b";
            i--;
        }
        else cout<<"\a";
        }
        else {
        cout<<"*";
        password[i] = temp_pass[i];
        i++;
        }
    }
    cout<<"\n";
    FILE *users=fopen("users.txt","r");
    fseek(users,0,0);
    while(!feof(users)){
    fscanf(users,"%s %s\n",&fusername,&fpassword);
    username_key=strcmp(username,fusername);
    password_key=strcmp(password,fpassword);
    if(username_key==0 && password_key==0){
        result=1;
        break;
    }
}
    if (username_key!=0 || password_key!=0){
    cout<<"\ninvalid username or password enterd \n";
    result=0;
    }
    fclose(users);    
    return result;
    
}


//********************************************************************************************************************
//            Main Menu
//
//********************************************************************************************************************

void BST::main_menu()
{
    int choice;
    while(choice!=5)
    {
        system("cls");
        cout<<"\n\n\n";
        cout.put('\t').put(201).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(187);
        cout.put('\n').put('\t').put(186)<<"\t\t MAIN MENU \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t            \t      ";
        cout.put(186).put('\n').put('\t').put(186).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(186);
        cout.put('\n').put('\t').put(186)<<"\t  (1)   Client Menu \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                      \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (2)   Room Menu \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                   \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (3)   Food Menu  \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (4)   Complaints  \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t\t\t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (5)   EXIT  \t              ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t\t\t      ";
        cout.put(186).put('\n').put('\t').put(200).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(188);
        cout<<"\n\n\t\tEnter Your Choice: ";
        cin>>choice;

        switch(choice)
        {
            case 1:    client_menu();
                break;
            case 2: room_menu();
                break;
            case 3:    menu();
                break;
            case 4: complaint();
                break;
            case 5: break;
            default:
                {
                    cout<<"\n\n\t\t\tWrong choice.....!!!";
                    cout<<"\n\t\t\tPress any key to continue....!!";
                    getch();
                }
        }
        getch();
    }
}

//********************************************************************************************************************
//            Client Menu
//
//********************************************************************************************************************

void BST::client_menu()
{
    Client obj;
    int choice;
    while(choice!=5)
    {
        system("cls");
        cout<<"\n\n\n";
        cout.put('\t').put(201).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(187);
        cout.put('\n').put('\t').put(186)<<"\t\t CLIENT MENU \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t            \t      ";
        cout.put(186).put('\n').put('\t').put(186).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(186);
        cout.put('\n').put('\t').put(186)<<"\t  (1)   Add Client    \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                      \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (2)   Display Clients       ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                   \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (3)   Search Client         ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (4)   Modify Client Data    ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (5)   Exit to main menu     ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t\t\t      ";
        cout.put(186).put('\n').put('\t').put(200).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(188);
        cout<<"\n\n\t\tEnter Your Choice: ";
        cin>>choice;

        switch(choice)
        {
            case 1:    add();
                break;
            case 2: obj.display_client();
                break;
            case 3: obj.search_client();
                break;
            case 4:    obj.modify_client();
                break;
            case 5:    break;
            default:
                {
                    cout<<"\n\n\t\t\tWrong choice.....!!!";
                    cout<<"\n\t\t\tPress any key to continue....!!";
                    //getch();
                }
        }
    }
}

//********************************************************************************************************************
//            Room Menu
//
//********************************************************************************************************************
void BST::room_menu()
{
    room obj;
    int choice;
    while(choice!=5)
    {
        system("cls");
        cout<<"\n\n\n";
        cout.put('\t').put(201).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(187);
        cout.put('\n').put('\t').put(186)<<"\t\t ROOM MENU \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t            \t      ";
        cout.put(186).put('\n').put('\t').put(186).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(186);
        cout.put('\n').put('\t').put(186)<<"\t  (1)   Add Room      \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                      \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (2)   Display Rooms         ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                   \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (3)   Search Room           ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (4)   Modify Room Data      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (5)   Exit to main menu     ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t\t\t      ";
        cout.put(186).put('\n').put('\t').put(200).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(188);
        cout<<"\n\n\t\tEnter Your Choice: ";
        cin>>choice;

        switch(choice)
        {
            case 1:    add_room();
                break;
            case 2: obj.display_room();
                break;
            case 3: obj.search_room();
                break;
            case 4:    obj.modify_room();
                break;
            case 5:    break;
            default:
                {
                    cout<<"\n\n\t\t\tWrong choice.....!!!";
                    cout<<"\n\t\t\tPress any key to continue....!!";
                    //getch();
                }
        }
    }
}

//********************************************************************************************************************
//            Enter Client Information
//
//********************************************************************************************************************

void Client::cin_client()
{
        cout<<"Enter ID ";
        cin>>ID;
        cout<<endl<<"Enter Name";
        cin.ignore();
        cin.getline(Name,20);
        cout<<endl<<"Enter CNIC";
        cin.getline(CNIC,20);
        cout<<endl<<"Enter Phone Number";
        cin.getline(Phone,20);
        cout<<endl<<"Enter Email Number";
        cin.getline(Email,20);
        cout<<endl<<"Enter Address Number";
        cin.getline(Address,50);
}


//********************************************************************************************************************
//            Display all Clients Information
//
//********************************************************************************************************************

void Client::show_client()
{
    cout<<"| "<<ID<<setw(8)<<"|"<<Name<<setw(15)<<"|"<<CNIC<<setw(15)<<"|"<<Phone<<setw(15)<<"|"<<Email<<setw(15)<<"|"<<Address<<"    |"<<endl;
}


//********************************************************************************************************************
//            File Handling to display all client Information
//
//********************************************************************************************************************

void Client:: display_client()
{
    Client ob;
    bool flag=false;
    ifstream inFile;
    inFile.open("Data.dat",ios::binary);
    if(!inFile)
    {
        cout<<"File could not be open !! Press any Key...";
        return;
    }
    cout<<"\nBALANCE DETAILS\n";
    cout<<" __________________________________________________________________________________________________________________ \n";
    cout<<"|"<<"  ID"<<setw(8)<<"|"<<"Name"<<setw(15)<<"|"<<"CNIC"<<setw(15)<<"|"<<"Phone"<<setw(15)<<"|"<< "Email"<<setw(15)<<"|"<< "Address"<<"                 |"<<endl;
    cout<<"|___________|__________________|__________________|___________________|___________________|________________________|\n";
        while(inFile.read(reinterpret_cast<char *> (&ob), sizeof(Client)))
    {
            ob.show_client();
            flag=true;
    }
    cout<<"|___________|__________________|__________________|___________________|___________________|________________________|\n";
    inFile.close();
    if(flag==false)
        cout<<"\n\nRoom number does not exist";
        
        getch();
}

//********************************************************************************************************************
//            ADD data usind BST
//
//********************************************************************************************************************

bool BST::add()
{    
    Client ob;
    ofstream outFile;
    outFile.open("Data.dat",ios::binary|ios::app);
    ob.cin_client();
    outFile.write(reinterpret_cast<char *> (&ob), sizeof(Client));
    outFile.close();
    
        Client* temp = new Client;
        temp->ID = ob.ID;
        temp->left = NULL;
        temp->right = NULL;

        Client* curr = root;
        Client* parent = 0;

        while(curr != NULL)
        {
            if(curr->ID == ob.ID)
            {
                delete temp;
                temp = NULL;
                return false;
            }
            else if(ob.ID < curr->ID)
            {
                parent = curr;
                curr = curr->left;
            }
            else
            {
                parent = curr;
                curr = curr->right;
            }
        }

        if(parent == NULL)
        {
            root = temp;
        }
        else
        {
            if(ob.ID < parent->ID)
            {
                parent->left = temp;
            }
            else
            {
                parent->right = temp;
            }
            return true;
        }
        
    }


//********************************************************************************************************************
//            Display Client
//
//********************************************************************************************************************

/*void BST::display()
{
    Client ob;
    
    Client* t = new Client;
    bool flag=false;
    ifstream inFile;
    inFile.open("Data.dat",ios::binary);
    if(!inFile)
    {
        cout<<"File could not be open !! Press any Key...";
        return;
    }
    cout<<"\n   ROOM DETAILS\n";
    cout<<" __________________________________________________________________________________________________________________ \n";
    cout<<"|"<<"  ID"<<setw(8)<<"|"<<"Name"<<setw(15)<<"|"<<"CNIC"<<setw(15)<<"|"<<"Phone"<<setw(15)<<"|"<< "Email"<<setw(15)<<"|"<< "Address"<<"                 |"<<endl;
    cout<<"|___________|__________________|__________________|___________________|___________________|________________________|\n";
        while(inFile.read(reinterpret_cast<char *> (&ob), sizeof(Client)))
    {
            ob.show_client();
            flag=true;
    }
    cout<<"|___________|__________________|__________________|___________________|___________________|________________________|\n";
    inFile.close();
    if(flag==false)
        cout<<"\n\nRoom number does not exist";
    //system("cls");
    
    
    Client* root;
    while(t != 0)
    {
        if(ob.ID==t->ID)
        {
            cout<<"\nENTER CUSTOMER DETAIL";
            cout<<"\n_____________________";
            cout<<endl<<"Customer ID";
            cin>>t->ID;
            cout<<endl<<"Customer Name";
            cin>>t->Name;
            cout<<endl<<"Customer CNIC";
            cin>>t->CNIC;
            cout<<endl<<"Customer Phone Number";
            cin>>t->Phone;
        }
        else if(ob.ID<t->ID)
            t = t->left;
        else
            t = t->right;
    }
    cout<<"Name is present in the list";
    
}*/

//********************************************************************************************************************
//            Search specific client
//
//********************************************************************************************************************

int Client::search_client()
{
    int n;
    cout<<"Enter ID which you want to SEARCH";
    cin>>n;
    
    Client ob;
    bool flag=false;
    ifstream inFile;
    inFile.open("Data.dat",ios::binary);
    if(!inFile)
    {
        cout<<"File could not be open !! Press any Key...";
        return 0;
    }
    cout<<"\nBALANCE DETAILS\n";

        while(!inFile.eof())
    {
        inFile.read(reinterpret_cast<char *> (&ob), sizeof(Client));
        if(n==ob.ID)
        {
            ob.cout_client();
            flag=true;
        }
    }
    inFile.close();
    if(flag==false)
        cout<<"\n\nRoom number does not exist";
        
        getch();
}

//********************************************************************************************************************
//            Display Search Client Information
//
//********************************************************************************************************************

void Client::cout_client()
{
    cout<<"ID is="<<ID<<endl;
    cout<<"Name is="<<Name<<endl;
    cout<<"CNIC is="<<CNIC<<endl;
    cout<<"Phone number is="<<Phone<<endl;
    cout<<"Email is"<<Email<<endl;
    cout<<"Address is"<<Address<<endl;
    cout<<"\n\n___________________________________________________________________"<<endl;
}


//********************************************************************************************************************
//            Modify Function
//
//********************************************************************************************************************

void Client::modify_client()
{
    int n;
    cout<<"Enter ID which you want to SEARCH";
    cin>>n;
    
    bool found=false;
    Client ob;
    fstream File;
    File.open("Data.dat",ios::binary|ios::in|ios::out);
    if(!File)
    {
        cout<<"File could not be open !! Press any Key...";
        return;
    }
    while(!File.eof() && found==false)
    {
        File.read(reinterpret_cast<char *> (&ob), sizeof(Client));
        if(ob.ID==n)
        {
            ob.cout_client();
            cout<<"\n\nEnter The New Details of account"<<endl;
            ob.cin_modify_client();
            int pos=(-1)*static_cast<int>(sizeof(Client));
            File.seekp(pos,ios::cur);
            File.write(reinterpret_cast<char *> (&ob), sizeof(Client));
            cout<<"\n\n\t Record Updated";
            found=true;
          }
    }
    File.close();
    if(found==false)
        cout<<"\n\n Record Not Found ";
        
        getch();
}

//********************************************************************************************************************
//            Enter things which you want to modify
//
//********************************************************************************************************************

void Client::cin_modify_client()
{
    int choice;
        cout<<"\n\n\n";
        cout.put('\t').put(201).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(187);
        cout.put('\n').put('\t').put(186)<<"\t Which thing you modify       ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t            \t      ";
        cout.put(186).put('\n').put('\t').put(186).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(186);
        cout.put('\n').put('\t').put(186)<<"\t  (1)   ID            \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                      \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (2)   Name                  ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                   \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (3)   CNIC                  ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (4)   Phone Number          ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (5)   Email                 ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t\t\t      ";
        cout.put(186).put('\n').put('\t').put(200).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(188);
        cout<<"\n\n\t\tEnter Your Choice: ";
        cin>>choice;

        switch(choice)
        {
            case 1:    
            {
                cout<<"Enter ID ";
                cin>>ID;
            }
                break;
            case 2: 
            {
                cout<<endl<<"Enter Name";
                cin.ignore();
                cin.getline(Name,20);
            }
                break;
            case 3:    
            {
                cout<<endl<<"Enter CNIC";
                cin.ignore();
                cin.getline(CNIC,20);
            }
                break;
            case 4:    
            {
                cout<<endl<<"Enter Phone Number";
                cin.ignore();
                cin.getline(Phone,20);
            }
            case 5:    
            {
                cout<<endl<<"Enter Email Number";
                cin.ignore();
                cin.getline(Email,20);
            }
            default:
                {
                    cout<<"\n\n\t\t\tWrong choice.....!!!";
                    cout<<"\n\t\t\tPress any key to continue....!!";
                    //getch();
                }
        }
        cout<<"New Record is";
        cout_client();
}

//********************************************************************************************************************
//            Enter Room Information
//
//********************************************************************************************************************

void room::cin_room()
{
        cout<<"Enter ID ";
        cin>>ID;
        cout<<"Enter Room Number";
        cin>>Room;
        cout<<endl<<"Enter Name";
        cin.ignore();
        cin.getline(Name,20);
        cout<<endl<<"Enter CNIC";
        cin.getline(CNIC,20);
        cout<<endl<<"Enter Phone Number";
        cin.getline(Phone,20);
        cout<<endl<<"Enter Email Number";
        cin.getline(Email,20);
        cout<<endl<<"Enter Address Number";
        cin.getline(Address,50);
}


//********************************************************************************************************************
//            Display all rooms Information
//
//********************************************************************************************************************

void room::show_room()
{
    cout<<"| "<<ID<<setw(8)<<"|"<<Room<<setw(8)<<"|"<<Name<<setw(15)<<"|"<<CNIC<<setw(15)<<"|"<<Phone<<setw(15)<<"|"<<Email<<setw(15)<<"|"<<Address<<"    |"<<endl;
}


//********************************************************************************************************************
//            File Handling to display all room Information
//
//********************************************************************************************************************

void room:: display_room()
{
    room ob;
    bool flag=false;
    ifstream inFile;
    inFile.open("Room.dat",ios::binary);
    if(!inFile)
    {
        cout<<"File could not be open !! Press any Key...";
        return;
    }
    cout<<"\nBALANCE DETAILS\n";
    cout<<" ______________________________________________________________________________________________________________________________ \n";
    cout<<"|"<<"  ID"<<setw(8)<<"|"<<"Room"<<setw(8)<<"|"<<"Name"<<setw(15)<<"|"<<"CNIC"<<setw(15)<<"|"<<"Phone"<<setw(15)<<"|"<< "Email"<<setw(15)<<"|"<< "Address"<<"                 |"<<endl;
    cout<<"|___________|___________|__________________|__________________|___________________|___________________|________________________|\n";
        while(inFile.read(reinterpret_cast<char *> (&ob), sizeof(room)))
    {
            ob.show_room();
            flag=true;
    }
    cout<<"|___________|___________|__________________|__________________|___________________|___________________|________________________|\n";
    inFile.close();
    if(flag==false)
        cout<<"\n\nRoom number does not exist";
        
    getch();
}

//********************************************************************************************************************
//            ADD data usind BST
//
//********************************************************************************************************************

bool BST::add_room()
{    
    room ob;
    ofstream outFile;
    outFile.open("Room.dat",ios::binary|ios::app);
    ob.cin_room();
    outFile.write(reinterpret_cast<char *> (&ob), sizeof(room));
    outFile.close();
    
        room* temp = new room;
        temp->Room = ob.Room;
        temp->left = NULL;
        temp->right = NULL;

        room* curr = root1;
        room* parent = 0;

        while(curr != NULL)
        {
            if(curr->Room == ob.Room)
            {
                delete temp;
                temp = NULL;
                return false;
            }
            else if(ob.Room < curr->Room)
            {
                parent = curr;
                curr = curr->left;
            }
            else
            {
                parent = curr;
                curr = curr->right;
            }
        }

        if(parent == NULL)
        {
            root1 = temp;
        }
        else
        {
            if(ob.Room < parent->Room)
            {
                parent->left = temp;
            }
            else
            {
                parent->right = temp;
            }
            return true;
        }
        
    }

//********************************************************************************************************************
//            Search specific room
//
//********************************************************************************************************************

int room::search_room()
{
    int n;
    cout<<"Enter Room Number which you want to SEARCH";
    cin>>n;
    
    room ob;
    bool flag=false;
    ifstream inFile;
    inFile.open("Room.dat",ios::binary);
    if(!inFile)
    {
        cout<<"File could not be open !! Press any Key...";
        return 0;
    }
    cout<<"\nBALANCE DETAILS\n";

        while(!inFile.eof())
    {
        inFile.read(reinterpret_cast<char *> (&ob), sizeof(room));
        if(n==ob.Room)
        {
            ob.cout_room();
            flag=true;
        }
    }
    inFile.close();
    if(flag==false)
        cout<<"\n\nRoom number does not exist";
        
        getch();
}

//********************************************************************************************************************
//            Display Search room Information
//
//********************************************************************************************************************

void room::cout_room()
{
    cout<<"ID is="<<ID<<endl;
    cout<<"Room Number"<<Room<<endl;
    cout<<"Name is="<<Name<<endl;
    cout<<"CNIC is="<<CNIC<<endl;
    cout<<"Phone number is="<<Phone<<endl;
    cout<<"Email is"<<Email<<endl;
    cout<<"Address is"<<Address<<endl;
    cout<<"\n\n___________________________________________________________________"<<endl;
}


//********************************************************************************************************************
//            Modify Function
//
//********************************************************************************************************************

void room::modify_room()
{
    int n;
    cout<<"Enter Room Number which you want to SEARCH";
    cin>>n;
    
    bool found=false;
    room ob;
    fstream File;
    File.open("Room.dat",ios::binary|ios::in|ios::out);
    if(!File)
    {
        cout<<"File could not be open !! Press any Key...";
        return;
    }
    while(!File.eof() && found==false)
    {
        File.read(reinterpret_cast<char *> (&ob), sizeof(room));
        if(ob.Room==n)
        {
            ob.cout_room();
            cout<<"\n\nEnter The New Details of account"<<endl;
            ob.cin_modify_room();
            int pos=(-1)*static_cast<int>(sizeof(room));
            File.seekp(pos,ios::cur);
            File.write(reinterpret_cast<char *> (&ob), sizeof(room));
            cout<<"\n\n\t Record Updated";
            found=true;
          }
    }
    File.close();
    if(found==false)
        cout<<"\n\n Record Not Found ";
        
        getch();
}

//********************************************************************************************************************
//            Enter things which you want to modify
//
//********************************************************************************************************************

void room::cin_modify_room()
{
    int choice;
        cout<<"\n\n\n";
        cout.put('\t').put(201).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(187);
        cout.put('\n').put('\t').put(186)<<"\t Which thing you modify       ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t            \t      ";
        cout.put(186).put('\n').put('\t').put(186).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(196).put(186);
        cout.put('\n').put('\t').put(186)<<"\t  (1)   ID            \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                      \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (2)   Room                  ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                   \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (3)   Name                  ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (4)   CNIC                  ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t                     \t      ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t  (5)   Phone Number          ";
        cout.put(186).put('\n').put('\t').put(186)<<"\t\t\t\t      ";
        cout.put(186).put('\n').put('\t').put(200).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(188);
        cout<<"\n\n\t\tEnter Your Choice: ";
        cin>>choice;

        switch(choice)
        {
            case 1:    
            {
                cout<<"Enter ID ";
                cin>>ID;
            }
                break;
            case 2: 
            {
                cout<<"Enter Room Number";
                cin>>Room;
            }
                break;
            case 3: 
            {
                cout<<endl<<"Enter Name";
                cin.ignore();
                cin.getline(Name,20);
            }
                break;
            case 4:    
            {
                cout<<endl<<"Enter CNIC";
                cin.getline(CNIC,20);
            }
                break;
            case 5:    
            {
                cout<<endl<<"Enter Phone Number";
                cin.getline(Phone,20);
            }
            default:
                {
                    cout<<"\n\n\t\t\tWrong choice.....!!!";
                    cout<<"\n\t\t\tPress any key to continue....!!";
                    //getch();
                }
        }
        cout<<"New Record is";
        cout_room();
    
    /*cout<<"Enter ID ";
        cin>>ID;
        cout<<"Enter Room Number";
        cin>>Room;
        cout<<endl<<"Enter Name";
        cin.ignore();
        cin.getline(Name,20);
        cout<<endl<<"Enter CNIC";
        cin.getline(CNIC,20);
        cout<<endl<<"Enter Phone Number";
        cin.getline(Phone,20);
        cout<<endl<<"Enter Email Number";
        cin.getline(Email,20);
        cout<<endl<<"Enter Address Number";
        cin.ignore();
        cin.getline(Address,50);*/
}

//********************************************************************************************************************
//             FOOD MENU
//
//********************************************************************************************************************

void BST:: menu()
{
    //system("CLS");
    //fclose(fp);
    //system("COLOR FC");
        cout<<"\n\n\n";
        cout.put('\t').put(201).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(210).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(187);
        cout.put('\n').put('\t').put(186)<<"                                         Menu\t\t\t\t\t       ";
        cout.put(186).put('\n').put('\t').put(186)<<"Rice                                      ";
        cout.put(179)<<"  SHAWARMA                                 ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (1) Fine Special Rice         PKR :305   ";
        cout.put(179)<<" (11) Fine Special Roll       PKR :150     ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (2) Steamed Rice              PKR :330   ";
        cout.put(179)<<" (12) Chicken Shawarma        PKR :90      ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (3) Chicken Masala Rice       PKR :260   ";
        cout.put(179)<<" (13) Chicken Shawarma        PKR :110     ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (4) Chicken Fried Rice        PKR :260   ";
        cout.put(179)<<" (14) Beef Shawarma           PKR :80      ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (5) Mutton Fried Rice         PKR :305   ";
        cout.put(179)<<" SOUP                                      ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (6) Beef Chilli Fried Rice    PKR :250   ";
        cout.put(179)<<" (15) Fine Special Soup       PKR :420     ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (7) Egg Fried Rice            PKR :230   ";
        cout.put(179)<<" (16) Chicken Corn Soup       PKR :360     ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (8) Shrimp Fried Rice         PKR :280   ";
        cout.put(179)<<" (17) Sliced Chicken          PKR :370     ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<" (9) Plain Rice                PKR :190   ";
        cout.put(179)<<" (18) Fine Special Soup       PKR :420     ";
        cout.put(186).put('\n').put('\t').put(186)<<"                                          ";
        cout.put(179)<<"                                           ";
        cout.put(186).put('\n').put('\t').put(186)<<"DESSERT                                   ";
        cout.put(179)<<" FISH                                      ";
        cout.put(186).put('\n').put('\t').put(186)<<" (10) Chinese GreenTea (1cup)  PKR :35    ";
        cout.put(179)<<"  (19) Fried Pomfret          PKR :400     ";
        cout.put(186).put('\n').put('\t').put(200).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(207).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(205).put(188);
        cout << "\n\t\t\t Select Your Choice :=> ";
        calculate();

//0 = Black
//1 = Blue
//2 = Green
//3 = Aqua
//4 = Red
//5 = Purple
//6 = Yellow
//7 = White
//8 = Gray
//9 = Light Blue
//A = Light Green
//B = Light Aqua
//C = Light Red
//D = Light Purple
//E = Light Yellow
//F = Bright White
}

//********************************************************************************************************************
//            Calculate FOOD MENU
//
//********************************************************************************************************************

void BST:: calculate()
{    
    int AmountofSale[20];
    int order=1,num1=0,num2=0,num3=0,num4=0,num5=0,num6=0,num7=0,num8=0,num9=0,num10=0,num11=0,num12=0,num13=0,num14=0,num15=0,num16=0,num17=0,num18=0,num19=0;
    int rice1=305,rice2=330,rice3=360,rice4=360,rice5=305,rice6=250,rice7=230,rice8=280,rice9=190,Tea=400;
    int shawarma11=150,shawarma12=90,shawarma13=110,shawarma14=80,soup15=420,soup16=360,soup17=370,soup18=420,fish=400;
    int Bill=1430;
    
    cout<<"You have ordered:\n\n";
    
    while(order!=20)
    {
        cout<<"From the list of food, what would you like:\n";
        cin>>order;
        
        switch(order)
        {
            case 20:
                break;
            case 1:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[1] = rice1;
                Bill=+AmountofSale[1];
                break;
            }
            case 2:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[2] = rice2 * num2;
                Bill=+AmountofSale[2];
                break;
            }
            case 3:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[3] = rice3 * num3;
                Bill=+AmountofSale[3];
                break;
            }
            case 4:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[4] = rice4 * num4;
                Bill=+AmountofSale[4];
                break;
            }
            case 5:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[5] = rice5 * num5;
                Bill=+AmountofSale[5];
                break;
            }
            case 6:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[6] = rice6 * num6;
                Bill=+AmountofSale[6];
                break;
            }
            case 7:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[7] = rice7 * num7;
                Bill=+AmountofSale[7];
                break;
            }
            case 8:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[8] = rice8 * num8;
                Bill=+AmountofSale[8];
                break;
            }
            case 9:
            {
                cout<<"How many plates of rice would you like to order:\n";
                cin>>num1;
                AmountofSale[9] = rice9 * num9;
                Bill=+AmountofSale[9];
                break;
            }
            case 10:
            {
                cout<<"How many cups of GreenTea would you like to order:\n";
                cin>>num1;
                AmountofSale[10] = Tea * num10;
                Bill=+AmountofSale[10];
                break;
            }
            case 11:
            {
                cout<<"How many Shawarma would you like to order:\n";
                cin>>num1;
                AmountofSale[11] = shawarma11 * num11;
                Bill=+AmountofSale[11];
                break;
            }
            case 12:
            {
                cout<<"How many Shawarma would you like to order:\n";
                cin>>num1;
                AmountofSale[12] = shawarma12 * num12;
                Bill=+AmountofSale[12];
                break;
            }
            case 13:
            {
                cout<<"How many Shawarma would you like to order:\n";
                cin>>num1;
                AmountofSale[13] = shawarma13 * num13;
                Bill=+AmountofSale[13];
                break;
            }
            case 14:
            {
                cout<<"How many Shawarma would you like to order:\n";
                cin>>num1;
                AmountofSale[14] = shawarma14 * num14;
                Bill=+AmountofSale[14];
                break;
            }
            case 15:
            {
                cout<<"How many Cups of Soup would you like to order:\n";
                cin>>num1;
                AmountofSale[15] = soup15 * num15;
                Bill=+AmountofSale[15];
                break;
            }
            case 16:
            {
                cout<<"How many Cups of Soup would you like to order:\n";
                cin>>num1;
                AmountofSale[16] = soup16 * num16;
                Bill=+AmountofSale[16];
                break;
            }
            case 17:
            {
                cout<<"How many Cups of Soup would you like to order:\n";
                cin>>num1;
                AmountofSale[17] = soup17 * num17;
                Bill=+AmountofSale[17];
                break;
            }
            case 18:
            {
                cout<<"How many Cups of Soup would you like to order:\n";
                cin>>num1;
                AmountofSale[18] = soup18 * num18;
                Bill=+AmountofSale[18];
                break;
            }
            case 19:
            {
                cout<<"How many Kg Pomfret would you like to order:\n";
                cin>>num1;
                AmountofSale[19] = fish * num19;
                Bill=+AmountofSale[19];
                break;
            }
        }
    }
    
    for(int i=1;i<20;i++)
    {
        Bill+=AmountofSale[i];
    }
        cout<<"Your Total Bill is=PKR "<<Bill;
}

//********************************************************************************************************************
//            Complaints
//
//********************************************************************************************************************

void BST:: complaint()
{
    char comp[50];
    cout<<"Enter your Complaints";
    cin.ignore();
    cin.getline(comp,50);
}

//********************************************************************************************************************
//            MAIN
//
//********************************************************************************************************************

int main()
{
    BST obj;
    system("color 5f");
    
    login();
    
    obj.main_menu();
    return 0;
}