Generation

generate functionSat, 30 Aug 2025

La aplicación debe ser desarrollada en Python, utilizando programación orientada a objetos (POO) y estructuras de datos como listas, diccionarios y tuplas. Debe incluir funcionalidades básicas (CRUD: Crear, Leer, Actualizar, Eliminar) y avanzadas (gestión de archivos, manejo de excepciones y uso de módulos de fecha y hora).

**Aplicación de Gestión de Tareas** ### Requisitos * Python 3.8+ * Módulos `datetime`, `json`, `os` ### Estructura del Código La aplicación estará dividida en tres módulos: * `tarea.py`: Contendrá la clase `Tarea` que representará una tarea. * `gestor.py`: Contendrá la clase `Gestor` que se encargará de la gestión de tareas. * `main.py`: Contendrá el código principal de la aplicación. ### Módulo `tarea.py` ```python # tarea.py class Tarea: def __init__(self, id, nombre, descripcion, fecha_creacion=None): self.id = id self.nombre = nombre self.descripcion = descripcion self.fecha_creacion = fecha_creacion or datetime.datetime.now() def __str__(self): return f"Tarea {self.id}: {self.nombre} - {self.descripcion}" ``` ### Módulo `gestor.py` ```python # gestor.py import json import os from datetime import datetime from tarea import Tarea class Gestor: def __init__(self, archivo_tareas="tareas.json"): self.archivo_tareas = archivo_tareas self.tareas = self.cargar_tareas() def cargar_tareas(self): try: with open(self.archivo_tareas, "r") as archivo: return [Tarea(**tarea) for tarea in json.load(archivo)] except FileNotFoundError: return [] def guardar_tareas(self): with open(self.archivo_tareas, "w") as archivo: json.dump([{"id": tarea.id, "nombre": tarea.nombre, "descripcion": tarea.descripcion, "fecha_creacion": tarea.fecha_creacion.isoformat()} for tarea in self.tareas], archivo) def crear_tarea(self, nombre, descripcion): tarea = Tarea(len(self.tareas) + 1, nombre, descripcion) self.tareas.append(tarea) self.guardar_tareas() return tarea def leer_tarea(self, id): for tarea in self.tareas: if tarea.id == id: return tarea return None def actualizar_tarea(self, id, nombre=None, descripcion=None): tarea = self.leer_tarea(id) if tarea: if nombre: tarea.nombre = nombre if descripcion: tarea.descripcion = descripcion self.guardar_tareas() return tarea return None def eliminar_tarea(self, id): tarea = self.leer_tarea(id) if tarea: self.tareas.remove(tarea) self.guardar_tareas() return True return False ``` ### Módulo `main.py` ```python # main.py import gestor from datetime import datetime def main(): gestor_app = gestor.Gestor() while True: print("1. Crear tarea") print("2. Leer tarea") print("3. Actualizar tarea") print("4. Eliminar tarea") print("5. Salir") opcion = input("Ingrese una opción: ") if opcion == "1": nombre = input("Ingrese el nombre de la tarea: ") descripcion = input("Ingrese la descripción de la tarea: ") tarea = gestor_app.crear_tarea(nombre, descripcion) print(f"Tarea creada con éxito: {tarea}") elif opcion == "2": id = int(input("Ingrese el ID de la tarea a leer: ")) tarea = gestor_app.leer_tarea(id) if tarea: print(f"Tarea encontrada: {tarea}") else: print("Tarea no encontrada") elif opcion == "3": id = int(input("Ingrese el ID de la tarea a actualizar: ")) nombre = input("Ingrese el nuevo nombre de la tarea (dejar vacío para no cambiar): ") descripcion = input("Ingrese la nueva descripción de la tarea (dejar vacío para no cambiar): ") tarea = gestor_app.actualizar_tarea(id, nombre or None, descripcion or None) if tarea: print(f"Tarea actualizada con éxito: {tarea}") else: print("Tarea no encontrada") elif opcion == "4": id = int(input("Ingrese el ID de la tarea a eliminar: ")) if gestor_app.eliminar_tarea(id): print("Tarea eliminada con éxito") else: print("Tarea no encontrada") elif opcion == "5": break else: print("Opción inválida") if __name__ == "__main__": main() ``` ### Ejecución Para ejecutar la aplicación, simplemente ejecutar el archivo `main.py` con Python: ```bash python main.py ``` ### Uso La aplicación permitirá realizar las siguientes acciones: * Crear una nueva tarea ingresando el nombre y descripción de la tarea. * Leer una tarea ingresando el ID de la tarea. * Actualizar una tarea ingresando el ID de la tarea y los nuevos valores para el nombre y descripción. * Eliminar una tarea ingresando el ID de la tarea. La aplicación utilizará un archivo JSON para almacenar las tareas, por lo que es importante tener en cuenta que el archivo se actualizará automáticamente cada vez que se realice una acción.

Want to kickstart your project?Use the new AI Studio to create your code