// test.cpp - Acceso aleatorio
#include <iostream>
#include <fstream>
#include <string>
#include "registro.h"
#include "articulos.h"
#include "leerdatos.h"
using namespace std;

int main()
{
  // Opciones del menú
  static char *opciones[] = 
  { 
    "Nuevo fichero",
    "Abrir fichero",
    "Añadir registros",
    "Buscar un registro",
    "Modificar",
    "Salir"
  };
  int nOpciones = sizeof(opciones)/sizeof(char*);
  
  string cadenabuscar, nombreFichero, str;
  
  CArticulos fs; // flujo de E/S
  float precio = 0;
  bool salir = false;

  while(true)
  {
    str = "ninguno";
    if (fs.Modo() == 1)
      str = nombreFichero + " abierto para leer y escribir";
    else if (fs.Modo() == 2)
      str = nombreFichero + " abierto para añadir";
    cout << "\nFichero actual: " << str;

    try
    {
      switch (menu(opciones, nOpciones))
      {
        case 1: // crear un fichero nuevo
          cout << "\nNombre del fichero: ";
          leerDato(nombreFichero);
          fs.Nuevo(nombreFichero);
          break;
        case 2: // abrir un fichero existente
          cout << "\nNombre del fichero: ";
          leerDato(nombreFichero);
          fs.Abrir(nombreFichero);
          break;
        case 3: // añadir un registro al fichero actual
          fs.Agregar();
          break;
        case 4: // buscar un registro en el fichero actual
          cout << "Referencia: ";
          leerDato(cadenabuscar);
          precio = fs.Buscar(cadenabuscar);
          if (precio == -1)
            cout << "búsqueda fallida\n";
          else
            cout << "precio: " << precio << endl;
          break;
        case 5: // modificar
          fs.Modificar();
          break;
        case 6: // salir
          salir = true;
      }
    }
    catch(ios_base::failure& e)
    {
      cout << e.what() << endl;
    }
    if (salir) break;
  }
}

