Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <limits>
using namespace std;
class Usuario {
public:
string nombre;
string fecha_nacimiento;
float peso;
float estatura;
};
class Cita {
public:
int dia;
int hora;
int indice_servicio;
class Servicio {
public:
string nombre;
};
class NodoUsuario {
public:
Usuario usuario;
NodoUsuario* siguiente;
NodoUsuario* anterior;
class ListaDobleUsuarios {
public:
NodoUsuario* cabeza;
ListaDobleUsuarios() : cabeza(nullptr) {}
ListaDobleUsuarios listaUsuarios;
vector<Cita> citas;
archivo.close();
}
void cargar_datos_usuarios() {
ifstream archivo("usuarios.txt");
if (!archivo) {
cout << "No se encontro el archivo de usuarios. Puede ser la primera ejecucion del
programa.\n";
return;
}
listaUsuarios.cabeza = nullptr;
string linea;
while (getline(archivo, linea)) {
istringstream ss(linea);
Usuario usuario;
getline(ss, usuario.nombre, ',');
getline(ss, usuario.fecha_nacimiento, ',');
ss >> usuario.peso;
ss.ignore();
ss >> usuario.estatura;
listaUsuarios.agregarUsuario(usuario);
}
archivo.close();
}
void cargar_datos_citas() {
ifstream archivo("citas.txt");
if (!archivo) {
cout << "No se encontro el archivo de citas. Puede ser la primera ejecucion del
programa.\n";
return;
}
citas.clear();
string linea;
while (getline(archivo, linea)) {
istringstream ss(linea);
Cita cita;
ss >> cita.dia;
ss.ignore();
ss >> cita.hora;
ss.ignore();
ss >> cita.indice_servicio;
citas.push_back(cita);
}
archivo.close();
}
void cargar_datos() {
cargar_datos_usuarios();
cargar_datos_citas();
}
Usuario usuario;
cout << "Ingrese su nombre: ";
getline(cin, usuario.nombre);
cout << "Ingrese su fecha de nacimiento (dd/mm/aaaa): ";
getline(cin, usuario.fecha_nacimiento);
cout << "Ingrese su peso (kg): ";
cin >> usuario.peso;
cout << "Ingrese su estatura (m): ";
cin >> usuario.estatura;
cin.ignore();
listaUsuarios.agregarUsuario(usuario);
guardar_datos_usuarios(listaUsuarios);
Cita cita;
bool cita_disponible = false;
do {
cout << "Ingrese el dia de la cita del mes actual (1-31): ";
cin >> cita.dia;
cout << "Ingrese la hora deseada de las 9-20 horas: ";
cin >> cita.hora;
if (cita.hora < 0 || cita.hora > 23) {
cout << "Hora invalida. Por favor, ingrese una hora entre 0 y 23." << endl;
} else {
if (cita_ocupada) {
cout << "Lo siento, esa hora ya esta ocupada. Por favor, elija otra hora." << endl;
} else {
cita_disponible = true;
}
}
} while (!cita_disponible);
mostrar_servicios(servicios);
int servicio;
cout << "Ingrese el numero del servicio deseado: ";
cin >> servicio;
if (servicio < 1 || servicio > servicios.size()) {
cout << "Servicio invalido. Por favor, ingrese un numero entre 1 y " << servicios.size()
<< "." << endl;
} else {
cita.indice_servicio = servicio - 1;
cout << "Ha programado una cita para el dia " << cita.dia << " a las " << cita.hora << "
horas para el servicio de " << servicios[cita.indice_servicio].nombre << "." << endl;
citas.push_back(cita);
}
}
int main() {
vector<Servicio> servicios;
servicios.push_back({"Examenes dentales y diagnosticos"});
servicios.push_back({"Limpiezas y profilaxis dentales"});
servicios.push_back({"Tratamientos de caries y restauraciones dentales"});
servicios.push_back({"Extracciones de dientes"});
servicios.push_back({"Tratamientos de conducto"});
servicios.push_back({"Colocacion de protesis dentales"});
servicios.push_back({"Consulta general o chequeo rutinario"});
servicios.push_back({"Tratamientos ortodonticos"});
cargar_datos();
int opcion;
while (true) {
cout << "\nMenu:\n";
cout << "1. Programar una cita\n";
cout << "2. Ver citas ocupadas\n";
cout << "3. Ver personas registradas para cita\n";
cout << "4. Salir\n";
cout << "Ingrese su opcion: ";
while (!(cin >> opcion)) {
cout << "Entrada no válida. Por favor, ingrese un numero." << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
switch (opcion) {
case 1:
programar_cita(listaUsuarios, citas, servicios);
break;
case 2:
ver_citas_ocupadas(citas, servicios);
break;
case 3:
cargar_datos_usuarios();
ver_personas_registradas(listaUsuarios);
break;
case 4:
guardar_datos(listaUsuarios, citas);
cout << "Saliendo del programa.\n";
return 0;
default:
cout << "Opcion invalida. Por favor, ingrese una opción valida.\n";
}
}
return 0;
}