0% encontró este documento útil (0 votos)
26 vistas10 páginas

Sistema de Registro y Gestión de Inventario para Un Supermercado

El proyecto consiste en el desarrollo de una aplicación de escritorio en C# para gestionar el registro de productos y clientes en un supermercado, utilizando Windows Forms y .NET Framework 4.8. Se implementaron conceptos de programación orientada a objetos, como clases, listas genéricas, recursividad y manejo de excepciones, lo que permitió crear un sistema eficiente y robusto. El trabajo en equipo y la metodología incremental facilitaron la integración de funcionalidades y la mejora continua del producto final.
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas10 páginas

Sistema de Registro y Gestión de Inventario para Un Supermercado

El proyecto consiste en el desarrollo de una aplicación de escritorio en C# para gestionar el registro de productos y clientes en un supermercado, utilizando Windows Forms y .NET Framework 4.8. Se implementaron conceptos de programación orientada a objetos, como clases, listas genéricas, recursividad y manejo de excepciones, lo que permitió crear un sistema eficiente y robusto. El trabajo en equipo y la metodología incremental facilitaron la integración de funcionalidades y la mejora continua del producto final.
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 DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD PRIVADA DEL NORTE CIENCIAS

Departamento de Ciencias

Sistema de Registro y Gestión de Inventario para


un Supermercado

Integrantes:
 JEAN PIERRE CARLOS BROPHY MONTES
Ingeniero de Sistemas

 CRISTHOFHER ANDRE JESUS ESPINOZA BENITES


Ingeniero de Sistemas

 JUAN RAMIRO MENDOZA MALCA


Ingeniero de Sistemas

 AUDRICK ADRIAN PRADA OTINIANO


Ingeniero de Sistemas

Docente Asesor: RITH ODDAR MANTILLA LOPEZ

2025-1
CAPÍTULO I
INTRODUCCION
El presente proyecto tiene como objetivo desarrollar una aplicación de escritorio en
lenguaje C# que permita gestionar el registro de productos y clientes de un supermercado.
Esta aplicación fue construida utilizando Windows Forms sobre el entorno .NET
Framework 4.8, y responde a la necesidad de tener un sistema que facilite el control de
inventario, evitando errores manuales, reduciendo el tiempo de atención y agilizando los
procesos de búsqueda y registro.
La gestión adecuada del inventario es un pilar esencial en toda empresa comercial. Muchos
supermercados aún dependen de registros manuales o de hojas de cálculo básicas, lo que
incrementa la probabilidad de errores humanos, pérdida de datos o ineficiencia en la toma
de decisiones. Frente a este problema, desarrollar una herramienta automatizada no solo
mejora la operatividad diaria, sino que también permite tomar decisiones informadas sobre
abastecimiento, rotación de productos y atención al cliente.
En el contexto del curso de Fundamentos de Programación Orientada a Objetos, este
trabajo permite aplicar conocimientos clave como la creación de clases, el uso de
estructuras de datos dinámicas (listas genéricas), la implementación de métodos recursivos
y el manejo de excepciones. Todos estos conceptos forman parte de los pilares de la
programación moderna y son esenciales para diseñar aplicaciones robustas, mantenibles y
escalables.
Además, el proyecto promueve el pensamiento lógico y la solución eficiente de problemas
reales mediante algoritmos y estructuras bien definidas. Permite reforzar el uso de buenas
prácticas en la escritura del código y comprender cómo una correcta arquitectura de
software puede facilitar la ampliación del sistema a futuro. La planificación del proyecto
también fue clave, ya que se diseñaron primero las entidades principales, se definieron sus
relaciones y luego se procedió con la implementación progresiva del sistema.
Este tipo de trabajos fomenta el desarrollo de competencias tanto técnicas como blandas.
Desde el punto de vista académico, fortalece la capacidad de aplicar lo aprendido en un
escenario simulado del mundo laboral. Desde el punto de vista profesional, prepara a los
estudiantes para enfrentar proyectos reales de desarrollo, trabajar en equipo, utilizar
herramientas de control de versiones, documentar adecuadamente y presentar productos
finales funcionales.
CAPÍTULO II
DESARROLLO

Presentación del equipo y metodología aplicada:


El equipo G10 estuvo conformado por los siguientes estudiantes:
 Jean Pierre Carlos Brophy Montes

 Cristhofher Andre Jesus Espinoza Benites

 Juan Ramiro Mendoza Malca

 Audrick Adrian Prada Otiniano

El desarrollo del proyecto se llevó a cabo de manera colaborativa, asignando a cada


integrante un conjunto de responsabilidades específicas, incluyendo el diseño de la
interfaz, la codificación de las clases, la implementación de las funcionalidades, la
validación de datos, y la realización de pruebas. La metodología aplicada fue de tipo
incremental, lo cual permitió construir el sistema por etapas, verificando en cada fase la
correcta integración de las funciones desarrolladas. Este enfoque facilitó una
retroalimentación constante entre los miembros del grupo, favoreciendo la detección
temprana de errores y la mejora continua del producto final.
El equipo se reunió tanto de forma virtual, organizando sesiones de trabajo semanales para
revisar el progreso individual y realizar pruebas conjuntas del sistema. Esta dinámica de
trabajo fomentó el aprendizaje colaborativo, la toma de decisiones en conjunto y el
cumplimiento de objetivos dentro del cronograma establecido.

Documentación del programa:


El sistema fue desarrollado en el lenguaje de programación C#, empleando el entorno de
desarrollo Visual Studio 2022 y el framework .NET 4.8. Su estructura está centrada en dos
clases principales: Producto y Categoría..

Clase Producto:
Esta clase representa los productos almacenados en el inventario, encapsulando sus
atributos esenciales:public class Producto

public class Producto


{

public string G10_nombre { get; set; }

public string G10_categoria { get; set; }

public decimal G10_precio { get; set; }

public int G10_cantidad { get; set; }

El prefijo G10_ en los nombres de las propiedades fue adoptado como convención para
identificar los elementos desarrollados por el grupo 10, conforme a las pautas del curso.
Clase Categoría:
Permite agrupar productos por tipo y calcular el stock total usando un método
recursivo:public class Categoría

public class Categoria

public string G10_nombre { get; set; }

public List<Producto> G10_productos { get; set; } = new List<Producto>();

public int G10_CalcularStockRecursivo(int index = 0)

if (index >= G10_productos.Count)

return 0;

return G10_productos[index].G10_cantidad + G10_CalcularStockRecursivo(index +


1);

}
Este método implementa una lógica de acumulación de cantidades a través de llamadas
recursivas, reemplazando bucles convencionales por una solución más elegante y
declarativa.

Aplicación de listas, recursividad y excepciones


Uno de los fundamentos clave del proyecto fue la utilización de listas genéricas
(List<Producto>) para gestionar dinámicamente los productos registrados. Estas listas
permiten aplicar operaciones de ordenamiento, filtrado, y búsqueda por expresiones
lambda. Por ejemplo, se implementó un método de búsqueda por nombre que responde a
coincidencias parciales:

csharp

CopiarEditar

Producto resultado = G10_listaProductos

.FirstOrDefault(p => p.G10_nombre.ToLower().Contains([Link]()));

Para el cálculo del stock total por categoría, se utilizó el método recursivo
G10_CalcularStockRecursivo, que suma los valores de la lista sin necesidad de usar
estructuras iterativas. Esta técnica promueve un pensamiento algorítmico más abstracto y
refuerza la comprensión de las funciones que se llaman a sí mismas.

En cuanto al manejo de excepciones, el sistema fue diseñado para detectar situaciones de


error comunes como campos incompletos o duplicados en el registro de productos. Esto se
logró mediante bloques try-catch como el siguiente:

try

if ([Link](nombre) || [Link](categoria))

throw new ArgumentException("Datos incompletos.");

if (G10_listaProductos.Any(p => p.G10_nombre == nombre))

throw new InvalidOperationException("Producto duplicado.");


G10_listaProductos.Add(new Producto { G10_nombre = nombre, G10_categoria =
categoria, G10_precio = precio, G10_cantidad = cantidad });

catch (Exception ex)

[Link]([Link]);

Estas validaciones garantizan que los datos ingresados al sistema cumplan con los criterios
requeridos, evitando fallas críticas durante la ejecución.

Fundamentación teórica

El uso de clases, listas, recursividad y manejo de excepciones responde a fundamentos


clave de la programación orientada a objetos. Según Deitel y Deitel (2017), “la
encapsulación de atributos dentro de clases facilita el mantenimiento y la escalabilidad del
software”. Las listas genéricas, como indica Albahari (2021), permiten gestionar
colecciones dinámicas de objetos con eficiencia y seguridad. Además, el uso de
recursividad permite reemplazar bucles iterativos, ofreciendo soluciones más elegantes a
ciertos problemas computacionales, mientras que las excepciones controlan flujos de error
sin detener la ejecución del programa (Microsoft, 2023).
CAPÍTULO III
CONCLUSIONES Y RECOMENDACIONES
El desarrollo del presente sistema de gestión de inventario para una tienda de productos
electrónicos ha representado una experiencia integral que combina la aplicación de
conocimientos teóricos con la resolución de un problema real. A lo largo del proyecto, se
fortalecieron habilidades fundamentales en el ámbito de la programación orientada a
objetos, permitiendo que los integrantes del equipo consolidaran competencias esenciales
tanto en la lógica de programación como en la estructuración de aplicaciones robustas y
funcionales.

Uno de los logros más significativos fue la correcta implementación de clases. El diseño de
estructuras como Producto y Categoría no solo permitió organizar mejor la información,
sino que también facilitó la reutilización del código, permitiendo su ampliación y
mantenimiento. Esta forma de representar entidades del mundo real en estructuras de
software es uno de los principales beneficios del paradigma orientado a objetos, y su
aplicación en este proyecto contribuyó notablemente a su claridad y eficacia.

En cuanto al uso de listas genéricas, se pudo comprobar su versatilidad en la manipulación


dinámica de datos. Gracias a ellas, fue posible implementar funcionalidades como el
ordenamiento por precio en ambas direcciones (ascendente y descendente), así como
búsquedas personalizadas basadas en coincidencias parciales de nombre. Además, las listas
permitieron almacenar grandes volúmenes de información sin afectar el rendimiento del
sistema, lo que demuestra su eficiencia como estructura de datos para aplicaciones de
gestión.

El uso de la recursividad constituyó uno de los retos conceptuales más relevantes del
proyecto. Aplicada al cálculo del stock total por categoría, esta técnica permitió reemplazar
ciclos iterativos por llamados sucesivos a un mismo método, lo que dio lugar a una
solución más limpia y directa. Esta aproximación ayudó al equipo a profundizar en el
pensamiento algorítmico y en la necesidad de controlar cuidadosamente las condiciones de
detención de una función recursiva, para evitar errores como llamadas infinitas o
desbordamiento de pila (stack overflow).

El manejo de excepciones fue otro de los componentes fundamentales del proyecto.


Gracias al uso de bloques try-catch, se logró validar los datos ingresados por el usuario,
controlando casos como campos vacíos, datos no numéricos o duplicados. Esta validación
no solo aumentó la fiabilidad del sistema, sino que también mejoró la experiencia del
usuario final, al proporcionar mensajes claros y evitar el cierre inesperado del programa.
Aprender a prever posibles errores de ejecución y a reaccionar adecuadamente ante ellos es
una de las competencias más valiosas en el desarrollo de aplicaciones de calidad.

Desde una perspectiva metodológica, el trabajo en equipo también fue clave para el éxito
del proyecto. Se promovió la comunicación constante, la división equitativa de tareas, el
uso de buenas prácticas en la escritura del código y la revisión conjunta de errores. Este
tipo de dinámica simula el trabajo colaborativo que se desarrolla en entornos reales de
desarrollo de software, y permite formar profesionales con habilidades técnicas y sociales
bien equilibradas.

Recomendaciones

Como resultado de este proceso, se pueden ofrecer algunas recomendaciones tanto para el
equipo como para futuros estudiantes que desarrollen proyectos similares:

1. Diseñar primero, codificar después: Es fundamental comenzar cualquier proyecto


con una etapa de análisis y diseño, en la que se definan claramente las clases, sus
atributos y relaciones. Esto evita errores posteriores y facilita la implementación.

2. Aprovechar al máximo las estructuras del lenguaje: Las listas genéricas, la


recursividad y las excepciones son herramientas potentes que, bien aplicadas,
aumentan la calidad y eficiencia del software. Su dominio requiere práctica
constante.

3. Aplicar validaciones desde el inicio: Es recomendable implementar manejo de


errores y validaciones desde las primeras versiones del programa. Esto previene la
acumulación de errores que luego son más difíciles de depurar.

4. Comentar y documentar el código: La documentación del código y el uso de


nombres de variables claros (como el formato G10_nombre) mejora la comprensión
y mantenimiento del sistema por parte de otros programadores o del propio equipo
en el futuro.

5. No subestimar la recursividad: Aunque es una técnica que suele parecer compleja,


la recursividad puede simplificar muchos algoritmos si se utiliza de forma
adecuada. Es importante practicarla y entender su lógica interna.
6. Buscar siempre mejorar la experiencia del usuario: Un sistema exitoso no solo debe
cumplir su función, sino también ser amigable y claro para quien lo utiliza. Esto se
logra mediante interfaces bien diseñadas, mensajes útiles y navegación intuitiva.

En conclusión, este proyecto ha representado una valiosa oportunidad de aprendizaje, tanto


a nivel técnico como humano. Ha demostrado que, con una planificación adecuada, trabajo
en equipo y aplicación de buenas prácticas, es posible construir soluciones informáticas
eficientes, funcionales y alineadas con las necesidades reales del entorno. Los
conocimientos adquiridos servirán como base sólida para afrontar futuros desafíos
académicos y profesionales en el campo del desarrollo de software.
BIBLIOGRAFIA
Microsoft. (2023). Guía de programación en C#.
[Link]

Microsoft. (2023). Handling and throwing exceptions in C#. Microsoft Learn.


[Link]
[Link] (2020). Clases, objetos y constructores | Curso de fundamentos de C#.
[Link]

También podría gustarte