Skip to main content

Primera tarea programada

Valor 33%

Desarrolla un programa en Python que simule un sistema de gestión de pedidos y usuarios para un comercio electrónico. El programa deberá interactuar con una base de datos que contiene información sobre usuarios, productos y pedidos. Además, se requiere agregar funcionalidad de registro de logs para diferentes acciones del sistema.

  1. Consulta de Pedidos:

    • Los usuarios podrán consultar sus pedidos anteriores, mostrando la fecha del pedido, el estado, el total y los productos incluidos en cada pedido con su cantidad y subtotal.
    • Se registrará un log cada vez que se realice una consulta de pedidos.
  2. Realización de Pedidos:

    • Los usuarios podrán realizar nuevos pedidos seleccionando productos de un catálogo.
    • El programa mostrará al usuario el catálogo de productos disponibles, incluyendo el nombre, descripción, precio y stock disponible de cada producto.
    • El usuario podrá seleccionar los productos que desea comprar, indicando la cantidad de cada uno.
    • Después de confirmar la selección, el sistema registrará el pedido en la base de datos, actualizando el stock de los productos seleccionados y calculando el total del pedido.
    • Se registrará un log cada vez que se registre un nuevo pedido.
  3. Registro de Usuarios:

    • El programa permitirá a los usuarios registrarse en el sistema proporcionando su nombre, apellido, correo electrónico, fecha de nacimiento y país.
    • Los usuarios registrados podrán luego iniciar sesión en el sistema utilizando su correo electrónico y una contraseña.
    • Se registrará un log cada vez que se registre un nuevo usuario.
  4. Registros de Logs:

    • Se deberá implementar la funcionalidad de logs para registrar diferentes acciones del sistema, como consultas de pedidos, realización de pedidos, registro de usuarios y cualquier error que pueda ocurrir durante la ejecución del programa.
    • Los registros de logs deben incluir la fecha y hora de la acción, el tipo de acción (consulta, pedido, registro de usuario, error), y cualquier información adicional relevante, como el ID del usuario o del pedido.
    • Los registros de logs se guardarán en un archivo de texto para su posterior revisión.
  5. Restricciones de Diseño:

    • El archivo main no puede contener funciones definidas.
    • Las funciones no pueden contener solicitudes de entrada (inputs) dentro de ellas. Toda la entrada de datos debe ser manejada desde el main y pasada como argumentos a las funciones según sea necesario.
# Ejemplo de menú

Bienvenido al Sistema de Gestión de Pedidos y Usuarios

1. Consultar Pedidos
2. Realizar Pedido
3. Registrarse
4. Salir

Seleccione una opción:


Consulta de Pedidos:

Fecha del Pedido: 2024-04-15
Estado: Pendiente
Total: $1099.97

Detalles del Pedido:
1. Producto: PlayStation 5
- Cantidad: 1
- Precio unitario: $499.99
- Subtotal: $499.99

2. Producto: Nintendo Switch
- Cantidad: 2
- Precio unitario: $299.99
- Subtotal: $599.98


Fecha del Pedido: 2024-04-17
Estado: Entregado
Total: $499.99

Detalles del Pedido:
1. Producto: PlayStation 5
- Cantidad: 1
- Precio unitario: $499.99
- Subtotal: $499.99

Realizar Pedido:

Catálogo de Productos Disponibles:
-----------------------------------
ID Nombre Descripción Precio Stock
-----------------------------------
1. PlayStation 5 Consola de videojuegos de última generación $499.99 10
2. Xbox Series X Consola de videojuegos de última generación $499.99 15
3. Nintendo Switch Consola de videojuegos híbrida $299.99 20
-----------------------------------

Seleccione los productos que desea comprar (separados por comas): 1,3
Ingrese la cantidad para cada producto (separados por comas): 1,2

# Documentación de una función

def calcular_total(precios, cantidades):
"""
Calcula el total de una compra en base a los precios y cantidades de los productos.

Args:
precios (list): Una lista de los precios de los productos.
cantidades (list): Una lista de las cantidades de los productos.

Returns:
float: El total de la compra.
"""
total = sum(precio * cantidad for precio, cantidad in zip(precios, cantidades))
return total