FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS E
INFORMATICA
TITULO DEL PROYECTO
Sistema de Ventas PIURA 2025
INTEGRANTES:
-Yuri Jerohen Junior Palacios López.
-Christopher Jeanpier Yamo Panta.
-José Miguel Luna Zapata
CURSO : PROGRAMACION ORIENTADA A OBJETOS
DOCENTE : Puicon Zapata Hoower Augusto.
PIURA - PERÚ
2024
INDICE
CAPÍTULO 1: INFORMACIÓN GENERAL
1.1 ORGANIZACIÓN
1.1.1 Razón social
• Panadería y pastelería Mi Marlenita
1.1.2 Dirección
• Calle comercio 579
1.1.3 Ubicación geográfica
• País: Perú
• Departamento: Piura
• Provincia: Morropón
• Distrito: Morropón
1.1.4 RUC
• 10749902863
1.1.5 Imagen del frontis
1.2 Misión
• Elaborar y ofrecer productos de panadería y pastelería frescos,
artesanales y de alta calidad, que deleiten el paladar de nuestros
clientes, comprometidos siempre con el servicio, la innovación y la
mejora continua.
1.3 Visión
• Ser reconocidos como la panadería y pastelería en Morropón y
zonas aledañas, destacando por la calidad de nuestros productos, la
atención personalizada y la contribución al bienestar de la
comunidad.
CAPÍTULO 2: ASPECTOS GENERALES
2.1 DEFINICIÓN DEL PROBLEMA
2.1.1 Descripción del Problema
• La panadería “Mi Marlenita” presenta dificultades en el manejo y control de sus
procesos de venta. Actualmente, los registros se realizan de forma manual en
hojas o cuadernos, lo que genera errores frecuentes, pérdida de información,
dificultad para realizar seguimientos de ventas y demoras en la atención al
cliente. Esta situación impacta negativamente en la productividad, impide
conocer con precisión las estadísticas de ventas diarias y dificulta la
planificación de producción y reposición de productos.
2.1.2 Formulación del problema general
• ¿Cómo desarrollar un sistema de ventas digital que permita a la panadería Mi
Marlenita gestionar sus transacciones comerciales de forma eficiente, precisa y
en tiempo real?
2.1.3 Formulación de problemas específicos
• ¿Cómo automatizar el registro de las ventas realizadas en la panadería?
• ¿Qué herramientas tecnológicas son adecuadas para implementar un sistema de
ventas accesible y funcional?
• ¿Cómo garantizar la disponibilidad de reportes de ventas actualizados para una
mejor toma de decisiones?
• ¿Qué impacto tendría la implementación del sistema en la eficiencia operativa y
el servicio al cliente de la panadería?
2.2 DEFINICIÓN DE LOS OBJETIVOS
2.2.1 Objetivo General
• Desarrollar e implementar un sistema de ventas digital para la panadería “Mi
Marlenita”, con el fin de mejorar el control de transacciones, reducir errores
manuales y optimizar los procesos de atención al cliente y toma de decisiones.
2.2.2 Objetivos Específicos
• Diseñar una base de datos que registre de forma estructurada las transacciones de
venta.
• Desarrollar una interfaz amigable que permita al personal registrar ventas y
consultar el historial fácilmente.
• Implementar reportes automáticos que muestren estadísticas de ventas por día,
producto y categoría.
• Evaluar el impacto del sistema en la eficiencia operativa y la satisfacción del
cliente tras su implementación.
CAPÍTULO 3 : DESARROLLO DE LA APLICACIÓN
3.1 REQUERIMIENTOS
3.1.1. Modelo del dominio
El modelo del dominio representa los elementos clave del sistema y sus
relaciones dentro del entorno de la panadería “Mi Marlenita”. Se identifican las
siguientes clases principales:
• Producto: representa los productos de panadería y pastelería ofrecidos. Incluye atributos
como código, nombre, descripción, precio y stock.
• Cliente: registra la información de los compradores, como nombre, documento de
identidad y datos de contacto.
• Proveedor: almacena los datos de los proveedores que abastecen a la panadería con
insumos.
• Venta: representa una transacción comercial realizada a un cliente. Incluye fecha, total y
vínculo con los productos vendidos.
• DetalleVenta: contiene la información específica de cada producto vendido en una venta
(cantidad, precio unitario).
• Compra y DetalleCompra: modelan el proceso de adquisición de productos desde los
proveedores.
• Usuario: representa al personal autorizado para utilizar el sistema.
Estas clases permiten modelar y organizar los datos de forma estructurada,
facilitando su implementación en código y su posterior integración con la base de
datos.
3.1.2 Requerimientos funcionales
Los requerimientos funcionales definen las funciones específicas que el
sistema debe cumplir. Para el sistema de ventas de la panadería se establecen
los siguientes:
• RF1: Permitir el registro, modificación y eliminación de productos.
• RF2: Registrar ventas, seleccionando productos y cliente, calculando el total
automáticamente.
• RF3: Controlar el stock de productos, actualizándolo automáticamente tras cada
venta o compra.
• RF4: Registrar clientes y permitir su búsqueda rápida.
• RF5: Registrar compras de productos a proveedores y actualizar el inventario.
• RF6: Generar reportes de ventas diarios, mensuales y por producto.
• RF7: Validar los datos ingresados para evitar inconsistencias.
• RF8: Gestionar el acceso al sistema mediante usuarios con credenciales.
3.1.3 Requerimientos no funcionales
Los requerimientos no funcionales definen las características generales del sistema,
relacionadas con su rendimiento, calidad y restricciones técnicas. Se consideran los
siguientes:
• RNF1: El sistema debe tener una interfaz intuitiva y de fácil uso para el personal de la
panadería.
• RNF2: La base de datos debe garantizar integridad y consistencia de los datos.
• RNF3: El sistema debe ejecutarse en equipos con Windows y requerir pocos recursos.
• RNF4: El tiempo de respuesta al registrar ventas no debe exceder los 2 segundos.
• RNF5: El sistema debe respaldar los datos al menos una vez al día.
• RNF6: El código fuente debe estar organizado y documentado para facilitar su
mantenimiento.
3.2 DISEÑO
3.2.1 Diseño de la base de datos.
[Link].1 Procedimientos de almacenado.
--Procediemto de
Cliente-- create proc
sp_listar_clientes as
select*from clientes go
create proc sp_guardar_clientes
@codigo varchar(10),
@nombre varchar(20),
@apellido varchar(20),
@dni int,
@ruc varchar(11),
@edad int,
@sexo char(1),
@telef char(9),
@direc
varchar(50) as
insert into
clientes values
(@codigo,@nom
bre,@apellido,@
dni,@ruc,@edad
,@sexo,@telef,
@direc) go
create proc sp_editar_clientes
@codigo varchar(10),
@nombre varchar(20),
@apellido varchar(20),
@dni int,
@ruc varchar(11),
@edad int,
@sexo char(1),
@telef char(9), @direc varchar(50) as update clientes set
nombre=@nombre,apellido=@apellido,dni=@dni,ruc=@ruc,edad=@edad,se
xo=@sexo, telefono=@telef,direccion=@direc where id_clientes=@codigo go
create proc sp_eliminar_clinte @codigo
varchar(10) as delete from clientes where
id_clientes=@codigo go
create proc sp_buscar_cliente
@dni varchar(8)
as
select *from clientes where dni like @dni+'%'
3.2.2 Diccionario de la base de datos
Diccionario de la tabla proveedor:
3.2.3 Interfaz de usuario (pantallas y formularios)
El sistema cuenta con una interfaz gráfica desarrollada en Java (Swing), con
formularios intuitivos y accesibles desde un menú principal. Se han diseñado
pantallas específicas para la gestión de productos, clientes, proveedores, ventas y
compras. Cada pantalla incluye funcionalidades CRUD (crear, leer, actualizar,
eliminar) y validaciones para el correcto ingreso de información. El módulo de
ventas permite seleccionar un cliente, añadir productos desde un buscador,
establecer cantidades y calcular totales automáticamente. Además, el sistema
permite consultar el historial de transacciones y genera reportes automáticos, todo
con una experiencia de usuario fluida y enfocada en la productividad.
3.2.4 Arquitectura del sistema
El sistema está estructurado bajo una arquitectura en capas que incluye
presentación, lógica de negocio y acceso a datos. Se utilizó el lenguaje Java y el
motor de base de datos SQL Server. La comunicación con la base de datos se
realiza mediante JDBC y se aplicó el patrón DAO para el acceso estructurado a los
datos. La lógica del negocio se organiza en clases controladoras que gestionan la
interacción entre la interfaz y los datos, mientras que la capa de presentación está
compuesta por formularios diseñados en Swing. Esta separación mejora el
mantenimiento del sistema y facilita futuras ampliaciones. Además, se empleó el
patrón MVC para garantizar una mayor claridad en el flujo de información y
modularidad del sistema.
3.3 DESARROLLO
3.3.1 Implementación del Sistema explicación
del sistema:
Pantalla de Inicio de Sesión – La Bienvenida a 'Mi Marlenita'
"Esta es la primera imagen que vemos y es la pantalla de 'Iniciar Sesión'. Se ha diseñado para ser
simple y al grano, y como se puede ver, está tematizada para mi panadería y pastelería, 'Mi
Marlenita'.
• En la parte izquierda, están los campos esenciales para que cualquier usuario pueda acceder:
'USUARIO' y 'CONTRASEÑA'. También se añadió un pequeño cuadro para 'Mostrar' la
contraseña, lo cual siempre es útil para evitar errores al escribir.
• Debajo de estos campos, el gran botón 'INGRESAR' es el que activa el proceso de
autenticación para entrar al sistema.
• Y en la esquina superior izquierda, la 'X' es para cerrar la aplicación si el usuario decide no
ingresar.
• El lado derecho de la pantalla es donde hay un toque visual una imagen apetitosa de panes y
el nombre del negocio, 'PANADERIA Y PASTELERIA "MI MARLENITA"'.
Clase Conexión – El Enlace con la Base de Datos
"Esta esta es la clase conexión, ubicada en el paquete Capa Lógica. Es el puente fundamental
entre mi aplicación y la base de datos. Sin ella, no podría guardar la información de los
empleados ni de las ventas.
• Al principio, pueden ver los import de [Link], que son las librerías que Java
proporciona para interactuar con las bases de datos.
• Dentro del método conectar(), he definido la url de conexión a mi base de datos
SQL Server. Aquí le indico la dirección de mi servidor (localhost\\
SQLEXPRESS), el puerto (1433) y el nombre de la base de datos, que se llama
db_ventas.
• He incluido bloques try-catch para manejar posibles errores. El primero, por si no
se encuentra el 'controlador' de SQL Server (el software necesario para la
comunicación).
• Y el segundo try-catch es para el intento real de conexión, usando un usuario
(dev_junior) y una contraseña. Si hay algún problema para conectar con la base
de datos, me mostrará un mensaje de error.
• Finalmente, este método devuelve la conexión establecida, lista para que el resto
de mi aplicación la use para leer y escribir datos."
Interfaz de Gestión de Empleados
"Esta es otra interfaz importante desarrollada, específicamente para gestionar los
'Datos del Empleado'. Es una pantalla muy práctica para mantener toda la
información del personal organizada.
En la parte superior, hay campos para rellenar o visualizar los datos de cada empleado:
su 'Código', 'DNI', 'Nombre', 'Apellidos', 'Teléfono' y 'Dirección'.
En la sección derecha de la interfaz se encuentran los botones principales de acción:
Nuevo, para iniciar el registro de un nuevo empleado.
Guardar, para almacenar la información ingresada o actualizada.
Eliminar, para dar de baja un registro existente.
En la parte central, se ha incorporado una función de búsqueda que permite localizar rápidamente a
un empleado mediante su número de DNI, ingresándolo en el campo correspondiente y presionando
el botón Buscar.
Asimismo, se dispone de un botón Salir que permite cerrar la ventana o el módulo actual.
En la parte inferior de la interfaz, se ubica una tabla de datos, diseñada para mostrar de forma clara
y ordenada la información de los empleados registrados, ya sea la lista completa o los resultados
filtrados a partir de una búsqueda específica.
Para que estas interfaces puedan interactuar y guardar información en la base de datos, se requiere
una clase de conexión, la cual se encarga de gestionar la comunicación entre la aplicación y el
sistema de gestión de base de datos.
Complemento de Clase de Datos – Más Getters y Setters
" La siguiente imagen corresponde a la continuación de la clase encargada de la gestión
de los detalles de venta, en la cual se presentan los métodos get y set asociados a los
atributos de la clase, como idProducto, cantidad, precio y total.
Estos métodos son fundamentales para garantizar un acceso seguro y controlado a los
atributos de los objetos, ya que permiten obtener y modificar sus valores conforme a las
necesidades del sistema.
Por ejemplo, el método getIdProducto() permite recuperar el identificador del producto
asociado a un detalle de venta específico, mientras que el método setCantidad(int
cantidad) posibilita actualizar la cantidad correspondiente de productos en dicha
transacción.
La implementación de estos métodos para cada atributo asegura la consistencia de los
datos dentro de los objetos y permite validar correctamente cualquier cambio realizado,
lo cual es esencial para mantener la integridad en la gestión de las transacciones de
venta.
Clase_DetalleVenta – El Corazón de Cada Artículo Vendido
La clase M_DetalleVenta, ubicada en el paquete correspondiente a la Capa de Datos, cumple un
papel esencial dentro del sistema, ya que representa cada línea individual asociada a una venta, es
decir, cada producto adquirido por el cliente durante una transacción.
En esta clase se han definido los principales atributos necesarios para describir un detalle de venta:
iddetalleventa: Identificador único del detalle.
idventa: Identificador que indica a qué venta pertenece el detalle.
idproducto: Referencia al producto vendido.
cantidad: Número de unidades vendidas.
precio: Precio unitario del producto.
total: Importe total correspondiente al detalle.
Estos atributos se han declarado como privados para preservar la integridad de los datos y cumplir
con el principio de encapsulamiento.
La clase dispone de dos tipos de constructores: uno vacío, que permite crear un objeto sin inicializar
sus atributos, y otro que permite definir todos los valores desde el momento de su creación.
Asimismo, se han implementado métodos get y set para los atributos, lo cual asegura un acceso
controlado a las propiedades de cada objeto y permite modificar o consultar sus valores de manera
segura.
Este enfoque garantiza que la información esté correctamente estructurada y gestionada dentro del
sistema, siendo una parte fundamental en la lógica de manejo de las ventas.
CONCLUSIONES Y RECOMENDACIONES
Conclusiones:
El desarrollo del sistema de ventas para la panadería “Mi Marlenita” representa un avance
significativo en la modernización de sus procesos comerciales. La implementación de una
arquitectura en capas ha permitido estructurar el proyecto de manera ordenada, facilitando su
mantenimiento y posible expansión.
El uso de un modelo de datos orientado a objetos, junto con la correcta gestión de la base de datos
en SQL Server, asegura la integridad y persistencia de la información, aspectos fundamentales en un
sistema de gestión.
Las interfaces gráficas diseñadas brindan al usuario una experiencia sencilla y funcional,
favoreciendo la eficiencia en las tareas diarias, especialmente en la gestión de ventas, clientes,
productos y personal.
Finalmente, el manejo básico de errores y la seguridad en la conexión a la base de datos fortalecen
la estabilidad del sistema, asegurando su correcto funcionamiento y minimizando riesgos durante su
operación.
Recomendaciones:
Capacitar al personal en el uso del sistema para garantizar un manejo adecuado de las
funciones y optimizar su rendimiento en las actividades diarias.
Realizar respaldos periódicos de la base de datos para evitar la pérdida de información en
caso de fallos técnicos o imprevistos.
Mantener el sistema actualizado, incorporando mejoras o nuevas funcionalidades según las
necesidades del negocio.
Monitorear regularmente el desempeño del sistema y revisar los reportes generados para
apoyar la toma de decisiones estratégicas y la gestión eficiente del negocio.
Evaluar el uso del sistema a mediano plazo para detectar oportunidades de mejora o
integración con otros procesos administrativos de la panadería.