TP 1 - Memoria Dinámica Manual - Universidad

Personas de una Universidad.

Suponga que trabaja en la construcción de un sistema que mantiene información acerca de las personas relacionadas con una universidad. Éstas cumplen distintos roles: Algunos son (o fueron) alumnos, algunos son docentes, otros son egresados. De cada persona en cada rol, la información que nos interesa guardar es distinta. Siempre ocurre que de un egresado queremos mantener la información que tenía como alumno. Muchas veces los docentes son también egresados. Esto nos lleva a pensar que los datos de los roles en nuestro programa son datos opcionales. Vamos a usar la memoria dinámica para utilizar solo la memoria que realmente necesitamos para el ingreso de una persona.

Datos que interesa de las personas:

  • De todas las personas:
    • Nombre (máximo 30 caracteres)
    • Apellido (máximo 30 caracteres)
    • Fecha de nacimiento
  • Si la persona es o fue alumno:
    • legajo de alumno (un número de hasta 8 dígitos)
    • fecha de ingreso a la universidad
    • cantidad de materias aprobadas
  • Si la persona es egresado:
    • fecha de egreso
    • si se graduo con honores
  • Si la persona es docente
    • perfil (un campo de texto de hasta 65000 caracteres)
    • horas que trabaja por semana.

Se pide:

Parte 1. Funciones

  • una función que reciba los datos básicos de una persona, reserve la cantidad de memoria mínima de una persona, complete los datos básicos y devuelva un puntero a la misma.
  • una función que dada una persona y los datos de alumno para esa persona, asocia los mismos a esa persona. Es decir, reserva la memoria para los datos del alumno y asocia mediante un puntero los datos de la persona con su rol alumno.
  • similar a la función anterior, pero para el rol egresado
    • similar a la función anterior, pero para el rol docente.
    • una función que libera todo el espacio reservado para una persona (tanto datos básicos como sus roles)

Parte 2. Pruebas

  • Las funciones desarrolladas anteriormente serán usadas en el programa final, pero en el contexto de este TP no necesitamos hacer todo el sistema. Sin embargo vamos a realizar una serie de programas que prueben nuestras funciones. Nuestros programas utilizarán datos hardcodeados evitando de esta manera tener que probarlo ingresando datos manualmente durante su uso. Como vamos a tener varios programas que usan las mismas funciones, es necesario extraer dichas funciones a una librería.
  • Todos los programas van a necesitar una función que dada una persona imprima todos los datos relacionados al mismo. Así que esta función también debe estar en una librería aparte. Por comodidad podemos usar la misma librería que desarrollamos previamente, pero bien podría ser otra independiente haciendo una mejor separación entre la prueba de nuestras funciones y las funciones en sí.

Se pide realizar los siguientes programas:

  • Un programa que ingresa al alumno Juan Pérez, nacido el 21/4/1990, legajo 12010011, ingreso a la universidad el 1/3/2008 y aprobó 10 materias. Imprime todos los datos y luego libera la memoria
  • Un programa que ingresa a la alumna y egresada Julieta Gómez, nacida el 4/4/1985, legajo 11000123, ingreso a la universidad el 20/2/2003, aprobó las 40 materias, egresó el 18/11/2009 con honores. Imprime todos los datos y luego libera la memoria.
  • Un programa que ingresa al docente Marcelo González, nacido el 11/12/1978, no fue alumno ni es egresado de esta universidad. Trabaja 20 horas por semana y el texto de su perfil es: Excelente para materias relacionadas a la programación estructurada y a la orientada a objetos. Alta capacidad pedagógica. Luego imprime todos los datos y libera la memoria.