Agenda de Citas - Ejercicio A
Ejercicio hecho por Fabian Chollet. C.I: 31.864.832unknown
c_cpp
10 months ago
6.9 kB
12
Indexable
#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());
}
}
}Editor is loading...
Leave a Comment