(03 23 02) FC PREISF03E01M (H) - 2213676 - Semana05

Descargar como txt, pdf o txt
Descargar como txt, pdf o txt
Está en la página 1de 5

Integrantes:

Astete Vargas, Ariel Bryand


Cáceres Murga, Gonzalo Mauricio
Perez Ancieta, Jhan Franco
Coria Alania, Andre Sebastian
Galarza Roman, Camila Olga

archivo.cpp

#include "Producto.h"
int main() {
list<Paciente> agenda;

int opcion;
do {
cout << "\t\tAGENDA:\t\t" << endl;
cout << "\t\t1. Agregar paciente\t\t" << endl;
cout << "\t\t2. Mostrar agenda\t\t" << endl;
cout << "\t\t3. Eliminar paciente\t\t" << endl;
cout << "\t\t0. Salir\t\t" << endl;
cout << "\t\tSelecciona una opcion: \t\t";
cin >> opcion;

switch (opcion) {
case 1:
agregarPaciente(agenda);
break;
case 2:
mostrarAgenda(agenda);
break;
case 3:
eliminarPaciente(agenda);
break;
case 0:
cout << "\t\tSaliendo del programa." << endl;
break;
default:
cout << "\t\tOpcion no valida. Intente nuevamente." << endl;
}
} while (opcion != 0);

return 0;
}

-------------------------------------------------------------

Producto.h

#pragma once
#include <iostream>
#include <string>
#include <list>
#include <cstdlib> // Para la función std::system
using namespace std;

// Estructura para almacenar la información de un paciente


struct Paciente {
string nombre;
int edad;
char sexo;
string fecha;
string hora;
double totalAPagar;
list<string> serviciosRealizados;
list<int> numMuelasMalas;
list<int> numCaries;
};

// Función para calcular el costo de los servicios realizados


double calcularCostoServicios(const list<string>& servicios, const list<int>&
numMuelasMalas, const list<int>& numCaries) {
double costoTotal = 0.0;
auto servicio = servicios.begin();
auto muelas = numMuelasMalas.begin();
auto caries = numCaries.begin();

while (servicio != servicios.end()) {


if (*servicio == "profilaxis") {
costoTotal += 255.85;
}
else if (*servicio == "tratamiento de caries") {
costoTotal += 100.0 * (*caries);
++caries;
}
else if (*servicio == "extraccion de muela") {
costoTotal += 60.0 * (*muelas);
++muelas;
}
else if (*servicio == "blanqueamiento") {
costoTotal += 170.56;
}

++servicio;
}

return costoTotal;
}

// Función para seleccionar los servicios y obtener el número de muelas malas y


caries
void seleccionarServicios(list<string>& serviciosSeleccionados, list<int>&
numMuelasMalas, list<int>& numCaries) {
cout << "\t\tServicios disponibles:" << endl;
cout << "\t\t1. Profilaxis" << endl;
cout << "\t\t2. Tratamiento de caries" << endl;
cout << "\t\t3. Extraccion de muela" << endl;
cout << "\t\t4. Blanqueamiento" << endl;

int numServicios;
cout << "\t\tNumero de servicios a realizar: ";
cin >> numServicios;

for (int i = 0; i < numServicios; ++i) {


int seleccion;
cout << "\t\tSelecciona el servicio #" << i + 1 << " (1-4): ";
cin >> seleccion;
if (seleccion >= 1 && seleccion <= 4) {
switch (seleccion) {
case 1:
serviciosSeleccionados.push_back("profilaxis");
break;
case 2:
serviciosSeleccionados.push_back("tratamiento de caries");
int numCariesTemp;
cout << "\t\tNumero de caries para 'tratamiento de caries': ";
cin >> numCariesTemp;
numCaries.push_back(numCariesTemp);
break;
case 3:
serviciosSeleccionados.push_back("extraccion de muela");
int numMuelasTemp;
cout << "\t\tNumero de muelas malas para 'extraccion de muela': ";
cin >> numMuelasTemp;
numMuelasMalas.push_back(numMuelasTemp);
break;
case 4:
serviciosSeleccionados.push_back("blanqueamiento");
break;
}
}
}
}

// Función para agregar un paciente a la agenda


void agregarPaciente(list<Paciente>& agenda) {
Paciente paciente;
cout << "\t\tNombre: ";
cin.ignore();
getline(cin, paciente.nombre);
cout << "\t\tEdad: ";
cin >> paciente.edad;
cout << "\t\tSexo (M/F): ";
cin >> paciente.sexo;
cout << "\t\tFecha de consulta: ";
cin >> paciente.fecha;
cout << "\t\tHora de consulta: ";
cin >> paciente.hora;
cout << "\n";
seleccionarServicios(paciente.serviciosRealizados, paciente.numMuelasMalas,
paciente.numCaries);

// Calcular el costo total de los servicios


paciente.totalAPagar = calcularCostoServicios(paciente.serviciosRealizados,
paciente.numMuelasMalas, paciente.numCaries);

// Agregar el paciente a la agenda


agenda.push_back(paciente);

cout << "\t\tPaciente agregado correctamente." << endl;


system("pause"); // Espera a que el usuario presione una tecla
system("cls"); // Limpia la pantalla
}

// Función para mostrar la agenda de pacientes


void mostrarAgenda(const list<Paciente>& agenda) {
cout << "\n\t\tAgenda de pacientes:\n";
int pacienteNumero = 1;
for (const Paciente& paciente : agenda) {
cout << "\t\tPaciente #" << pacienteNumero << endl;
cout << "\t\tNombre: " << paciente.nombre << endl;
cout << "\t\tEdad: " << paciente.edad << endl;
cout << "\t\tSexo: " << paciente.sexo << endl;
cout << "\t\tFecha de consulta: " << paciente.fecha << endl;
cout << "\t\tHora de consulta: " << paciente.hora << endl;
cout << "\t\tServicios realizados:" << endl;
auto servicio = paciente.serviciosRealizados.begin();
auto muelas = paciente.numMuelasMalas.begin();
auto caries = paciente.numCaries.begin();
while (servicio != paciente.serviciosRealizados.end()) {
cout << "\t\tServicio: " << *servicio << endl;
if (*servicio == "extraccion de muela") {
cout << "\t\tNumero de muelas malas: " << *muelas << endl;
++muelas;
}
else if (*servicio == "tratamiento de caries") {
cout << "\t\tNumero de caries: " << *caries << endl;
++caries;
}
++servicio;
}
cout << "\t\tTotal a pagar: " << paciente.totalAPagar << " soles" << endl;
cout << "\t\t------------------------\n";
pacienteNumero++;
}

cout << "\t\tPresiona Enter para volver al menu...";


cin.ignore();
cin.get();
system("cls"); // Limpia la pantalla
}

// Función para eliminar un paciente de la agenda


void eliminarPaciente(list<Paciente>& agenda) {
if (agenda.empty()) {
cout << "\t\tLa agenda esta vacia. No hay pacientes para eliminar." <<
endl;
system("pause");
system("cls");
return;
}

cout << "\t\tIngrese el numero de paciente que desea eliminar: ";


int pacienteNumero;
cin >> pacienteNumero;

if (pacienteNumero >= 1 && pacienteNumero <= agenda.size()) {


auto paciente = agenda.begin();
advance(paciente, pacienteNumero - 1); // Avanza al paciente seleccionado
agenda.erase(paciente); // Elimina el paciente de la agenda
cout << "\t\tPaciente eliminado correctamente." << endl;
}
else {
cout << "\t\tNumero de paciente no valido. Intente nuevamente." << endl;
}
system("pause");
system("cls"); // Limpia la pantalla
}

También podría gustarte