#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
我希望这不会太难阅读...我正在做一个项目,我必须为一家公司设计一个汽车租赁计划。主菜单的第二种情况将用户带到一个菜单,他可以在其中选择要租用的汽车类型。菜单尚未完全完成,但我已经完成了汽车选择菜单选项 5 的课程。当租车时(在if语句中输入Y(,货物的构造函数被正确调用,但程序要么在输入目的后立即结束,要么返回到汽车租赁页面。我不知道在哪里休息或去发言。谁能帮忙??
通过将break
放在每个案例的末尾,它将脱离当前案例下方的案例并执行其余代码。 如果您输入"Y"作为您的租金选择,您的程序将再次返回到汽车菜单,因为变量choice
永远不会重新分配,因此它将保持"2"。 如果您输入"N",您将因为goto carmenu
而返回选择汽车。 对于所有其他输入,您没有 else 情况,因此程序将在中断后退出。
我建议将代码分解为函数,而不是使用 goto
. 如果您遇到这样的错误,它将变得更容易遵循和理解。