Well, according to how you've written your program, you will always, without exception, at least visit the main menu (on line 42), then the yearly (on 67), then the historical (on 98). I suspect what you meant to do is to do those second sets of checks (for the sub-menus) after entering one of the cases from the main menu. Then put a loop around that to return to the main menu so long as the user hasn't asked to exit.

Line 53 of mainMenu, you have no break statement after you call historicalInformationMenu, therefore you will always exit the program after calling historicalInformationMenu.

At lines 90 and 115, you have recursive calls to mainMenu.

Also, after you fall out of each switch statement, you fall through to the next menu.

In main, you want a loop that continues until the user chooses to exit the program.
In each of the submenu, you want to loop until the user chooses to return to the main menu. When you exit out of the submenu, simply return out of the function. Don't nest a call to mainMenu.