Introducción
Como estudiantes, identificamos la necesidad de una herramienta que nos ayude a organizar
nuestras actividades académicas, por lo que decidimos desarrollar una agenda virtual para
facilitar esa gestión.
Esta agenda le permite a dos tipos de usuarios diferentes, estudiantes y profesores, poder
ordenar distintas actividades tales como: Fechas de exámenes, horarios de entrega, listado de
actividades, entre otras.
Diccionarios
Primero, abordamos el concepto de diccionarios, una estructura de datos que permite
almacenar información en forma de pares clave-valor, definidos entre llaves `{}`. En nuestro
caso, utilizamos diccionarios para organizar datos de usuarios, materias, profesores y carreras.
Las materias y carreras registradas son las siguientes:
Ingeniería informática: Fundamentos de informática, Teoría de Sistemas, Sistemas de
Información, Pensamiento Crítico y Elementos de Algebra
Abogacía: Historia del Derecho, Inst. del Derecho Priv. 1, Teo. General del Derecho, Estado y
Sociedad
y Lenguaje Logica y Argumentacion
Contaduría: Matemática Empresarial 1, Administración Emp. 1, Economia, Introduccion a la
Contabilidad y Introducción al Derecho
Arquitectura: Arquitectura, Modelado y Representación, Física, Pensamiento Matemático 1 e
Historia de la Arquitectura
Funciones
La función verificar_alum() pide al usuario ingresar un número de legajo (ID), lo busca en el
diccionario usuarios y verifica si existe. Si no lo encuentra, solicita al usuario que vuelva a
ingresar el legajo hasta que sea válido. Una vez que se encuentra un legajo válido, imprime el
usuario asociado y retorna el número de legajo. El objetivo es asegurar que se ingrese un
legajo correcto antes de continuar.
La función `verificar_prof()` solicita al usuario que ingrese un número de legajo de 3 dígitos, y
verifica si existe en el diccionario `profesores`. Si el legajo no está en el diccionario, se le pide
al usuario que lo ingrese nuevamente en un ciclo `while` hasta que sea válido. Una vez
encontrado, extrae el nombre del profesor asociado (tomando la primera clave de los datos del
profesor en el diccionario), lo muestra y finalmente devuelve el número de legajo ingresado.
La función carrera_cursada() toma dos parámetros: un diccionario materias y un id_legajo.
Busca en el diccionario materias el valor asociado con el legajo proporcionado (convirtiendo el
id_legajo a entero). Si existe una entrada para ese legajo (dic_car), extrae y devuelve la
primera clave del diccionario correspondiente, que representa la carrera cursada. Si no se
encuentra ninguna entrada, devuelve None.
La función lista_profe busca información específica sobre un profesor utilizando dos
identificadores: id_legajo, que se usa para acceder al diccionario de profesores, y legajo, que
se utiliza para obtener información detallada del profesor en cuestión. Si no se encuentra
información en cualquiera de los pasos, devuelve None
La función carrera_cursada busca las materias cursadas por un estudiante a partir de su
id_legajo. Si encuentra datos, devuelve la primera materia registrada; si no, devuelve None.
La función lista_materias busca la lista de materias cursadas por un estudiante a partir de su
id_legajo. Si encuentra la información, devuelve la lista de materias asociadas a la carrera del
estudiante; si no, devuelve None.
La función li_materias se utiliza para mostrar una lista de materias cursadas por un estudiante,
utilizando su id_legajo. Llama a la función lista_materias para obtener la lista y luego imprime
cada materia en un formato fácil de leer, precedida por un asterisco. Si el estudiante no tiene
materias, la función podría no mostrar nada, dependiendo del comportamiento de
lista_materias
La función alumnos() recibe un diccionario usuarios y un id_carrera como parámetros. Recorre
el diccionario y, si los dos primeros caracteres de la clave (legajo) coinciden con el id_carrera,
imprime el nombre del alumno. Si no se encuentran coincidencias, muestra un mensaje
indicando que no se hallaron alumnos con ese prefijo.
La función cambio_legajo se utiliza para actualizar el legajo de un usuario en un diccionario de
usuarios. Verifica si el legajo actual existe, copia la información del usuario al nuevo legajo y
elimina el legajo antiguo. Al final, devuelve la información del usuario bajo el nuevo legajo.
La función eliminar_usuario se utiliza para eliminar un usuario de un diccionario basado en su
legajo. Verifica si el legajo existe y, si es así, elimina la entrada correspondiente; si no, informa
que el usuario no existe.
La función `obtener_fecha_aa_mm_dd()` pide día, mes y año al usuario y verifica si la fecha es
válida usando `validar_fecha()`. Si es válida, devuelve la fecha en formato `"dd-mm-aa"`; si no,
muestra un mensaje de error y repite el proceso hasta que se ingrese una fecha correcta.
La función validar_fecha(dd, mm, yy) verifica si una fecha es válida al comprobar que el año no
sea negativo, que el mes esté en el rango correcto y que el día sea válido, considerando los
días máximos permitidos para cada mes y si el año es bisiesto. Devuelve True si la fecha es
válida y False en caso contrario.
La función modificar_FT(legajo, carrera) está diseñada para modificar fechas y temas
de evaluaciones (como exámenes y tareas) de un estudiante en función de su carrera
específica.
La función permite a los estudiantes actualizar la fecha y el tema de una evaluación asociada a
las materias que están cursando. Dependiendo de la carrera a la que pertenece el estudiante,
el proceso de modificación se ejecuta en una estructura de datos específica para esa carrera.
Funcionamiento:
Primero, el sistema muestra las materias del estudiante. Dependiendo de la carrera del
estudiante, accedemos a un diccionario que tiene toda la información de las materias y sus
evaluaciones. El sistema recorre este listado y muestra las evaluaciones actuales, como el
Primer Parcial, el Examen Final o las Tareas, junto con las fechas y los temas asignados. Esto
le da al usuario una visión clara de la situación actual.
Luego, el usuario debe ingresar el nombre de la materia que desea modificar. Es importante
que el nombre coincida exactamente con el que aparece en el listado, ya que el sistema lo
valida. Si el nombre de la materia no es reconocido, se muestra un mensaje de error y se
finaliza el proceso. Esto asegura que el usuario seleccione una materia válida.
Una vez que el usuario ha seleccionado la materia, debe elegir el tipo de evaluación que quiere
modificar, por ejemplo, si es el Primer Parcial, el Segundo Parcial, una tarea o el Examen Final.
Nuevamente, el sistema valida que el tipo de evaluación exista. Si no existe, también se
muestra un mensaje de error y se termina el proceso.
En esta etapa, el sistema le pide al usuario una nueva fecha para la evaluación. Esta fecha se
ingresa en un formato específico, como año-mes-día, usando la función
obtener_fecha_aa_mm_dd(). Además, el sistema solicita que se ingrese el nuevo tema
asociado a esa evaluación. Ambos datos, la fecha y el tema, se actualizan en el diccionario
correspondiente, reflejando los cambios.
Después de la modificación, se confirma al usuario que los cambios fueron realizados con
éxito. Inmediatamente, el sistema imprime el estado actualizado de las evaluaciones de esa
materia, para que el estudiante pueda verificar que la fecha y el tema se cambiaron
correctamente.
Por último, el usuario tiene la opción de seguir haciendo más modificaciones. Puede elegir otra
materia o evaluación para actualizar, o simplemente ingresar “0” si ya no desea realizar más
cambios, finalizando el proceso.
Main
En el Main se encuentran una serie de menús que nos permiten interactuar y acceder a las
distintas funciones del programa.
El programa está diseñado para ejecutarse indefinidamente hasta que el usuario decida salir. El
primer while True: establece un bucle infinito, permitiendo que el menú se muestre
repetidamente después de cada acción o selección del usuario.
Al iniciar el anotador, aparece un menú principal que consulta si se quiere acceder como
alumno o como profesor.
Se asigna el valor 3 a la variable opciones, lo que indica que hay tres posibles opciones: una
para Alumnos [1] , otra para Profesores [2], y una para salir del programa [0].
El programa valida que el valor ingresado por el usuario esté dentro de las opciones válidas (0,
1 o 2). Esto se hace con la condición:
Se crea una lista de cadenas que va de "0" a "2", y se verifica si la opción ingresada está en
esa lista. Si el valor ingresado es válido, el bucle se rompe (break) y el flujo del programa
continúa. Si el valor es inválido, se muestra el mensaje "Opción inválida" y se le pide al
usuario que presione ENTER para intentarlo nuevamente.
En caso de elegir cualquiera de las dos opciones, que no sean salir del programa, se pide un
número de legajo que va a estar asociado a un usuario ya [Link] el programa
con alumnos y legajos predeterminados para facilitar la organización. Los legajos de los
alumnos tienen 4 dígitos y los de los profesores 3. El número que le sigue es el que define la
carrera: 0 (ing. informática), 1 (contaduría), 2 (arquitectura), 3 (abogacía). Hay dos alumnos y 4
profesores por carrera.
En el caso de que el valor ingresado sea válido y entrar como alumno, se va a abrir un
submenú con 4 opciones:
[1] Editar fecha de las tareas/ exámenes
[2] Editar perfil del usuario
[3] Listado de actividades
[4] Listado de materias
Alumnos
Cuando un alumno elige la opción [1] Alumnos en el menú principal, se inicia un flujo diseñado
para que pueda gestionar diferentes aspectos de su perfil académico. El sistema, primero,
realiza una verificación solicitando el número de legajo del estudiante a través de la función
verificar_alum(). Una vez que el sistema confirma el legajo, se identifica automáticamente la
carrera que cursa el alumno utilizando la función carrera_cursada(), lo que permite cargar las
materias correspondientes y personalizar el menú según su situación académica.
Después de esta identificación, se presentan tres opciones principales al alumno. La primera
opción es [1] Editar fechas de tareas/exámenes, que permite modificar las fechas asociadas a
sus evaluaciones o entregas de trabajos. Para ello, el sistema utiliza la función modificar_FT(),
que toma como referencia tanto el legajo del alumno como la carrera en la que está inscripto.
Esta opción resulta útil cuando hay cambios en el calendario académico o el alumno necesita
hacer ajustes en su planificación.
La segunda opción es [2] Editar perfil del usuario, donde el estudiante puede actualizar su
información personal. En este caso, se presentan dos subopciones. La primera es Eliminar
usuario, lo que le permite al alumno borrar su cuenta del sistema mediante la función
eliminar_usuario(). La segunda subopción es Cambiar de carrera, que al seleccionarse, genera
un nuevo número de legajo para el alumno a través de la función cambio_legajo(), asignándole
a su nueva carrera.
Por último, la tercera opción es [3] Listado de materias, que ofrece la posibilidad de consultar
todas las asignaturas que el estudiante está cursando en ese momento. Esta información se
presenta gracias a las funciones lista_materias() y li_materias(), que muestran detalladamente
las materias en las que está inscrito. Además, si el alumno ya no desea hacer ninguna
modificación o consulta, puede elegir la opción [0] Salir del programa para regresar al menú
principal.
Profesores
Cuando se selecciona la opción [2] Profesores en el menú principal, el sistema ofrece
herramientas diseñadas específicamente para la gestión de actividades relacionadas con los
profesores. En primer lugar, se realiza una identificación del profesor, en un proceso similar al
del menú de alumnos. El sistema solicita el número de legajo del docente mediante la función
verificar_prof(), y luego identifica la carrera en la que el profesor trabaja utilizando la función
carrera_cursada().
Una vez que se ha verificado al profesor, el menú presenta dos opciones principales. La
primera es [1] Editar perfil del usuario, donde el profesor tiene la posibilidad de actualizar su
información personal en el sistema mediante la función modificar_Prof(). Aunque el código no
detalla los campos específicos, se espera que esta opción permita al docente realizar los
ajustes necesarios en sus datos. La segunda opción es [2] Listado de alumnos, que le permite
al profesor visualizar el listado de estudiantes matriculados en la carrera que enseña, utilizando
la función alumnos(). Esto facilita una consulta rápida y eficiente de los estudiantes que están
bajo su responsabilidad.
Finalmente, si el profesor no desea hacer más cambios, tiene la opción [0] Salir del programa,
que le permite regresar al menú principal. Este menú está diseñado para que los profesores
puedan modificar su perfil y consultar el listado de alumnos de su carrera de manera rápida y
eficiente