Я пытаюсь сделать меню на C, и мой код не работает так, как я хочу - PullRequest
1 голос
/ 09 июня 2019

Я работаю над заданием для своего класса программирования, и первое, что я решил, конечно, сделать главное меню.Но по какой-то причине программа работает не так, как я намереваюсь.

#include <stdio.h>
#include <stdlib.h>
void mainMenu();
void firstChoice();
int main()
{
    int main_menu_choice;
    int _1returnMenu;
    mainMenu();
    scanf("%d", &main_menu_choice);
    while (main_menu_choice != 0){
        switch(main_menu_choice){
        case 1:
        firstChoice();
        scanf("%d", &_1returnMenu);
        while (_1returnMenu != 0){
            switch (_1returnMenu){
            case 1:
            firstChoice();
            scanf("%d", &_1returnMenu);
            break;
            case 0:
            mainMenu();
            scanf("%d", &main_menu_choice);
            break;
            default:
            printf("Invalid option, please try again: \n");
            scanf("%d", &_1returnMenu);
            break;
            }
        }
        break;
        case 0:
        exit(0);
        default:
        printf("Invalid option, please try again: \n");
        scanf("%d", &main_menu_choice);
        }
    }
    return 0;
}

void firstChoice(){
    printf("Enter the necessary information \n");
    printf("Please enter the student's ID: \n");
    scanf("%d", &student.id);
    printf("Please enter the student's name: \n");
    scanf("%s", student.name);
    printf("Please enter the gender of the student: \n");
    scanf("%s", student.gender);
    printf("Please enter the details of the room: \n");
    scanf("%s", student.roomDetails);
    printf("Please enter the amount due of the student: \n");
    scanf("%d", &student.amountDue);
    printf("Please enter the amount paid by the student: \n");
    scanf("%d", &student.paymentMade);
    printf("Do you want to store another hosteler's information? \n");
    printf("Type 1 if you wish to continue, Type 0 to go back to the main menu: \n");
    return;
}

void mainMenu(){
    printf("Welcome! This program will help you in managing the hostel booking 
    of Wisdom College \n");
    printf("Type the number of your option: \n");
    printf("1. Store details of hosteler \n");
    printf("2. Check room availability \n");
    printf("3. Payment Facility \n");
    printf("4. Search room details of hosteler \n");
    printf("5. To cancel booking of a hosteler \n");
    printf("6. Change room type \n");
    printf("0. Exit the program \n");
    return;
}

Хорошо, поэтому, когда я запускаю программу и выбираю первый вариант, который называется «1.Store details of hosteler», топросто введите некоторую случайную информацию, и после ввода необходимой информации программа спросит меня, хочу ли я продолжать использовать ее или нет.Если я нажму 1, он попросит меня снова заполнить необходимую информацию, а если я нажму 0, она вернется в главное меню.Но дело в том, что когда я набираю 0, он не возвращается к главному меню, вместо этого он просто снова запускает функцию firstChoice() вместо выполнения регистра 0 в операторе switch.Я почесал голову в течение 2 часов, пытаясь понять, что не так, но я просто не могу понять, что не так.Мне очень жаль, если я не смог правильно сформулировать свою проблему, и спасибо заранее!

1 Ответ

0 голосов
/ 10 июня 2019

следующий предложенный код показывает, как написать меню отображения и обработки

int done = 0;
while( !done )
{
    mainMenu();
    if( scanf("%d", &main_menu_choice) != 1 )
    {
        fprintf( stderr, "scanf for menu choice failed\n" );
        exit( EXIT_FAILURE );
    }

    switch(main_menu_choice)
    {

    case 0:
        done = 1;
        break;

    case 1:
        firstChoice();
        break;

    case 2:
        checkRoomAvalability();
        break;

    case 3:
        paymentFacility();
        break;

    case 4:
        switchRoomDetails();
        break;

    case 5:
        cancelBooking();
        break;

    case 6:
        changeRoomType();
        break;         

    default:
        puts("Invalid option, please try again: \n");
        break;
    }
}


void mainMenu()
{
    puts(  "Welcome!"
           " This program will help you in managing"
           " the hostel booking of Wisdom College \n"
           "Type the number of your option: \n"
           "1. Store details of hosteler \n"
           "2. Check room availability \n"
           "3. Payment Facility \n"
           "4. Search room details of hosteler \n"
           "5. To cancel booking of a hosteler \n"
           "6. Change room type \n"
           "0. Exit the program \n" );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...