Este proyecto es una aplicación de consola en Python que permite gestionar una lista de contactos mediante operaciones CRUD (Crear, Leer, Actualizar, Eliminar). Está diseñado siguiendo el patrón de diseño Modelo-Vista-Controlador (MVC) y aplicando principios de Programación Orientada a Objetos (POO).
Los contactos se almacenan temporalmente en una lista de diccionarios en memoria RAM.
- CRUD Completo: Permite crear, ver, actualizar y eliminar contactos.
- Búsqueda Avanzada: Búsqueda por nombre (parcial e insensible a mayúsculas) y por teléfono (exacta).
- POO y Herencia: Utiliza clases
PersonayContactoModelocon herencia. - Validaciones: No permite valores nulos en campos obligatorios (nombre, teléfono, email).
- Interfaz de Usuario: Menú interactivo con limpieza de pantalla automática y visualización de datos en formato tabular.
- Actualización Inteligente: Permite presionar
Enterdurante la actualización para mantener el valor existente del campo.
El proyecto está dividido en 3 archivos principales siguiendo el patrón MVC, más el archivo punto de entrada:
/Proyecto_CRUD_Contactos/├── app_contacto.py: El punto de entrada principal de la aplicación.├── ModeloContacto.py: Gestión de datos y clases (Modelo)├── VistaContacto.py: Interfaz de usuario y visualización (Vista)├── ControladorContacto.py: Lógica de control (Controlador)├── doc/: Documentos o presentaciones acerca del desarrollo del proyecto.├── Pruebas/: Directorio que contiene las pruebas funcionales del sistema.└──PruebaContactos.py: Pruebas funcionales del sistema.
└── README.md: Documentación del proyecto
Se requiere una librería externa de Python para el formato tabular:
tabulate
Instálala usando pip:
bash pip install tabulate
Para ejecutar la aplicación, navega hasta el directorio raíz del proyecto en tu terminal y ejecuta el archivo principal app_contacto.py con Python:
bash python app_contacto.py
Al iniciar la aplicación, se mostrará el menú principal. Puedes navegar usando las opciones numéricas o la letra 'B' para buscar:
--- Gestión de Contactos (CRUD MVC) ---
- 1. Crear Contacto
- 2. Ver Contactos
- 3. Actualizar Contacto
- 4. Eliminar Contacto
- B. Buscar Contacto
- 5. Salir
Seleccione una opción: Ejemplo de Visualización Tabular La opción "2. Ver Contactos" utiliza la librería tabulate para mostrar los datos de manera ordenada:
--- Lista de Contactos ---
| Índice | Nombre | Teléfono | Dirección | |
|---|---|---|---|---|
| 0 | Ana García | 123456789 | ana@ejemplo.com | Calle A |
| 1 | Luis Pérez | 987654321 | luis.p@ejemplo.com | Calle B |
El modelo de datos sigue un enfoque de herencia:
classDiagram
class Persona {
+String nombre
+String telefono
+get_info_basica()
}
class ContactoModelo {
+String email
+String direccion
+to_dict() Dict
}
Persona <|-- ContactoModelo
Se ha incorporado un conjunto de pruebas funcionales para asegurar la integridad y el correcto funcionamiento de la lógica del Modelo (GestorContactos).
El archivo clave es Pruebas/PruebaContactos.py.
Las pruebas utilizan la librería estándar de Python unittest y se centran en el flujo de trabajo del usuario (pruebas funcionales) interactuando directamente con el GestorContactos:
test_creacion_y_lectura_contacto: Verifica que un nuevo contacto añadido pueda ser leído correctamente y que la lista aumente su tamaño.test_flujo_actualizacion: Asegura que la información de un contacto existente pueda ser modificada (ej. cambiar teléfono) y que el cambio se persista.test_flujo_eliminacion: Confirma que un contacto puede ser eliminado de la lista y que ya no se puede acceder a él.test_busqueda_por_nombre: Valida que la función de búsqueda por nombre parcial (buscar_contactos(criterio='nombre')) devuelva los resultados esperados (ej. buscar "Luis" devuelve 2 contactos).test_busqueda_por_telefono: Valida que la búsqueda por número de teléfono exacto (buscar_contactos(criterio='telefono')) funcione correctamente.
Para ejecutar el conjunto completo de pruebas funcionales, sigue estos pasos desde tu terminal:
- Asegúrate de estar en el directorio raíz del proyecto (
Proyecto_CRUD_contactos). - Ejecuta el siguiente comando:
bash python Pruebas/PruebaContactos.py
- Autor: Garcy Valenzuela Peña
- Email: garcyv@gmail.com