Advertisement
TH_Pallab

Final With Bug

Apr 9th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 18.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <string>
  6. using namespace std;
  7.  
  8. int cnt, choice, quanchoice, totalcost, customerid = 1000;
  9.  
  10. bool passcheck()
  11. {
  12.     string password;
  13.     char takepass;
  14.     printf("\n\tPlease Enter The Password (Maximum Length 8): ");
  15.     takepass = _getch();
  16.     while (takepass != 13)
  17.     {
  18.         password.push_back(takepass);
  19.         printf("*");
  20.         takepass = _getch();
  21.     }
  22.     if (password == "1234")
  23.         return true;
  24.     else
  25.         return false;
  26. }
  27.  
  28. struct item
  29. {
  30.     string name;
  31.     int price;
  32.     int quantity;
  33.     struct item *nextsnacks;
  34.     struct item *nextmeals;
  35.     struct item *nextdrinks;
  36.     struct item *nextitem;
  37. }*snacksvariable, *mealsvariable, *drinksvariable, *snackstemp, *mealstemp, *drinkstemp, *itemvariable, *itemtemp;
  38.  
  39. struct head
  40. {
  41.     int counter;
  42.     struct item *pointer;
  43. }*sheadvariable, *mheadvariable, *dheadvariable, *iheadvariable;
  44.  
  45. void creat(string putname, int putprice, int putcategory)
  46. {
  47.     if (putcategory == 1)
  48.     {
  49.         snacksvariable = (struct item*) malloc(sizeof (struct item));
  50.         snacksvariable -> name = putname;
  51.         snacksvariable -> price = putprice;
  52.         snacksvariable -> quantity = 10;
  53.         snacksvariable -> nextsnacks = NULL;
  54.         sheadvariable -> counter++;
  55.  
  56.         if (sheadvariable -> counter != 1)
  57.             snacksvariable -> nextsnacks = sheadvariable -> pointer;
  58.         sheadvariable -> pointer = snacksvariable;
  59.  
  60.         printf("\n\t== Successfully Added a New Snacks Item ==\n");
  61.     }
  62.  
  63.     else if (putcategory == 2)
  64.     {
  65.         mealsvariable = (struct item*) malloc(sizeof (struct item));
  66.         mealsvariable -> name = putname;
  67.         mealsvariable -> price = putprice;
  68.         mealsvariable -> quantity = 10;
  69.         mealsvariable -> nextmeals = NULL;
  70.         mheadvariable -> counter++;
  71.  
  72.         if (mheadvariable -> counter != 1)
  73.             mealsvariable -> nextmeals = mheadvariable -> pointer;
  74.         mheadvariable -> pointer = mealsvariable;
  75.         printf("\n\t== Successfully Added a New Meals Item ==\n");
  76.     }
  77.  
  78.     else if (putcategory == 3)
  79.     {
  80.         drinksvariable = (struct item*) malloc(sizeof (struct item));
  81.         drinksvariable -> name = putname;
  82.         drinksvariable -> price = putprice;
  83.         drinksvariable -> quantity = 10;
  84.         drinksvariable -> nextdrinks = NULL;
  85.         dheadvariable -> counter++;
  86.  
  87.         if (dheadvariable -> counter != 1)
  88.             drinksvariable -> nextdrinks = dheadvariable -> pointer;
  89.         dheadvariable -> pointer = drinksvariable;
  90.         printf("\n\t== Successfully Added a New Drinks Item ==\n");
  91.     }
  92.  
  93.     else if (putcategory == 4)
  94.     {
  95.         itemvariable = (struct item*) malloc(sizeof(struct item));
  96.         itemvariable -> name = putname;
  97.         itemvariable -> price = putprice*quanchoice;
  98.         itemvariable -> quantity = quanchoice;
  99.         itemvariable -> nextitem = NULL;
  100.         iheadvariable -> counter++;
  101.  
  102.         if (iheadvariable -> counter != 1)
  103.             itemvariable -> nextitem = iheadvariable -> pointer;
  104.         iheadvariable -> pointer = itemvariable;
  105.     }
  106. }
  107.  
  108. void display(int choice)
  109. {
  110.     if (choice == 1)
  111.         printf("\n\t\t\t\t=== Snacks ===\n");
  112.     else if (choice == 2)
  113.         printf("\n\t\t\t\t=== Meals ===\n");
  114.     else if (choice == 3)
  115.         printf("\n\t\t\t\t=== Drinks ===\n");
  116.     printf("\t-----------------------------------------------------------\n");
  117.     printf("\t No.\tName\t\t\tPrice\t\tQuantity\n");
  118.     printf("\t-----------------------------------------------------------\n");
  119.     int number = 0;
  120.     if (choice == 1)
  121.     {
  122.         snackstemp = sheadvariable -> pointer;
  123.         while (snackstemp != NULL)
  124.         {
  125.             number++;
  126.             printf("\t %d.",number);
  127.             cout << "\t" << snackstemp -> name;
  128.             printf("\t\t %d\t\t   %d\n",snackstemp -> price, snackstemp -> quantity);
  129.             snackstemp = snackstemp -> nextsnacks;
  130.         }
  131.         printf("\t-----------------------------------------------------------\n");
  132.     }
  133.  
  134.     else if (choice == 2)
  135.     {
  136.         mealstemp = mheadvariable -> pointer;
  137.         while (mealstemp != NULL)
  138.         {
  139.             number++;
  140.             printf("\t %d.",number);
  141.             cout << "\t" << mealstemp -> name;
  142.             printf("\t\t %d\t\t   %d\n",mealstemp -> price, mealstemp -> quantity);
  143.             mealstemp = mealstemp -> nextmeals;
  144.         }
  145.         printf("\t-----------------------------------------------------------\n");
  146.     }
  147.  
  148.     else if (choice == 3)
  149.     {
  150.         drinkstemp = dheadvariable -> pointer;
  151.         while (drinkstemp != NULL)
  152.         {
  153.             number++;
  154.             printf("\t %d.",number);
  155.             cout << "\t" << drinkstemp -> name;
  156.             printf("\t\t %d\t\t   %d\n",drinkstemp -> price, drinkstemp -> quantity);
  157.             drinkstemp = drinkstemp -> nextdrinks;
  158.         }
  159.         printf("\t-----------------------------------------------------------\n");
  160.     }
  161.  
  162.     else if (choice == 4)
  163.     {
  164.         itemtemp = iheadvariable -> pointer;
  165.         while (itemtemp != NULL)
  166.         {
  167.             number++;
  168.             printf("\t %d.",number);
  169.             cout << "\t" << itemtemp -> name;
  170.             printf("\t\t %d\t\t   %d\n",itemtemp -> price, itemtemp -> quantity);
  171.             itemtemp = itemtemp -> nextitem;
  172.         }
  173.         printf("\t-----------------------------------------------------------\n");
  174.     }
  175. }
  176.  
  177. traverse (struct item *temp, int take, int option, int catagory)
  178. {
  179.     if (temp != NULL)
  180.     {
  181.         cnt++;
  182.         if (cnt == take)
  183.         {
  184.             if (option == 1)
  185.             {
  186.                 int takequantity;
  187.                 printf("\n\tEnter Your Updated Quantity: ");
  188.                 scanf("%d",&takequantity);
  189.                 temp -> quantity = takequantity;
  190.                 printf("\n\t== Successfully Updated The Quantity ==\n");
  191.             }
  192.  
  193.             else if (option == -1)
  194.             {
  195.                 int newprice;
  196.                 printf("\n\tEnter The New Price: ");
  197.                 scanf("%d",&newprice);
  198.                 temp -> price = newprice;
  199.                 printf("\n\t== Successfully Revise The Price ==\n");
  200.             }
  201.  
  202.             else if (option == 2)
  203.             {
  204.                 if (catagory == 1)
  205.                 {
  206.                     snackstemp = temp -> nextsnacks;
  207.                     temp -> nextsnacks = snackstemp -> nextsnacks;
  208.                     free(snackstemp);
  209.                     sheadvariable -> counter --;
  210.                     printf("\n\t== Successfully Removed An Item ==\n");
  211.                 }
  212.  
  213.                 else if (catagory == 2)
  214.                 {
  215.                     mealstemp = temp -> nextmeals;
  216.                     temp -> nextmeals = mealstemp -> nextmeals;
  217.                     free(mealstemp);
  218.                     mheadvariable -> counter --;
  219.                     printf("\n\t== Successfully Removed An Item ==\n");
  220.                 }
  221.  
  222.                 else if (catagory == 3)
  223.                 {
  224.                     drinkstemp = temp -> nextdrinks;
  225.                     temp -> nextdrinks = drinkstemp -> nextdrinks;
  226.                     free(drinkstemp);
  227.                     dheadvariable -> counter --;
  228.                     printf("\n\t== Successfully Removed An Item ==\n");
  229.                 }
  230.  
  231.                 else if (catagory == 4)
  232.                 {
  233.                     itemtemp = temp -> nextitem;
  234.                     temp -> nextitem = itemtemp -> nextitem;
  235.                     free(itemtemp);
  236.                     iheadvariable -> counter --;
  237.                     printf("\n\t== Successfully Removed An Item ==\n");
  238.                 }
  239.             }
  240.  
  241.             else if (option == -2)
  242.             {
  243.                 totalcost = totalcost + ((temp -> price) * quanchoice);
  244.                 temp -> quantity -= quanchoice;
  245.                 creat(temp -> name, temp -> price, 4);
  246.             }
  247.         }
  248.         if (catagory == 1)
  249.             traverse (temp -> nextsnacks, take, option, catagory);
  250.         else if (catagory == 2)
  251.             traverse (temp -> nextmeals, take, option, catagory);
  252.         else if (catagory == 3)
  253.             traverse (temp -> nextdrinks, take, option, catagory);
  254.         else if (catagory == 4)
  255.             traverse (temp -> nextitem, take, option, catagory);
  256.     }
  257. }
  258.  
  259. int main()
  260. {
  261.     sheadvariable = (struct head*) malloc(sizeof (struct head));
  262.     sheadvariable -> counter = 0;
  263.     sheadvariable -> pointer = NULL;
  264.  
  265.     mheadvariable = (struct head*) malloc(sizeof (struct head));
  266.     mheadvariable -> counter = 0;
  267.     mheadvariable -> pointer = NULL;
  268.  
  269.     dheadvariable = (struct head*) malloc(sizeof (struct head));
  270.     dheadvariable -> counter = 0;
  271.     dheadvariable -> pointer = NULL;
  272.  
  273.     printf("\n\t*************** WELCOME TO THE SUPER RESTURENT ***************\n");
  274.     printf("\t--------------------------------------------------------------\n");
  275.  
  276.     mainmenu:
  277.  
  278.     iheadvariable = (struct head*) malloc(sizeof (struct head));
  279.     iheadvariable -> counter = 0;
  280.     iheadvariable -> pointer = NULL;
  281.  
  282.     int user_choice;
  283.     string password;
  284.     char takepass;
  285.  
  286.     printf("\nUsers:\n");
  287.     printf("\t1 = Admin\n\t2 = Customer\n\t0 = Exit\n\n");
  288.     printf("\tYour Choice: ");
  289.     scanf("%d",&user_choice);
  290.  
  291.     if (user_choice == 1)
  292.     {
  293.         if (passcheck() == true)
  294.         {
  295.             printf("\n\n");
  296.             adminlevel:
  297.             int adminchoice, takecategory, takenumber;
  298.             printf("\t1 = Add a New Item.\n");
  299.             printf("\t2 = Update Some Quantity.\n");
  300.             printf("\t3 = Revise Some Price.\n");
  301.             printf("\t4 = Remove Some Item.\n");
  302.             printf("\t5 = Display The Menu.\n");
  303.             printf("\t6 = Return Main Menu.\n");
  304.             printf("\n\tEnter Your Choice: ");
  305.             scanf("%d",&adminchoice);
  306.  
  307.             if (adminchoice == 1)
  308.             {
  309.                 int take, tempprice;
  310.                 string tempname;
  311.                 printf("\nCategories:\n");
  312.                 printf("\t1 = Snacks\n");
  313.                 printf("\t2 = Meal\n");
  314.                 printf("\t3 = Drinks\n");
  315.                 printf("\n\tSelect a Category: ");
  316.                 scanf("%d",&take);
  317.                 cin.ignore();
  318.                 printf("\n\tPlease Enter The Name of This Item: ");
  319.                 getline(cin, tempname);
  320.                 printf("\n\tPlease Enter The Price: ");
  321.                 scanf("%d",&tempprice);
  322.                 creat(tempname, tempprice, take);
  323.             }
  324.  
  325.             else if (adminchoice == 2 || adminchoice == 3 || adminchoice == 4)
  326.             {
  327.                 printf("\nCategories:\n");
  328.                 printf("\t1 = Snacks\n");
  329.                 printf("\t2 = Meal\n");
  330.                 printf("\t3 = Drinks\n");
  331.                 printf("\n\tSelect a Category: ");
  332.                 scanf("%d",&choice);
  333.                 display(choice);
  334.                 printf("\n\tPlease Choose The Number of Your Required Item: ");
  335.                 scanf("%d",&takenumber);
  336.                 if (choice == 1)
  337.                 {
  338.                     cnt = 0;
  339.                     if (adminchoice == 2)
  340.                         traverse(sheadvariable -> pointer, takenumber, 1, choice);
  341.                     else if (adminchoice == 3)
  342.                         traverse(sheadvariable -> pointer, takenumber, -1, choice);
  343.                     else if (adminchoice == 4)
  344.                     {
  345.                         if (takenumber == 1)
  346.                         {
  347.                             snackstemp = sheadvariable -> pointer;
  348.                             sheadvariable -> pointer = sheadvariable -> pointer -> nextsnacks;
  349.                             free(snackstemp);
  350.                             sheadvariable -> counter --;
  351.                             printf("\n\t== Successfully Removed An Item ==\n");
  352.                         }
  353.                         else
  354.                             traverse(sheadvariable -> pointer, --takenumber, 2, choice);
  355.                     }
  356.                 }
  357.  
  358.                 else if (choice == 2)
  359.                 {
  360.                     cnt = 0;
  361.                     if (adminchoice == 2)
  362.                         traverse(mheadvariable -> pointer, takenumber, 1, choice);
  363.                     else if (adminchoice == 3)
  364.                         traverse(mheadvariable -> pointer, takenumber, -1, choice);
  365.                     else if (adminchoice == 4)
  366.                     {
  367.                         if (takenumber == 1)
  368.                         {
  369.                             mealstemp = mheadvariable -> pointer;
  370.                             mheadvariable -> pointer = mheadvariable -> pointer -> nextmeals;
  371.                             free(mealstemp);
  372.                             mheadvariable -> counter --;
  373.                             printf("\n\t== Successfully Removed An Item ==\n");
  374.                         }
  375.                         else
  376.                             traverse(mheadvariable -> pointer, --takenumber, 2, choice);
  377.                     }
  378.                 }
  379.  
  380.                 else if (choice == 3)
  381.                 {
  382.                     cnt = 0;
  383.                     if (adminchoice == 2)
  384.                         traverse(dheadvariable -> pointer, takenumber, 1, choice);
  385.                     else if (adminchoice == 3)
  386.                         traverse(dheadvariable -> pointer, takenumber, -1, choice);
  387.                     else if (adminchoice == 4)
  388.                     {
  389.                         if (takenumber == 1)
  390.                         {
  391.                             drinkstemp = dheadvariable -> pointer;
  392.                             dheadvariable -> pointer = dheadvariable -> pointer -> nextdrinks;
  393.                             free(drinkstemp);
  394.                             dheadvariable -> counter --;
  395.                             printf("\n\t== Successfully Removed An Item ==\n");
  396.                         }
  397.                         else
  398.                             traverse(dheadvariable -> pointer, --takenumber, 2, choice);
  399.                     }
  400.                 }
  401.             }
  402.  
  403.             else if (adminchoice == 5)
  404.             {
  405.                 display(1);
  406.                 display(2);
  407.                 display(3);
  408.             }
  409.  
  410.             else if (adminchoice == 6)
  411.                 goto mainmenu;
  412.  
  413.             printf("\n");
  414.             goto adminlevel;
  415.         }
  416.         else
  417.         {
  418.             printf("\n\tInvalid Password! You Cannot Access This Feature.\n");
  419.             goto mainmenu;
  420.         }
  421.     }
  422.  
  423.     else if (user_choice == 2)
  424.     {
  425.         int customer_choice;
  426.         printf("\n\t*************** WELCOME TO THE SUPER RESTURENT ***************\n");
  427.         printf("\t--------------------------------------------------------------\n");
  428.         customerlevel:
  429.             printf("\n\t1 = Display Full Menu.\n");
  430.         printf("\t2 = Make Your Choice.\n");
  431.         printf("\t0 = Leave.\n");
  432.         printf("\n\tPlease Enter Your Choice: ");
  433.         scanf("%d",&customer_choice);
  434.         totalcost = 0;
  435.         if (customer_choice == 1)
  436.         {
  437.             display(1);
  438.             display(2);
  439.             display(3);
  440.         }
  441.         else if (customer_choice == 2)
  442.         {
  443.             choicelevel:
  444.             int numchoice;
  445.             char morechoice;
  446.             printf("\nCategories:\n");
  447.             printf("\t1 = Snacks\n");
  448.             printf("\t2 = Meal\n");
  449.             printf("\t3 = Drinks\n");
  450.             printf("\n\tSelect a Category: ");
  451.             scanf("%d",&choice);
  452.             display(choice);
  453.             printf("\n\tEnter Your Choice: ");
  454.             scanf("%d",&numchoice);
  455.             printf("\tEnter Your Required Quantity: ");
  456.             scanf("%d",&quanchoice);
  457.             cnt = 0;
  458.             if (choice == 1)
  459.                 traverse(sheadvariable -> pointer, numchoice, -2, choice);
  460.             else if (choice == 2)
  461.                 traverse(mheadvariable -> pointer, numchoice, -2, choice);
  462.             else if (choice == 3)
  463.                 traverse(dheadvariable -> pointer, numchoice, -2, choice);
  464.             cin.ignore();
  465.             printf("\n\tDo You Want to Order Some Other Items? (Y = Yes)\t");
  466.             scanf("%c",&morechoice);
  467.             if (morechoice == 'y' || morechoice == 'Y')
  468.                 goto choicelevel;
  469.             else
  470.             {
  471.                 customerid++;
  472.                 customermind:
  473.                 printf("\n\tCustomer Id: %d\n\n",customerid);
  474.                 display(4);
  475.                 printf("\t\t\t    Total Cost = %d\n",totalcost);
  476.                 printf("\n\t1 = Confirm Order.\n");
  477.                 printf("\t2 = Make Some Change.\n");
  478.                 printf("\n\tEnter Your Choice: ");
  479.                 scanf("%d",&choice);
  480.                 if (choice == 1)
  481.                 {
  482.                     printf("\n\tThank You. Please Wait, We Will Serve Your Order Very Soon.\n");
  483.                     goto mainmenu;
  484.                 }
  485.                 else
  486.                 {
  487.                     printf("\n\t1 = Add Some Item.\n");
  488.                     printf("\t2 = Remove Some Item.\n");
  489.                     printf("\tEnter Your Choice: ");
  490.                     scanf("%d",&choice);
  491.                     if (choice == 1)
  492.                     {
  493.                         goto choicelevel;
  494.                         customerid--;
  495.                     }
  496.                     else if (choice == 2)
  497.                     {
  498.                         display(4);
  499.                         int takenumber;
  500.                         printf("\n\tPlease Choose The Number of Your Required Item: ");
  501.                         scanf("%d",&takenumber);
  502.                         if (takenumber == 1)
  503.                         {
  504.                             itemtemp = iheadvariable -> pointer;
  505.                             iheadvariable -> pointer = iheadvariable -> pointer -> nextitem;
  506.                             free(snackstemp);
  507.                             sheadvariable -> counter --;
  508.                             printf("\n\t== Successfully Removed An Item ==\n");
  509.                         }
  510.                         else
  511.                         {
  512.                             cnt = 0;
  513.                             traverse(iheadvariable -> pointer, --takenumber, 2, 4);
  514.                         }
  515.                         goto customermind;
  516.                     }
  517.                 }
  518.             }
  519.         }
  520.  
  521.         else if (customer_choice == 0)
  522.             goto mainmenu;
  523.  
  524.         else
  525.             printf("\n\tUnknown Option. Please Try Again.\n");
  526.  
  527.         goto customerlevel;
  528.     }
  529.  
  530.     else if (user_choice == 0)
  531.     {
  532.         printf("\n\tThank You.\n");
  533.         return 0;
  534.     }
  535.  
  536.     else
  537.     {
  538.         printf("\n\tUnknown Option. Please Try Again.\n");
  539.         goto mainmenu;
  540.     }
  541. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement