Implementación de Clases en C++ para la Gestión de Inventario en Farmacias

Informática y Telecomunicaciones3,7 KB

Introducción al Sistema de Gestión Farmacéutica en C++

A continuación, se presenta el código fuente corregido y estructurado para la gestión de inventarios y cálculo de precios en un entorno farmacéutico utilizando Programación Orientada a Objetos.

Cálculo de Precios de Venta

El siguiente método calcula el precio de venta de un producto basándose en su fecha de caducidad, implementado en las clases tar0 y tar12:

public:
    void calcularPrecioVenta(cFecha oF) {
        int diasCad = diasCaducado(oF); // Calcula la cantidad de días de caducado de un producto
        if (diasCad < 0) // El producto ya caducó
            setPrecioVenta(0); // El producto ya caducó, debe tener valor 0 para la venta e inventario
        else // Aún no caduca
            if (diasCad <= 30) // El producto está próximo a caducar
                setPrecioVenta((getPrecioUnitario() * 1.12) / 2); // Se vende a mitad de precio
            else // La fecha de caducidad es aún lejana
                setPrecioVenta(getPrecioUnitario() * 1.12); // Precio normal para productos tarifa 0
    }
}; // De la clase cTarifa12

Definición de la Clase Principal cFarmacia

La clase cFarmacia actúa como contenedora principal para administrar los productos, el valor total del inventario y las fechas de operación.

class cFarmacia {
    cProducto **productos;
    float valorInventario; // Valor económico del inventario de la farmacia
    int nProdTar0;         // Número de productos tarifa 0
    int nProdTar12;        // Número de productos tarifa 12
    cFecha fecAct;         // Fecha actual

public:
    cFarmacia() { 
        setValorInventario(0); 
        setNproductoTar0(0); 
        setNproductoTar12(0); 
        fecAct = cFecha(); 
        productos = NULL; 
    } // Constructor

    ~cFarmacia() { 
        setValorInventario(0); 
        setNproductoTar0(0); 
        setNproductoTar12(0);
        for(int i = 0; (i < getNproductoTar0()); i++) // Ciclo de eliminación de los objetos referidos desde el vector de punteros
            delete productos[i]; // Elimina un objeto
        delete [] productos; // Eliminar los elementos creados dinámicamente
        productos = NULL; // Devolver el apuntador del vector al valor inicial
    } // Destructor

    void setValorInventario(float val) { valorInventario = val; }
    void setNproductoTar0(int val) { nProdTar0 = val; productos = new cProducto*[val]; }
    void setNproductoTar12(int val) { nProdTar12 = val; productos = new cProducto*[val]; }
    
    void setProdTar0(cTarifa0 val, int pos) { productos[pos] = new cTarifa0; *productos[pos] = val; } // Almacena un producto tar0 en el vector y posición correspondiente
    void setProdTar12(cTarifa12 val, int pos) { productos[pos] = new cTarifa12; *productos[pos] = val; } // Almacena un producto tar12 en el vector y posición correspondiente
    void setFechaAct(cFecha oFec) { fecAct = oFec; }

    float getValorInventario() { return valorInventario; }
    int getNproductoTar0() { return nProdTar0; }
    int getNproductoTar12() { return nProdTar12; }
    
    cProducto* getProdTar0(int pos) { return productos[pos]; }
    cProducto* getProdTar12(int pos) { return productos[pos]; }
    int getFechaActDia() { return fecAct.getDia(); }
    int getFechaActMes() { return fecAct.getMes(); }
    int getFechaActAnio() { return fecAct.getAnio(); }
    cFecha getFechaActual() { return fecAct; }

    void ordenarProductosTar0() { // Método que ordena alfabéticamente los productos tar0
        cProducto *oAux; // Variable de intercambio
        string aux1, aux2; // Variables para los nombres de los productos

Descargar

PDF Word HTML