Untitled

 avatar
unknown
plain_text
2 years ago
43 kB
14
Indexable
#include<iostream>
#include<iomanip>
#include<vector>
#include<string>
#include<fstream>

using namespace std;

// indicate different type of the systems
enum System{ FOOD = 0, SHOP, PICK_UP };

// the data structure of the cuisine or the groceries
struct Item
{
    System method;// add item in the different systems, "Food Delivery", "Shops", and "Pick-Up"
    string store_name;// which store this item belongs to
    string number;// the cuisine or the groceries numebr, ex: 2-1
    string name;// the cuisine or the groceries name
    int price;// the cuisine or the groceries price
};
// the data structure of the member
struct Member
{
    char identity;// seller='s', customer='c'
    string name;// member name
    string password;// use password to log in
    vector<Item> cart;
};
// the data structure of the store
struct Store
{
    string name;// the store name
    string number;// the store number
    int delivery_fee;// the delivery fee of each store
    vector<Item> item_list;// the list of all items in this store
};

void Add_Store(vector<vector<Store>> &store_list)
{
    string choose;

    while(1)
    {
        string restaurant_number;
        string restaurant_name;
        string cuisine_num;
        string cuisine_name;
        int price;
        char y_n = 'y';
        Store R;
        Item F;
        int fee;

        cout << "*** Add Store ***" << endl;
        cout << "Enter 1 to add restaurants" << endl;
        cout << "Enter 2 to add shops" << endl;
        cout << "Enter back to the Homepage" << endl;
        cout << ">>>";
        cin >> choose;

        while(choose != "1" && choose != "2" && choose != "back")
        {
            cout << "Unknown command" << endl << endl;
            cout << "*** Add Store ***" << endl;
            cout << "Enter 1 to add restaurants" << endl;
            cout << "Enter 2 to add shops" << endl;
            cout << "Enter back to the Homepage" << endl;
            cout << ">>>";
            cin >> choose;
        }

        if(choose == "back")
        {
            cout << endl;
            break;
        }
        else if(choose == "1")
        {
            cout << endl << "Enter the restaurant number: ";
            cin >> restaurant_number;
            R.number = restaurant_number;
            cout << "Enter the restaurant name: ";
            getline(cin >> ws, restaurant_name);
            R.name = restaurant_name;
            cout << "Enter the delivery fee: ";
            cin >> fee;
            R.delivery_fee = fee;

            cout << endl << "Add items..." << endl;
            cout << "Enter the cuisine number: ";
            cin >> cuisine_num;
            F.number = cuisine_num;
            cout << "Enter the cuisine name: ";
            getline(cin >> ws, cuisine_name);
            F.name = cuisine_name;
            cout << "Enter the cuisine price: ";
            cin >> price;
            F.price = price;
            F.store_name = restaurant_name;
            R.item_list.push_back(F);
            cout << "Add item successfully~ Continue? (y/n) ";
            cin >> y_n;

            while(1)
            {
                if(y_n == 'n')
                {
                    break;
                }
                cout << endl;
                cout << "Enter the cuisine number: ";
                cin >> cuisine_num;
                F.number = cuisine_num;
                cout << "Enter the cuisine name: ";
                getline(cin >> ws, cuisine_name);
                F.name = cuisine_name;
                cout << "Enter the cuisine price: ";
                cin >> price;
                F.price = price;
                F.store_name = restaurant_name;
                R.item_list.push_back(F);
                cout << "Add item successfully~ Continue? (y/n) ";
                cin >> y_n;
            }

            store_list[0].push_back(R);
        }
        else
        {
            cout << endl << "Enter the shop number: ";
            cin >> restaurant_number;
            R.number = restaurant_number;
            cout << "Enter the shop name: ";
            getline(cin >> ws, restaurant_name);
            R.name = restaurant_name;
            cout << "Enter the delivery fee: ";
            cin >> fee;
            R.delivery_fee = fee;

            cout << endl << "Add items..." << endl;
            cout << "Enter the groceries number: ";
            cin >> cuisine_num;
            F.number = cuisine_num;
            cout << "Enter the groceries name: ";
            getline(cin >> ws, cuisine_name);
            F.name = cuisine_name;
            cout << "Enter the groceries price: ";
            cin >> price;
            F.price = price;
            F.store_name = restaurant_name;
            R.item_list.push_back(F);
            cout << "Add item successfully~ Continue? (y/n) ";
            cin >> y_n;

            while(1)
            {
                if(y_n == 'n')
                {
                    break;
                }
                cout << endl;
                cout << "Enter the groceries number: ";
                cin >> cuisine_num;
                F.number = cuisine_num;
                cout << "Enter the groceries name: ";
                getline(cin >> ws, cuisine_name);
                F.name = cuisine_name;
                cout << "Enter the groceries price: ";
                cin >> price;
                F.price = price;
                F.store_name = restaurant_name;
                R.item_list.push_back(F);
                cout << "Add item successfully~ Continue? (y/n) ";
                cin >> y_n;
            }

            store_list[1].push_back(R);
        }
        cout << endl;
    }
}

void initialize_store(vector<vector<Store>> &store_list)
{
    Store R;
    Store S;
    Store T;
    Store V;
    Store Q;
    Store W;
    Item F;
    store_list.push_back(vector<Store>(0));
    store_list.push_back(vector<Store>(0));

    R.number = "1";
    R.name = "Wang shih jhen sin tang";
    R.delivery_fee = 29;

    F.name = "Bubble Tea";
    F.number = "1-1";
    F.price = 75;
    F.store_name = "Wang shih jhen sin tang";
    R.item_list.push_back(F);

    F.name = "Cheese-Topped Black Tea";
    F.number = "1-2";
    F.price = 85;
    F.store_name = "Wang shih jhen sin tang";
    R.item_list.push_back(F);

    store_list[0].push_back(R);

    S.number = "2";
    S.name = "Taiwan di er jia yan su ji";
    S.delivery_fee = 49;

    F.name = "Boneless Salted Crispy Chicken";
    F.number = "2-1";
    F.price = 71;
    F.store_name = "Taiwan di er jia yan su ji";
    S.item_list.push_back(F);

    F.name = "Egg Tofu";
    F.number = "2-2";
    F.price = 78;
    F.store_name = "Taiwan di er jia yan su ji";
    S.item_list.push_back(F);

    F.name = "Green Beans";
    F.number = "2-3";
    F.price = 52;
    F.store_name = "Taiwan di er jia yan su ji";
    S.item_list.push_back(F);

    store_list[0].push_back(S);

    T.number = "3";
    T.name = "Fang kong nai ba";
    T.delivery_fee = 39;

    F.name = "Sakura Shrimp Fried Rice";
    F.number = "3-1";
    F.price = 140;
    F.store_name = "Fang kong nai ba";
    T.item_list.push_back(F);

    F.name = "Squid Fried Noodles";
    F.number = "3-2";
    F.price = 130;
    F.store_name = "Fang kong nai ba";
    T.item_list.push_back(F);

    F.name = "Grilled King Oyster Mushrooms";
    F.number = "3-3";
    F.price = 50;
    F.store_name = "Fang kong nai ba";
    T.item_list.push_back(F);

    store_list[0].push_back(T);
    //shop
    V.number = "1";
    V.name = "Walmart";
    V.delivery_fee = 49;

    F.name = "Tissue";
    F.number = "1-1";
    F.price = 124;
    F.store_name = "Walmart";
    V.item_list.push_back(F);

    F.name = "Light Bulbs";
    F.number = "1-2";
    F.price = 99;
    F.store_name = "Walmart";
    V.item_list.push_back(F);

    store_list[1].push_back(V);

    W.number = "2";
    W.name = "Target";
    W.delivery_fee = 39;

    F.name = "Shampoo";
    F.number = "2-1";
    F.price = 239;
    F.store_name = "Target";
    W.item_list.push_back(F);

    F.name = "Toothpaste";
    F.number = "2-2";
    F.price = 129;
    F.store_name = "Target";
    W.item_list.push_back(F);

    store_list[1].push_back(W);

    Q.number = "3";
    Q.name = "Costco";
    Q.delivery_fee = 29;

    F.name = "Milk";
    F.number = "3-1";
    F.price = 259;
    F.store_name = "Costco";
    Q.item_list.push_back(F);

    F.name = "Doritos";
    F.number = "3-2";
    F.price = 165;
    F.store_name = "Costco";
    Q.item_list.push_back(F);

    F.name = "Croissant";
    F.number = "3-3";
    F.price = 199;
    F.store_name = "Costco";
    Q.item_list.push_back(F);

    store_list[1].push_back(Q);
}

void Sign_Up(vector<struct Member> &info)
{
    string username;
    string password;
    string identity;
    Member R;

    cout << "*** Sign Up ***" << endl;
    cout << "Enter Username: ";
    cin >> username;
    R.name = username;
    cout << "Enter Password: ";
    cin >> password;
    R.password = password;
    cout << "Which identity do you want to sign up for?" << endl;
    cout << "Enter 1 to become a customer" << endl;
    cout << "Enter 2 to become a seller" << endl;
    cout << ">>>";
    cin >> identity;

    if(identity != "1" && identity != "2")
    {
        cout << "Unknown command" << endl;
        cout << "Fail to sign up! Go back to the Member system." << endl << endl;
        return;
    }
    else
    {
        if(identity == "1")
        {
            R.identity = 'c';
        }
        else
        {
            R.identity = 's';
        }
        info.push_back(R);
        cout << "Welcome! You are now a member of Food Delivery System." << endl << endl;
        return;
    }
}
void Log_In(vector<struct Member> &info, string &name, char &identity)
{
    int i;
    string username;
    string password;

    cout << "*** Log In ***" << endl;
    cout << "Enter Username: ";
    cin >> username;
    cout << "Enter Password: ";
    cin >> password;

    for(i = 0; i < info.size(); i++)
    {
        if(username == info[i].name)
        {
            break;
        }
    }
    if(i == info.size())
    {
        cout << "Fail to find your data." << endl;
        cout << "Please sign up first." << endl << endl;
    }
    else
    {
        identity = info[i].identity;
        name = info[i].name;
        cout << "Welcome, " << name << "!" << endl << endl;
    }
}
void Load_Member_Information(vector<struct Member> &info)
{
    string a, b, c;
    string filename;
    Member R;

    cout << "*** Load Member Information ***" << endl;
    cout << "Enter the member file name: ";
    cin >> filename;
    ifstream file;

    file.open(filename);

    if(file.fail())
    {
        cout << "File could not be opened." << endl;
        cout << endl;
    }
    else
    {
        while(file >> a >> b >> c)
        {
            R.name = a;
            R.password = b;
            char s_c = c[0];
            R.identity = s_c;
            info.push_back(R);
        }

        cout << "The file " << filename << " has been loaded..." << endl << endl;
    }
}
void Member(vector<struct Member> &info, string &name, char &identity)
{
    string choose;

    while(1)
    {
        if(info.size() == 0)
        {
            cout << "**********************************" << endl;
            cout << "***       Member system        ***" << endl;
            cout << "**********************************" << endl;
            cout << "Enter 1 to Load Member Information" << endl;
            cout << "Enter back to the Homepage" << endl;
            cout << ">>>";
            cin >> choose;

            while(choose != "1" && choose != "back")
            {
                cout << "Unknown command" << endl << endl;
                cout << "**********************************" << endl;
                cout << "***       Member system        ***" << endl;
                cout << "**********************************" << endl;
                cout << "Enter 1 to Load Member Information" << endl;
                cout << "Enter back to the Homepage" << endl;
                cout << ">>>";
                cin >> choose;
            }

            cout << endl;

            if(choose == "back")
            {
                return;
            }
            else
            {
                Load_Member_Information(info);
            }
        }
        else
        {
            if(name == "0")
            {
                cout << "**********************************" << endl;
                cout << "***       Member system        ***" << endl;
                cout << "**********************************" << endl;
                cout << "Enter 2 to Log In" << endl;
                cout << "Enter 3 to Sign Up" << endl;
                cout << "Enter back to the Homepage" << endl;
                cout << ">>>";
                cin >> choose;

                while(choose != "2" && choose != "3" && choose != "back")
                {
                    cout << "Unknown command" << endl << endl;
                    cout << "**********************************" << endl;
                    cout << "***       Member system        ***" << endl;
                    cout << "**********************************" << endl;
                    cout << "Enter 2 to Log In" << endl;
                    cout << "Enter 3 to Sign Up" << endl;
                    cout << "Enter back to the Homepage" << endl;
                    cout << ">>>";
                    cin >> choose;
                }

                cout << endl;

                if(choose == "back")
                {
                    return;
                }
                else if(choose == "2")
                {
                    Log_In(info, name, identity);
                }
                else
                {
                    Sign_Up(info);
                }
            }
            else
            {
                cout << "**********************************" << endl;
                cout << "***       Member system        ***" << endl;
                cout << "**********************************" << endl;
                cout << "You are log in." << endl;
                cout << "Enter 4 to log out" << endl;
                cout << "Enter back to the Homepage" << endl;
                cout << ">>>";
                cin >> choose;

                while(choose != "4" && choose != "back")
                {
                    cout << "Unknown command" << endl << endl;
                    cout << "**********************************" << endl;
                    cout << "***       Member system        ***" << endl;
                    cout << "**********************************" << endl;
                    cout << "You are log in." << endl;
                    cout << "Enter 4 to log out" << endl;
                    cout << "Enter back to the Homepage" << endl;
                    cout << ">>>";
                    cin >> choose;
                }

                if(choose == "back")
                {
                    cout << endl;
                    return;
                }
                else
                {
                    cout << "You are logging out..." << endl << endl;
                    name = "0";
                    identity = '0';
                    return;
                }
            }
        }
    }
}

void Add_Items_to_Cart(vector<struct Member> &info, vector<vector<Store>> &store_list, string &name, System &which)
{
    Item R;
    int i = 0;
    int j = 0;
    int k = 0;
    string cuisine_num;

    for(k = 0; k < info.size(); k++)
    {
        if(info[k].name == name)
        {
            break;
        }
    }

    cout << "*** Add Items to Cart ***" << endl;
    cout << "Enter item number to add it to cart: ";
    cin >> cuisine_num;

    if(which == FOOD) //food delivery
    {
        int test = 0;
        for(i = 0; i < store_list[0].size(); i++)
        {
            for(j = 0; j < store_list[0][i].item_list.size(); j++)
            {
                if(store_list[0][i].item_list[j].number == cuisine_num)
                {
                    test = 1;
                    break;
                }
            }
            if(test == 1)
            {
                break;
            }
        }
        while(test == 0)
        {
            cout << "Wrong number, please enter again!" << endl;
            cout << "Enter item number to add it to cart: ";
            cin >> cuisine_num;

            for(i = 0; i < store_list[0].size(); i++)
            {
                for(j = 0; j < store_list[0][i].item_list.size(); j++)
                {
                    if(store_list[0][i].item_list[j].number == cuisine_num)
                    {
                        test = 1;
                        break;
                    }
                }
                if(test == 1)
                {
                    break;
                }
            }
        }

        R.method = FOOD;
        R.store_name = store_list[0][i].name;
        R.number = cuisine_num;
        R.name = store_list[0][i].item_list[j].name;
        R.price = store_list[0][i].item_list[j].price;
        info[k].cart.push_back(R);
    }
    else if(which == SHOP) //shop
    {
        int test = 0;
        for(i = 0; i < store_list[1].size(); i++)
        {
            for(j = 0; j < store_list[1][i].item_list.size(); j++)
            {
                if(store_list[1][i].item_list[j].number == cuisine_num)
                {
                    test = 1;
                    break;
                }
            }
            if(test == 1)
            {
                break;
            }
        }
        while(test == 0)
        {
            cout << "Wrong number, please enter again!" << endl;
            cout << "Enter item number to add it to cart: ";
            cin >> cuisine_num;

            for(i = 0; i < store_list[1].size(); i++)
            {
                for(j = 0; j < store_list[1][i].item_list.size(); j++)
                {
                    if(store_list[1][i].item_list[j].number == cuisine_num)
                    {
                        test = 1;
                        break;
                    }
                }
                if(test == 1)
                {
                    break;
                }
            }
        }

        R.method = SHOP;
        R.store_name = store_list[1][i].name;
        R.number = cuisine_num;
        R.name = store_list[1][i].item_list[j].name;
        R.price = store_list[1][i].item_list[j].price;
        info[k].cart.push_back(R);
    }
    else
    {
        int test = 0;
        for(i = 0; i < store_list[0].size(); i++)
        {
            for(j = 0; j < store_list[0][i].item_list.size(); j++)
            {
                if(store_list[0][i].item_list[j].number == cuisine_num)
                {
                    test = 1;
                    break;
                }
            }
            if(test == 1)
            {
                break;
            }
        }
        while(test == 0)
        {
            cout << "Wrong number, please enter again!" << endl;
            cout << "Enter item number to add it to cart: ";
            cin >> cuisine_num;

            for(i = 0; i < store_list[0].size(); i++)
            {
                for(j = 0; j < store_list[0][i].item_list.size(); j++)
                {
                    if(store_list[0][i].item_list[j].number == cuisine_num)
                    {
                        test = 1;
                        break;
                    }
                }
                if(test == 1)
                {
                    break;
                }
            }
        }

        R.method = PICK_UP;
        R.store_name = store_list[0][i].name;
        R.number = cuisine_num;
        R.name = store_list[0][i].item_list[j].name;
        R.price = store_list[0][i].item_list[j].price;
        info[k].cart.push_back(R);
    }

    cout << "Added successfully!" << endl << endl;
}

void Food_Delivery_System(vector<struct Member> &info, vector<vector<Store>> &store_list, string &name, System &which)
{
    string choose;
    string choose1;
    which = FOOD;

    while(1)
    {
        cout << "**********************************" << endl;
        cout << "***    Food Delivery System    ***" << endl;
        cout << "**********************************" << endl;
        cout << "Enter 1 to List Restaurants" << endl;
        cout << "Enter 2 to Add Items to Cart" << endl;
        cout << "Enter back to the Homepage" << endl;
        cout << ">>>";
        cin >> choose;

        while(choose != "1" && choose != "2" && choose != "back")
        {
            cout << "Unknown command" << endl << endl;
            cout << "**********************************" << endl;
            cout << "***    Food Delivery System    ***" << endl;
            cout << "**********************************" << endl;
            cout << "Enter 1 to List Restaurants" << endl;
            cout << "Enter 2 to Add Items to Cart" << endl;
            cout << "Enter back to the Homepage" << endl;
            cout << ">>>";
            cin >> choose;
        }

        cout << endl;

        if(choose == "back")
        {
            return;
        }
        else if(choose == "1")
        {
            while(1)
            {
                int test = 0;
                cout << "*** List Restaurants ***" << endl;
                cout << "No. Restaurant                         Delivery Fee" << endl;
                for(int i = 0; i < store_list[0].size(); i++)
                {
                    cout << left << setw(4) << store_list[0][i].number << left << setw(35) << store_list[0][i].name << "NTD" << right << setw(5) << store_list[0][i].delivery_fee << endl;
                }
                cout << "Enter number to the restaurant or enter back to the Food Delivery System" << endl << ">>>";
                cin >> choose1;

                for(int i = 0; i < store_list[0].size(); i++)
                {
                    if(choose1 == store_list[0][i].number || choose1 == "back")
                    {
                        test = 1;
                        break;
                    }
                }

                while(test == 0)
                {
                    cout << "Unknown command" << endl << endl;
                    cout << "*** List Restaurants ***" << endl;
                    cout << "No. Restaurant                         Delivery Fee" << endl;
                    for(int i = 0; i < store_list[0].size(); i++)
                    {
                        cout << left << setw(4) << store_list[0][i].number << left << setw(35) << store_list[0][i].name << "NTD" << right << setw(5) << store_list[0][i].delivery_fee << endl;
                    }
                    cout << "Enter number to the restaurant or enter back to the Food Delivery System" << endl << ">>>";
                    cin >> choose1;

                    for(int i = 0; i < store_list[0].size(); i++)
                    {
                        if(choose1 == store_list[0][i].number || choose1 == "back")
                        {
                            test = 1;
                            break;
                        }
                    }
                }

                cout << endl;

                if(choose1 == "back")
                {
                    break;
                }
                for(int i = 0; i < store_list[0].size(); i++)
                {
                    if(choose1 == store_list[0][i].number)
                    {
                        cout << "*** " << store_list[0][i].name << " ***" << endl;
                        cout << "No. Cuisine                            Price" << endl;
                        for(int j = 0; j < store_list[0][i].item_list.size(); j++)
                        {
                            cout << left << setw(4) << store_list[0][i].item_list[j].number << left << setw(35) << store_list[0][i].item_list[j].name << "NTD" << right << setw(5) << store_list[0][i].item_list[j].price << endl;
                        }
                        cout << endl;
                        break;
                    }
                }
            }
        }
        else
        {
            if(name != "0")
            {
                Add_Items_to_Cart(info, store_list, name, which);
            }
            else
            {
                cout << "Please log in first." << endl << endl;
            }
        }
    }
}
void Shops_System(vector<struct Member> &info, vector<vector<Store>> &store_list, string &name, System &which)
{
    string choose;
    string choose1;
    which = SHOP;

    while(1)
    {
        cout << "**********************************" << endl;
        cout << "***        Shops System        ***" << endl;
        cout << "**********************************" << endl;
        cout << "Enter 1 to List Shops" << endl;
        cout << "Enter 2 to Add Items to Cart" << endl;
        cout << "Enter back to the Homepage" << endl;
        cout << ">>>";
        cin >> choose;

        while(choose != "1" && choose != "2" && choose != "back")
        {
            cout << "Unknown command" << endl << endl;
            cout << "**********************************" << endl;
            cout << "***        Shops System        ***" << endl;
            cout << "**********************************" << endl;
            cout << "Enter 1 to List Shops" << endl;
            cout << "Enter 2 to Add Items to Cart" << endl;
            cout << "Enter back to the Homepage" << endl;
            cout << ">>>";
            cin >> choose;
        }

        cout << endl;

        if(choose == "back")
        {
            return;
        }
        else if(choose == "1") //list shops
        {
            while(1)
            {
                int test = 0;
                cout << "*** List Shops ***" << endl;
                cout << "No. Shop                               Delivery Fee" << endl;
                for(int i = 0; i < store_list[1].size(); i++)
                {
                    cout << left << setw(4) << store_list[1][i].number << left << setw(35) << store_list[1][i].name << "NTD" << right << setw(5) << store_list[1][i].delivery_fee << endl;
                }
                cout << "Enter number to the restaurant or enter back to the Shops System" << endl << ">>>";
                cin >> choose1;

                for(int i = 0; i < store_list[1].size(); i++)
                {
                    if(choose1 == store_list[1][i].number || choose1 == "back")
                    {
                        test = 1;
                        break;
                    }
                }

                while(test == 0)
                {
                    cout << "Unknown command" << endl << endl;
                    cout << "*** List Shops ***" << endl;
                    cout << "No. Shop                               Delivery Fee" << endl;
                    for(int i = 0; i < store_list[1].size(); i++)
                    {
                        cout << left << setw(4) << store_list[1][i].number << left << setw(35) << store_list[1][i].name << "NTD" << right << setw(5) << store_list[1][i].delivery_fee << endl;
                    }
                    cout << "Enter number to the restaurant or enter back to the Shops System" << endl << ">>>";
                    cin >> choose1;

                    for(int i = 0; i < store_list[1].size(); i++)
                    {
                        if(choose1 == store_list[1][i].number || choose1 == "back")
                        {
                            test = 1;
                            break;
                        }
                    }
                }

                cout << endl;

                if(choose1 == "back")
                {
                    break;
                }
                for(int i = 0; i < store_list[1].size(); i++)
                {
                    if(choose1 == store_list[1][i].number)
                    {
                        cout << "*** " << store_list[1][i].name << " ***" << endl;
                        cout << "No. Groceries                          Price" << endl;
                        for(int j = 0; j < store_list[1][i].item_list.size(); j++)
                        {
                            cout << left << setw(4) << store_list[1][i].item_list[j].number << left << setw(35) << store_list[1][i].item_list[j].name << "NTD" << right << setw(5) << store_list[1][i].item_list[j].price << endl;
                        }
                        cout << endl;
                        break;
                    }
                }
            }
        }
        else
        {
            if(name != "0")
            {
                Add_Items_to_Cart(info, store_list, name, which);
            }
            else
            {
                cout << "Please log in first." << endl << endl;
            }
        }
    }
}
void PickUp_System(vector<struct Member> &info, vector<vector<Store>> &store_list, string &name, System &which)
{
    string choose;
    string choose1;
    which = PICK_UP;

    while(1)
    {
        cout << "**********************************" << endl;
        cout << "***       Pick-Up System       ***" << endl;
        cout << "**********************************" << endl;
        cout << "Enter 1 to List Restaurants" << endl;
        cout << "Enter 2 to Add Items to Cart" << endl;
        cout << "Enter back to the Homepage" << endl;
        cout << ">>>";
        cin >> choose;

        while(choose != "1" && choose != "2" && choose != "back")
        {
            cout << "Unknown command" << endl << endl;
            cout << "**********************************" << endl;
            cout << "***       Pick-Up System       ***" << endl;
            cout << "**********************************" << endl;
            cout << "Enter 1 to List Restaurants" << endl;
            cout << "Enter 2 to Add Items to Cart" << endl;
            cout << "Enter back to the Homepage" << endl;
            cout << ">>>";
            cin >> choose;
        }

        cout << endl;

        if(choose == "back")
        {
            return;
        }
        else if(choose == "1")
        {

            while(1)
            {
                int test = 0;
                cout << "*** List Restaurants ***" << endl;
                cout << "No. Restaurant                         Delivery Fee" << endl;
                for(int i = 0; i < store_list[0].size(); i++)
                {
                    cout << left << setw(4) << store_list[0][i].number << left << setw(35) << store_list[0][i].name << "NTD" << right << setw(5) << 0 << endl;
                }
                cout << "Enter number to the restaurant or enter back to the Pick-Up System" << endl << ">>>";
                cin >> choose1;

                for(int i = 0; i < store_list[0].size(); i++)
                {
                    if(choose1 == store_list[0][i].number || choose1 == "back")
                    {
                        test = 1;
                        break;
                    }
                }

                while(test == 0)
                {
                    cout << "Unknown command" << endl << endl;
                    cout << "*** List Restaurants ***" << endl;
                    cout << "No. Restaurant                         Delivery Fee" << endl;
                    for(int i = 0; i < store_list[0].size(); i++)
                    {
                        cout << left << setw(4) << store_list[0][i].number << left << setw(35) << store_list[0][i].name << "NTD" << right << setw(5) << 0 << endl;
                    }
                    cout << "Enter number to the restaurant or enter back to the Pick-Up System" << endl << ">>>";
                    cin >> choose1;

                    for(int i = 0; i < store_list[0].size(); i++)
                    {
                        if(choose1 == store_list[0][i].number || choose1 == "back")
                        {
                            test = 1;
                            break;
                        }
                    }
                }

                cout << endl;

                if(choose1 == "back")
                {
                    break;
                }
                for(int i = 0; i < store_list[0].size(); i++)
                {
                    if(choose1 == store_list[0][i].number)
                    {
                        cout << "*** " << store_list[0][i].name << " ***" << endl;
                        cout << "No. Cuisine                            Price" << endl;
                        for(int j = 0; j < store_list[0][i].item_list.size(); j++)
                        {
                            cout << left << setw(4) << store_list[0][i].item_list[j].number << left << setw(35) << store_list[0][i].item_list[j].name << "NTD" << right << setw(5) << store_list[0][i].item_list[j].price << endl;
                        }
                        cout << endl;
                        break;
                    }
                }
            }
        }
        else
        {
            if(name != "0")
            {
                Add_Items_to_Cart(info, store_list, name, which);
            }
            else
            {
                cout << "Please log in first." << endl << endl;
            }
        }
    }
}
void Payment(vector<struct Member> &info, vector<vector<Store>> &store_list, string &name)
{
    int i;
    int total = 0;
    vector<string> fee_paid1;
    vector<string> fee_paid2;

    cout << "*** Payment ***" << endl;

    if(name == "0")
    {
        cout << "Please log in first." << endl << endl;
        return;
    }

    for(i = 0; i < info.size(); i++)
    {
        if(info[i].name == name)
        {
            break;
        }
    }

    if(info[i].cart.size() == 0)
    {
        cout << "You don't have any item in cart!" << endl << endl;
        return;
    }

    cout << endl << "*** This is " << name << "'s order ***" << endl;
    cout << "Item                               Price" << endl;
    cout << "-------------------------------------------" << endl;

    for(int j = 0; j < info[i].cart.size(); j++)
    {
        cout << left << setw(35) << info[i].cart[j].name << "NTD" << right << setw(5) << info[i].cart[j].price << endl;
        total += info[i].cart[j].price;
    }
    for(int j = 0; j < info[i].cart.size(); j++)
    {
        if(info[i].cart[j].method == 0)
        {
            for(int k = 0; k < store_list[0].size(); k++)
            {
                if(store_list[0][k].name == info[i].cart[j].store_name)
                {
                    int test = 0;
                    for(int a = 0; a < fee_paid1.size(); a++)
                    {
                        if(store_list[0][k].name == fee_paid1[a])
                        {
                            test = 1;
                            break;
                        }
                    }
                    if(test == 1)
                    {

                    }
                    else
                    {
                        cout << "Delivery Fee                       NTD" << right << setw(5) << store_list[0][k].delivery_fee << endl;
                        total += store_list[0][k].delivery_fee;
                        fee_paid1.push_back(store_list[0][k].name);
                    }
                }
            }
        }
        else if(info[i].cart[j].method == 1)
        {
            for(int k = 0; k < store_list[1].size(); k++)
            {
                if(store_list[1][k].name == info[i].cart[j].store_name)
                {
                    int test = 0;
                    for(int a = 0; a < fee_paid2.size(); a++)
                    {
                        if(store_list[1][k].name == fee_paid2[a])
                        {
                            test = 1;
                            break;
                        }
                    }
                    if(test == 1)
                    {

                    }
                    else
                    {
                        cout << "Delivery Fee                       NTD" << right << setw(5) << store_list[1][k].delivery_fee << endl;
                        total += store_list[1][k].delivery_fee;
                        fee_paid2.push_back(store_list[1][k].name);
                    }
                }
            }
        }
    }

    cout << "-------------------------------------------" << endl;
    cout << "Total                              NTD" << right << setw(5) << total << endl << endl;
}

int main()
{
    char identity;
    System which;
    string name = "0";
    string choose;
    vector<struct Member> info;
    vector<vector<Store>> store_list;

    initialize_store(store_list);

    while(1)
    {
        if(identity == 's' && name != "0")
        {
            cout << "**********************************" << endl;
            cout << "***   Food Delivery Homepage   ***" << endl;
            cout << "**********************************" << endl;
            cout << "Enter 1 to Food Delivery System" << endl;
            cout << "Enter 2 to Shops System" << endl;
            cout << "Enter 3 to Pick-Up System" << endl;
            cout << "Enter 4 to Member System" << endl;
            cout << "Enter 5 to Payment" << endl;
            cout << "Enter 6 to Add Stores" << endl;
            cout << "Enter exit() to quit" << endl;
            cout << ">>>";
            cin >> choose;

            while(choose != "1" && choose != "2" && choose != "3" && choose != "4" && choose != "5" && choose != "6" && choose != "exit()")
            {
                cout << "Unknown command" << endl << endl;
                cout << "**********************************" << endl;
                cout << "***   Food Delivery Homepage   ***" << endl;
                cout << "**********************************" << endl;
                cout << "Enter 1 to Food Delivery System" << endl;
                cout << "Enter 2 to Shops System" << endl;
                cout << "Enter 3 to Pick-Up System" << endl;
                cout << "Enter 4 to Member System" << endl;
                cout << "Enter 5 to Payment" << endl;
                cout << "Enter 6 to Add Stores" << endl;
                cout << "Enter exit() to quit" << endl;
                cout << ">>>";
                cin >> choose;
            }

            cout << endl;

            if(choose == "exit()")
            {
                return 0;
            }
            else if(choose == "1")
            {
                Food_Delivery_System(info, store_list, name, which);
            }
            else if(choose == "2")
            {
                Shops_System(info, store_list, name, which);
            }
            else if(choose == "3")
            {
                PickUp_System(info, store_list, name, which);
            }
            else if(choose == "4")
            {
                Member(info, name, identity);
            }
            else if(choose == "5")
            {
                Payment(info, store_list, name);
            }
            else
            {
                Add_Store(store_list);
            }
        }
        else
        {
            cout << "**********************************" << endl;
            cout << "***   Food Delivery Homepage   ***" << endl;
            cout << "**********************************" << endl;
            cout << "Enter 1 to Food Delivery System" << endl;
            cout << "Enter 2 to Shops System" << endl;
            cout << "Enter 3 to Pick-Up System" << endl;
            cout << "Enter 4 to Member System" << endl;
            cout << "Enter 5 to Payment" << endl;
            cout << "Enter exit() to quit" << endl;
            cout << ">>>";
            cin >> choose;

            while(choose != "1" && choose != "2" && choose != "3" && choose != "4" && choose != "5" && choose != "exit()")
            {
                cout << "Unknown command" << endl << endl;
                cout << "**********************************" << endl;
                cout << "***   Food Delivery Homepage   ***" << endl;
                cout << "**********************************" << endl;
                cout << "Enter 1 to Food Delivery System" << endl;
                cout << "Enter 2 to Shops System" << endl;
                cout << "Enter 3 to Pick-Up System" << endl;
                cout << "Enter 4 to Member System" << endl;
                cout << "Enter 5 to Payment" << endl;
                cout << "Enter exit() to quit" << endl;
                cout << ">>>";
                cin >> choose;
            }

            cout << endl;

            if(choose == "exit()")
            {
                return 0;
            }
            else if(choose == "1")
            {
                Food_Delivery_System(info, store_list, name, which);
            }
            else if(choose == "2")
            {
                Shops_System(info, store_list, name, which);
            }
            else if(choose == "3")
            {
                PickUp_System(info, store_list, name, which);
            }
            else if(choose == "4")
            {
                Member(info, name, identity);
            }
            else
            {
                Payment(info, store_list, name);
            }
        }
    }
}
Editor is loading...
Leave a Comment