diff --git a/Interface.cpp b/Interface.cpp index 06a6c34..09fd726 100644 --- a/Interface.cpp +++ b/Interface.cpp @@ -6,13 +6,15 @@ // cin.ignore(10000, '\n'); // so it skips to the next newline, in essence clearing the cin buffer +bool verify(void); + void interface(vector& spots) { /* string introduction = "P A R K M A N N E"; //logo animation, disable during testing text_animation(introduction, 50); */ - - cout << "\nWelcome to the parking system. Please login.."; + __label__ exit; + cout << "\nWelcome to the parking system. Please login..."; int id; string password; cout << "\nEnter your id: "; @@ -21,9 +23,11 @@ void interface(vector& spots) { Customer c = query_customer_with_id(id); cout << "\nEnter your password: "; std::getline(cin, password); + while (!(verify_password(c.password, password))) { - cout << "ERROR: wrong password. Please retype your password:\n"; + cout << "ERROR: wrong password. Please retype your password or type [x] to exit:\n"; std::getline(cin, password); + if(password=="x")goto exit; } if (query_role_customer(id) == 1) { interface_admin(spots); @@ -32,11 +36,16 @@ void interface(vector& spots) { } else { cout << "ERROR ROLE_INVALID!"; } + exit:; } void interface_member(vector& spots, Customer& c) { + __label__ begin, exit; cout << "\nLogged in succesfully!\n"; - cout << "select an option:\n [1] Parking\n[2]Monthly report\n"; + + begin: + cout <<"Hello! "<> option; cin.ignore(10000, '\n'); @@ -50,16 +59,32 @@ void interface_member(vector& spots, Customer& c) { break; } + case 3: { + cout << "Has not been implemented yet\n"; + break; + } + + case 4: { + cout << "Exiting...\n"; + goto exit; + break; + } + default: break; } + goto begin; + exit:; } void interface_admin(vector& spots) { - cout << "\nWelcome to the admin interface.\n"; + __label__ begin,exit; + begin: + cout << "\nWelcome to the admin interface\n"; cout << "\n[1] Reports & analytics"; cout << "\n[2] Parking spots"; cout << "\n[3] Make new user"; + cout << "\n[4] Exit"; cout << "\nEnter option number: "; int option; cin >> option; @@ -70,6 +95,7 @@ void interface_admin(vector& spots) { cout << "[2] See weekly report of ALL parking spots\n"; cout << "[3] See monthly report of a specific parking spot\n"; cout << "[4] See weekly report of a specific parking spot\n"; + cout << "[5] Return\n"; cout << "Enter option number: "; int option_1; cin >> option_1; @@ -91,13 +117,17 @@ void interface_admin(vector& spots) { report_single_spot(true); break; } - default: + case 5:{ + goto begin; break; } + break; + } } case 2: { cout << "[1] See current status of parking spots\n"; cout << "[2] Make new parking spot\n"; + cout << "[3] Return\n"; cout << "Enter option number: "; int option_2; cin >> option_2; @@ -109,14 +139,21 @@ void interface_admin(vector& spots) { } case 2: { new_parkspot(spots); + break; + } + case 3:{ + goto begin; + break; } default: break; } + break; } case 3: { cout << "[1] Make new customer\n"; cout << "[2] Make new admin\n"; + cout << "[3] Return\n"; cout << "Enter option number: "; int option_3; cin >> option_3; @@ -130,41 +167,55 @@ void interface_admin(vector& spots) { new_admin(); break; } + case 3:{ + goto begin; + break; + } default: break; } + case 4: {goto exit;break;} + break; } + default: break; } + goto begin; + exit:; } // --------- individual things. void park(Customer& c, vector& spots) { + __label__ exit; cout << "You have selected parking option.\n"; if (!(c.parked())) { - cout << "The following spots fit your vehicle and are available: "; + cout << "The following spots fit your vehicle and are available: \n"; for (Park_spot i : spots) { - if (i.v_type == c.vehicle) { + if ((i.v_type == c.vehicle)&(i.taken==false)) { cout << i.id << ", "; } } - cout << "\nWhere do you want to park?"; + cout << "\nWhere do you want to park? Or type [0] to exit."; int parkID; cin >> parkID; + if (!parkID)goto exit; cin.ignore(10000, '\n'); for (Park_spot& i : spots) { if (i.id == parkID) { + if (verify()) + { i.clock(c); cout << "You have parked sucessfully!"; + } } } } else { cout << "You are parked at spot " << c.parked_at() - << ", do you want to clock out?\n[1] yes\n[2] no"; + << ", do you want to clock out?\n[1] Yes\n[2] No"; int answer = 0; cin >> answer; cin.ignore(10000, '\n'); @@ -175,6 +226,7 @@ void park(Customer& c, vector& spots) { cout << "OK, have a nice day."; // exit to customer login } } + exit:; } void new_customer() { @@ -185,7 +237,7 @@ void new_customer() { int role = 0; cout << "\nWhat's the name of the customer? "; std::getline(cin, name); - cout << "\nWhat's the vehicle type? \n[1]twoweeler\n[2] fourweeler\n"; + cout << "\nWhat's the vehicle type? \n[1]Twowheeler\n[2] Fourwheeler\n"; cin >> vtype; cin.ignore(10000, '\n'); cout << "What's the telephone number? +"; @@ -194,7 +246,7 @@ void new_customer() { std::getline(cin, password); Customer newcustomer{name, password, Vehicle_type(vtype), telephone, role}; cout << "\nNew customer sucessfully created\n"; - newcustomer.update_db(); + if (verify())newcustomer.update_db(); } void new_admin() { @@ -211,17 +263,17 @@ void new_admin() { std::getline(cin, password); Customer newcustomer{name, password, Vehicle_type(vtype), telephone, role}; cout << "\nNew customer sucessfully created\n"; - newcustomer.update_db(); + if(verify())newcustomer.update_db(); } void new_parkspot(vector& spots) { - cout << "What type of parking spot? \n[1] twoweeler\n[2] fourweeler\n"; + cout << "What type of parking spot? \n[1] Twowheeler\n[2] Fourwheeler\n"; int vtype; cin >> vtype; cin.ignore(10000, '\n'); Park_spot newspot{Vehicle_type(vtype)}; - spots.push_back(newspot); - cout << "New parking spot sucessfully created.\n"; + if(verify()){spots.push_back(newspot); + cout << "New parking spot sucessfully created.\n";} } // time stuff----------------------------------------------------- @@ -304,4 +356,16 @@ void report_customer(int customerID, bool weekly) { pair period = create_month_period(); } reports_from_customer(customerID, period); +} + +bool verify(void) +{ +string ver; +std::cout<<"\nAre you sure you want to commit these actions?" + "\n[No] Revert." + "\n[Yes] Commit."; +std::cin>>ver; +if (ver=="YES"|ver=="Yes"|ver=="yes") return true; +else return false; + } \ No newline at end of file diff --git a/main.cpp b/main.cpp index 579c2c1..1b050b6 100644 --- a/main.cpp +++ b/main.cpp @@ -45,21 +45,11 @@ static vector parking_spots = populate_spots(); static vector park_customers; int main() { - // state of db: - // er zijn 10 parkspots, 5 met biketype en 5 met pickup type - // er is een customer met id 1(testcustomer) met password "password" - while (true) { - cin.clear(); - interface(parking_spots); - cout << "\nexit? Input 'y' or 'n'.."; - char n; - cin >> n; - cin.clear(); - if (n == 'y') { - break; - } + + while (true) {interface(parking_spots); } + } -} + /* Why is this not in query.cpp? Because somehow, it errors out when it's there. diff --git a/oldtest.db3 b/oldtest.db3 deleted file mode 100644 index 4f0d862..0000000 Binary files a/oldtest.db3 and /dev/null differ