summaryrefslogtreecommitdiffstats
path: root/C++/Menu System
diff options
context:
space:
mode:
Diffstat (limited to 'C++/Menu System')
-rw-r--r--C++/Menu System/Instruction51
-rw-r--r--C++/Menu System/MenuSystem.cpp255
-rw-r--r--C++/Menu System/appetizer.txt52
-rw-r--r--C++/Menu System/dessert.txt52
-rw-r--r--C++/Menu System/drink.txt52
-rw-r--r--C++/Menu System/entree.txt52
6 files changed, 514 insertions, 0 deletions
diff --git a/C++/Menu System/Instruction b/C++/Menu System/Instruction
new file mode 100644
index 0000000..a8ccdc6
--- /dev/null
+++ b/C++/Menu System/Instruction
@@ -0,0 +1,51 @@
+Using the attached video as a guide, you will create a menu system that will mimic a self service kiosk at a restaurant. This program will do the following:
+
+ Create a menu system that allows users to select an item from the below categories:
+ Drink
+ Appetizer
+ Entree
+ Dessert
+ You will use 4 separate input files (one for each category above) where you read in an unknown number of items from each file
+ Each input file will have the item name (string) and the item price (double)
+ Use a generic function to check to see if the file was found
+ User a generic function to get the data from each of the input files
+ Display the subtotal on each menu screen so the customer knows exactly how much is already owed
+ As the customer selects items for purchase, you will need to record the item name, price and the quantity desired inside of variables (vector or array) for output later
+ The customer should be able to remain in a category menu until they are ready to return to the main menu
+ When the customer is finished ordering, display the subtotal, tax, and total on the screen
+ Ask for a tip (make a suggested tip amount with 18%, 20%, 25%), then update the total with the tip amount entered
+ Get payment from the user and display change due to the customer
+ If the customer does not pay enough money, then the program should continue to ask for money until the total is paid in full
+
+Assignment Notes:
+
+ Make your all of variables as private in the class to show me you understand how to do this
+ You may use vectors or array variables to store the employee data
+ Use a 10% tax rate to make the math easy
+ You may use functions inside of the class or outside or mixed. Your choice
+ Be sure to add in error checking in case someone enters a value that will break your program! Example: Tip is -1000 which means your system would pay the customer!
+ I expect to see functions, but I am not giving you a specific number. You should be able to determine this by yourself by now
+
+General Notes:
+Be sure to use comments in your program: Name, Program Description, Date and anywhere else in the program you deem necessary.
+If you are stuck, I will help you!
+Grading Rubric:
+
+ If you do not include comments at the top of the program (name, program description, date), you will lose 15 points
+ If your program is not object-oriented, you will lose up to 100 points (OOP is the goal of this assignment)
+ If your program has no error checking, as mentioned above, you will lose up to 25 points
+ If your program does not stay in a category menu until the customer wants to leave, you will lose 10 points
+ If you do not use generic functions for checking to see if the file is open or for reading in the data from input files, you will lose up to 40 points
+ If your program does not loop from insufficient payment, you will lose up to 25 points
+ If your program does not use functions, you will lose up to 50 points
+ If your program does not compile (run), then I will give a grade of 0/100. But will give you the change to repair for points back (some points are better than none)
+ If your program is late (within 48 hours of the due date), you will lose 25 points
+ If your program is late beyond the 48 hour due date, I will typically still accept it, but you will lose far more points. Depends on when you turn it in
+ If you use global variables in your program, I will deduct 5 points for each used
+ If your program is not formatted nicely (code all over the place, ugly), you will lose up to 25 points depending on the extent
+ If your program stops working when I run it, you will lose points. The exact amount depends on the severity of the error
+ If your program still has your friend's name on it, I will send you a message asking you to try harder while giving you a 0/100
+ If your program looks like a a professional programmer wrote it, I will write to you to ask if you want a job. Well, maybe not. But, I will ask about the code
+ This is just a list of typical issues I run into when grading to give you some idea of where your points go. Points can be taken off for other reasons.
+
+
diff --git a/C++/Menu System/MenuSystem.cpp b/C++/Menu System/MenuSystem.cpp
new file mode 100644
index 0000000..20226a4
--- /dev/null
+++ b/C++/Menu System/MenuSystem.cpp
@@ -0,0 +1,255 @@
+// Name: msglm
+// Date: Oct 21st, 2022
+// Program Name: Menu System
+// Description: CLI, self-servicing kiosk
+
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <string>
+using namespace std;
+
+//Classes
+
+//I would never, ever make this an object in production
+//the concept of an "Orderable" is pure data read from a file that should be acted upon, but not act.
+class Orderable {
+ private:
+ string name;
+ double price;
+ public:
+ Orderable(double iprice, string iname) {
+ name = iname;
+ price = iprice;
+ }
+
+ string get_name() {return name;}
+ double get_price() {return price;}
+};
+
+
+//Structs
+struct foodOrder {
+ string name;
+ double price;
+ int quantity;
+};
+
+//Implementation of Nim's readline (https://nim-lang.org/docs/io.html#readLine%2CFile) because
+//I am absolutely sick of having to deal with C++'s obsession with streaming.
+//
+//I swear if I have to reimplement the entire Nim language in C++20 just
+//to get a compiled language that doesn't increase my chance of stroke 20 fold I will
+
+string readline(ifstream & fileVar) {
+ string temp;
+ getline(fileVar, temp);
+ return temp;
+}
+
+
+void initalize(string location, ifstream & fileVar) {
+ fileVar.open(location);
+
+ if (!fileVar) {
+ cout << "ERROR! " << location << " failed to open!";
+ exit(1);
+ }
+}
+
+
+//Ideally, the input file should be JSON, YAML, or TOML based
+//instead of pure plain text for ease of human access
+//but C++ doesn't have JSON parsing library in std for some reason
+vector<Orderable> encodeOrderables(ifstream & fileVar) {
+ string temp;
+ vector<Orderable> orderablesFromFile;
+ while(fileVar.peek() != EOF) {
+ //Here's something absolutely nasty that I discovered while working on this:
+ //when attempting to write the line
+ //orderablesFromFile.push_back(Orderable(readline(fileVar)), stod(readline(fileVar)));
+ //with the object's constructor taking the name then price parameter, I found out that
+ //constructors are executed from right-to-left, not left-to-right and the price would be
+ //read first rather than the name.
+ //
+ //This might be the case for all functions, I did not check.
+ //
+ //There is literally no good reason for this to be the case.
+ orderablesFromFile.push_back(Orderable(stod(readline(fileVar)), readline(fileVar)));
+ }
+ return orderablesFromFile;
+}
+
+//Menu systems
+//Wish we could do some ncurses TUI menus, but alas we're stuck with subpar prompts
+
+int catagoryMenu() {
+ int choice;
+ //No input validation here since the rubric doesn't call for it.
+ cout << "Pick a catagory\n";
+ cout << "1. Drink\n";
+ cout << "2. Appetizer\n";
+ cout << "3. Entree\n";
+ cout << "4. Dessert\n";
+ cout << "5. Finish Order\n";
+ cout << "Enter Selection: ";
+ cin >> choice;
+ return choice;
+}
+
+foodOrder orderingMenu(vector<Orderable> items) {
+ foodOrder completeOrder;
+ int choice;
+ for(int itemPos = 0; itemPos < items.size(); itemPos++) {
+ cout << itemPos << ". " << items[itemPos].get_name() << " - $" << items[itemPos].get_price() << endl;
+ }
+ cout << "Enter Selection: ";
+ cin >> choice;
+ cout << "Enter Amount Desired: ";
+ cin >> completeOrder.quantity;
+
+ completeOrder.name = items[choice].get_name();
+ completeOrder.price = items[choice].get_price();
+
+ //"...you will need to record the item name, price and the quantity desired inside of variables (vector or array) for output later..."
+ //I am modifying this instruction a bit to use a struct instead since structs can hold multiple datatypes and play nice with functions
+ return completeOrder;
+}
+
+//Who can afford to pay this much when tipping?
+//I can barely afford car insurance!
+double tip() {
+ int choice;
+ //No input validation here since the rubric doesn't call for it.
+ cout << "What percent would you like to tip?\n";
+ cout << "1. 18%\n";
+ cout << "2. 20%.\n";
+ cout << "3. 25%.\n";
+ cout << "4. Custom Amount.\n";
+ cin >> choice;
+ switch(choice) {
+ case 1:
+ return 0.18;
+ break;
+ case 2:
+ return 0.20;
+ break;
+ case 3:
+ return 0.25;
+ break;
+ case 4:
+ double tip;
+ cout << "Enter a tip amount (decimal notation) [ex: 0.18]: ";
+ cin >> tip;
+ //Evil solution to evil users
+ return abs(tip);
+ break;
+ default:
+ cout << "ERROR: Your input was invalid, terminating";
+ exit(1);
+
+ }
+ return choice;
+
+}
+
+double figureTotal(vector<foodOrder> orderList) {
+ double subtotal;
+ for(int orderPos = 0; orderPos < orderList.size(); orderPos++) {
+ subtotal = subtotal + orderList[orderPos].price;
+ }
+ double tax = subtotal*0.1;
+ double total = subtotal+tax;
+
+ //tips
+ cout << "===Amount Currently Due==\n";
+ cout << "Subtotal: $" << subtotal << endl;
+ cout << "Tax: $" << tax << endl;
+ cout << "Total: $" << total << endl;
+ cout << "=========================\n";
+
+
+ total = total + (total*tip());
+
+ cout << "\033[2J\033[1;1H";
+
+ cout << "===Amount Currently Due==\n";
+ cout << "Subtotal: $" << subtotal << endl;
+ cout << "Tax: $" << tax << endl;
+ cout << "Total: $" << total << endl;
+
+ return total;
+}
+
+void collectDues(double amountDue) {
+ double paid;
+ while (amountDue > 0) {
+ cout << "Please pay for the amount owed: $" << amountDue << endl;
+ cout << "Enter payment: ";
+ cin >> paid;
+ amountDue = amountDue - paid;
+ paid = 0;
+ }
+}
+
+int main() {
+ //File Vars & Inits
+ ifstream drinkFile;
+ ifstream appetizerFile;
+ ifstream entreeFile;
+ ifstream dessertFile;
+
+ initalize("drink.txt", drinkFile);
+ initalize("appetizer.txt", appetizerFile);
+ initalize("entree.txt", entreeFile);
+ initalize("dessert.txt", dessertFile);
+
+ //Ordering Vars
+ vector<Orderable> possibleDrinks = encodeOrderables(drinkFile);
+ vector<Orderable> possibleAppetizer = encodeOrderables(appetizerFile);
+ vector<Orderable> possibleEntree = encodeOrderables(entreeFile);
+ vector<Orderable> possibleDessert = encodeOrderables(dessertFile);
+
+ vector<foodOrder> userOrderList;
+ bool ordering = true;
+
+ //"The customer should be able to remain in a category menu until they are ready to return to the main menu"
+ //I assume this means that the customer should be allows to keep ordering until they're satisfied
+ while(ordering) {
+ switch(catagoryMenu()) {
+ case 1:
+ userOrderList.push_back(orderingMenu(possibleDrinks));
+ break;
+ case 2:
+ userOrderList.push_back(orderingMenu(possibleAppetizer));
+ break;
+ case 3:
+ userOrderList.push_back(orderingMenu(possibleEntree));
+ break;
+ case 4:
+ userOrderList.push_back(orderingMenu(possibleDessert));
+ break;
+ case 5:
+ ordering = false;
+ break;
+ default:
+ cout << "ERROR: Your input was invalid, terminating";
+ exit(1);
+ }
+
+ }
+ collectDues(figureTotal(userOrderList));
+ //When the customer is finished ordering, display the subtotal, tax, and total on the screen
+ //Ask for a tip (make a suggested tip amount with 18%, 20%, 25%), then update the total with the tip amount entered
+ //Get payment from the user and display change due to the customer
+ //If the customer does not pay enough money, then the program should continue to ask for money until the total is paid in full
+
+}
+
+/*
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License Version 3 ONLY as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
diff --git a/C++/Menu System/appetizer.txt b/C++/Menu System/appetizer.txt
new file mode 100644
index 0000000..0c7579b
--- /dev/null
+++ b/C++/Menu System/appetizer.txt
@@ -0,0 +1,52 @@
+8c049f21d1fb66c4e7e5c22fdf0576954e240a3f6770839105758757dc9be9c180e9d53cf77cff05317590c6ebfc2719e1cd1200ff2083d3db14e198022127a0
+11.0
+9c7fcc22dfc7635140833620ace709fac99eed727f4d0440b041b42cc1b4d51bcac0a17c9a254c9da85cfc520e3593785daeaa42169d5230fdfe8b4685ea3d62
+11.1
+a8fda638e15580587f2206d170e87feef10d89ec61269bef803bfedb41226a52ce5e27f267d3e9bb764ae4dd209308000ed56cf1e8e4e4d722113baba81eca84
+11.2
+775ec870a730d4b609121e8d65ea9c1b6c9a7fd6976abb7400ea17988bb33f43f3ecb9b4d98b4e1bc910548acc6559e0883abafe21d7c5d193f80292bdee92d4
+11.3
+276985351c53204df2f86bf8f8d1a2911b47131385e0edc65f49dccacaa1fec8c865d4f4f6bbd93b9e64b402e112491451010fa6973e7f43e3826e5feccc876e
+11.4
+e190395a2149615ea6055ecb33c68a0caf2aea4fe3e168b102258ed51e65c942de0042ec412812749a58b2d8b1892b33219ded8d59556b9387f0ac6ae18165c0
+11.5
+2897520db910c59b0a70cd05e2711343abb3a98e33220bc9149caac52ff32a1762b99b1b00dce9811ddfc409d4b1528b8a0d8796c7a2a01726a3350ce28c2f5d
+11.6
+f77f49c403586e6d18e6b8393469b757a7388331c9cf3e145c067ae1b7591ff9262fe7293299acb667864937a092f8ab3a55b74cd4d41f1b1ec07bf9edf13f4e
+11.7
+99d1bcb6d2d76d89b81fd8b321c2e1e3953e2d5feaf1792ef81a66420e70494ea5a4ea1680500cfdaa64e939d169c9ceb5d91fba3083589791864f24d4d6f095
+11.8
+50c68990cbe6cdc21e710481aa1ce96357a71f92ba17c35bf4f70a3598aaf19b1b98db85891f17d74b5d63531edacf416d85738d6842ffa6697077665e4a882d
+11.9
+af5d3e5dc0752cf01cb6fc6f073e5986a148ba000cc79c181a8ee11ffb99ea4f9441ba7bb09f5c0e91a8258ad32df3903bbb2b337193e63de247487eb361b598
+11.10
+9b30d97a741781d3f28ffe1509813d79031a2bcf401fce8c019e5ec39eb2305feab41de522f06b1aeff277469d8a93a6e79e60e631dc33b7d3d49ad7fce8cde0
+11.11
+b95f4f4dd09ffedd79dfa8f0386b1b5afe259e1a2516818037139b01d15ca0b37c4c2e265c0ea7325de0de721a3d93ca3b172092fea405f7c2a7b9fb99b70373
+11.12
+2c0c8c8f16ea92ab5115e9ee0e21ab374059b40184072840244a42a9875ea0e212449ed35512c07faa0e3c205b25e901792f0e297ebbeffa07d4fcc2e17a26f1
+11.13
+1693718742c8beadbdca58455402802fdccb0357ad0880cd3322ede3782746a99fa203c67a8b3f8326c02e6091066b23e4f3061a05facbf265cd340452610f8b
+11.14
+1d8c7356bce55e05a2b1abc3f7820f4d7e7eac1a27df54385f029f17b91a73bdd86fb869fd02beaf7a647e714ad6e6db5913db170535a87460ede6af61c45883
+11.15
+fe2843d1639eb7a88e88b223d31f155ad36226707988b87c82add9ea2028b4897fa4b2cdfddb249375b316c25f78323c3b771529295b95c8a1acb40208e3c861
+11.16
+a35e931885d81c913799133a0140466229db2c86b2d27a567e0e54310be57b5152993afd9f7a8d6d3d9102a6d2d0ad1725446296991c573cded4d8e4cc6406f4
+11.17
+ef27dd3fde5037cc6240856d03b42ba93b3d9691cf3bb4cc3ccf21b6515fde6cde7866f4f568a972cbe485e1951ff7cec05463b923b1c2e35a5397137d82acdb
+11.18
+98d5887c2d5951ac417443462f9e00c0b0e078dd2686c37f91db912a19005c149fb15b1c6b70e96d8184c64dc2e014fa2dfbc4cce7d300519cb14678b5a20923
+11.19
+195360645b6f50ac065acb16c33e9a457c08bb667d6782d10c4f0b0754266059aac960c53262c90d4ebba96f551953116f3c5ea564a389ce55be2a4f9d7fba55
+11.20
+d5bb16c1b6e0436b37db7da2d392613a85b81bad02b00ab638e23729c17756eda0ef8f4320d269b5a048d0d47703375533a402a0ac4934c28b687440b85a3fdd
+11.21
+2743af3b8492463552a5ed72d41b49a08a47409d467451408f2ba9cc4ab6f1aac30d01d103631f6bbd01742753e7b29093c94552936ccfdb1a2beb4ae2a637ba
+11.22
+087515ce96a18b66a4d962a4b6728b7ed9133a60b57096df97ef845f24b373f0af7c4542171061abff4991ddf4b64f6baf9a6eba73ab10106f27c4a30ec91462
+11.23
+636c187d435a8ea2cb6b4685e841ccf23eee0eb0c7d77e36c78cdbdc16d17639368b445f4d9e25eadd142fdfd8f5747a5c1db225a00ae4f5fb2139aaeeb69b7b
+11.24
+dfb78750a9bdc7eb1f7700d604542205f6d216a52a30e160679e2f5fd6963acc49520c1e94bc42c57cd7372c7a898b47b9419b9afa4aa6bf96ee9804e2b24289
+11.25
diff --git a/C++/Menu System/dessert.txt b/C++/Menu System/dessert.txt
new file mode 100644
index 0000000..4f2a81c
--- /dev/null
+++ b/C++/Menu System/dessert.txt
@@ -0,0 +1,52 @@
+961a4c6cfe00b9543dc95496bc956bcf112f9457c62195cc8cff2ecabfc72747f02df0f4589b154f5c6a1a1121d698adab39540d29dea07c52177219b904662f
+11.0
+413c3158bc233d6cc604b57fb613218c99649fe8461d1e22d732e430e22bac62d334c55c09272b621f2f554026ad94938292cfd7b67e0fabf022621d0d4c6b7c
+11.1
+b745e9ac1352c092fb1c0cfa34d657a99aee6bd20c87cb51d69d16e68e1723c9590188b692a89f3403505321c89c89492c70bfe9790fcd766ec2602d656fa9b5
+11.2
+c9dd1957076d178055ab58f811f33191d5457120b8bb0c41217cdd85e0e371dc79dd64584897413f6b5045c5aeeb866fbfd311c32e44cd00fff7ca347765a5c6
+11.3
+350c51abe5a7178b6a0981bac3a6c5227f5154724e402982363434a9f16fcd9813f074dc1e6190d9cdbe5f21cea5cb8bc072e54058c10a9e09f8a6ddc13f1c2b
+11.4
+f1407747d6b8c676b20cc10422d589a7db426f9ad269b1f687fbab2d4e24bc7060e985201797859229f70b3a569121e967cf3159182aaaaecdf0e99906aa0e2f
+11.5
+6198de2d30c5096fe27fe22283a8176284cb725bec2621c7764e1d1d3af406836f36541d76bd5a29b9684a8a6c126ea40840bbd417b1eef26ceb151fd632a4c5
+11.6
+1ec963f3d54ce51d8c373320c130424f0be89ec537deb972e36d6ab134b2cf6a3563c8c9ddaf1690e820410c3de911920289445c7e09e7fe5e32cb7cbe131b29
+11.7
+26249d443d9324c7695276d81dd178905fccecdb97711863ba7fa285588f1d8e79d4048624bd24c95b9c28af3007de124b8e3aa073072beaa2b0730dc02ec7bd
+11.8
+b6282b22b01469111f2084ef2a06806d85610c33b8a5be5f391af8b0b4c7c52af754bd75b4ea09f92fe204674f33edd828e392276629d6ac6dddfb3b975f505c
+11.9
+7a57fac361d99355de441933599c8164c371660d0994def88ed7ec6086762270dcc63a812059a44d528fac5db75c542f5707fe22de1673671f1c3f89b644a816
+11.10
+1b22d03a1d7fa64c0d3e66f8079e2b284d8cf3ab47feef0efd563b2a4e623c5e3bb649af2e3c1f4d6b20af9e3b4684e77f7a084b018e68f20dc0d7458e3bd900
+11.11
+a21121ebb87adfccd5db36e36a5a1fc115b87a8ab7354b913d68e613e465bca8b68521056cabe6ad2f12c47bd1042fe7ee9086423751e6f203eca279920d60b4
+11.12
+b948e2281ab6ca18fef8c7bb3869b29b7ddfea3455cfaf783fe9ff79659b00478cfa38a7e5572e0efabaf07247c2b6be580415219881495655cd2c8aad5570fb
+11.13
+1513e266f1de657d6c8a328a82fdb18439bee129bf8cacdb42553cf6b587f26f8ff5c72f543d3473d0c2eafab05d94534dca281089fba5e7b85a029397a1dafd
+11.14
+b4ca3519591d0b4377babaeea3ed52525ea052594f22b70d978e301075675d2ebbbbdcee96a0842f1fde01c87e20010c7fcba0c2916112ccb9ec8e2709d38f85
+11.15
+b4a62f166470023ebc50b6ea635694e0f99b38efb5a8c5ad35ea8c31e025ea909c42c56424296e97cbe15c6f84a2e52c589bddc31f56d4a70b87f9067396a739
+11.16
+0a01b800342c30aa072eca6cad2c96f4ddd1090d7869d66908770372b2ccf846a173365802a86bad0331080303dc3a35b98b4d9e564ee30a9ef1c06e9536ec7a
+11.17
+1d6a02ede40f76ec3a68482fede5bc9428187d0f9e436e82a54dbee744018ee1393891f77045d0bc7bf9434bdd8183edcc8196543da86f13950e5915cd056298
+11.18
+4da492fd5d5b489c07696490420db64b60027da4da61ba8efbcf27fa19f0bfb614bc48703c34bb94463b69480700c2f26ae4e8d87768ac21035af2c2272c03dc
+11.19
+aab00904b90035441e66f099a768b65ca83d7e8d30cf090d24bb00e909aec531317b1edd843a79a7851bcfe3cc2b8bf4b677da2a6c8c5f0925f3581b16f57576
+11.20
+6b9406ead3271325f40b32a3bda06c07be98258f77fe05732d546e3a9ede44e1400412c51201ee4847359dfedbfcfd5108f02f4d1dae42e5c44479cee3c5318e
+11.21
+65c87cb831cdadd9658f660c601735143679b900036e7028b343b1f18c24457369033363c9dfa6d365bf2a486b5deefe4304b51ceec5fd04dfe2bb943a2d83cd
+11.22
+d9f73ad9c762f19249f1ac3badd62b5cb8fd298a96cbb7c5cdc1026f9f600ef4d088cd61edf26f7650b27d234d34e30a2ccd112db9a8307810029e1feb1524e2
+11.23
+b72b9b16a36feb3b3efc5d8e57b7eae6224163ee64a7ed74c4b1b7219ad44b61073334e05a33836f0c3574284b10a2e88441ceddfffee439b4de331e806c7180
+11.24
+6cfc59c3e8d8660a09a236311220829b41d2fb0e4f87e05ca711d77be59cf7cfe6c1018ea70964ac55daf68a6db57607b3c1ff44f6b7caa399bbdc2b1a2bbf7c
+11.25
diff --git a/C++/Menu System/drink.txt b/C++/Menu System/drink.txt
new file mode 100644
index 0000000..0b5f339
--- /dev/null
+++ b/C++/Menu System/drink.txt
@@ -0,0 +1,52 @@
+56f0b7f05ccc6f2dbfb04af6165d1a7fcb7c07043d2cfbc6f1fae0edcfb8b30117eda2f7f5e04c2a31fbae837a93c81721dac9d706d3ab67cad20272d33da532
+11.0
+058e17b47f39fc4893a936f4cdb43d13175c44d8208e18bdc545f4665d97c08003d0fbeeb702cb01f19075b3ae62c45ef3404420ded3b2ca1eeb6e6ae8573e08
+11.1
+2a9c1bb9222205353ff90ff0a1deb05049414847d3385b9bdb8454917125be24f9895b6574d25652e04d07e7a2be75b78acbd09fa73c055116399a1e5020a0bf
+11.2
+08c042b5fb6c5429faedc156870c5c637cab1a2e197ad0621ce626b811eb4c20840e12e0d83ec6d28b44f244ea33180fcc7d5e2aa704531a39410cb87c886980
+11.3
+f1ccd328a1b429b66610942ea459e1661a9faf9c99788025c1ed7cd280349a3a82a8c9b46f89a2a527144084d8be103612786caf1734692897b1f204bda69476
+11.4
+be08210a3a363ddf6096cd34a240e1ada1f6fdef5c75bc8b1091bf5764e5326c007833b64aff3b454ccfa6c6ed7259879ead4ca6989a97494de5a07ab28051c6
+11.5
+baf2ced1eefc9202e7b29ffd209b41028d4390f5651eb211061b91393d8464a31c702f17fe7f3e9425e06e9b850464c76eb29731c6dbba97474bdf91f25eb6d8
+11.6
+3c1c189c0837f71eac0d941c73c47abf9f28fcb5c352f7b3ed5e666d23aeb11f5170fe5e5af5369352f331c6906fd5e92150705d1591d65edbfd8473e1f51a8f
+11.7
+9b7552196d9a8a14d66ce547c033c0293e4d8076de3fbff25d8903881802dbc7e02bf531b2baaa2fefef1c0a7594bf79bdfd13af9e5f5b4fb355d0171a648571
+11.8
+c0fe9a0d171f6254074aa45cb97fe20cee87760cc2ee7f8d19d3f3d87cbc1103e8f198baca012436a6c4e5ba3136281ba01e855536d36774be3b0e0f8800aecf
+11.9
+6ca06062e29a97237e10094a52be11892a2185bac1957249a4e4fc2017ddd2aa360a7266b2ae7e57faa65436bd16219d5ed2621c7bdb73fb2864fd4445f8d625
+11.10
+002aa905deb001df5ef943239c562cd19d5d425a9feeb6c1a2c07cb0d73f3dfd7d8a8349ceca13be344173d0be19635207824ee6aae8af0b7a2cd543bcc7093a
+11.11
+3e27e6f105f8bb292e895ec6ca6ed570676f9e6d6c77ba54f4fa723ac1a1371b5aa05bd6251880b66b4578d2055c85c279aad06b0ba195793a9a2a6e49862775
+11.12
+a537552312a4b772b396a5476ae8bd37fdf29e7c0699e899d67207b40628cf9b452075b1656dfd4beec129f0f30787db46463c53b1f8b6b2a58d1e83a11d4a57
+11.13
+b0d7843ea6aa3d82b834795d053ab58c014b840fa079852cb3a4fcfa4a9e9fd62bbcf9eaf8b864a7186b2b9a797b884076a57c525d7cc9e7318ab872e613a6ea
+11.14
+32e5d43e743fac5a27eb26a695ee612985dd62127085b06ce3c60029fd40866a903602da9bbff4cb45e4722e9f728ad7bedb770386e376aac384ca94a4b9e2d5
+11.15
+25766e2c13bbc66510d0c16bcc4df49a22f195c3284ae38eb672076884639cfd387de7b323d7a71e247df1385fdddf332361d013c4e4d2229445467a8c21179b
+11.16
+13c8a914be25e3cab13d455b675240d7e2c5ecc37d65515f7ac7ed3ba5bc3033799ed4ead64deda2e7a5032be1a09a1e9a01067cb93ad7523a32731f556fcad1
+11.17
+19d33012789795bb81627242127364dd10502c668ad8fc02d8bb9bee0dd3c29d40110ce01081ee7ca895b18777fc1d9756c08975f93b2dfef4514d625c430871
+11.18
+78f2c0f8483e1dfe5e77fa5bb893c52e5ee3bda65ba5824ff9b0e4bab6b1c209a3ab79ab554a0fd713a80712f0b6ee488838584a77e7ea895161756e8f6a5483
+11.19
+8e0e31a9c44e75478e2038473a35859c39734e3328be15ffafc46e1bab199adf702f38273edb61a53d753df8f1bcb9b4620fcea38db1d4b65a1e6814d5be0a10
+11.20
+1d1e2407524de257f989f87dd74afda39b446987d4cd5cbcc654f400d5f03c906c6f99ef9221ebd67407ec20aa64c6c1c1d8628de70e95a9d5a5da9837e26eff
+11.21
+574fd289986ac716700171d0732fea05f24baeb2c8729d1571b8c8e28f4ec836137c1b2f71f4ad69a1db801eb05e03774e608c5814278eef8bf5221f5409d865
+11.22
+bd5f31a7a4efe171ab64f718b4424cf163516539dfa4c2b5747c94bbe024868c17c0bfcdd1282490b9c522eb14328c9d21e574789aaf41b0d615aa787dd45192
+11.23
+8a4b7cb24962c6af5dc03eed74eb454665f2100bae7ae18eca4f8f0f265f2db138de08c6f60fa17996491b37136cfc125378b25a062a2bc1b367c2b648258bfe
+11.24
+874a9b179ec01c0efc6f0d07a5c7172375b845ab99ff4aa8e492f2e5df94226c302a690e8e422957dfc7226c368a7635650417295e8900e94dea1658522cd291
+11.25
diff --git a/C++/Menu System/entree.txt b/C++/Menu System/entree.txt
new file mode 100644
index 0000000..b92632e
--- /dev/null
+++ b/C++/Menu System/entree.txt
@@ -0,0 +1,52 @@
+6853f441a3a2682760675935ab4f81e48d3ecb88baee75f5cba5c524764ed971124544f8b5979dcd36d402debfb89245f77d0301e44e8b78e7057775b16d32e5
+11.0
+56c37ffd72fe2a07cf7dcb58cebae91d1bb3940b5616e28519be40d77e2f450c43e30b1cfde8de236703bdb6fb991441cd6c6ee0ec972ff35152c0c5bad4f404
+11.1
+1673977affd4c810a109d6d87d12f02c29112a0167d454dd949d77945d59176ae0bbcb0d9affe247decb817819fb8724c990ceb2aedc45e3b38cb5360f283576
+11.2
+f396b78527162dce006c9d433079f110a54162419d2487aace5a8b87eb50274b3a50b6980bef09735e9dd4ea1b8a364628b321f41f8c6e2b00078899804894a5
+11.3
+397c5a1d3a5636661fc49be7a22960238a7e9279b9365113b1f3848a07d0428d58b9dbc6733e967805b62c3b55e0d45aa009ed4be4f1b89006aea366ee8ebd79
+11.4
+75895edce9ec70c0c920cd09e05ac45a20bf4c648f58eac509b646af938c48c30007843cf294ac379604660fa863469586087ddfaa159b3f57237728aa4dcfbb
+11.5
+d862a4af2352bddae02c340fb885cb124cd811ccf21317a79e370a4fc4d5709a0036b04a53db0a2c92aa2247b192fc07d50f48c956fe7310fc8b13ce6bf253a9
+11.6
+cb4dc1f761e88ffa929f703f295f78366993533ceaac9f8416e12cfb491049bb6dd106e9e769c8ca105307a7ce849990a554017d3269f54f5f23372d520b4548
+11.7
+c41931432c02006cf825a30cd1b0f3b9bdf9a0002ec5129be204bcdf0a48eceed7ef1bf2fa39e210c3d9c2df4e928f72efa666a32c64c7e3b9872ad11b3a2d26
+11.8
+87d53750655bc1ce70ee1d03a20fa3b4ef95920b4b6382dc856b707710348259237b2def1066314b19c60474b87b9ea5299d6676dbbfc1d79d0d804d3a203739
+11.9
+5849ff292f86b2367a2bd4d5b49a5dae95dbe8aeb4e6909d96f3251b7abafc8a6c4e0d95c6415f8f5f69ebb64af388449f35d343acffd8c79281083012faa1e1
+11.10
+d00893acaf2c24b98b506e2306520596112ed4f565e8f4d1b8a7792a6c1fa27fcab91bb9cfa6b61e06fbc04a081eca896eee3621d099b743e55a04a7ec73ab88
+11.11
+16bed777c21f0a8b1783f609f93bcd80e28a6e72d389069829780c05a5296079f9e7218fad422fd61a00cdaa8b79f31b151c1e203b5c6979c34a5edd8445d9c2
+11.12
+dfe14430562ec32d1b1e015cdf440260f34049f4df66a33eca732da3d6a0e1823b0a6432df4045ba730d2edc7216265d140fec4406c2180e2d1994f1020ece0a
+11.13
+aa0781d483fb27899c315acacdd8d3d9e8952ae423ffdff984d00287148dd3cba8ab3acfdbef24bb6c9c9f14c56cee1f735953000db7bbdf4da84ca6d3cea4e4
+11.14
+22f86a3c7228c924b1d51c47f3631e043895cf5d3a91597c042c4f24c27ff105765b57af5186613f9f643ecdbb35a858d7cc44cb3831f29f2caef7c387e408a1
+11.15
+0ef0e7d3ce49752c4c5c82482f816ce73ada2420fb73af14ad1e375afbe529e047acb7e8c8ea1f5c979e17367b0260b8c3b411db88d8e757887fd834bd5d2e81
+11.16
+2de8a7603a1b743f80b96a2991638f2844e0406ec4772816eebe2317040dca15ddf466ff135c85f4b0fc9e6c1f382d4f2d615acbcd95f47bb9777dbaaa7a0c69
+11.17
+98edd7b1d6e050e19699ed0a3a8bf01cb7e34210da4c52455fa06c6b635334cbfd309de0b250beaa871c2bb76d21886847503ef97af6c5780b1469e39fe10f7f
+11.18
+e452529f95008a1e5c9d1f258580bfdf997767033592bb3fade63653fd6f523dbc103341313b1a53ad2b034bad7922c40e0523ee1133be854ee696c96e1c0864
+11.19
+ed4f8ca33238517e3e1cd2a6fa575807329449612998a9bf1194d6c053635f63b6ff772c587e3684c2004ac54ab674bbe4f51b3cea7949783f8bdee76c7eb760
+11.20
+accf96c59b3a3bdb0f184c5e23cb506b5e24b56effb1a899a164f36d819c55ee51292cca9c9b8349074260a497070e84bc14c70456749d99c9505cef15240d10
+11.21
+2ae656dd129bbc3b3c969ef697a4b0e4eb29f451ce57bfea6753751e13990b50c8fa8dd8072b2d314cc5d4968eaae5b001663902d172639735e3a7703dc3ebb9
+11.22
+5aaf903182145b1eea3ffdb01c7295fb695dbaf98a71eb2458eadd93764a3b4f1179bcc2ae5786421218d3bfaf754b59327007ef196cb272737256fc42012147
+11.23
+10b34a21732c9a7a43b21f3b1b2c22e58a62bb15514930c226f37460afdcc4dab4fe7da722fdd90f4624f167bdb8c7abd638bfcdc3d9fa926223dd4ef54a3ae9
+11.24
+759764bea005964d266062acf2c7cb0ab10179fe5d5a050277a0c31250929e10a26e9712ac4dd7289e626432211912540648f225396a2d8270743c278db31dde
+11.25