public static void main( String[] args) 
	{
		SistemaMenus menu = null;
		
		if (args.length > 0)
			GestionTiendas.nombreArchivoTiendas = args[0];
		
		// Se obtienen las tiendas guardadas en la base de datos.
		try
		{
			Tienda.cargarBD( GestionTiendas.nombreArchivoTiendas);
			Musica.cargarBD( GestionTiendas.nombreArchivoMusicas);
			Cliente.cargarBD( GestionTiendas.nombreArchivoClientes);
			menu = GestionTiendas.crearMenus();
		}
		catch (Exception e)
		{
			System.err.println( e.getMessage());
			return;
		}
		
		boolean salirPrograma = false;		// Flag para saber si salir del programa.
		int opcion = 0;				// Opcin actual elegida del men.
		Tienda tiendaAdmin = null;	// Tienda que estamos administrando actualmente.
		String nombreMenu = null;
		boolean salirPregunta = true;

		do	// Bucle principal del programa.
		{
			do // Bucle para asegurar la eleccin de una opcin del men actual.
			{
				try
				{
					System.out.println();
					menu.mostrarMenu();
					System.out.print( "Introduce la opcin: ");
					opcion = Integer.parseInt( scanner.nextLine());
					nombreMenu = menu.obtenerNombre( opcion - 1);				
					salirPregunta = true;
				}
				catch (Exception e)
				{					
					System.out.println( "No existe la opcin. Elige otra");
					salirPregunta = false;
				}				
			} while (!salirPregunta);
			
			System.out.println();
			switch (nombreMenu)
			{
				case "RegistrarTienda":	
					GestionTiendas.registrarTienda();
					break;
			
				case "RegistrarCliente":
					GestionTiendas.registrarCliente();
					break;

				case "RegistrarCD":	
					GestionTiendas.registrarCD();
					break;

				case "RegistrarCasete":
					GestionTiendas.registrarCasete();
					break;

				case "RegistrarVinilo":	
					GestionTiendas.registrarVinilo();
					break;

				case "EliminarTienda":
					GestionTiendas.eliminarTienda();
					break;

				case "EliminarCliente":
					GestionTiendas.eliminarCliente();
					break;

				case "EliminarMusica":	
					GestionTiendas.eliminarMusica();
					break;

				case "EditarTienda":
					GestionTiendas.editarTienda();
					break;
			
				case "EditarCliente":
					GestionTiendas.editarCliente();
					break;
			
				case "EditarMusica":
					GestionTiendas.editarMusica();
					break;
			
				case "ListarTiendas":		
					GestionTiendas.listarTiendas();
					break;
			
				case "ListarClientes":					
					GestionTiendas.listarClientes();
					break;
			
				case "ListarMusicas":					
					GestionTiendas.listarMusicas();
					break;
					
				case "AdministrarTienda":
					do {						
						System.out.print( "Introduce el Id de la tienda: ");
						if ((tiendaAdmin = Tienda.buscar( Integer.parseInt( scanner.nextLine()))) == null)
						{
							System.out.println( "La tienda no existe");
							salirPregunta = !GestionTiendas.preguntaReintentar( "Deseas intentarlo de nuevo?");
						}
						else
						{
							System.out.println( "** Tienda a administrar: " + tiendaAdmin.getNombre() + " - " + tiendaAdmin.getCif() + " **");
							salirPregunta = true;
							menu.avanzar( opcion - 1);
						}
					} while (!salirPregunta);

					break;
					
				case "GestionarStock":
					GestionTiendas.gestionarStock( tiendaAdmin);
					break;
					
				case "GestionarPrecio":
					GestionTiendas.gestionarPrecio( tiendaAdmin);
					break;
								
				case "GestionarSaldo":
					GestionTiendas.gestionarSaldo( tiendaAdmin);
					break;
					
				case "BloquearCliente":
					GestionTiendas.bloquearCliente( tiendaAdmin);
					break;
					
				case "RealizarVenta":
					GestionTiendas.realizarVenta( tiendaAdmin);
					break;
					
				case "ListarVentas":
					System.out.println( "- Listado de Ventas -");
					tiendaAdmin.mostrarVentas();
					break;

				case "Volver":
					try
					{
						menu.retroceder();
						break;
					}
					catch (Exception e)
					{
						System.err.println( e.getMessage());
						return;
					}
					
				case "Comandos":
					GestionTiendas.modoComandos();
					break;

				case "Salir":
					salirPrograma = true;
					break;
					
				default:
					menu.avanzar( opcion - 1);
					break;
			}
			
		} while (!salirPrograma);
		
		scanner.close();
		
		
		// Se guardan los datos en la base de datos.
		try
		{
			Tienda.guardarBD( GestionTiendas.nombreArchivoTiendas);
			Musica.guardarBD( GestionTiendas.nombreArchivoMusicas);
			Cliente.guardarBD( GestionTiendas.nombreArchivoClientes);
		}
		catch (Exception e)
		{
			System.err.println( e.getMessage());
		}
		
	}