Agenda de Citas - Ejercicio A
Ejercicio hecho por Fabian Chollet. C.I: 31.864.832#include <iostream> #include <iomanip> #include <string> #include <locale.h> using namespace std; int cantidadCitas = 0; //Clase Fecha class Fecha { private: int anio, mes, dia, hora; string mesStr; public: Fecha(int = 2000, int = 1, int = 1, int = 12, string = ""); bool verificFecha(int, int, int, int); bool anioBisiesto(); void verFecha() const { cout<<"La fecha de la cita es "<<dia<<'/'<<mes<<'/'<<anio<<" a las "<<hora<<"."<<endl; } }; Fecha::Fecha(int aaaa, int mm, int dd, int hr, string mStr){ anio = aaaa; mes = mm; dia = dd; hora = hr; mesStr = mStr; } bool Fecha::verificFecha(int aaaa, int mm, int dd, int hr){ int DiasPorMes[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //Se añade un mes cero 0 para que se pueda evaluar enero if (anioBisiesto()){ DiasPorMes[2] = 29; //29 de febrero } if (mes == 0){ cout<<endl<<"Mes cero"<<endl; return false; } else if (mes < 1 or mes > 12){ cout<<endl<<"Mes incorrecto"<<endl; return false; } else if (hora < 0 or hora > 23){ cout<<endl<<"Hora incorrecta"<<endl; return false; } else if (dia > DiasPorMes[mes]){ cout<<endl<<"Dia incorrecto"<<endl; return false; } else { return true; } } bool Fecha::anioBisiesto(){ if (anio % 4 == 0 && anio % 100 !=0){ return true; } else if (anio % 4 == 0 && anio % 100 == 0 && anio % 400 == 0){ return true; } else { return false; } } //Clase Cita class Cita { private: string persona1, persona2, lugarCita; Fecha fechaCita; public: Cita(string = "", string = "", string = "", Fecha = (0,0,0,0)); void verCita(); }; Cita::Cita(string p1, string p2, string lugar, Fecha fecha) { persona1 = p1; persona2 = p2; lugarCita = lugar; fechaCita = fecha; } void Cita::verCita() { //GET Cita cout<<"La cita será de: "<<persona1<<" y "<<persona2<<" en "<<lugarCita<<"."<<endl <<"-----------------------------------"<<endl; fechaCita.verFecha(); } //Clase ClaseExterna class ClaseExterna{ public: Cita listaCitas[10]; ClaseExterna(); void crearCita(string, string, string, Fecha); void verLista(); }; ClaseExterna::ClaseExterna() { for (int i = 0; i < 10; i++) { listaCitas[i] = Cita("", "", "", Fecha()); } } void ClaseExterna::crearCita(string p1, string p2, string lugar, Fecha fecha){ //Crear un objeto cita y añadirlo a la lista if (cantidadCitas < 10){ listaCitas[cantidadCitas] = Cita(p1, p2, lugar, fecha); cantidadCitas++; cout<<"Se agendó una cita. Los participantes son:\n" <<p1<<" y "<<p2<<". Se reunirán en: "<<lugar<<endl; } else { cout<<"La lista de citas está llena [10 citas guardadas]."<<endl <<"Si quiere guardar una nueva cita, debe borrar una de la lista."<<endl; } return; } void ClaseExterna::verLista(){ for (int i = 0; i < cantidadCitas; i++){ listaCitas[i].verCita(); } } void defMes(int&, string&); void consultarCita(ClaseExterna&); void borrarCita(ClaseExterna&); int main (){ setlocale(LC_CTYPE, "Spanish"); ClaseExterna Agenda; int Anio = 0, Mes = 0, Dia = 0, Hora = 0, opcionMenu; bool fechaValida; char comprobacion, tipoMes; string Persona1, Persona2, LugarCita, mesFecha; Fecha FechaCita(Anio, Mes, Dia, Hora); cout<<"Bienvenido usuario(a). Esta será su agenda de citas con una capacidad de hasta 10 citas agendables."<<endl <<"Su agenda fue creada con éxito."<<endl<<endl; bool Menu = true; while (Menu){ cout<<"/------------------------------------------------/\n" <<"/-- ¿Qué quiere hacer? --/\n" <<"/-- --/\n" <<"/-- Crear una cita [1] --/\n" <<"/-- Borrar una cita [2] --/\n" <<"/-- Ver citas [3] --/\n" <<"/-- Cerrar agenda [4] --/\n" <<"/------------------------------------------------/\n"<<endl<<"[...] <= "; cin>>opcionMenu; cout<<endl<<endl; switch (opcionMenu){ case 1: cout<<"Por favor, introduzca los datos de la cita.\n\n"; do{ cout<<"Primera persona: "; cin>>Persona1; cout<<"Segunda persona: "; cin>>Persona2; cout<<"Lugar de cita: "; cin>>LugarCita; cout<<"Día: "; cin>>Dia; cout<<"<<Selección de mes. Elija ingresar el mes en letras [s] o en número [i]"<<endl; do{ cin>>tipoMes; if (tipoMes != 's' && tipoMes != 'i'){ cout<<"Opción inválida."<<endl<<endl; } } while(tipoMes != 's' && tipoMes != 'i'); if (tipoMes == 's'){ cout<<"Mes: "; cin>>mesFecha; } else if (tipoMes == 'i') { cout<<"Mes: "; cin>>Mes; } cout<<"Año: "; cin>>Anio; cout<<"Hora: "; cin>>Hora; defMes(Mes, mesFecha); //Fecha FechaCita(Anio,Mes,Dia,Hora, mesFecha); Fecha* FechaCita = new Fecha (Anio, Mes, Dia, Hora, mesFecha); cout<<endl<<"¿La información es correcta? [s/n] <= "; cin>>comprobacion; cout<<endl; } while (comprobacion != 's' && comprobacion != 'n'); if (FechaCita.verificFecha(Anio, Mes, Dia, Hora)){ Agenda.crearCita(Persona1, Persona2, LugarCita, FechaCita); } else { cout<<"La fecha no es válida. Por favor ingrese una fecha real."<<endl; } break; case 2: borrarCita(Agenda); break; case 3: consultarCita(Agenda); break; case 4: cout<<"Cerrando agenda. Gracias por usar este servicio."<<endl; Menu = false; break; default: cout<<"Por favor, elija una de las cuatro(4) opciones del menú."<<endl<<endl; } } return 0; } void defMes(int& mm, string& mStr){ int DiasPorMes[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; string DiasPorMesStr[12] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}; if (mm == 0){ for(int i = 0; i < 13; i++){ if (mStr == DiasPorMesStr[i]){ mm = DiasPorMes[i + 1]; } } } else { for(int i = 0; i < 13; i++){ if (mm == DiasPorMes[i + 1]){ mStr = DiasPorMesStr[i]; } } } return; } void consultarCita(ClaseExterna& Ag){ cout<<"Lista de Citas:"<<endl; for (int i = 0; i <= cantidadCitas; i++){ cout<<endl<<"Cita Nro. "<<i + 1<<endl; Ag.listaCitas[i].verCita(); } return; } void borrarCita(ClaseExterna& Age){ int indiceCitas; cout<<"Elija el Nro. de la cita que desea borrar: "; do{ cin>>indiceCitas; if (indiceCitas < 0 or indiceCitas > cantidadCitas){ cout<<endl<<"Usted ha escogido una cita inexistente."<<endl; } } while (indiceCitas < 0 or indiceCitas > cantidadCitas); for (int i = 1; i <= cantidadCitas; i++){ if (i == indiceCitas){ Age.listaCitas[i] = Cita("", "", "", Fecha()); } } }
Leave a Comment