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; };