#include "Menu.h"
#include <iostream>
#include <stdio.h>
#include <string>
void Menu::displayMenu() {
cout << " 1. New User login \n 2. View available vehicles \n 3. Return Vehicle \n 4. Exit Program \n";
char choice;
cin >> choice;
main:
switch (choice) {
case '1': //new user option
login();
break;
case '2': //This will be the option for viewing available cars. each choice in this switch will lead to car info and choice to rent.
carmenu:
cout << "Now viewing available vehicles...Select vehicle for further information...\n";
cout << " 1. Toyota Carolla \n 2. Toyota Rav4 \n 3. Toyota Prius \n 4. Ford Mustang \n 5. Ford Transit \n 6. Main Menu \n";
char rent;
char carchoice;
cin >> carchoice;
switch (carchoice) {
case '1':
cout << "Toyota Carolla..\n Passenger class \n 30 MPG \n 4 Doors \n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...\n";
cin >> rent;
if (rent == 'Y') {
//construct
}
else if (rent == 'N') { goto carmenu; };
case '2':
cout << "Toyota Rav4..\n Passenger class \n 24 MPG \n 5 Doors \n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...\n";
cin >> rent;
if (rent == 'Y') {
//call passenger car constructor called Rav4 with proper data entries.
}
else if (rent == 'N') { goto carmenu; };
break;
case '3':
cout << "Toyota Prius.. \n Passenger class \n 54 MPG \n 4 Doors \n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...\n";
cin >> rent;
if (rent == 'Y') {
//call passenger car constructor called Prius with proper data entries.
}
else if (rent == 'N') { goto carmenu; };
break;
case '4':
cout << "Ford Mustang.. \n Passenger class \n 18 MPG \n 2 Doors \n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...\n";
cin >> rent;
if (rent == 'Y') {
//call passenger car constructor called Mustang with proper data entries.
break;
}
else if (rent == 'N') { goto carmenu; };
break;
case '5':
cout << "Ford Transit ..\n Cargo class \n 14 MPG \n";
cout << "Enter Y to rent vehicle or enter N to return to car selection...\n";
cin >> rent;
if (rent == 'Y') {
Cargo van(14);
van.set_purpose();
}
else if (rent == 'N') { goto carmenu; };
case '6':
goto main;
}//second switch
}//first switch
}//function end
これはあまりにも読みにくくないことを願っています...私は会社のレンタカープログラムを設計しなければならないプロジェクトを行っています。メインメニューの第2のケースでは、どのタイプの車をレンタルするかを選択できるメニューにユーザを連れて行く。メニューは完全には終了していませんが、私は車選択メニューのオプション5のクラスを修了しました。車がレンタルされると(Y文が入力された場合)、貨物のコンストラクタが正しく呼び出されますが、目的の入力後すぐにプログラムが終了するか、レンタカーページに戻ります。私は休憩を取る場所や声明に行く場所を知らない。誰でも助けることができますか?ネストされたスイッチの中にブレークして配置する
サブ関数で分割されていて、 'goto'は必要ありません。 – Jarod42
*これはあまりにも読みにくくないことを望みます。* - それは 'goto'を使っています。誰も潜在的な[スパゲティコード](https://en.wikipedia.org/wiki/Spaghetti_code) – PaulMcKenzie