GestionMaquinas.cpp

mail@pastecode.io avatar
unknown
c_cpp
2 months ago
3.9 kB
3
Indexable
Never
#include <stdio.h>
#include "GestionMaquinas.h"
#include "CalendarioMes.h"

void GestionMaquinas::init(struct Maquina maquinas[]) {
      char opcion;  // Declarar la variable fuera del bucle

      do {
          printf("\n\n========== GesAMA: Gestion de Alquiler de Maquinas Agricolas ==========\n");
          printf("Editar Maquina (Pulsar M)\n");
          printf("Editar Finca (Pulsar F)\n");
          printf("Listar Maquinas (Pulsar L)\n");
          printf("Estado Fincas (Pulsar E)\n");
          printf("Alquiler Maquina (Pulsar A)\n");
          printf("Plan Mensual Maquina (Pulsar P)\n");
          printf("Salir (Pulsar S)\n");
          printf("Teclear una opcion válida (M|F|L|E|A|P|S)? ");

          if (scanf(" %c", &opcion) != 1) {
              // Si scanf no pudo leer un valor, manejar el error según sea necesario
              printf("Error al leer la opcion. Saliendo del programa.\n");
              //return;  // O realiza alguna acción de manejo de errores
          }
          switch (opcion) {
              case 'M':
              case 'm':
                  // Llamar a la función para editar máquina
                  {
                  int id;
                  printf("Identificador de la maquina a editar (1-10): ");
                  if (scanf("%d", &id) != 1) {
                      printf("Error al leer el identificador. Saliendo del programa.\n");
                      break;
                  }

                  if (id >= 1 && id <= 10) {
                      GestionMaquinas::EditarMaquina(maquinas, id);
                  } else {
                      printf("Identificador no valido. Intentelo de nuevo.\n");
                  }
                    break;
                }
              case 'F':
              case 'f':
                  // Llamar a la función para editar finca
                  break;
              case 'L':
              case 'l':
                  // Llamar a la función para listar máquinas
                  break;
              case 'E':
              case 'e':
                  // Llamar a la función para mostrar el estado de las fincas
                  break;
              case 'A':
              case 'a':
                  // Llamar a la función para alquilar máquina
                  break;
              case 'P':
              case 'p':
                  // Llamar a la función para el plan mensual de máquina
                  break;
              case 'S':
              case 's':
                  printf("\n\nSaliendo del programa. ¡Hasta luego!\n");
                  break;
              default:
                  printf("\n\nOpcion no válida. Intente de nuevo.\n");
          }

      } while (opcion != 'S' && opcion != 's');
  }


void GestionMaquinas::EditarMaquina(struct Maquina maquinas[], int id) {
    // Borrar datos anteriores de la máquina
    maquinas[id - 1].activa = 0;

    printf("Nombre (entre 1 y 20 caracteres): ");
    scanf("%19s", maquinas[id - 1].nombre); // Limitar la entrada a 19 caracteres para dejar espacio para el carácter nulo '\0'

    printf("Tipo (G-Grano, U-Uva, A-Aceituna, B-Borrar): ");
    scanf(" %c", &maquinas[id - 1].tipo);

    printf("Capacidad (hectareas/día): ");
    scanf("%f", &maquinas[id - 1].capacidad);

    printf("Ubicacion inicial (Latitud): ");
    scanf("%lf", &maquinas[id - 1].latitud);

    printf("Ubicacion inicial (Longitud): ");
    scanf("%lf", &maquinas[id - 1].longitud);

    // Mostrar los nuevos datos y confirmar
    printf("Son correctos los nuevos datos (S/N)? ");
    char confirmacion;
    scanf(" %c", &confirmacion);

    if (confirmacion == 'S' || confirmacion == 's') {
        maquinas[id - 1].activa = 1;
        printf("Maquina editada correctamente.\n");
    } else {
        printf("Edicion cancelada. Los datos anteriores permanecen.\n");
    }
}
    
Leave a Comment