0% encontró este documento útil (0 votos)
3 vistas11 páginas

Informe

Cargado por

hexow87907
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas11 páginas

Informe

Cargado por

hexow87907
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

Planteamiento del problema

El proceso de inventario es fundamental para mantener la precisión en la gestión de productos dentro de


un almacén. Sin embargo, la necesidad de comparar el stock registrado en un sistema automatizado con la
existencia física de los productos puede dar lugar a discrepancias que deben ser abordadas
metodológicamente. Esta situación plantea varios desafíos:

1. Inexactitud en el Registro de Inventario: Es posible que las diferencias entre el stock registrado y
el stock físico se deban a errores de entrada de datos, pérdidas de productos, o movimientos no
registrados. Esto puede generar confusión sobre la verdadera disponibilidad de productos.
2. Diferencias en Conteo: Cuando se realizan conteos manuales, pueden presentarse errores
humanos, lo que podría ocasionar una discrepancia en los resultados. La necesidad de repetir el
conteo si el personal no está convencido de las diferencias agrega tiempo y recursos al proceso.
3. Documentación y Registros: El ajuste de inventario requiere una documentación meticulosa que
debe incluir varios elementos, como la fecha del ajuste, el serial del producto, el motivo del ajuste
y los stocks anterior y nuevo. La falta de un sistema eficiente para gestionar esta documentación
puede llevar a errores y pérdida de información.
4. Interrupciones en el Proceso de Inventario: Durante el proceso de inventario, es crítico que no se
realicen operaciones automatizadas que puedan alterar el stock. Esto requiere un control riguroso
y bien definido, y cualquier error en este aspecto puede llevar a inconsistencias que afecten la
confiabilidad del inventario.
5. Necesidad de Automatización: La implementación de un software que facilite y automatice este
proceso en C++ es esencial para mejorar la eficiencia, reducir el riesgo de errores humanos y
asegurar un registro claro y accesible de todos los ajustes de inventario que se realicen.
6. Impacto en la Gestión del Almacén: Las discrepancias en el inventario pueden tener impactos
significativos en la cadena de suministro, afectando la capacidad de satisfacer la demanda del
cliente y generando pérdidas económicas.

Objetivo del Software

El desarrollo de un software en C++ tiene como objetivo:

• Automatizar la comparación del inventario registrado con el físico.


• Gestionar ajustes de inventario con un registro detallado.
• Asegurar la integridad del proceso de inventario sin interferencias externas.
• Proporcionar una interfaz amigable para facilitar la inserción de datos y la revisión de ajustes.
Este software no solo debe realizar un seguimiento preciso de las existencias, sino también facilitar el flujo
de trabajo del personal encargado de la gestión del inventario, garantizando transparencia y facilidad en la
toma de decisiones.

Código Impreso

#include <iostream>

#include <vector>
#include <string>

#include <fstream>

#include <iomanip>

#include <windows.h>

using namespace std;

struct Producto {

int serial;

string nombre;

string motivo;

int inventario;

string fecha_ajuste;

};

vector<Producto> productos;

void gotoxy(int x,int y){

HANDLE hcon;

hcon = GetStdHandle(STD_OUTPUT_HANDLE);

COORD dwPos;

dwPos.X = x;

dwPos.Y= y;

SetConsoleCursorPosition(hcon,dwPos);

void cuadro(int x1,int y1,int x2,int y2){


int i;

for (i=x1;i<x2;i++){

gotoxy(i,y1); cout << char(205);

gotoxy(i,y2); cout << char(205);

for (i=y1;i<y2;i++){

gotoxy(x1,i); cout <<char(186);

gotoxy(x2,i); cout <<char(186);

gotoxy(x1,y1); cout<< char(201);

gotoxy(x1,y2); cout<< char(200);

gotoxy(x2,y1); cout<< char(187);

gotoxy(x2,y2); cout<< char(188);

void agregarOEditarProducto(Producto producto) {

for (auto& p : productos) {

if (p.serial == producto.serial) {

p = producto;

cout << "Producto: " << producto.serial << " actualizado.\n";

return;

}
productos.push_back(producto);

cout << "Producto: " << producto.serial << " agregado.\n";

void mostrarProductos() {

if (productos.empty()) {

cout << "No hay productos para mostrar.\n";

return;

for (const auto& producto : productos) {

cout << "Serial: " << producto.serial << "\n"

<< "Nombre: " << producto.nombre << "\n"

<< "Clase: " << producto.motivo << "\n"

<< "Cantidad: " << producto.inventario << "\n"

<< "Fecha: " << producto.fecha_ajuste << "\n\n";

void compararExistencias(int serial, int existencia_fisica, ofstream& archivoComparacion) {

for (auto& producto : productos) {

if (producto.serial == serial) {

int diferencia = existencia_fisica - producto.inventario;

if (diferencia != 0) {

cout << "Diferencia en producto " << serial << ": ";

archivoComparacion << "Producto con serial " << serial << ": ";
if (diferencia > 0) {

cout << "+" << diferencia << " (positivo)" << "\n";

archivoComparacion << "+" << diferencia << " (positivo)" << "\n";

} else {

cout << diferencia << " (negativo)" << "\n";

archivoComparacion << diferencia << " (negativo)" << "\n";

producto.inventario = existencia_fisica;

} else {

cout << "No hay diferencia en producto " << serial << " (0)" << "\n";

archivoComparacion << "No hay diferencia en producto " << serial << " (0)" << "\n";

void guardarEnArchivo(const string& nombreArchivo) {

ofstream archivo(nombreArchivo, ios::app); // Abrir en modo append

if (archivo.is_open()) {

archivo << left << setw(10) << "Serial"

<< left << setw(20) << "Nombre"

<< left << setw(20) << "Motivo"

<< left << setw(15) << "Inventario"

<< left << setw(15) << "Fecha de Ajuste" << "\n";

for (const auto& producto : productos) {


archivo << left << setw(10) << producto.serial

<< left << setw(20) << producto.nombre

<< left << setw(20) << producto.motivo

<< left << setw(15) << producto.inventario

<< left << setw(15) << producto.fecha_ajuste << "\n";

archivo.close();

cuadro(0,0,30,2);

gotoxy(2,1);cout << "Guardado en " << nombreArchivo <<endl<<endl;

} else {

cuadro(0,0,45,2);

gotoxy(2,1);cout << "No se pudo abrir el archivo para guardar."<<endl<<endl;

void cargarDesdeArchivo(const string& nombreArchivo) {

ifstream archivo(nombreArchivo);

if (archivo.is_open()) {

string header;

getline(archivo, header); // Leer el encabezado

Producto producto;

while (archivo >> producto.serial >> producto.nombre >> producto.motivo

>> producto.inventario >> producto.fecha_ajuste) {

productos.push_back(producto);
}

archivo.close();

cout << "Datos cargados desde " << nombreArchivo << endl;

void guardarConteoFisico(const string& nombreArchivo) {

ofstream archivo(nombreArchivo, ios::app); // Abrir en modo append

if (archivo.is_open()) {

archivo << left << setw(10) << "Serial"

<< left << setw(20) << "Nombre"

<< left << setw(15) << "Inventario" << "\n";

for (const auto& producto : productos) {

archivo << left << setw(10) << producto.serial

<< left << setw(20) << producto.nombre

<< left << setw(15) << producto.inventario << "\n";

archivo.close();

cuadro(0,0,46,2);

gotoxy(2,1); cout << "Conteo fisico guardado en " << nombreArchivo << endl<<endl;

int main() {
system("color 75");

// Cargar productos desde el archivo al iniciar el programa

cargarDesdeArchivo("inventario.txt");

ofstream archivoComparacion("resultado_comparacion.txt", ios::app); // Abrir en modo


append

char opcion;

do {

system("cls");

cuadro(40,0,60,2);

gotoxy(45,1); cout<<"INVENTARIO";

gotoxy(46,3); cout<<"OPCIONES";

gotoxy(41,4); cout<<"1-Cargar producto.";

gotoxy(41,5); cout<<"2-Comparar stock";

gotoxy(41,6); cout<<"3-Ver stock";

gotoxy(41,7); cout<<"4-Guardar";

gotoxy(41,8); cout<<"5-Guardar conteo";

gotoxy(41,9); cout<<"6-Salir";

gotoxy(41,11); cout<<"Ingrese su opcion: "; cin >> opcion;

system("cls");

if (opcion == '1') {

cuadro(0,0,20,2);

gotoxy(3,1); cout<<"Cargar producto";


Producto nuevoProducto;

gotoxy(0,3);cout << "Serial: \n";

cin >> nuevoProducto.serial;

cin.ignore(); // Ignorar cualquier carácter residual en el buffer

gotoxy(0,5);cout << "Nombre: \n";

getline(cin, nuevoProducto.nombre);

gotoxy(0,7);cout << "Clase: \n";

getline(cin, nuevoProducto.motivo);

gotoxy(0,9);cout << "Cantidad en inventario: \n";

cin >> nuevoProducto.inventario;

cin.ignore(); // Ignorar cualquier carácter residual en el buffer

gotoxy(0,11);cout << "Fecha(dia/mes/ano): \n";

getline(cin, nuevoProducto.fecha_ajuste);

agregarOEditarProducto(nuevoProducto);

} else if (opcion == '2') {

cuadro(0,0,20,2);

gotoxy(5,1);cout<<"Comparacion";

int serial, existencia_fisica;

gotoxy(0,3);cout << "Serial: \n";

cin >> serial;

gotoxy(0,5);cout << "Existencia: \n";

cin >> existencia_fisica;

compararExistencias(serial, existencia_fisica, archivoComparacion);

} else if (opcion == '3') {

mostrarProductos();

} else if (opcion == '4') {


guardarEnArchivo("inventario.txt");

} else if (opcion == '5') {

guardarConteoFisico("conteo_fisico.txt");

system("pause");

} while (opcion != '6');

archivoComparacion.close();

cout << "Cerrando...";

return 0;

También podría gustarte