Está en la página 1de 5

INSTRUCCIONES PIA

PROGRAMACIÓN AVANZADA PYTON


RECURSOS RECOMENDADOS
 Código comentado que he colocado en mi repositorio en GitHub
https://github.com/FelipeRamirezPhD/AprendiendoPython
 Curso de Python, en W3Schools https://www.w3schools.com/python/default.asp
 Programas enviados por Chat en sesiones TEAMS

ESCENARIO DE TRABAJO
Un equipo de futbol está rifando artículos oficiales firmados por los jugadores estrella del equipo.

Lo único que tienen que hacer los participantes es hacer una donación a una institución de apoyo a personas con
discapacidad, y registrar la aportación realizada, que deberá registrarse en una aplicación que les pregunta el correo
electrónico, el nombre completo, la fecha de nacimiento; monto aportado a la asociación (cantidad monetaria), folio de
la aportación (número de 5 dígitos); e Internamente, al momento del registro, se guarda también el momento en que se
realiza el registro, que representa la fecha y hora del sistema.

Todos los datos son obligatorios. El correo debe tener un formato válido de correo, y debe tener una longitud que va de
los 10 a los 40 caracteres; el nombre debe estar escrito en mayúsculas, y sólo contener letras sin acento y espacios en
blanco, con una longitud que va de los 5 a los 40 caracteres; la fecha de nacimiento debe estar en un formato yyyy-mm-
dd, y ser una fecha válida; el monto debe ser una cantidad monetaria, superior a cero; el momento es la hora del sistema
es de tipo datetime.

Te han pedido que implementes una aplicación que permita capturar la información de los participantes; te han
prohibido usar cualquier base de datos, así que la información debe almacenarse en un archivo CSV delimitado por pipes
(|).
FUNCIONAMIENTO DEL PROGRAMA
FUNCIONALIDAD PROGRAMADE REFERECIA
Se debe crear un programa llamado clases.py que solo contenga la clase_herencia.py
definición de una clase llamada Participante, que represente la
información a registrar.

Las propiedades de la clase son correo, nombre, nacimiento y momento.

La clase debe tener un constructor que incluya todos los datos; es


importante mencionar que la propiedad momento es opcional, y que en
caso de que no se proporcione al momento de la instanciación, el
programa debe asignar la fecha y hora del sistema al momento de la
instanciación.

Se debe crear un programa llamado registro.py, que importe la clase llamada_externa.py


Participante que se encuentra en clases.py procedimientos_funciones.py

El programa registro.py es el programa principal del proyecto, y tendrá un


procedimiento llamado main, que actuará como entry point del programa.
Ninguna funcionalidad se puede ejecutar desde otro lugar que de main, y
sus derivados.

Se debe crear un procedimiento que construya un menú de consola (menú menu_consola.py


principal), que tenga las siguientes opciones:

[1] Cargar información de CSV


[2] Registrar participantes
[3] Buscar participante
[4] Modificar participante
[5] Eliminar participante
[6] Ver lista de participantes
[7] Actualizar información de CSV
[X] Salir
¿Qué opción deseas? 

El procedimiento se manda llamar desde main, y puede mandar llamar


otros procedimientos para brindar el resto de la funcionalidad.
FUNCIONALIDAD PROGRAMADE REFERECIA
Para la funcionalidad [1] Cargar información de CSV se debe hacer lo trabajo_archivos.py
siguiente: csv_a_lista.py
csv_a_lista2.py
a) Si el archivo no existe (primera vez que se utiliza el programa), debe
crearse el archivo CSV, agregando una línea de encabezado, delimitado
con pipes;
b) si el archivo ya existe, el archivo se abre, y se usa la información de cada
una de las líneas de datos para instanciar la clase Participante, y cargarlos
a una lista de objetos.

Sugiero que la lista de objetos tenga alcance global, porque se requerirá


en múltiples partes.

Al final de esta opción, en el caso a) Se tiene el archivo CSV creado y la lista


de objetos vacía; en el caso de b) Se tiene el archivo CSV creado y con
datos, y la lista de objetos conteniendo un objeto generado a partir de
Participante, por cada línea de datos leída.

TIP: También se puede hacer una implementación usando un diccionario,


donde el correo sea key, y donde el valor sea un objeto basado en
Participante.

Los participantes se identifican a través del correo electrónico. crud_lista_objetos.py


crud_lista.py
Se debe generar una función a la cual se le proporcione un correo crud_lista.pptx
electrónico, y que busque si está registrado en la lista alguien con ese
correo; en caso de que encuentre coincidencias, la función debe retornar
el índice del elemento que coincide (número entre 0 y el número de
elementos en la lista); en caso de que no encuentre coincidencias debe
retornar -1.

Esta función es esencial para el manejo de operaciones tipo CRUD.

Para la opción [2] Registrar participantes, se debe tener un proceso crud_lista_objetos.py


infinito que se comporte de la siguiente manera: crud_lista.py
a. Debe preguntar un correo electrónico válido. crud_lista.pptx
b. Si se omite el correo, quiere decir que se desea salir del ciclo, y
regresar al menú principal.
c. Si no se omite el correo, revisa si está registrado o no.
d. En caso de que ya esté registrado, el programa informará “Ese
correo ya está registrado”, y regresa a menú principal.
e. Si no está registrado, pregunta los datos faltantes (nombre y fecha
de nacimiento), genera una instancia de Participante con los
datos, y los carga a la lista de objetos.
Para la opción [3] Buscar participante, se debe tener un proceso infinito crud_lista_objetos.py
que se comporte de la siguiente manera: crud_lista.py
a. Debe preguntar un correo electrónico válido. crud_lista.pptx
b. Si se omite el correo, quiere decir que se desea salir del ciclo, y
regresar al menú principal.
c. Si no se omite el correo, revisa si está registrado o no.
d. En caso de que ya esté registrado, debe mostrar la información del
participante.
FUNCIONALIDAD PROGRAMADE REFERECIA
e. En caso de que no se encuentre el correo, debe notificar “Ese
correo no está registrado en la lista”.
f. En ambos casos, al terminar, regresa a menú principal.
Para la opción [4] Modificar participante, se debe tener un proceso crud_lista_objetos.py
infinito que se comporte de la siguiente manera: crud_lista.py
a. Debe preguntar un correo electrónico válido. crud_lista.pptx
b. Si se omite el correo, quiere decir que se desea salir del ciclo, y
regresar al menú principal.
c. Si no se omite el correo, revisa si está registrado o no.
d. En caso de que ya esté registrado, debe mostrar la información del
participante, y debe preguntar los nuevos valores de nombre y
fecha de nacimiento, y debe actualizar la información del objeto
en la lista.
e. En caso de que no se encuentre la información, debe notificar “Ese
correo no está registrado en la lista”.
f. En ambos casos, al terminar, regresa a menú principal.

Para la opción [5] Eliminar participante, se debe tener un proceso crud_lista_objetos.py


infinito que se comporte de la siguiente manera: crud_lista.py
a. Debe preguntar un correo electrónico válido. crud_lista.pptx
b. Si se omite el correo, quiere decir que se desea salir del ciclo, y
regresar al menú principal.
c. Si no se omite el correo, revisa si está registrado o no.
d. En caso de que ya esté registrado, debe mostrar la información del
participante, y debe preguntar ¿Deseas eliminar este registro?
e. En caso afirmativo, se elimina el objeto de la lista.
f. En caso de que no se encuentre la información, debe notificar “Ese
correo no está registrado en la lista”.
g. En ambos casos, al terminar, regresa a menú principal.

Para la opción [6] Ver lista de participantes, se debe hacer una lectura lista-tabular.py
secuencial de la lista, y mostrar los datos de forma tabular.

correo nombre registro


-------------- ----------- -----------

TIP: Usar {:20} (por ejemplo), en format()


Para la opción [7] Actualizar información de CSV, se debe copiar el lista_a_csv.py
archivo CSV actual a un respaldo (BAK), luego, se elimina el archivo CSV
actual, y se genera un nuevo CSV que contendrá la información que tiene
la lista de objetos.

La opción [X] Salir, termina la ejecución del programa.

Al ingresar de nuevo, debe cargar la última información almacenada en el


CSV.

Eso es lo mínimo que debe traer el proyecto. Si pueden meterle más sofisticación, adelante.
El código del proyecto debe estar comentado con aspectos relevantes que consideren dejar anotados, para su propio
aprendizaje.

Cada procedimiento (def) o clase (class), debe incluir un comentario que indique qué miembro o miembros del equipo lo
elaboraron.

GENERALIDADES DEL PROYECTO


Debe ser elaborado por equipos de 3 a 5 personas.

Todos deben participar en la codificación.

El trabajo se entregará subiendo dos archivos: El PDF con el trabajo, y un ZIP con el código realizado. Se generará una
tarea en TEAMS para recibir el PIA, con un límite de entrega del 17 de noviembre de 2021, a las 23:59 horas. SOLO
DEBERÁ SUBIRLO UNA PERSONA DEL EQUIPO, NO TODAS (recomiendo verificación por parte de alguien).

ELEMENTOS DEL TRABAJO

1. PORTADA
a. Nombre de la universidad
b. Nombre de la facultad
c. Nombre de la materia
d. Nombre del maestro (Dr. Felipe Ramírez)
e. Tabla de participantes (Nombre, Matrícula, % de participación en la elaboración del trabajo).
f. Lugar y Fecha.
2. Trabajo colaborativo
a. Anotar en esta sección cómo fue que distribuyeron el trabajo, y cómo fue que consolidaron la
participación de todos. Aquí se pueden anexar screen shoots de sesiones en TEAMS que hayan realizado,
y así.
b. Anotar aquí, individualmente cada quién: a) Qué les gustó del trabajo colaborativo, y b) Qué mejorarían
ustedes para coordinarse mejor para este tipo de trabajo.
3. Programa
a. Incluir aquí el código desarrollado.
b. No olvidar agregar en forma de comentarios, quién trabajó qué cosa.
4. Comprobación
a. Agregar evidencias, pantallas y archivos que comprueben que el programa funciona como debe.
b. También se puede grabar en video el uso del programa en todas sus opciones, e incluir la liga de
YouTube para poder revisar el funcionamiento.
5. Conclusiones
a. Cada miembro del equipo exprese sus impresiones de lo que fue trabajar este semestre de manera
virtual, y comentar los pros y contras que le ven a esta modalidad. Indicar sugerencias ¿qué mejorarían?
6. Referencias bibliográficas
a. Usar estilo APA
b. Anotar libros o sitios en internet que fueron útiles para la solución del trabajo.

Espero sus trabajos.

También podría gustarte