#include <iostream>
using namespace std;
const int numCitas = 10;
const int KNOMBRE = 40;
const int KDNI = 9;
typedef struct{
int dia, mes, anyo;
}Fecha;
typedef struct{
int h, m;
}Hora;
typedef struct{
char dni[KDNI];
char nombrePaciente[KNOMBRE];
}Paciente;
typedef struct{
Fecha fecha;
Hora hora;
char nombreFisio[KNOMBRE];
int tipoTratamiento;
Paciente paciente;
}Cita;
typedef struct{
Cita cita[numCitas];
int numCitas;
int cuantas = 1;
}Citas;
void leerFecha(Fecha &f){
do{
cout << "Dia: ";
cin >> f.dia;
}while(f.dia < 1 || f.dia > 31);
do{
cout << "Mes: ";
cin >> f.mes;
}while(f.mes < 1 || f.mes > 12);
do{
cout << "Año: ";
cin >> f.anyo;
}while(f.anyo < 0);
cin.get();
}
void imprimirFecha(Fecha f){
cout << "Dia: " << f.dia << endl;
cout << "Mes: " << f.mes << endl;
cout << "Año: " << f.anyo << endl;
}
void leerHora(Hora &h){
do{
cout << "Hora: ";
cin >> h.h;
}while(h.h < 0 || h.h > 23);
do{
cout << "Minuto: ";
cin >> h.m;
}while(h.m < 0 || h.m > 59);
cin.get();
}
void imprimirHora(Hora h){
cout << "Hora: " << h.h << endl;
cout << "Minuto: " << h.m << endl;
}
void leerPaciente(Paciente &p){
cout << "DNI: ";
cin.getline(p.dni, KDNI);
cin.get();
cout << "Nombre: " ;
cin.getline(p.nombrePaciente, KNOMBRE);
cin.get();
}
void imprimirPaciente(Paciente p){
cout << "DNI: " << p.dni << endl;
cout << "Nombre: " << p.nombrePaciente << endl;
}
void leerCita(Cita &c){
cout << "**** SOLICITUD DE CITA ****" << endl;
cout << "Introduzca fecha: " << endl;
leerFecha(c.fecha);
cout << "Introduzca la hora: " << endl;
leerHora(c.hora);
cout << "Nombre del fisioterapeuta: ";
cin.getline(c.nombreFisio, KNOMBRE);
cout << "Tipo de tratamiento (1.Masaje, 2.Lesion, 3.Rehabilitacion): ";
cin >> c.tipoTratamiento;
cout << "Introduzca los datos del paciente: " << endl;
leerPaciente(c.paciente);
}
void imprimirCita(Cita c){
cout << "***** CITA *******" << endl;
cout << "FECHA: " << endl;
imprimirFecha(c.fecha);
cout << "HORA DE LA CITA: " << endl;
imprimirHora(c.hora);
cout << "Nombre del fisioterapeuta: " << c.nombreFisio << endl;
cout << "Tipo de tratatimiento: ";
switch(c.tipoTratamiento){
case 1:
cout << "Masaje " << endl;
break;
case 2:
cout << "Lesion" << endl;
break;
case 3:
cout << "Rehabilitacion" << endl;
break;
}
}
void pedirCitas(Citas &cit){
if(cit.cuantas < cit.numCitas){
leerCita(cit.cita[cit.cuantas]);
cit.cuantas++;
}
else{
cout << "No se admiten mas citas" << endl;
}
}
void imprimirCitas(Citas cit){
int i;
for(i = 1; i <= cit.cuantas; i++){
imprimirCita(cit.cita[i]);
}
cout << endl;
}
int main(){
int opcion;
Citas c;
do{
cout << "********** SERVICIO DE FISIOTERAPIA ************** " << endl;
cout << "Seleccione una opcion del menu: " << endl;
cout << "1. Pedir una cita " << endl;
cout << "2. Anular una cita " << endl;
cout << "3. Mostrar listado de citas " << endl;
cout << "4. Mostrar facturacion de un fisioterapeuta " << endl;
cout << "5. Salir " << endl;
cout << "Opcion: " << endl;
cin >> opcion;
switch(opcion){
case 1:
pedirCitas(c);
break;
case 2:
break;
case 3:
imprimirCitas(c);
break;
case 4:
break;
case 5:
break;
default:
cout << "OPCION INCORRECTA " << endl;
}
}while(opcion != 5);
}