The way to protect against bad user input is to use cin.getline() to input the entire command line as a string. Then you can check to see if the character(s) that the user entered is (are) valid. Read up on how to use getline().
As for the logic for using the input, consider a switch{}. For more than one or two choices, switch{} is usually cleaner than deeply nested if statemennts.
So, let's say you have determined that the first user character is in a char variable named, say, "cmnd_char"
Code:
switch(cmnd_char) {
case '1': // Here are the actions for user input '1'
...
//
break;
case '2': //
...
//
break;
case '3': // Here are the actions for user input '2'
...
//
break;
default: // Here is the stuff for invalid input.
...
//
}
Regards,
Dave