Download Trabajo Especial Sistema organizador de turnos

Document related concepts
no text concepts found
Transcript
Laboratorio 2. Trabajo especial para aprobación de segundo parcial.
Trabajo Especial
El siguiente trabajo debe entregarse en la fecha determinada (preguntar a Claudio).
Sistema organizador de turnos
Se solicita programar un sistema organizador de turnos de pacientes (para varios médicos).
El sistema debe contemplar las siguientes funcionalidades:
●
administrar obras sociales
1. cargar lista desde archivo (al comenzar el programa).
2. agregar nueva obra social en la lista (verificando que no existe en la lista).
3. buscar descuento de una obra social en la lista (si no se encuentra retorna -1)
4. cargar el archivo con el contenido de la lista (al finalizar el programa)
5. eliminar todos los elementos de la lista (luego de cargarla en el archivo).
●
Administrar archivo de médicos
1. agregar un médico al archivo (verificar que no se repita, puede ayudarse con la función
siguiente)
2. buscar honorarios de un médico (si no se encuentra retorna -1)
●
Administrar turnos
1. inicializar el arreglo estableciendo la variable pacientes en NULL,
2. agregar un nuevo turno, para ello se debe pasar como parámetro a la función los siguientes
datos: médico, hora, paciente y obra social:
1. verificando primero la existencia del médico en el archivo,
2. si es necesario agregar el médico al arreglo.
3. crear el nodo con el resto de los datos y agregarlo al árbol correspondiente
3. calcular el importe que debe abonar un paciente considerando el médico y la obra social.
4. listar todos los pacientes de un determinado médico (in order)
5. calcular el importe que cobrará un médico sumando lo que deben pagar sus pacientes
6. listar todos los pacientes de todos los médicos, separados por médico (invocar la función 4).
Realizar un menú que permita la aplicación de todas las funciones.
Estructuras de datos que se deben utilizar
Estructura: lista vinculada
Nombre de la variable: lista_os
contiene una lista de obras sociales con sus descuentos. Trabaja almacenando sus datos en un archivo.
Laboratorio 2. Trabajo especial para aprobación de segundo parcial.
struct NodoListaOS
{
char obraSocial[30];
int descuento;
struct NodoListaOS * ste;//no se usa para el registro del archivo
//crear otra estructura para el archivo.
};
Estructura: arbol binario
Nombre de la variable: corresponde con la variable turnos[i].pacientes, que es un campo de una celda del
arreglo de arboles
struct NodoArbol
{
int hora;
char paciente[30];
char obraSocial[30];
struct NodoArbol *izq;
struct NodoArbol *der;
};
Estructura: arreglo de arboles
Nombre de la variable: turnos
contiene todos los turnos clasificados por medico y ordenado en un arbol binario por hora
struct Celda
{
char medico[30];
NodoArbol *pacientes;
};
Estructura: archivo de registros
Nombre de la variable: arch_medicos
contiene los médicos con sus honorarios.
struct Registro
{
char medico[30];
float honorarios;
};