ayuda para crear bodega en c++

Iniciado por krizalid1, 5 Junio 2012, 06:51 AM

0 Miembros y 1 Visitante están viendo este tema.

krizalid1

Gracias durasno sabia que tenia el error en el tamaño pero no daba exactamente como me estaba dando problema ya me tenia loco.
Habia dejado a un lado grabar el archivo para avanzar en lo demas pero ahora sigo con eso.
Podrian recomendarme un buen libro de c++ de como manejar  objetos
ya que como dije estoy aprendiendo pero me he dado cuenta que de a poquito he logrado escribir algunas lineas de codigo
pero se que todavia me falta mucho.
De antemano les doy las gracias ya que siempre resuelvo mis dudas en este foro.

saludos.

SXF

#11
Primeramente debo decirte que veo muchos pero muchos errores en el codigo, primeramente he decirte que por lo que veo no estas programando en c++ si no en c ya que no veo por ninguna parte que uses clases , por lo tanto no estas trabajando con objetos, posteriormente tienes que saber cual es el objetivo de una funcion, una funcion tiene que devolver un valor no imprimir un mensaje en pantalla , claro que se puede hacer asi pero pierde mucho potencial ,esas cosas la debes hacer en el programa principal , terminando veo demasiado entrevesado el codigo como para que la solucion sea la correcta asi que revisalo bien.

krizalid1

Es cierto SXF se que tengo gran cantidad de errores en mi codigo y que en las funciones no debo meter mensajes eso lo se porque me tope con eso al hacer este programa.
pero debo decir que estoy aprendiendo por eso publique el codigo para que me hicieran ver mis errores y corregirlos aparte por eso pedi que alguno me recomendara un buen libro de como manejar objetos en mi post anterior porque tengo la intencion de corregir mi propio codigo pero tengo problemas al manejar objetos.
Realmente quiero aprender a programar por eso pido ayuda.
Creo que todos aprendemos de nuestros errores.


saludos.

SXF

Yo lo que me pregunto es como sabes que son diez estantes o sea diez colores, no lo veo en el enunciado además si sabes este numero debes saber el numero de pasillos que sería 5 en este caso , y cuantos pasillos hay ?¿ va de la A a la Z , hay algo que dices que no tiene sentido si cada pasillo contiene dos estantes seria; 4x4=16*2=32 lotes cada pasillo. Una pregunta mas ,¿has visto estructura enlazadas en el curso? porque si es así a lo mejor tendrías que utilizar vamos si no te dan el numero de pasillos.

maxim_o

Como bien te dicen veo muy enrevesado el código....
Con crear una structura producto con la cantidad de productos, fecha de vencimiento y nombre del producto, codigo del producto sobraría....

Luego varias funciones:
Añadir Producto (Crea un archivo de texto auxiliar, Compara nombre de productos (por si hay mas del mismo nombre suma 1 en las cantidades y compara las fechas con todos los productos para que todos los que venzan antes se guarden antes , y le pone en codigo del producto el numero de posicion en el que guarde)

De está forma te deja con numeros enteros ordenados todos los produzcos por fecha y con códigos de su posicion en el archivo 1,2,3,4,5,6..... etc

Dar de baja producto. Simplemente buscar ese producto con ese codigo y borrarlo, y compar ese nombre con todos los demás archivos por si hay mas iguales restarle uno en cantidad de producto, y volver a guardar en los archivos "reponiendo los codigos":

Vender producto. Básicamente sería la misma funcion que dar de baja...

Listar productos. Te los lista TODOS...
Aqui Pues te lo curras un poquito y si va por codigos cada pasillo tiene 32 posiciones.
Es decir:
Del 1-4 pasillo 1(ROJO; AMARILLO o como lo quieras llamar), primera estanteria , primera fila, columna 1, 2, 3, 4 (segun sea)
del 5-8 pasillo 1,primera estanteria 2 fila, columna 1(5) 2(6) 3 (7) 4(8)
y asi..... cuando pases del 16 significa que estas en la segunda estanteria.... CUando pases del numero 32 significa que estas en el 2º pasillo.... y asi.

Ahora solo falta buscar para resolver que segun el numero te de el pasillo , fila, y columna...
Que va mas o menos todo en funcion de multiplos  4 y el resto de dividir entre 4.

krizalid1

OK gracias a ambos;   por lo que pregunta SXF el enunciado que escribi al inicio me lo dio un compañero por correo pero no estaba completo.
pero bueno consegui el enunciado completo.
ah y voy en primer curso y no sxf no  habia visto estructuras enlazadas pero ya estoy buscando.
Es poco lo que he visto en el curso pero voy leendo en internet y apoyandome en este foro.
maxim_o tu idea la estoy revisando me esta costando enterderla un poco pero la sigo leendo hasta entender completamente.


enunciado completo:

PROYECTO DE BODEGA
DESCRIPCIÓN DEL PROYECTO:
   Se requiere que construya un sistema que tenga la capacidad de administrar los productos que se almacenan en la Bodega S.A.  Actualmente la bodega cuenta con una sola sucursal, esta está organizada en pasillos, donde cada uno cuenta con dos Estanterías, que cada una de ellas tiene 4 niveles y a su vez 4 columnas donde se organizan los lotes de productos. El personal de la bodega clasifica los productos y los coloca en los estantes con el objetivo de que cuando tengan pedidos puedan encontrarlos rápidamente y enviarlos a su cliente. Debe considerarse que un lote de producto tiene un código, el nombre del producto, cantidad de productos en el lote y fecha de vencimiento del producto. De tal manera que se  debe despachar aquel producto que este más pronto a vencer. La bodega está organizada así:
                       
PASILLO A   ESTANTE BLANCO   ESTANTE AMARILLO
PASILLO B   ESTANTE NEGRO     ESTANTE ROJO
PASILLO C   ESTANTE PLATA      ESTANTE VERDE
PASILLO D   ESTANTE LILA         ESTANTE CAFE
PASILLO E   ESTANTE NARANJA  ESTANTE AZUL
 
Cuando se recibe de producción los productos son colocados los lotes de productos con el montacargas  y colocados en la ubicación que se identifica por el código siguiente EAZUL11, que indica  E, pasillo, AZUL el estante, 1 Nivel y 1 columna del estante. Como se muestra a continuación:

COLUMNAS
[    ]  [   ]  [   ]  [   ]
[    ]  [   ]  [   ]  [   ]
[    ]  [   ]  [   ]  [   ]
[    ]  [   ]  [   ]  [   ]    NIVELES

Se requiere que el sistema permita al usuario administrador de la bodega:
1.   Dar ingreso a un lote nuevo, proporcionando la ubicación que esta próxima disponible, considerar la fecha de vencimiento, para que los productos más viejos estén más cerca.
2.   Dar salida a una lista de lotes de producto, según solicitud de un cliente. Considerando que puede pedir varios y serán enviados en un camión.
3.   Reubicar un producto, cuando un producto este próximo a vencer debe moverse a una ubicación más cercana de haber lugares disponibles.
4.   Mostrar la lista de productos en bodega ordenados por producto y fecha de vencimiento indicando para cada uno el código de su ubicación.
5.   Consultar por producto cuantos se tienen en bodega y que muestre ordenado por fecha de vencimiento de la más próxima a vencer a la menor.
Debe tener la capacidad de almacenar la información en archivos para que al momento de apagar el equipo la información no se pierda.

Gracias nuevamente por tomarse la molestia de responder

Saludos.











SXF

#16
Bueno aquí te doy una idea aunque no creo que este del todo bien ,creo que te puede servir para hacerte una idea.


#include<iostream>
#include<stdio.h>
#define max 3
typedef struct{
        int codigo;
        char nombre[30];
        int cont;
        int fv;     
        }Lote;
typedef struct {
        struct Lote EA[max][max];         
        struct Lote EB[max][max]; 
        }Estante;

    typedef Estante Pasillo;        //Creo asi funcionaria, no estoy seguro ya que no suelo trabajar en c.
    Pasillo PA;
    Pasillo PB;
    Pasillo PC;
    Pasillo PD;
    Pasillo PE;
void ordenar(Lote tabla[max][max]){
         //Por el método de la burbuja o por algun otro.
     
     
}
void Ingresar(Lote l,char Pasillo[5],char Estante[5]){ //Bueno esta funcion seria asi si no se lee de un archivo.
/*Procedimiento a seguir*/
//Busco el pasillo y el estante.
//!Ojo¡ ,El estante  depende del color del estante.
//Inserto el lote.
//Por último llamo a una función auxiliar, llamada "ordenar" que utiliza el método de la burbuja para ordenar un array bidemencional.
//Esta creo que es la forma mas fácil para ordenar por el método de la burbuja.
//Tienes que tener en cuenta que hay que buscar una forma de saber si en la matrix hay algún elemento en la posición que quieres insertar.
//Para eso podría poner a 0 todas las fv y buscarte la vida para insertar el elemento"Seguro que hay otras formas de hacerlo",
//aunque segun dice el enunciado tienes que proporcionar la ubicación próxima disponible, por lo cual,
//talvez alla que pasarle la ubicación como parámetro"seria mucho mas fácil".
}


Ya a partir de aquí puedes implementar los otros métodos.


Recomendaciones:
Nunca pongas dentro de las funciones mensajes de salida , devuelve un valor y haces un tratamiento en el main.
Siempre intenta ultilizar los tipos de datos, en este caso struct, para simplificar el código, que para algo están.
Plantea el problema en un folio y luego intenta programarlo.
Si vas a leer de un archivo, File *nombreFichero , mételo dentro de la función.
No si has dado en el curso los .h si es asi utilizalos para separar la implementación del programa principal y también separa los archivos ejecutables
usando una opción de devc++ o cualquier otro programa que utilices.
Si ves que tu código se esta haciendo demasiado pesado para resolver un problema sencillo vuelve a hacerlo porque esta mal.

krizalid1

Gracias por su ayuda  a todos ya que me han resuelto varias dudas con eso creo que puedo seguir, ahora me dedicare a la tarea de terminar el codigo.


Les agradezco su ayuda  ;-) ;-) ;-)



Saludos