Untitled

 avatar
unknown
plain_text
2 years ago
26 kB
5
Indexable
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void List_Restaurants(int&,vector<vector<string>>&,vector<string>&,int [],int);//list the restaurants with delivery fee
void Add_Items_to_Cart(vector<string>&, vector<string>&,int &,int);//input his name and the cuisine number that he wants to add to the cart
void Payment(vector<string>&,int&, int [][10],vector<string>dfee); //input his name and show all of the items in his cart
void shopsystem(vector<vector<string>>,vector<string>&,int [],vector<string>& cartlist,vector<string>& namelist,int &counter);
void pickup(vector<string>&, vector<string>&,int &);
void List_shops( vector<vector<string>> &shop,int shopgood[],vector<string>& shoplist );
int main()
{
    string Do;int shopgood[10];shopgood[1]=2;shopgood[2]=2;shopgood[3]=3;
    string do_what;vector<string> cartlist(100);int counter=0;vector<string>shoplist(10);
    vector<vector<string>> restaurant(10,vector<string>(20));
    int shops=3;

    shoplist[1]="*** Walmart ***";shoplist[2]="*** Target ***";shoplist[3]="*** Costco ***";



    vector<string>namelist(100);vector<string> shopname(10);int good[10];//goods amount in each shop
    vector<string>dfee(100);vector<vector<string>> shop(10,vector<string>(20));
    dfee[1]="Delivery Fee                       NTD   29";dfee[11]="Delivery Fee                       NTD   49";
    dfee[2]="Delivery Fee                       NTD   49";dfee[12]="Delivery Fee                       NTD   39";
    dfee[3]="Delivery Fee                       NTD   39";dfee[13]="Delivery Fee                       NTD   29";

    shop[1][0]="1   Walmart                            NTD   49";
    shop[1][1]="1-1 Tissue                             NTD  124";shop[1][2]="1-2 Light Bulbs                        NTD   99";
    shop[2][0]="2   Target                             NTD   39";
    shop[2][1]="2-1 Shampoo                            NTD  239";shop[2][2]="2-2 Toothpaste                         NTD  129";
    shop[3][0]="3   Costco                             NTD   29";
    shop[3][1]="3-1 Milk                               NTD  259";shop[3][2]="3-2 Doritos                            NTD  165";shop[3][3]="3-3 Croissant                          NTD  199";

    good[1]=2;good[2]=3;good[3]=3;

    int goodvalue[10][10];
    goodvalue[1][0]=29;goodvalue[2][0]=49;goodvalue[3][0]=39;//delivery fee

    goodvalue[1][1]=75;goodvalue[1][2]=85;                   //good value
    goodvalue[2][1]=71;goodvalue[2][2]=78;goodvalue[2][3]=52;//good value
    goodvalue[3][1]=140;goodvalue[3][2]=130;goodvalue[3][3]=50;//good value


    shopname[1]="*** Wang shih jhen sin tang ***";
    shopname[2]="*** Taiwan di er jia yan su ji ***";
    shopname[3]="*** Fang kong nai ba ***";

    restaurant[1][0]="1   Wang shih jhen sin tang            NTD   29";restaurant[1][10]="1   Wang shih jhen sin tang            NTD    0";
    restaurant[2][0]="2   Taiwan di er jia yan su ji         NTD   49";restaurant[2][10]="2   Taiwan di er jia yan su ji         NTD    0";
    restaurant[3][0]="3   Fang kong nai ba                   NTD   39";restaurant[3][10]="3   Fang kong nai ba                   NTD    0";
    restaurant[1][1]="1-1 Bubble Tea                         NTD   75";
    restaurant[1][2]="1-2 Cheese-Topped Black Tea            NTD   85";
    restaurant[2][1]="2-1 Boneless Salted Crispy Chicken     NTD   71";
    restaurant[2][2]="2-2 Egg Tofu                           NTD   78";
    restaurant[2][3]="2-3 Green Beans                        NTD   52";
    restaurant[3][1]="3-1 Sakura Shrimp Fried Rice           NTD  140";
    restaurant[3][2]="3-2 Squid Fried Noodles                NTD  130";
    restaurant[3][3]="3-3 Grilled King Oyster Mushrooms      NTD   50";
    do
    {
        cout << "**********************************\n***   Food Delivery Homepage   ***\n**********************************" << 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 Payment" << endl;
        cout << "Enter exit() to quit\n>>>" ;
        getline(cin,Do);
        if(Do=="exit()")//old
        {
            return 0;
        }
        if(Do=="1"||Do=="2"||Do=="3"||Do=="4"||Do=="exit()")//good input
        {
            cout<<endl;
        }
        else
        {
            cout << "Unknown command\n"<<endl;
            continue;
        }
        if(Do=="1")
        {
            do
            {
            cout << "**********************************" << endl;
            cout << "***    Food Delivery System    ***\n**********************************" << endl;
            cout << "Enter 1 to List Restaurants" << endl;
            cout << "Enter 2 to Add Items to Cart" << endl;
            cout << "Enter back to the Homepage\n>>>" ;


            getline(cin,do_what);
            if(do_what=="back")
            {
                cout<<endl;
                break;
            }

            if(do_what=="1"||do_what=="2")//good input
            {
                cout<<endl;
            }
            else
            {
                cout << "Unknown command\n"<<endl;
                continue;
            }

            if(do_what=="1")
            {
                List_Restaurants(shops,restaurant,shopname,good,0);
            }
            else if(do_what=="2")
            {

                Add_Items_to_Cart(cartlist,namelist,counter,0);
            }

            }while(do_what!="back");

        }
        else if(Do=="2")
        {
            shopsystem(shop,shoplist,shopgood,cartlist,namelist,counter);

        }
        else if(Do=="3")
        {

             do
            {
                cout << "**********************************" << endl;
                cout << "***       Pick-Up System       ***\n**********************************" << endl;
                cout << "Enter 1 to List Restaurants" << endl;
                cout << "Enter 2 to Add Items to Cart" << endl;
                cout << "Enter back to the Homepage\n>>>";
                getline(cin,do_what);
                if(do_what=="back")
                {
                    cout<<endl;
                    break;
                }

                if(do_what=="1"||do_what=="2")//good input
                {
                    cout<<endl;
                }
                else
                {
                    cout << "Unknown command\n"<<endl;
                    continue;
                }

                if(do_what=="1")
                {
                    List_Restaurants(shops,restaurant,shopname,good,2);
                }
                else if(do_what=="2")
                {

                    Add_Items_to_Cart(cartlist,namelist,counter,2);
                }
            }while(true);



        }

        else if(Do=="4")
        {
            Payment(cartlist,counter,goodvalue,dfee);
        }


    }while(Do!="exit()");
}
void List_shops( vector<vector<string>> &shop,int shopgood[],vector<string>& shoplist )
{
    string listoption;
do
            {
                cout<<"*** List Shops ***"<<endl;
                cout<<"No. Shop                               Delivery Fee"<<endl;
                for(int i=1;i<=3;i++)
                {
                    cout << shop[i][0] << endl;
                }
                cout<<"Enter number to the shop or enter back to the Shops System"<<endl;
                cout<<">>>";
                getline(cin,listoption);

                if(listoption=="back")
                {
                    cout<<endl;
                    break;
                }
                if(listoption=="1"||listoption=="2"||listoption=="3")
                {
                    cout<<endl;
                    cout << shoplist[stoi(listoption)]<<endl;
                    cout<<"No. Groceries                          Price"<<endl;

                    for(int i=1;i<=shopgood[stoi(listoption)];i++)
                    {
                        cout<<shop[stoi(listoption)][i]<<endl;
                    }
                    cout<<endl;
                }
                else
                {
                    cout << "Unknown command\n"<<endl;
                    continue;
                }
            }while(listoption!="back");
}


void List_Restaurants(int &shops , vector<vector<string>> &restaurant , vector<string> &shopname ,int  good[],int control)//control=0 deliver control=2 pick up
{

    string option;
    do
    {
        cout << "*** List Restaurants ***" << endl;
        cout << "No. Restaurant                         Delivery Fee" << endl;
        if(control==0)
        {
            for(int i=1;i<=3;i++)
            {
                cout<< restaurant[i][0] <<endl;
            }
        }
        if(control==2)
        {
            for(int i=1;i<=3;i++)
            {
                cout<< restaurant[i][10] <<endl;
            }
        }
        if(control==0)
        {
            cout << "Enter number to the restaurant or enter back to the Food Delivery System\n>>>";
        }
        else if(control==2)
        {
            cout << "Enter number to the restaurant or enter back to the Pick-Up System\n>>>";
        }
        getline(cin,option);
        if((option[0]-'0'<=shops||option=="back")&&option[0]-'0'>0&&(option.length()==4||option.length()==1))//good input
        {
            cout<<endl;
        }
        else
        {
            cout << "Unknown command\n"<<endl ;
            continue;
        }
        if(option=="back")
        {
            return;
        }
        else //stoi(option) is the place of store
        {
            cout << shopname[stoi(option)]<<endl ;
            cout << "No. Cuisine                            Price"<<endl ;
            for(int i=1;i<=good[stoi(option)];i++)
            {
                cout<<restaurant[stoi(option)][i]<<endl;
            }
            cout <<endl;
            continue;

        }
    }while(true);

}

void Add_Items_to_Cart(vector<string>& cartlist,vector<string>& namelist,int &counter,int control)//control=0 delivery  ,control=1 shop control=2 pick up
{

     string name;string add_cart;int same=0;int first=0;
     cout <<"*** Add Items to Cart ***" << endl;
     cout << "Enter your name: ";
     getline(cin,name);
     if(control==0)//delivery
     {
         if(counter==0)// first name
         {

             namelist[counter]=name;
             cartlist[counter]=name;
             cartlist[counter]+=",";
             first=1;
             do
             {
                 cout << "Enter item number to add it to cart: " ;
                 getline(cin,add_cart);
                 if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="2-3"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//right
                 {

                      cartlist[counter]+="0";cartlist[counter]+=add_cart;cartlist[counter]+=",";
                      cout <<"Added successfully!\n" << endl;

                      break;
                 }
                 else
                 {
                      cout <<"Wrong number, please enter again!" << endl;
                      continue;
                 }
             }while(true);
             counter++;
         }
             for(int i=0;i<counter;i++)//name used?
             {
                 if(namelist[i]==name&&first==0)//name same
                 {
                     same=1;

                 }
                 if(same==1)//name same
                 {
                     do
                     {
                     cout << "Enter cuisine number to add it to cart: " ;
                     getline(cin,add_cart);
                     if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="2-3"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//right
                     {

                          cartlist[i]+="0";cartlist[i]+=add_cart;cartlist[i]+=",";
                          cout <<"Added successfully!\n" << endl;

                          return;
                     }
                     else
                     {
                          cout <<"Wrong number, please enter again!" << endl;
                          continue;
                     }
                     }while(true);


                 }
            }

         if(same==0&&first==0)//new name not first
         {
             namelist[counter]=name;
             cartlist[counter]=name;
             cartlist[counter]+=",";
             counter++;
             do
             {
                 cout << "Enter cuisine number to add it to cart: " ;
                 getline(cin,add_cart);
                 if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="2-3"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//name,01-1...
                 {

                      cartlist[counter-1]+="0";cartlist[counter-1]+=add_cart;cartlist[counter-1]+=",";
                      cout <<"Added successfully!\n" << endl;
                      break;
                 }
                 else
                 {
                      cout <<"Wrong number, please enter again!" << endl;
                      continue;
                 }
             }while(true);
         }
     }
     else if(control==1)//shop
     {
         if(counter==0)// first name
         {

             namelist[counter]=name;
             cartlist[counter]=name;
             cartlist[counter]+=",";
             first=1;
             do
             {
                 cout << "Enter item number to add it to cart: " ;
                 getline(cin,add_cart);
                 if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//name,11-1,13-3...
                 {

                      cartlist[counter]+="1";cartlist[counter]+=add_cart;cartlist[counter]+=",";
                      cout <<"Added successfully!\n" << endl;

                      break;
                 }
                 else
                 {
                      cout <<"Wrong number, please enter again!" << endl;
                      continue;
                 }
             }while(true);
             counter++;
         }
             for(int i=0;i<counter;i++)//name used?
             {
                 if(namelist[i]==name&&first==0)//name same
                 {
                     same=1;

                 }
                 if(same==1)//name same
                 {
                     do
                     {
                         cout << "Enter item number to add it to cart: " ;
                         getline(cin,add_cart);
                         if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//right
                         {

                              cartlist[i]+="1";cartlist[i]+=add_cart; cartlist[i]+=",";
                              cout <<"Added successfully!\n" << endl;

                              return;
                         }
                         else
                         {
                              cout <<"Wrong number, please enter again!" << endl;
                              continue;
                         }
                     }while(true);
                 }
             }

         if(same==0&&first==0)//new name not first
         {
             namelist[counter]=name;
             cartlist[counter]=name;
             cartlist[counter]+=",";
             counter++;
             do
             {
                 cout << "Enter item number to add it to cart: " ;
                 getline(cin,add_cart);
                 if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//right
                 {

                      cartlist[counter-1]+="1";cartlist[counter-1]+=add_cart;cartlist[counter-1]+=",";
                      cout <<"Added successfully!\n" << endl;
                      break;
                 }
                 else
                 {
                      cout <<"Wrong number, please enter again!" << endl;
                      continue;
                 }
             }while(true);
         }
     }//end of shop
          if(control==2)//pick up
     {
         if(counter==0)// first name
         {

             namelist[counter]=name;
             cartlist[counter]=name;
             cartlist[counter]+=",";
             first=1;
             do
             {
                 cout << "Enter item number to add it to cart: " ;
                 getline(cin,add_cart);
                 if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="2-3"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")////name,21-1...
                 {

                      cartlist[counter]+="2";cartlist[counter]+=add_cart;cartlist[counter]+=",";
                      cout <<"Added successfully!\n" << endl;

                      break;
                 }
                 else
                 {
                      cout <<"Wrong number, please enter again!" << endl;
                      continue;
                 }
             }while(true);
             counter++;
             }
             for(int i=0;i<counter;i++)//name used?
             {
                 if(namelist[i]==name&&first==0)//name same
                 {
                     same=1;

                 }
                 if(same==1)//name same
                 {
                     do
                     {
                     cout << "Enter item number to add it to cart: " ;
                     getline(cin,add_cart);
                     if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="2-3"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//right
                     {

                          cartlist[i]+="2";cartlist[i]+=add_cart; cartlist[i]+=",";
                          cout <<"Added successfully!\n" << endl;
                          return;
                     }
                     else
                     {
                          cout <<"Wrong number, please enter again!" << endl;
                          continue;
                     }
                     }while(true);
                 }
            }

         if(same==0&&first==0)//new name not first
         {
             namelist[counter]=name;
             cartlist[counter]=name;
             cartlist[counter]+=",";
             counter++;
             do
             {
                 cout << "Enter item number to add it to cart: " ;
                 getline(cin,add_cart);
                 if(add_cart=="1-1"||add_cart=="1-2"||add_cart=="2-1"||add_cart=="2-2"||add_cart=="2-3"||add_cart=="3-1"||add_cart=="3-2"||add_cart=="3-3")//name,1-1...
                 {

                      cartlist[counter-1]+="2";cartlist[counter-1]+=add_cart;cartlist[counter-1]+=",";
                      cout <<"Added successfully!\n" << endl;
                      break;
                 }
                 else
                 {
                      cout <<"Wrong number, please enter again!" << endl;
                      continue;
                 }
             }while(true);
         }
     }

}


void Payment(vector<string>& cartlist,int&counter,int goodvalue[][10],vector<string>dfee)//control=0 delivery  ,control=1 shop control=2 pick up
{
    string name;int same=0;int deliveramount=0;vector<string> shopfee(10);
    int deliverplace[100]={0};int shopplace[100]={0};
    shopfee[1]="Delivery Fee                       NTD   49";
    shopfee[2]="Delivery Fee                       NTD   39";
    shopfee[3]="Delivery Fee                       NTD   29";

    int shopvalue[10][10];
    shopvalue[1][0]=49;
    shopvalue[2][0]=39;
    shopvalue[3][0]=29;

    shopvalue[1][1]=124;shopvalue[1][2]=99;
    shopvalue[2][1]=239;shopvalue[2][2]=129;
    shopvalue[3][1]=259;shopvalue[3][2]=165;shopvalue[3][3]=199;

    vector <vector<string>> item(10,vector<string>(10));vector <vector<string>> shopitem(10,vector<string>(10));
    item[1][1]="Bubble Tea                         NTD   75";shopitem[1][1]="Tissue                             NTD  124";
    item[1][2]="Cheese-Topped Black Tea            NTD   85";shopitem[1][2]="Light Bulbs                        NTD   99";
    item[2][1]="Boneless Salted Crispy Chicken     NTD   71";shopitem[2][1]="Shampoo                            NTD  239";
    item[2][2]="Egg Tofu                           NTD   78";shopitem[2][2]="Toothpaste                         NTD  129";
    item[2][3]="Green Beans                        NTD   52";shopitem[3][1]="Milk                               NTD  259";
    item[3][1]="Sakura Shrimp Fried Rice           NTD  140";shopitem[3][2]="Doritos                            NTD  165";
    item[3][2]="Squid Fried Noodles                NTD  130";shopitem[3][3]="Croissant                          NTD  199";
    item[3][3]="Grilled King Oyster Mushrooms      NTD   50";

    cout << "*** Payment ***" << endl;
    cout << "Enter your name: " ;
    getline(cin,name);
    for(int i=0;i<counter;i++)//which cartlist
    {

        if(cartlist[i].substr(0,name.length())==name&&cartlist[i].substr(name.length(),1)==",")//consumer
           {
                same=1;int total=0;bool deliverusage[10]={0};bool shopusage[10]={0};

                cout<<endl;
                cout << "*** This is "<<name<<"'s order ***"<<endl ;
                cout << "Item                               Price"<<endl ;
                cout << "-------------------------------------------"<<endl ;
                int y=cartlist[i].length();
                for(int x=(name.length()+1);x<y;x+=5)//buy what     cart list= name,01-1,21-2,13-3...
                {
                    if(deliverusage[static_cast<int>(cartlist[i][x+1])-'0']==0 && static_cast<int>(cartlist[i][x]-'0')==0)//deliver fee
                    {
                        deliverusage[static_cast<int>(cartlist[i][x+1])-'0']=1;
                        total+=goodvalue[static_cast<int>(cartlist[i][x+1])-'0'][0];
                        deliverplace[deliveramount]=static_cast<int>(cartlist[i][x+1])-'0';//
                        deliveramount++;
                    }
                    if(cartlist[i][x]=='0')//pick up and deliver
                    {
                        cout<<item[static_cast<int>(cartlist[i][x+1])-'0'][static_cast<int>(cartlist[i][x+3])-'0']<<endl;
                        total+=goodvalue[static_cast<int>(cartlist[i][x+1])-'0'][static_cast<int>(cartlist[i][x+3])-'0'];
                    }
                    if(cartlist[i][x]=='1')//shop
                    {
                        if(shopusage[static_cast<int>(cartlist[i][x+1])-'0']==0)//deliver fee shop version
                        {
                            shopusage[static_cast<int>(cartlist[i][x+1])-'0']=1;
                            total+=shopvalue[static_cast<int>(cartlist[i][x+1])-'0'][0];
                            deliverplace[deliveramount]=static_cast<int>(cartlist[i][x+1])-'0'+10;// 11,12,13
                            deliveramount++;
                        }
                        cout<<shopitem[static_cast<int>(cartlist[i][x+1])-'0'][static_cast<int>(cartlist[i][x+3])-'0']<<endl;
                        total+=shopvalue[static_cast<int>(cartlist[i][x+1])-'0'][static_cast<int>(cartlist[i][x+3])-'0'];
                    }
                    if(cartlist[i][x]=='2')//pick up and deliver
                    {
                        cout<<item[static_cast<int>(cartlist[i][x+1])-'0'][static_cast<int>(cartlist[i][x+3])-'0']<<endl;
                        total+=goodvalue[static_cast<int>(cartlist[i][x+1])-'0'][static_cast<int>(cartlist[i][x+3])-'0'];
                    }
                }

                for(int i=0;i<deliveramount;i++)//output delivery fee for food system and shop
                {
                    cout<<dfee[deliverplace[i]]<<endl;
                }
                cout<<"-------------------------------------------"<<endl;
                cout<<"Total                              NTD  "<<total<<"\n"<<endl;
                break;
           }
    }
    if(same==0)
    {
        cout << "You don't have any item in cart!\n" << endl;
    }

}

void shopsystem(vector<vector<string>> shop,vector<string>& shoplist,int shopgood[],vector<string>& cartlist,vector<string>& namelist,int &counter)
{
    string option;string listoption;


    do
    {
        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\n>>>";
        getline(cin,option);
        if((option[0]-'0'<=2||option=="back")&&option[0]-'0'>0&&(option.length()==4||option.length()==1))//good input
        {
            cout<<endl;
        }
        else
        {
            cout << "Unknown command\n"<<endl;
            continue;
        }
        if(option=="back")
        {
            return;
        }
        else if (option=="1")
        {
            List_shops(shop,shopgood,shoplist);
        }//end of else if
        else if (option=="2")
        {
            Add_Items_to_Cart(cartlist,namelist,counter,1);
        }
    }while(true);
}

Editor is loading...
Leave a Comment