Manual del Programador: Marketmate Python
Manual del Programador: Marketmate Python
Del
Programador 1
Proyecto: Marketmate
Autores: Leonardo Padilla
Janny Pincay
Miguel Ángel Quimis
Harold Velasco
Fecha: 19/02/2024
1c Desarrollo de Software
INDICE
Introducción……………………………………………3
Controllers……………………………………………...4
Database, Conexión……………………………………15
Models…………………………………………………17
View……………………………………………………47 2
UI………………………………………………………58
Main……………………………………………………62
Introducción
Class ClientController
Método __init__(self)
4
Método create(self)
Método list(self)
Consideraciones adicionales:
• Este código asume que existe una clase Cliente con métodos como save (),
search_by_identification(), y all() para interactuar con los datos de los
clientes.
• Se utiliza la biblioteca colorama para proporcionar color al texto en la consola.
Asegúrate de tenerla instalada para que el código funcione correctamente.
Este manual del programador proporciona una descripción detallada de cómo utilizar y
entender la clase ClientController y sus métodos asociados.
EmployeeController
Class EmployeeController
Método __init__(self)
6
Método search_by_identification(self, identification)
7
Método list(self)
Consideraciones adicionales:
• Este código asume que existen las clases Employee y Seccion con métodos como
search_by_identification(), search_by_name() y all() para interactuar con
los datos de los empleados y secciones.
• El código proporcionado asume que la interacción con el usuario se realiza a través 8
de la entrada estándar utilizando la función input() para solicitar información.
Este manual del desarrollador proporciona una descripción detallada de cómo utilizar y
entender la clase EmployeeController y sus métodos asociados.
InvoceController
Class InvoceController
Método __init__(self)
• Descripción: Crea una nueva factura y la guarda en el sistema, junto con los
detalles de las ventas realizadas.
• Parámetros:
o list_ventas: Una lista de ventas (instancias de la clase Purchase)
asociadas a la factura.
o client_id: ID del cliente al que se le factura.
o employee_id: ID del empleado que realiza la factura.
o fecha: Fecha de emisión de la factura.
o total: Total de la factura.
• Funcionalidad:
o Crea una instancia de la clase Invoce con la información proporcionada,
incluyendo el cálculo del IVA.
o Guarda la factura en el sistema.
o Para cada venta en la lista list_ventas, crea una instancia de la clase
InvoceDetail asociada a la factura y la guarda en el sistema.
o Retorna la instancia de la factura creada.
Consideraciones adicionales:
10
• Este código asume que existen las clases Invoce, InvoceDetail, y Purchase para
interactuar con los datos de facturas, detalles de facturas y compras,
respectivamente.
• Se utiliza la biblioteca decimal para realizar cálculos precisos con valores
decimales.
• La fecha se espera que sea un objeto datetime o un formato de fecha compatible.
Este manual del desarrollador proporciona una descripción detallada de cómo utilizar y
entender la clase InvoceController y su método do_invoice.
ProductController
Class ProductController
Método __init__(self)
Método create(self)
Consideraciones adicionales:
• Este código asume que existen las clases Product y Marca con métodos como save
(), search_by_name () y all () para interactuar con los datos de los productos y
las marcas respectivamente.
• La entrada de datos del usuario se realiza a través de la entrada estándar utilizando
la función input ().
• Se utiliza la biblioteca colorama para proporcionar color al texto en la consola.
Este manual del programador proporciona una descripción detallada de cómo utilizar y
entender la clase ProductController y sus métodos asociados.
SalesController
Clase SalesController
La clase SalesController se utiliza para manejar operaciones relacionadas con las ventas
de productos en un sistema. A continuación se describe el método principal y su
funcionalidad:
Método __init__(self)
Este manual del programador proporciona una descripción detallada de cómo utilizar y
entender la clase SalesController y su método do_sale.
DATABASE
CONEXION
Clase Db
Introducción
La clase Db proporciona una interfaz para interactuar con una base de datos MySQL
utilizando la biblioteca pymysql en Python. Este manual del programador tiene como
objetivo proporcionar una guía detallada sobre cómo utilizar y extender esta clase de
manera efectiva.
Requisitos previos
Antes de utilizar la clase Db, asegúrese de tener instalada la biblioteca pymysql. Puede
instalarla utilizando pip:
Para utilizar la clase Db, primero importe la clase y cree una instancia de ella:
python
from db import Db
db = Db()
Una vez que tenga una instancia de Db, puede utilizar sus métodos para ejecutar consultas
SQL y administrar la conexión a la base de datos.
Para ejecutar una consulta SQL que modifique los datos en la base de datos, utilice el
método execute:
python
sql = "INSERT INTO usuarios (nombre, edad) VALUES (%s, %s)"
parametros = ("Ejemplo", 30)
[Link](sql, parametros)
python
sql = "SELECT * FROM usuarios WHERE edad > %s"
parametros = (25,)
resultados = db.consultar_sql(sql, parametros)
for resultado in resultados:
print(resultado)
Cerrar la conexión
Cuando haya terminado de utilizar la clase Db, asegúrese de cerrar la conexión a la base de
datos utilizando el método cerrar:
python
[Link]()
Patrón Singleton
La clase Db implementa el patrón Singleton, lo que significa que solo se creará una
instancia de la clase en toda la ejecución del programa. Esto garantiza que solo haya una
conexión a la base de datos en todo momento.
Consideraciones adicionales 16
• Asegúrese de manejar correctamente las excepciones al interactuar con la base de datos.
• Evite almacenar información confidencial, como contraseñas de bases de datos,
directamente en el código. Considere utilizar variables de entorno u otros métodos
seguros para gestionar la configuración de la base de datos.
Extensibilidad
Conclusión
La clase Db proporciona una forma conveniente y eficaz de interactuar con una base de
datos MySQL en Python. Siguiendo las pautas y recomendaciones proporcionadas en este
manual, podrá utilizar y extender esta clase de manera efectiva en sus proyectos.
Este manual del programador proporciona una guía básica para comenzar a utilizar la clase
Db y sugiere algunas consideraciones importantes para su uso y extensibilidad. Si tienes
alguna pregunta adicional o necesitas más detalles sobre algún aspecto específico, no dudes
en preguntar.
MODELS
BASE_MODEL
Introducción
Este manual proporciona una guía para entender y mantener el código del proyecto.
Describe la estructura del código, las principales clases y métodos, así como las mejores
prácticas para la programación y el mantenimiento.
Clase BaseModel
La clase BaseModel es una clase base para interactuar con la base de datos. Contiene los
siguientes métodos:
Uso
Para utilizar la clase BaseModel, se debe importar desde el archivo donde se necesite y
crear una instancia de la misma. A continuación, se pueden llamar a los métodos según sea
necesario para interactuar con la base de datos.
python
from [Link] import Db
from base_model import BaseModel
Mejores Prácticas
• Utilizar los métodos estáticos all, find, find_one para operaciones de consulta.
• Utilizar la instancia de BaseModel para operaciones de inserción, actualización y
eliminación.
• Seguir los principios de seguridad al interactuar con la base de datos para evitar 18
vulnerabilidades como la inyección SQL.
• Implementar el método update según sea necesario para permitir la actualización de
registros en la base de datos.
Mantenimiento
Introducción
20
Este manual está destinado a los desarrolladores que trabajarán en el mantenimiento y la
extensión del sistema de gestión de clientes. Proporciona una visión general de la
arquitectura del código, explica las principales clases y métodos, y ofrece pautas sobre
cómo agregar nuevas funcionalidades o realizar modificaciones.
Clase BaseModel
La clase BaseModel sirve como una capa de abstracción para interactuar con la base de
datos. Proporciona los siguientes métodos genéricos:
Clase Cliente
Desarrollo y Mantenimiento
1. Agrega nuevos métodos o modifica los existentes en la clase Cliente según los requisitos
de la aplicación.
2. Si es necesario realizar cambios en la interacción con la base de datos, considera hacer
ajustes en la clase BaseModel.
3. Documenta cualquier cambio realizado y asegúrate de mantener actualizado el código y la
documentación.
4. Realiza pruebas exhaustivas para garantizar el correcto funcionamiento de las nuevas
funcionalidades y la integridad del sistema.
Seguridad
Asegúrate de seguir las mejores prácticas de seguridad al interactuar con la base de datos,
como validar y sanitizar los datos de entrada para prevenir ataques de inyección de SQL.
Escalabilidad
Este manual proporciona una guía para comprender y trabajar con el código existente, así
como para desarrollar nuevas funcionalidades de manera segura y escalable. Si tienes
alguna pregunta o necesitas ayuda adicional, no dudes en consultar.
22
23
EMPLOYEE
Introducción
Este manual está diseñado para proporcionar una comprensión completa del código y las
prácticas recomendadas para el desarrollo y mantenimiento del sistema de gestión de
empleados. Se detalla la estructura del código, las clases y métodos principales, así como
las mejores prácticas para la programación y el acceso a la base de datos.
La clase BaseModel sirve como una capa de abstracción para interactuar con la base de
datos. Incluye los siguientes métodos genéricos:
Clase Employee
Desarrollo y Mantenimiento
1. Agrega nuevos métodos o modifica los existentes en la clase Employee según los
requisitos del sistema.
2. Si es necesario realizar cambios en la interacción con la base de datos, considera hacer
ajustes en la clase BaseModel.
3. Documenta cualquier cambio realizado y asegúrate de mantener actualizado el código y la
documentación.
4. Realiza pruebas exhaustivas para garantizar el correcto funcionamiento de las nuevas
funcionalidades y la integridad del sistema.
Seguridad
Recuerda seguir las mejores prácticas de seguridad al interactuar con la base de datos,
como validar y sanitizar los datos de entrada para prevenir ataques de inyección de SQL.
Escalabilidad
Este manual proporciona una guía detallada para comprender y trabajar con el código
existente, así como para desarrollar nuevas funcionalidades de manera segura y escalable.
Si tienes alguna pregunta o necesitas ayuda adicional, no dudes en consultar.
25
26
INVOICE DETAIL
Clase InvoiceDetail
Introducción
Este manual proporciona una guía para comprender y trabajar con la clase InvoiceDetail,
que está diseñada para interactuar con una tabla de detalles de facturas en una base de
datos. Se describe la estructura de la clase, sus métodos principales y las mejores prácticas
para su uso.
Estructura de la Clase
python
from models.base_model import BaseModel
class InvoiceDetail(BaseModel):
def save(self):
sql = 'INSERT INTO detalle_factura (compra_por_producto_id,
factura_id) VALUES (%s, %s)'
parametros = (self.compra_por_producto_id, self.factura_id)
id = super().save(sql, parametros)
[Link] = id
return id
Funcionalidades
1. Inicialización (__init__):
o Define los atributos de un detalle de factura: id, compra_por_producto_id,
27
factura_id.
o Llama al constructor de la clase padre (BaseModel) para inicializar la conexión a la
base de datos.
2. Método save:
o Guarda un detalle de factura en la base de datos.
o Ejecuta una consulta SQL para insertar un nuevo registro en la tabla
detalle_factura.
o Utiliza los valores de compra_por_producto_id y factura_id como
parámetros en la consulta.
o Después de guardar el detalle de factura, asigna el ID generado a [Link] y lo
devuelve.
Uso
python
from models.invoice_detail import InvoiceDetail
# Crear un nuevo detalle de factura
detalle = InvoiceDetail(compra_por_producto_id=1, factura_id=1001)
[Link]()
Mejores Prácticas
Para un uso efectivo de la clase InvoiceDetail, considera seguir estas mejores prácticas:
• Validar los datos antes de crear una instancia de InvoiceDetail y llamar al método
save.
• Seguir las prácticas de seguridad al interactuar con la base de datos, como evitar la
inyección de SQL.
Mantenimiento
28
Este manual proporciona una guía detallada para trabajar con la clase InvoiceDetail. Si
necesitas más información o tienes alguna pregunta específica, no dudes en consultar.
29
INVOICE
Clase Invoice
Introducción
Este manual proporciona una guía detallada para comprender y trabajar con la clase
Invoice, diseñada para interactuar con una tabla de facturas en una base de datos. Se
describe la estructura de la clase, sus métodos principales y las mejores prácticas para su
uso.
Estructura de la Clase
python
from models.base_model import BaseModel
from models.invoice_detail import InvoiceDetail
from [Link] import Cliente
from [Link] import Employee
class Invoice(BaseModel):
def cliente(self):
return Cliente.get_by_id(self.cliente_id)
def empleado(self):
return Employee.find_by_id(self.empleado_id)
def get_detalles_factura(self):
return [Link]('SELECT * FROM detalle_factura WHERE
factura_id = %s', ([Link],))
def save(self):
sql = 'INSERT INTO factura (cliente_id, empleado_id, fecha,
30
total, iva) VALUES (%s, %s, %s, %s, %s)'
parametros = (self.cliente_id, self.empleado_id, [Link],
[Link], [Link])
id = super().save(sql, parametros)
[Link] = id
return id
Funcionalidades
1. Inicialización (__init__):
o Define los atributos de una factura: id, cliente_id, empleado_id, fecha,
total, iva.
o Llama al constructor de la clase padre (BaseModel) para inicializar la conexión a la
base de datos.
2. Método cliente:
o Devuelve el objeto Cliente asociado a la factura utilizando el método
get_by_id de la clase Cliente.
3. Método empleado:
o Devuelve el objeto Employee asociado a la factura utilizando el método
find_by_id de la clase Employee.
4. Método get_detalles_factura:
o Busca los detalles de la factura en la base de datos utilizando la clase
InvoiceDetail.
o Ejecuta una consulta SQL para seleccionar todos los detalles de la factura con el ID
de la factura actual.
5. Método save:
o Guarda la factura en la base de datos.
o Ejecuta una consulta SQL para insertar un nuevo registro en la tabla factura.
o Utiliza los valores de los atributos de la factura como parámetros en la consulta.
o Después de guardar la factura, asigna el ID generado a [Link] y lo devuelve.
Uso
python
from [Link] import Invoice
Para un uso efectivo de la clase Invoice, considera seguir estas mejores prácticas:
• Validar los datos antes de crear una instancia de Invoice y llamar al método save.
• Documentar cualquier cambio o adición de funcionalidades.
• Realizar pruebas exhaustivas para garantizar el correcto funcionamiento en diferentes
escenarios.
Mantenimiento
Este manual proporciona una guía detallada para trabajar con la clase Invoice. Si necesitas
más información o tienes alguna pregunta específica, no dudes en consultar.
32
MARCA
Clase Marca
Introducción
Este manual proporciona una guía detallada para comprender y trabajar con la clase Marca,
diseñada para interactuar con una tabla de marcas en una base de datos. Se describe la
estructura de la clase, sus métodos principales y las mejores prácticas para su uso.
Estructura de la Clase
python
from models.base_model import BaseModel
class Marca(BaseModel):
def __init__(self, id=None, nombre=None) -> None:
[Link] = id
[Link] = nombre
super().__init__()
def save(self):
sql = 'INSERT INTO marcas (Nombre) VALUES (%s)'
parametros = ([Link],)
id = super().save(sql, parametros)
[Link] = id
return id
@staticmethod
def search_by_name(nombre):
sql = 'SELECT * FROM marcas WHERE Nombre = %s'
parametros = (nombre,)
result = BaseModel.find_one(sql, parametros)
if result:
marca = Marca(result[0], result[1])
return marca
Funcionalidades
Uso
python
from [Link] import Marca
Para un uso efectivo de la clase Marca, considera seguir estas mejores prácticas:
• Validar los datos antes de crear una instancia de Marca y llamar al método save.
• Documentar cualquier cambio o adición de funcionalidades.
• Realizar pruebas exhaustivas para garantizar el correcto funcionamiento en diferentes
escenarios.
Mantenimiento
Este manual proporciona una guía detallada para trabajar con la clase Marca. Si necesitas
más información o tienes alguna pregunta específica, no dudes en consultar.
35
PRODUCT
Clase Product
Introducción
Este manual proporciona una guía detallada para comprender y trabajar con la clase
Product, diseñada para interactuar con una tabla de productos en una base de datos. Se
describe la estructura de la clase, sus métodos principales y las mejores prácticas para su
uso.
Estructura de la Clase
python
from models.base_model import BaseModel
class Product(BaseModel):
def save(self):
if [Link]:
return [Link]()
sql = 'INSERT INTO productos (marca_id, descripcion, precio,
stock) VALUES (%s, %s, %s, %s)'
params = (self.marca_id, [Link], [Link],
[Link])
id = super().save(sql, params)
[Link] = id
return id
@staticmethod
def all():
lista = []
sql = 'SELECT * FROM productos'
result = [Link](sql)
if result:
36
for r in result:
product = Product(r[0], r[1], r[2], r[3], r[4])
[Link](product)
return lista
@staticmethod
def find_by_id(id):
sql = 'SELECT * FROM productos WHERE id = %s'
params = (id,)
result = BaseModel.find_one(sql, params)
if result:
return Product(result[0], result[1], result[2], result[3],
result[4])
return None
def update(self):
sql = 'UPDATE productos SET marca_id = %s, descripcion = %s,
precio = %s, stock = %s WHERE id = %s'
params = (self.marca_id, [Link], [Link],
[Link], [Link])
return super().save(sql, params)
Funcionalidades
1. Inicialización (__init__):
o Define los atributos de un producto: id, marca_id, descripcion, precio y
stock.
o Llama al constructor de la clase padre (BaseModel) para inicializar la conexión a la
base de datos.
2. Método save:
o Guarda un nuevo producto en la base de datos.
o Si el producto ya tiene un ID asignado, se actualiza llamando al método
update().
o Si no tiene un ID asignado, se inserta un nuevo registro en la tabla productos.
o Después de guardar el producto, asigna el ID generado a [Link] y lo devuelve.
3. Método estático all:
o Devuelve una lista de todos los productos en la base de datos.
o Ejecuta una consulta SQL para seleccionar todos los registros de la tabla
o
productos.
Crea objetos Product con los datos obtenidos de la base de datos y los agrega a
37
una lista que luego se devuelve.
4. Método estático find_by_id:
o Busca un producto por su ID en la base de datos.
o Ejecuta una consulta SQL para seleccionar un registro de la tabla productos con
el ID proporcionado.
o Si encuentra un resultado, crea y devuelve un objeto Product con los datos
obtenidos de la base de datos.
5. Método update:
o Actualiza un producto existente en la base de datos.
o Ejecuta una consulta SQL para actualizar un registro en la tabla productos con
los nuevos valores de los atributos.
Uso
Para un uso efectivo de la clase Product, considera seguir estas mejores prácticas:
• Validar los datos antes de crear una instancia de Product y llamar al método save.
• Documentar cualquier cambio o adición de funcionalidades.
• Realizar pruebas exhaustivas para garantizar el correcto funcionamiento en diferentes
escenarios.
Mantenimiento
38
Para mantener el código y la funcionalidad de la clase Product, asegúrate de:
Este manual proporciona una guía detallada para trabajar con la clase Product. Si necesitas
más información o tienes alguna pregunta específica, no dudes en consultar.
39
PURCHASE
Clase Purchase
Introducción
Este manual proporciona una guía detallada para comprender y trabajar con la clase
Purchase, diseñada para interactuar con una tabla de compras por producto en una base de
datos. Se describe la estructura de la clase, sus métodos principales y las mejores prácticas
para su uso.
Estructura de la Clase
La clase Purchase está diseñada para manejar las compras realizadas por los clientes en
relación con los productos disponibles. Aquí está su estructura:
python
from models.base_model import BaseModel
from [Link] import Product
40
class Purchase(BaseModel):
def product(self):
return Product.find_by_id(self.product_id)
def save(self):
if [Link]:
return [Link]()
sql = 'INSERT INTO purchases (product_id, customer_id,
employee_id, date, quantity, unit_price, total) VALUES (%s, %s, %s, %s,
%s, %s, %s)'
params = (self.product_id, self.customer_id, self.employee_id,
[Link], [Link], self.unit_price, [Link])
id = super().save(sql, params)
[Link] = id
return id
@staticmethod
def all():
purchases = []
sql = 'SELECT * FROM purchases'
result = [Link](sql)
if result:
for r in result:
purchase = Purchase(r[0], r[1], r[2], r[3], r[4], r[5],
r[6], r[7])
[Link](purchase)
return purchases
@staticmethod
def find_by_id(id):
sql = 'SELECT * FROM purchases WHERE id = %s'
params = (id,)
result = BaseModel.find_one(sql, params)
if result:
return Purchase(result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7])
return None
def update(self):
sql = 'UPDATE purchases SET product_id = %s, customer_id = %s,
employee_id = %s, date = %s, quantity = %s, unit_price = %s, total = %s
WHERE id = %s'
params = (self.product_id, self.customer_id, self.employee_id,
41
[Link], [Link], self.unit_price, [Link], [Link])
return super().save(sql, params)
Funcionalidades
1. Inicialización (__init__):
o Define los atributos de una compra: id, product_id, customer_id,
employee_id, date, quantity, unit_price y total.
o Llama al constructor de la clase padre (BaseModel) para inicializar la conexión a la
base de datos.
2. Método product:
o Devuelve el producto asociado a la compra utilizando el método find_by_id de
la clase Product.
3. Método save:
o Guarda una nueva compra en la base de datos.
o Si la compra ya tiene un ID asignado, se actualiza llamando al método update().
o Si no tiene un ID asignado, se inserta un nuevo registro en la tabla purchases.
o Después de guardar la compra, asigna el ID generado a [Link] y lo devuelve.
4. Método estático all:
o Devuelve una lista de todas las compras en la base de datos.
o Ejecuta una consulta SQL para seleccionar todos los registros de la tabla
purchases.
o Crea objetos Purchase con los datos obtenidos de la base de datos y los agrega a
una lista que luego se devuelve.
5. Método estático find_by_id:
o Busca una compra por su ID en la base de datos.
o Ejecuta una consulta SQL para seleccionar un registro de la tabla purchases con
el ID proporcionado.
o Si encuentra un resultado, crea y devuelve un objeto Purchase con los datos
obtenidos de la base de datos.
6. Método update:
o Actualiza una compra existente en la base de datos.
o Ejecuta una consulta SQL para actualizar un registro en la tabla purchases con
los nuevos valores de los atributos.
Uso
• Valida los datos antes de crear una instancia de Purchase y antes de llamar al método
save() para evitar errores en la base de datos.
• Utiliza transacciones para agrupar múltiples operaciones de compra
43
SECCION
Clase Seccion
Introducción
Este manual proporciona una guía detallada para entender y utilizar la clase Seccion. La
clase Seccion está diseñada para interactuar con una tabla de secciones en una base de
datos. Proporciona métodos para realizar operaciones CRUD (Crear, Leer, Actualizar,
Eliminar) en registros de secciones, así como métodos adicionales para buscar y recuperar
datos específicos.
Estructura de la Clase
python
from models.base_model import BaseModel
class Seccion(BaseModel):
def save(self):
if [Link]:
return [Link]()
sql = 'INSERT INTO secciones (nombre) VALUES (%s)'
params = ([Link],)
id = super().save(sql, params)
[Link] = id
return id
@staticmethod
def search_by_name(nombre):
sql = 'SELECT * FROM secciones WHERE nombre = %s' 44
params = (nombre,)
result = BaseModel.find_one(sql, params)
if result:
return Seccion(result[1], result[0])
return None
@staticmethod
def all():
lista = []
sql = 'SELECT * FROM secciones'
result = [Link](sql)
if result:
for r in result:
seccion = Seccion(r[1], r[0])
[Link](seccion)
return lista
Funcionalidades
1. Constructor (__init__)
2. Método save
• Guarda una instancia de Seccion en la base de datos.
• Verifica si la sección ya tiene un ID asignado. Si tiene uno, se llama al método update para
actualizar la entrada en la base de datos.
• Si la sección no tiene un ID asignado, se ejecuta una consulta SQL de inserción para
agregar una nueva entrada en la tabla secciones.
• Después de guardar la sección, asigna el ID generado a [Link] y lo devuelve.
Uso Recomendado
45
• Utiliza la clase Seccion para interactuar con la tabla de secciones en la base de datos.
• Valida los datos antes de crear una instancia de Seccion y antes de llamar al método
save() para evitar errores en la base de datos.
• Utiliza los métodos estáticos search_by_name y all para buscar y recuperar secciones
de la base de datos según sea necesario.
Este manual proporciona una descripción detallada de la clase Seccion y su funcionalidad
asociada, junto con ejemplos de cómo utilizarla. Utilízalo como referencia al desarrollar y
trabajar con la clase Seccion en tu aplicación.
46
VIEW
Client
Sistema de Gestión de Clientes
Introducción
Este manual proporciona una visión general del código y las estructuras utilizadas en el
Sistema de Gestión de Clientes. Está diseñado para ayudar a los desarrolladores a
comprender cómo funciona el sistema y a realizar modificaciones o extensiones según sea
necesario.
Componentes Principales
1. ClientController
Este controlador maneja la lógica relacionada con los clientes, como la creación y listado
de clientes.
2. ClientUI
La interfaz de usuario para interactuar con el sistema. Permite al usuario crear nuevos
clientes y listar los clientes existentes.
3. Client (Modelo)
48
4. Colorama
Se utiliza el módulo Colorama para cambiar los colores y estilos del texto en la terminal,
mejorando la presentación de la interfaz de usuario.
Uso
Personalización y Extensión
El sistema puede ser personalizado y extendido según sea necesario. Algunas posibles áreas
de mejora incluyen:
• Adición de funcionalidades adicionales, como la edición o eliminación de clientes.
• Mejoras en la presentación de la interfaz de usuario.
• Implementación de pruebas unitarias para garantizar la estabilidad del sistema.
Notas de Seguridad
• Se debe tener cuidado al manipular datos de clientes, asegurando que se sigan las mejores
prácticas de seguridad para proteger la información del cliente.
• La entrada del usuario debe ser validada para evitar posibles vulnerabilidades, como la
inyección de código.
Conclusiones
El Sistema de Gestión de Clientes proporciona una base sólida para administrar clientes y
puede ser extendido y adaptado según las necesidades del proyecto. Se recomienda revisar
el código existente y seguir las convenciones de codificación establecidas al realizar
modificaciones o extensiones.
Este manual del programador proporciona una visión general del sistema, sus componentes
y cómo pueden ser personalizados o extendidos. 49
Employee
Manual del Programador - Sistema de Gestión de Empleados
Introducción
Este manual está diseñado para proporcionar una guía detallada para los desarrolladores
que trabajan en el Sistema de Gestión de Empleados. El sistema permite la creación y el
listado de empleados, proporcionando una interfaz de usuario simple a través de la
terminal.
Componentes Principales
1. EmployeeController
Este controlador maneja la lógica relacionada con los empleados, como la creación y el
listado de empleados.
2. EmployeeUI
La interfaz de usuario para interactuar con el sistema. Permite al usuario crear nuevos
empleados y listar los empleados existentes.
50
3. Employee (Modelo)
Se utiliza el módulo Colorama para cambiar los colores y estilos del texto en la terminal,
mejorando la presentación de la interfaz de usuario. 51
Uso
Personalización y Extensión
El sistema puede ser personalizado y extendido según sea necesario. Algunas posibles áreas
de mejora incluyen:
Notas de Seguridad
• Se debe tener cuidado al manipular datos de empleados, asegurando que se sigan las
mejores prácticas de seguridad para proteger la información personal.
• La entrada del usuario debe ser validada para evitar posibles vulnerabilidades, como la
inyección de código.
Conclusiones
Este manual del programador proporciona una visión general del sistema, sus componentes
y cómo pueden ser personalizados o extendidos.
Product
Sistema de Gestión de Productos 52
Introducción
Este manual proporciona una guía detallada para los desarrolladores que trabajan en el
Sistema de Gestión de Productos. El sistema permite la creación y el listado de productos,
proporcionando una interfaz de usuario simple a través de la terminal.
Componentes Principales
1. ProductController
Este controlador maneja la lógica relacionada con los productos, como la creación y el
listado de productos.
2. ProductUI
La interfaz de usuario para interactuar con el sistema. Permite al usuario crear nuevos
productos y listar los productos existentes.
3. Product (Modelo) 53
La clase Product define la estructura de un producto, incluyendo su descripción, precio y
stock.
4. Colorama
Se utiliza el módulo Colorama para cambiar los colores y estilos del texto en la terminal,
mejorando la presentación de la interfaz de usuario.
Uso
Personalización y Extensión
El sistema puede ser personalizado y extendido según sea necesario. Algunas posibles áreas
de mejora incluyen:
• Se debe tener cuidado al manipular datos de productos, asegurando que se sigan las
mejores prácticas de seguridad para proteger la información del producto.
• La entrada del usuario debe ser validada para evitar posibles vulnerabilidades, como la
inyección de código.
Conclusiones
El Sistema de Gestión de Productos proporciona una base sólida para administrar productos
y puede ser extendido y adaptado según las necesidades del proyecto. Se recomienda
revisar el código existente y seguir las convenciones de codificación establecidas al realizar
modificaciones o extensiones.
Este manual del programador proporciona una visión general del sistema, sus componentes
y cómo pueden ser personalizados o extendidos.
Sales
Sistema de Gestión de Ventas
Introducción
Este manual proporciona una guía detallada para los desarrolladores que trabajan en el
Sistema de Gestión de Ventas. El sistema permite realizar ventas, generando facturas
detalladas para cada transacción.
Componentes Principales
55
1. SalesController
Este controlador maneja la lógica relacionada con las ventas, incluyendo la creación de
nuevas ventas y la generación de facturas.
2. ProductController
3. ClientController y EmployeeController
Controlador para la gestión de facturas. Genera facturas detalladas para cada venta
realizada.
5. SalesUI
56
57
Uso
Personalización y Extensión
El sistema puede ser personalizado y extendido según sea necesario. Algunas posibles áreas
de mejora incluyen:
• Adición de funcionalidades adicionales, como la edición o eliminación de ventas y
productos.
• Mejoras en la presentación de la interfaz de usuario y la generación de facturas.
• Implementación de autenticación de usuarios y roles para restringir el acceso a ciertas
funcionalidades.
Notas de Seguridad
Conclusiones
El Sistema de Gestión de Ventas proporciona una herramienta robusta para realizar ventas
y generar facturas detalladas. Se recomienda revisar el código existente y seguir las
convenciones de codificación establecidas al realizar modificaciones o extensiones.
58
Este manual del programador proporciona una visión general del sistema, sus componentes
y cómo pueden ser personalizados o extendidos.
Ui
Sistema de Gestión de Tienda
Introducción
Este manual proporciona una guía detallada para los desarrolladores que trabajan en el
Sistema de Gestión de Tienda. El sistema proporciona una interfaz de usuario para
gestionar clientes, empleados, productos y ventas.
Componentes Principales
La clase Menu proporciona una interfaz de usuario para que los usuarios interactúen con el
sistema. Permite realizar diversas acciones, como gestionar clientes, productos, ventas y
empleados.
59
2. Controladores
3. Modelos
Los modelos (Client, Employee, Product, Sale) definen la estructura de datos para las
entidades del sistema, como clientes, empleados, productos y ventas.
Uso
El sistema puede ser personalizado y extendido según sea necesario. Algunas posibles áreas
de mejora incluyen:
Notas de Seguridad
Conclusiones
El Sistema de Gestión de Tienda proporciona una herramienta completa para gestionar una
61
tienda, desde la gestión de clientes y empleados hasta el seguimiento de productos y ventas.
Se recomienda revisar el código existente y seguir las convenciones de codificación
establecidas al realizar modificaciones o extensiones.
Este manual del programador proporciona una visión general del sistema, sus componentes
y cómo pueden ser personalizados o extendidos.
Main
Sistema de Interfaz de Usuario
Introducción
Este manual proporciona una guía para los desarrolladores que trabajarán en el desarrollo y
mantenimiento del sistema de interfaz de usuario. El sistema permite a los usuarios
interactuar con diferentes opciones a través de un menú interactivo.
Componentes Principales
La clase Menu maneja la presentación del menú principal y permite al usuario seleccionar
opciones. Contiene los siguientes métodos principales:
- main(): Muestra el menú principal y solicita al usuario que seleccione una opción.
- select_option(opcion): Procesa la opción seleccionada por el usuario y ejecuta la acción
correspondiente.
Uso
3. Interacción con el Menú: El usuario podrá ver el menú principal y seleccionar una
opción.
4. Ejecución de Acciones: Cada opción del menú ejecutará una acción específica en el
sistema.
5. Repetición del Proceso: Después de cada acción, el usuario puede seleccionar otra
opción del menú o salir del programa.
Personalización y Extensión
El sistema de interfaz de usuario puede ser personalizado y extendido según sea necesario.
Algunas posibles áreas de mejora incluyen:
- Adición de nuevas opciones al menú para incorporar funcionalidades adicionales.
- Mejoras en la presentación del menú y la interfaz de usuario para hacerla más intuitiva y
atractiva.
Notas de Seguridad
- Se debe validar la entrada del usuario para evitar posibles vulnerabilidades, como la
inyección de código o SQL.
- Se debe tener cuidado al manejar datos sensibles del usuario, como contraseñas o
información personal.
Conclusiones
El Sistema de Interfaz de Usuario proporciona una forma fácil y accesible para que los
usuarios interactúen con el sistema y realicen diferentes acciones. Se recomienda revisar y 64
mantener el código de manera regular para garantizar su correcto funcionamiento y
seguridad. Este manual del programador proporciona una visión general del sistema de
interfaz de usuario, sus componentes y cómo pueden ser utilizados y mejorados.