How to make a dynamic menu with a sub-menu ( Arduino mega or Arduino Uno)
I will skip the RFID part, that is unrelated to the menu.

What you can do is creating two variables:

int menuLevel1 = 0;
int menuLevel2 = 0;


Assuming you have 2 levels, if you have more levels consider an array.

Now you can print the screen based on the values of these two variables (use a switch statement for menuLevel1 which calls new functions, each with their own switch statement for menuLevel2.

Note there are more solutions, but this is a rather simple solution.

The RFID scanner just changes the values, so going to a different menu screen. 

A slightly different solution is to not use numbers, but an enumeration (or one for the main level, and x for the second level etc). This can add up, so you can also use a single enum value (with one entry per possible menu page).

The last example looks like:

enum EMenuPage
{
   StartPage,
   MainMenu,
   FirstMenu,
   DisplayX,
   SetY,
   …
}

enum EMenuPage _menuPage;


Displaying like:

switch (_menuPage)
{
case StartPage:
   // Fill LCD with start page
   break;

case …


And when an RFID messages comes in:

if (RFID... == Back)
{
  _menuPage = MainMenu;
}
else …