Pastebin
API
tools
faq
paste
Login
Sign up
Please fix the following errors:
New Paste
Syntax Highlighting
#include <iostream> //LIBRERIA IOSTREAM permite ingresar y mostrar en pantalla texto. #include <cstring> //LIBRERIA CSTRING facilita el uso de strings, con comandos como lenght. #include <stdlib.h> //LIBRERIA STDLIB es una biblioteca estandar, se agrego para la funcion limpiar(). #include <conio.h> //LIBRERIA CONIO.H permite usar la funcion getch(), hace que no se cierre la terminal al ser ejecutado el programa. using namespace std; // Funcion del programa // Sistema para registrar, administrar y consultar prestamos //COSAS POR HACER //1)SACAR ERROR eliminar_prestamo //2)HACER TODOS LOS COMENTARIOS /* =================== VARIABLES =================== */ const int dFisica = 100; // DIMENSION FISICA DE LOS ARREGLOS int cantidad_categorias = 0; // Variable para saber la dimension logica de las categorias int cantidad_prestamos = 0; // Lo mismo que la anterior para los prestamos int cantidad_prestatarios = 0; // Lo mismo para los prestatarios /* ================ STRUCS ================ */ struct c { // Plantilla del struct para las categorias int codigo_categoria; string descripcion; }; struct pr { // Plantilla del struct para los prestamos int codigo_categoria; int prestatario; string descripcion; bool estado; }; struct pres { // Plantilla del struct para prestatarios int codigo_prestatario; string apellido; string nombre; }; struct nodoprestamo{ pr prestamo; nodoprestamo* siguiente; }; c categorias[dFisica]; pr prestamos[dFisica]; // Definicion de los 3 arreglos para almacenar categorias,prestamos y prestatarios. pres prestatarios[dFisica]; /* =================== FUNCIONES =================== */ void limpiar() { // Funcion limpiar // PROPOSITO: Limpiar la pantalla mediante system("cls") // PARAMETROS: No pide ningun parametro // RETORNO:No retorna nada ya que es del tipo void system("cls"); } string mayuscula(string cadena) { // Funcion mayuscula // PROPOSITO: Hacer que el string ingresado, retorne en mayusculas, sirve para normalizar los string que se utilicen y evitar errores al compararlos // PARAMETROS: Un string deseado para convertirlo en mayusculas // RETORNO: Retorna un string que es el mismo que el ingresado, pero con todas sus letras en mayusculas for (int i = 0; i < cadena.length(); i++) { cadena[i] = toupper(cadena[i]); } return cadena; } string agregarCategoria(string descripcion) { // Funcion agregar_categoria // PROPOSITO: Agregar una categoria al struct categorias, le asigna un codigo interno a la categoria y revisa que la categoria no este repetida // PARAMETROS: Descripcion de la categoria a agregar // RETORNO: Retorna un string que dice si se agrego o no la categoria for (int i = 0; i <= cantidad_categorias; i++) { if (mayuscula(descripcion) == mayuscula(categorias[i].descripcion)) { return ("La categoria que desea agregar ya existe!"); } } for (int i = 0; i <= cantidad_categorias; i++) { if (mayuscula(descripcion) != mayuscula(categorias[i].descripcion)) { for (int j = cantidad_categorias; j < dFisica; j++) { categorias[j].codigo_categoria = cantidad_categorias; categorias[j].descripcion = descripcion; cantidad_categorias++; return ("Categoria agregada satisfatoriamente!"); } } } return ("default"); } string modificarCategoria(string descripcion) { // Funcion modificar_categoria // PROPOSITO: Modificar una categoria existente en el struct categorias // PARAMETROS: Descripcion de la categoria a modificar // RETORNO: Retorna un string que dice si la modificacion fue satisfatoria o no string categoria_modif; string aux = descripcion; for (int i = 0; i <= cantidad_categorias; i++) { if (mayuscula(categorias[i].descripcion) == mayuscula(aux)) { cout << "La categoria a modificar ingresada es correcta!" << endl; cout << "\nA continuacion ingrese el nuevo nombre para la categoria: "; cin >> categoria_modif; categorias[i].descripcion = categoria_modif; limpiar(); return ("Categoria modificada satisfactoriamente!"); } } for (int i = 0; i <= cantidad_categorias; i++) { if (mayuscula(categorias[i].descripcion) != mayuscula(aux)) { return ("La categoria que desea modificar no existe!"); } } return ("default"); } string eliminarCategoria(string descripcion,nodoprestamo* inicio) { // Funcion eliminar_categoria // PROPOSITO: Eliminar una categoria del struct antes nombrado, si y solo si la categoria no tiene un prestamo en activo // PARAMETROS: Descripcion de la categoria a eliminar y el inicio de la lista de prestamos // RETORNO: Retorna un string que dice si se pudo eliminar o no la categoria string descripcion_aux = descripcion; int posicion = 0; int codigo_cat = 0; bool ocupado=false; bool existe=false; for(int i=0;i<cantidad_categorias;i++){ if(mayuscula(descripcion_aux)==mayuscula(categorias[i].descripcion)){ codigo_cat=categorias[i].codigo_categoria; posicion=i; existe=true; } } if(existe==true){ nodoprestamo* aux=new nodoprestamo; aux=inicio; if(aux!=NULL){ while(aux!=NULL && ocupado==false){ if(codigo_cat==aux->prestamo.codigo_categoria){ ocupado=true; } aux=aux->siguiente; } } if(ocupado!=true){ for(int i=posicion;i<cantidad_categorias;i++){ categorias[i].descripcion=categorias[i+1].codigo_categoria; categorias[i].codigo_categoria=categorias[i+1].codigo_categoria; cantidad_categorias--; return("Categoria eliminada satisfactoriamente!"); } } else if(ocupado==true){ return("La categoria que desea eliminar se encuentra registrada en un prestamo, no es posible eliminarla"); } } else{ return("La categoria que desea eliminar no existe"); } return("Default"); } string agregarPrestatario(string nombre, string apellido) { // Funcion agregarPrestatario // PROPOSITO: Agregar un prestatario al struct prestatarios // PARAMETROS: Nombre y Apellido del prestatario a agregar // RETORNO: Retorna un string que dice si se agrego o no el prestatario int repetidos = 0; for (int i = 0; i <= cantidad_prestatarios; i++) { if (mayuscula(nombre) == mayuscula(prestatarios[i].nombre) && mayuscula(apellido) == mayuscula(prestatarios[i].apellido)) { repetidos++; } } if (repetidos == 0) { prestatarios[cantidad_prestatarios].nombre = nombre; prestatarios[cantidad_prestatarios].apellido = apellido; prestatarios[cantidad_prestatarios].codigo_prestatario = cantidad_prestatarios; cantidad_prestatarios++; return ("Prestatario agregado satisfatoriamente!"); } return ("El prestatario que desea agregar ya existe!"); } string modificarPrestatario(string nombre, string apellido) { // Funcion modificarPrestatario // PROPOSITO: modificar prestatario ya agregado // PARAMETROS: Nombre y apellido del prestatario a modificar // RETORNO: Retorna un string que indica si se modifico o no al prestatario que se desea string nombre_modif; string apellido_modif; string nombre_aux = nombre; string apellido_aux = apellido; for (int i = 0; i < cantidad_prestatarios; i++) { if (mayuscula(nombre_aux) == mayuscula(prestatarios[i].nombre) && mayuscula(apellido_aux) == mayuscula(prestatarios[i].apellido)) { cout << "El prestatario a modificar es correcto!" << endl; cout << "Ingrese el nuevo nombre del prestatario: "; cin >> nombre_modif; cout << "Ingrese el nuevo apellido del prestatario: "; cin >> apellido_modif; prestatarios[i].nombre = nombre_modif; prestatarios[i].apellido = apellido_modif; return ("Prestatario modificado satisfactoriamente!"); } } for (int i = 0; i < cantidad_prestatarios; i++) { if (mayuscula(nombre_aux) == mayuscula(prestatarios[i].nombre) && mayuscula(apellido_aux) == mayuscula(prestatarios[i].apellido)) { return ("El prestatario que desea modificar no existe!"); } } return ("default"); } string eliminarPrestatario(string nombre, string apellido, nodoprestamo* inicio) { // Funcion eliminarPrestatario // PROPOSITO: Eliminar un prestatario ya inscripto, como las anteriores que dependen de que este inscripto o no, notifica al usuario si el prestatario no se encuentra registrado // tambien checkea si el prestatario a eliminar no tiene un prestamo en activo, en caso de ser asi permite elminarlo, en caso de que tenga un prestamo no lo permite // PARAMETROS: Nombre y apellido del prestatario a modificar // RETORNO: Retorna un string que indica si se elimino o no al prestatario que se desea string nombre_aux=nombre; string apellido_aux=apellido; int posicion = 0; int codigo_presta = 0; bool ocupado=false; bool existe=false; for(int i=0;i<cantidad_prestatarios;i++){ if(mayuscula(nombre_aux)==mayuscula(prestatarios[i].nombre)&&mayuscula(apellido_aux)==mayuscula(prestatarios[i].apellido)){ codigo_presta=prestatarios[i].codigo_prestatario; posicion=i; existe=true; } } if(existe==true){ nodoprestamo* aux=new nodoprestamo; aux=inicio; if(aux!=NULL){ while(aux!=NULL && ocupado==false){ if(codigo_presta==aux->prestamo.prestatario){ ocupado=true; } aux=aux->siguiente; } } if(ocupado!=true){ for(int i=posicion;i<cantidad_prestatarios;i++){ prestatarios[i].nombre=prestatarios[i+1].nombre; prestatarios[i].apellido=prestatarios[i+1].apellido; prestatarios[i].codigo_prestatario=prestatarios[i+1].codigo_prestatario; cantidad_prestatarios--; return("Prestatario eliminado satisfactoriamente!"); } } else if(ocupado==true){ return("El prestatario que desea eliminar esta registrado en un prestamo, no es posible eliminarlo!"); } } else{ return("El prestatario que desea eliminar no existe!"); } return("Default"); } nodoprestamo* agregarPrestamo(string categoria, string nombre, string apellido, string descripcion,nodoprestamo* inicio1) { // Funcion agregarPrestamo // PROPOSITO: Agregar un prestamo al struct de los mismos, generando un booleano que indica el estado del prestamo, TRUE=prestamo activo, FALSE=prestamo finalizado // PARAMETROS: Categoria del prestamo(aclaracion es un string ya que no se usara el codigo de la categoria, sino la descripcion del primer struct // llamado categorias para hacer mas facil al usuario el ingreso), aparte de este, se pide nombre y apellido del prestatario // y por ultimo una descripcion del prestamo // RETORNO: Retorna un string que indica si se agrego o no satisfatoriamente el prestamo a la base de datos string categoria_aux = categoria; string nombre_aux = nombre; string apellido_aux = apellido; string descripcion_aux = descripcion; for (int i = 0; i < cantidad_categorias; i++) { if (mayuscula(categoria_aux) == mayuscula(categorias[i].descripcion)) { for (int j = 0; i <= cantidad_prestatarios; j++) { if (mayuscula(nombre_aux) == mayuscula(prestatarios[j].nombre) && mayuscula(apellido_aux) == mayuscula(prestatarios[j].apellido)) { limpiar(); nodoprestamo* nuevo=new nodoprestamo(); nuevo->prestamo.codigo_categoria=categorias[i].codigo_categoria; nuevo->prestamo.prestatario=prestatarios[j].codigo_prestatario; nuevo->prestamo.descripcion=descripcion_aux; nuevo->prestamo.estado=true; nodoprestamo* aux1=inicio1; nodoprestamo* aux2; while(aux1!=NULL){ aux2=aux1; aux1=aux1->siguiente; } if (inicio1==aux1){ inicio1=nuevo; } else{ aux2->siguiente=nuevo; } nuevo->siguiente=aux1; cout<<"Prestamo agregado satisfactoriamente"<<endl; return(inicio1); } else{ cout<<"El prestatario al que desea adjudicar el prestamo no existe"; } } } else{ cout<<"La categoria a la que desea adjudicar el prestamo no existe"; } } } void modificarPrestamo(string descripcion,nodoprestamo* inicio) { // Funcion modificar_prestamo // PROPOSITO: Modificar la descripcion de un prestamo que se encuentre en la base de datos, en caso de que no se encuentre se informa al usuario // PARAMETROS: Descripcion del prestamo a modificar // RETORNO: Retorna un string informando al usuario sobre el estado de la operacion realizada, en otras palabras si la modificacion salio bien o no string descripcion_aux=descripcion; string nueva_descripcion; nodoprestamo* aux=new nodoprestamo; bool existe=false; aux=inicio; if(inicio!=NULL){ while(aux!=NULL && existe==false){ if(aux->prestamo.descripcion==descripcion_aux){ limpiar(); cout<<"El prestamo buscado existe"<<endl; cout<<"Ingrese la nueva descripcion para el prestamo: "; cin>>nueva_descripcion; aux->prestamo.descripcion=nueva_descripcion; existe=true; cout<<"Prestamo modificado satisfactoriamente!"<<endl; } aux=aux->siguiente; } if(existe==false){ cout<<"El prestamo que desea modificar no existe"<<endl; } } else{ cout<<"No existen prestamos registrados!"<<endl; } } string eliminarPrestamo(string descripcion,nodoprestamo* inicio) //ERROR AL QUERER ELIMINAR CUANDO SE BORRO UN ELEMENTO DE LA LISTA PERO YA SE BORRO EL PRIMER ELEMENTO { // Funcion eliminar_prestamo // PROPOSITO: Eliminar un prestamo de la base de datos // PARAMETROS: Se pide la descripcion del prestamo a eliminar // RETORNO: Retorna un string que indica el estado de la operacion realizada string descripcion_aux=descripcion; if(inicio!=NULL){ nodoprestamo* aux; nodoprestamo* anterior=NULL; aux=inicio; while(aux!=NULL && mayuscula(aux->prestamo.descripcion)!= mayuscula(descripcion_aux)){ anterior=aux; aux=aux->siguiente; } if(aux==NULL){ return("El prestamo que desea eliminar no existe"); delete aux; } else if(anterior==NULL){ inicio=inicio->siguiente; delete aux; return("Prestamo eliminado satisfactoriamente"); } else{ anterior->siguiente=aux->siguiente; delete aux; return("Prestamo eliminado satisfactoriamente"); } } else{ return("No existen prestamos registrados!"); } return("default"); } string terminar_prestamo(string descripcion,nodoprestamo* inicio) { // Funcion terminar_prestamo // PROPOSITO: Terminar un prestamo en activo, cambiando su parte booleana de true a false // PARAMETROS: La descripcion del prestamo a terminar // RETORNO: Retorna un string y como todas las anteriores, este string indica si la operacion fue satisfatoria o no string descripcion_aux=descripcion; nodoprestamo* aux=new nodoprestamo(); aux=inicio; bool existe=false; if(aux!=NULL){ while(aux!=NULL && existe==false){ if(mayuscula(aux->prestamo.descripcion)==mayuscula(descripcion_aux)){ existe=true; aux->prestamo.estado=false; return("El prestamo se ha terminado satisfactoriamente!"); } aux=aux->siguiente; } if (existe==false){ return("El prestamo que busca terminar no existe"); } } else{ return("No existen prestamos registrados"); } return("default"); } string title(string frase) { // FUNCION: title // PROPOSITO: visual, retornar una cadena de caracteres en formato titulo // PARAMETROS: string // RETORNO: retorna un string en formato titulo string frase_aux = frase; frase_aux[0] = toupper(frase_aux[0]); for (int i = 1; i < frase_aux.length(); i++) { frase_aux[i] = tolower(frase_aux[i]); } return (frase_aux); } void imprimirCategorias(c categorias[], int cantidad_categorias) { // Funcion imprimirCategorias // PROPOSITO: Imprimir lista de categorias // PARAMETROS: Struct categorias, int cantegorias // RETORNO: Void, no retorna cout << "\nCategorias:" << endl; cout << endl; for (int i = 0; i < cantidad_categorias; i++) { cout << i + 1 << ". " << categorias[i].descripcion << endl; } cout << endl; } void imprimir_prestamos_por_categoria(string descripcion,nodoprestamo* inicio) { // Funcion imprimir_prestamos_por_categoria // PROPOSITO: Imprimir los prestamos que presentan la categoria deseada // Parametro: La descripcion de la categoria // Retorno: Void, no retorna nada string descripcion_categoria=descripcion; int codigo_cat=0; bool existe=false; int i=0; while(existe==false && i<=cantidad_categorias){ if(mayuscula(categorias[i].descripcion)==mayuscula(descripcion_categoria)){ existe=true; codigo_cat=categorias[i].codigo_categoria; } i++; } if(existe==true){ nodoprestamo* aux=new nodoprestamo; aux=inicio; string lista_p[dFisica]={"\0"}; int cantidad=0; if(aux!=NULL){ while(aux!=NULL){ if(aux->prestamo.codigo_categoria==codigo_cat && aux->prestamo.estado==true){ lista_p[cantidad]=aux->prestamo.descripcion; cantidad++; } aux=aux->siguiente; } } else{ cout<<"No existen prestamos registrados"<<endl; } if(lista_p[0]!="\0"){ cout<<"Los objetos en prestamo de la categoria "; cout<<title(descripcion_categoria); cout<<" son:"<<endl; for(int i=0;i<cantidad;i++){ cout<< i; cout<<". "; cout<<lista_p[i]<<endl; } } else if(lista_p[0]=="\0"){ limpiar(); cout<<"La categoria no presenta prestamos registrados o activos"<<endl; } } else{ cout<<"La categoria que desea buscar no existe!"<<endl; } } void imprimirObjetos_Categoria(c categorias[], int cantidad_categorias) { // Funcion imprimirObjetos_Categoria // PROPOSITO: Imprimir lista de objetos prestados // PARAMETROS: Struct de categorias // RETORNO: Void, no retorna for (int i = 0; i < cantidad_categorias; i++) { cout << "Objeto Prestado: " << categorias[i].descripcion << endl; } } void imprimirPrestatarios(pres prestatarios[], int cantidad_prestatarios) { // Funcion imprimirPrestatarios // PROPOSITO: Imprimir lista de prestatarios // PARAMETROS: Struct prestatarios // RETORNO: Void, no retorna for (int i = 0; i < cantidad_prestatarios; i++) { cout << "Prestatario: " << prestatarios[i].nombre << " " << prestatarios[i].apellido << endl; } } void cantidad_objetos_categoria(string descripcion,nodoprestamo* inicio) { // Funcion cantidad_objetos_categoria // Proposito:Imprimir la cantidad de objetos para una categoria dada // Parametros:Descripcion de la categoria a buscar // Retorno:Void, no retorna nada string descripcion_categoria=descripcion; int codigo_cat=0; bool existe=false; int i=0; while(existe==false && i<=cantidad_categorias){ if(mayuscula(categorias[i].descripcion)==mayuscula(descripcion_categoria)){ existe=true; codigo_cat=categorias[i].codigo_categoria; } i++; } if(existe==true){ nodoprestamo* aux=new nodoprestamo; aux=inicio; string lista_p[dFisica]={"\0"}; int cantidad=0; if(aux!=NULL){ while(aux!=NULL){ if(aux->prestamo.codigo_categoria==codigo_cat && aux->prestamo.estado==true){ cantidad++; } aux=aux->siguiente; } } else{ cout<<"No existen prestamos registrados"<<endl; } delete aux; if(cantidad>0){ cout<<"La cantidad de prestamos activos de la categoria "; cout<<title(descripcion_categoria); cout<<" es: "; cout<<cantidad<<endl; } if(cantidad==0){ limpiar(); cout<<"La categoria de la cual desea saber la cantidad de prestamos activos no tiene ninguno"<<endl; } } else if(existe==false){ cout<<"La categoria que desea no existe"<<endl; } } void imprimirOrdenCategoria(nodoprestamo* inicio) //TERMINAR { // Funcion imprimirPorCategoria // PROPOSITO: Imprimir lista de prestamos por orden categoria // PARAMETROS: Ninguno // RETORNO: Void, no retorna int cantidad=0; nodoprestamo* aux=new nodoprestamo; for (int i = 0; i < cantidad_categorias; i++) { aux=inicio; cantidad=1; if(aux!=NULL){ cout << "Los prestamos de " << categorias[i].descripcion << " son: " << endl; while(aux!=NULL){ if(aux->prestamo.codigo_categoria==categorias[i].codigo_categoria && aux->prestamo.estado==true){ cout<<cantidad; cout<<". "; cout<<aux->prestamo.descripcion<<endl; cantidad++; } aux=aux->siguiente; } delete aux; if(cantidad==1){ cout<<"La categoria no presenta ningun prestamo activo registrado!"<<endl; } } else{ cout<<"No se encuentra ningun prestamo registrado!"<<endl; delete aux; } } } void imprimirOrdenPrestatario(nodoprestamo* inicio) { // Funcion imprimirPorCategoria // PROPOSITO: Imprimir lista de prestamos por orden prestatario // PARAMETROS: Ninguno // RETORNO: Void, no retorna int cantidad = 1; nodoprestamo* aux=new nodoprestamo; for (int i = 0; i < cantidad_prestatarios; i++) { aux=inicio; cantidad=1; if(aux!=NULL){ cout << "Los prestamos de " << title(prestatarios[i].nombre) <<" "<< title(prestatarios[i].apellido) << " son: " << endl; while(aux!=NULL){ if(aux->prestamo.prestatario==prestatarios[i].codigo_prestatario && aux->prestamo.estado==true){ cout<<cantidad; cout<<". "; cout<<aux->prestamo.descripcion<<endl; cantidad++; } aux=aux->siguiente; } delete aux; if(cantidad==1){ cout<<"El prestatario no presenta ningun prestamo activo registrado!"<<endl; } } else{ cout<<"No se encuentra ningun prestamo registrado!"<<endl; delete aux; } } } void imprimirPrestatarioActivo(nodoprestamo* inicio) { // Funcion imprimirPrestatarioActivo // PROPOSITO: Imprimir lista de prestatarios con prestamos activos // PARAMETROS: Ninguno // RETORNO: Void, no retorna cout << "\nLista de prestatarios con prestamos activos: " << endl; cout << endl; nodoprestamo* aux=new nodoprestamo; aux=inicio; int cantidad=0; for(int i=0;i<cantidad_prestatarios;i++){ aux=inicio; cantidad=0; if(aux!=NULL){ while(aux!=NULL){ if(aux->prestamo.prestatario==prestatarios[i].codigo_prestatario && aux->prestamo.estado==true){ cantidad++; } aux=aux->siguiente; } if(cantidad!=0){ cout<<"El prestatario "<<title(prestatarios[i].nombre)<<" "<<title(prestatarios[i].apellido)<<" "<<"tiene "<<cantidad<< " prestamos"<<endl; } } else{ cout<<"La lista de prestamos se encuentra vacia!"<<endl; } } } /* ====================== FUNCION MAIN ====================== */ int main() { nodoprestamo* inicio=new nodoprestamo; inicio=NULL; char seleccion, seleccionA, seleccionB, seleccionC; // variables donde se almacenara la opcion del usuario string categoriaAgregar, categoriaModificar, categoriaEliminar; // variables donde se almacenara los datos del usuario del inciso A string nombrePrestatario, apellidoPrestatario, nombreModificar, apellidoModificar, nombreEliminar, apellidoEliminar; // variables donde se almacenara los datos del usuario del inciso A string seleccionMenuB, ingresarCategoriaB, agregarNombreB, agregarApellidoB, descripcionPrestamoB; // Variables utilizadas en inciso B string seleccionMenuC, opcion_c; ; // Variables usadas en el inciso C // Menu principal, loopeado mediante un do/while do { // Do del menu principal, para permitir volver al menu tras realizada cualquier opcion del menu cout << "\nBienvenido al menu!" << endl; // Se muestra el menu mediante un COUT cout << "\nA: Administrar y consultar Categorias y Prestatarios." << endl; cout << "B: Administrar Prestamos." << endl; cout << "C: Consultar Prestamos." << endl; cout << "D: Salir." << endl; cout << "\nElija la opcion a utilizar: "; cin >> seleccion; // CIN ingresa la opcion deseada seleccion = toupper(seleccion); // convertimos la letra en mayusculas para que sea indiferente el ingreso de mayuscula o minuscula switch (seleccion) { case 'A': // PRIMER CASO DEL MENU PRINCIPAL limpiar(); // LIMPIA PANTALLA DEL MENU PRINCIPAL do { // Do del menu de la opcion A, para permitir volver al menu tras realizada cualquier seleccion cout << "\nOPCION A: Administracion y consulta de Categorias y Prestatarios!" << endl; cout << "\nA: Agregar categoria." << endl; cout << "B: Modificar categoria." << endl; // Se pone en pantalla las opciones del apartado cout << "C: Eliminar categoria." << endl; // Administracion y consultas de categorias cout << "\nD: Agregar prestatario." << endl; // Con un funcionamiento casi igual al principal cout << "E: Modificar prestatario." << endl; // Permite ingresar al usuario otra opcion del menu cout << "F: Eliminar prestatario." << endl; // Y como en el principal, se comprueba si la opcion ingresada cout << "\nG: Volver al menu principal." << endl; cout << "\nElija la opcion a utilizar: "; // Es o no correcta. cin >> seleccionA; seleccionA = toupper(seleccionA); switch (seleccionA) { case 'A': cout << "\nOPCION A: Ingrese la categoria a agregar: "; // Se pide la categoria a agregar getline(cin >> ws, categoriaAgregar); // Se ingresa en la variable limpiar(); // Limpia pantalla cout << agregarCategoria(categoriaAgregar) << endl; // Se ejecuta la funcion que la agrega en el struct break; case 'B': cout << "\nOPCION B: Ingrese la categoria a modificar: "; // Se pide categoria a modificar getline(cin >> ws, categoriaModificar); // Se ingresa en la variable para ser modificada limpiar(); // Limpia pantalla cout << modificarCategoria(categoriaModificar) << endl; // Se ejecuta la funcion que modifica la categoria break; case 'C': cout << "\nOPCION C: Ingrese categoria a eliminar: "; // Se pide categoria a eliminar getline(cin >> ws, categoriaEliminar); // Se ingresa la categoria limpiar(); // Se limpia pantalla cout << eliminarCategoria(categoriaEliminar,inicio) << endl; // Se elimina la categoria mediante la funcion break; case 'D': cout << "\nOPCION D: Ingrese nombre del prestatario: "; // Se pide el nombre del prestatario getline(cin >> ws, nombrePrestatario); // Se ingresa el nombre en la variable cout << "\nIngrese appelido del prestatario: "; // Se pide el apellido del prestatario getline(cin >> ws, apellidoPrestatario); // Se ingresa el apellido en la variable limpiar(); // Se limpia pantalla cout << agregarPrestatario(nombrePrestatario, apellidoPrestatario) << endl; // Se procesan los datos en la funcion break; case 'E': cout << "\nOPCION E: Ingrese nombre a modificar: "; // Se pide el nombre del prestatario a modificar getline(cin >> ws, nombreModificar); // Se ingresa el nombre en la variable cout << "\nIngrese apellido a modificar: "; // Se pide el apellido del prestatario a modificar getline(cin >> ws, apellidoModificar); // Se ingresa el apellido en la variable limpiar(); // Se limpia pantalla cout << modificarPrestatario(nombreModificar, apellidoModificar) << endl; // Se modifica el nombre y apellido del prestatario mediante la funcion break; case 'F': cout << "OPCION F: Ingrese nombre del prestatario a eliminar: "; // Se pide el nombre del prestatario a modificar getline(cin >> ws, nombreEliminar); // Se ingresa el nombre en la variable cout << "\nIngrese apellido del prestatario a eliminar: "; // Se pide el apellido del prestatario a modificar getline(cin >> ws, apellidoEliminar); // Se ingresa el apellido en la variable limpiar(); // Se limpia pantalla cout << eliminarPrestatario(nombreEliminar, apellidoEliminar,inicio) << endl; // Se elimina el prestatario mdeiante la funcion break; case 'G': limpiar(); cout << "'G': VOLVIENDO AL MENU PRINCIPAL" << endl; // MUESTRA EN PANTALLA LA OPCION SELECCIONADA Y REGRESA AL MENU PRINCIPAL break; default: // EN EL CASO DE QUE INGRESE UNA LETRA ERRONEA, EL PROGRAMA MOSTRARA // ESTE MENSAJE Y LE DEJARA VOLVER A INGRESAR OTRA LETRA limpiar(); // se limpia la pantalla cout << "\nPOR FAVOR, SELECCIONE UNA OPCION VALIDA." << endl; break; } } while (seleccionA != 'G'); break; case 'B': // SEGUNDO CASO DEL MENU PRINCIPAL limpiar(); // LIMPIA PANTALLA DEL MENU PRINCIPAL do { // Do del menu B, para permitir volver al menu tras realizada cualquier seleccion cout << "\nOPCION B: Administracion de Prestamos!" << endl; cout << "\nA: Agregar prestamo." << endl; cout << "B: Modificar prestamo." << endl; // Se ponen en pantalla las opciones del la opcion B cout << "C: Eliminar prestamo." << endl; cout << "D: Devolver prestamo." << endl; cout << "\nE: Volver al menu principal." << endl; cout << "\nElija la opcion a utilizar: "; cin >> seleccionB; // Se ingresa la opcion seleccionada seleccionB = toupper(seleccionB); switch (seleccionB) { case 'A': limpiar(); cout << "Desea ver las categorias actuales para su Prestamo?" << endl; // Se pregunta al usuario si desea ver las categorias existentes para su prestamo cout << "S/N: "; cin >> seleccionMenuB; // Se ingresa s o n para si o no respectivamente if (mayuscula(seleccionMenuB) == "S") { // Se comprueba que se elija si imprimirObjetos_Categoria(categorias, cantidad_categorias); // Se realizaria la muestra de las categorias para los prestamos cout << "Ingrese una categoria para el prestamo: "; cin >> ingresarCategoriaB; // Y le permite ingresar la descripcion de la categoria } else if (mayuscula(seleccionMenuB) == "N") { // Se comprueba si eligio no cout << "Ingrese una categoria para el prestamo: "; // En caso de que no, se le da la opcion a ingresar una categoria sin ver todas cin >> ingresarCategoriaB; // Se ingresa la eleccion } cout << "Desea ver los prestatarios ya inscriptos?" << endl; // Se realiza lo mismo que en la pregunta anterior pero con los prestatarios cout << "S/N: "; cin >> seleccionMenuB; if (mayuscula(seleccionMenuB) == "S") { // Caso Si imprimirPrestatarios(prestatarios, cantidad_prestatarios); // Se realizaria la muestra de los prestatarios cout << "Ingrese el nombre del prestatario para el prestamo: "; // Se pide el nombre del prestatario cin >> agregarNombreB; // Se ingresa el nombre cout << "Ingrese el apellido para el prestamo: "; // Se pide el apellido del prestatario cin >> agregarApellidoB; // Se ingresa } // ACLARACION, en la funcion se busca el codigo del prestatario y el codigo de la categoria, para poder almacenar en el struct prestamos else if (mayuscula(seleccionMenuB) == "N") { // Caso No cout << "Ingrese el nombre del prestatario para el prestamo: "; // Se piden e ingresan directamente nombre y cin >> agregarNombreB; // apellido del prestatario para el prestamo cout << "Ingrese el apellido del prestatario para el prestamo: "; cin >> agregarApellidoB; } cout << "Ingrese una descripcion para el prestamo: "; // Se pide ingresar una descripcion al prestamo cin >> descripcionPrestamoB; // Se ingresa limpiar(); inicio=agregarPrestamo(ingresarCategoriaB, agregarNombreB, agregarApellidoB, descripcionPrestamoB,inicio); // Se llama a la funcion para agregar prestamo y con el cout se impreme el retorno de la funcion que es un mensaje de error o no error break; case 'B': limpiar(); cout << "\nOPCION B: Ingrese la descripcion del prestamo a modificar: "; // Se le pide al usuario ingresarla cin >> descripcionPrestamoB; // Se ingresa limpiar(); modificarPrestamo(descripcionPrestamoB,inicio); // Se llama a la funcion modificar_prestamo y con el cout se imprime el mensaje de error o no que devuelve la funcion break; case 'C': limpiar(); cout << "\nOPCION C: Ingrese la descripcion del prestamo a eliminar: "; // Se pide al usuario cin >> descripcionPrestamoB; // Se Ingresa cout << eliminarPrestamo(descripcionPrestamoB,inicio) << endl; // Se llama a la funcion con un cout como en los anteriores casos para poder devolver el mensaje de error o lo contrario break; case 'D': limpiar(); cout << "\nOPCION D: Ingrese la descripcion del prestamo a devolver: "; // Se pide al usuario cin >> descripcionPrestamoB; // Se ingresa cout << terminar_prestamo(descripcionPrestamoB,inicio) << endl; // Se llama a la funcion con el parametro de la descripcion ingresada y se devuelve el mensaje de correcto o error break; case 'E': limpiar(); cout << "'E': VOLVIENDO AL MENU PRINCIPAL" << endl; // MUESTRA EN PANTALLA LA OPCION SELECCIONADA break; default: // EN EL CASO DE QUE INGRESE UNA LETRA ERRONEA, EL PROGRAMA MOSTRARA // ESTE MENSAJE Y LE DEJARA VOLVER A INGRESAR OTRA LETRA limpiar(); // se limpia la pantalla cout << "\nPOR FAVOR, SELECCIONE UNA OPCION VALIDA." << endl; break; } } while (seleccionB != 'E'); break; case 'C': // TERCER CASO DEL MENU PRINCIPAL limpiar(); // LIMPIA PANTALLA DEL MENU PRINCIPAL do { // Do del menu de la opcion C, para permitir volver al menu tras realizada cualquier seleccion cout << "\nOPCION C:Consultas de Prestamos!" << endl; cout << "\nA: Cantidad de objetos prestados por categoria." << endl; cout << "B: Listado de prestamos por categoria." << endl; // Se ponen en pantalla las opciones cout << "C: Listado de prestamos ordenados por prestatario o categoria." << endl; cout << "D: Prestatarios con objetos en prestamo." << endl; cout << "\nE: Volver al menu principal." << endl; cout << "\nElija la opcion a utilizar: "; cin >> seleccionC; // Se ingresa el numero de opcion seleccionC = toupper(seleccionC); switch (seleccionC) { case 'A': limpiar(); // se limpia pantalla cout << "OPCION A" << endl; imprimirCategorias(categorias, cantidad_categorias); // imprime las categorias para que los usuarios puedan seleccionar la que desean cout << "\nIngrese la categoria de la que desea conocer la cantidad de objetos en prestamo: "; // se pide al usuario getline(cin >> ws, categoriaAgregar); // se ingresa cantidad_objetos_categoria(categoriaAgregar,inicio); // se imprime en pantalla break; case 'B': limpiar(); // se limpia pantalla cout << "OPCION B" << endl; imprimirCategorias(categorias, cantidad_categorias); // imprime las categorias para que los usuarios puedan seleccionar la que desean cout << "Ingrese la categoria de la que desea conocer los prestamos activos: "; // se pide al usuario cin >> categoriaAgregar; // se ingresa imprimir_prestamos_por_categoria(categoriaAgregar,inicio); // se imprime en pantalla break; case 'C': limpiar(); // se limpia pantalla cout << "OPCION C" << endl; cout << "Desea ver los prestamos ordenados por categoria o por prestatario(C/P): " << endl; // se pregunta al usuario cin >> opcion_c; // se ingresa if (mayuscula(opcion_c) == "C") // se verifica { imprimirOrdenCategoria(inicio); // se imprime break; } else if (mayuscula(opcion_c) == "P") { imprimirOrdenPrestatario(inicio); // se imprime break; } case 'D': limpiar(); // LIMPIA LA PANTALLA cout << "\nOPCION D" << endl; // MUESTRA EN PANTALLA imprimirPrestatarioActivo(inicio); // SE EJECUTA LA FUNCION QUE MUESTRA LOS PRESTATARIOS ACTIVOS break; case 'E': limpiar(); cout << "'E': VOLVIENDO AL MENU PRINCIPAL" << endl; // MUESTRA EN PANTALLA LA OPCION SELECCIONADA break; default: // EN EL CASO DE QUE INGRESE UNA LETRA ERRONEA, EL PROGRAMA MOSTRARA // ESTE MENSAJE Y LE DEJARA VOLVER A INGRESAR OTRA LETRA limpiar(); // se limpia la pantalla cout << "\nPOR FAVOR, SELECCIONE UNA OPCION VALIDA." << endl; break; } } while (seleccionC != 'E'); break; case 'D': cout << "\nSELECCIONO LA OPCION SALIR." << endl; // MUESTRA EN PANTALLA QUE OPCION SELECCIONO break; default: // EN EL CASO DE QUE INGRESE UNA LETRA ERRONEA, EL PROGRAMA MOSTRARA // ESTE MENSAJE Y LE DEJARA VOLVER A INGRESAR OTRA LETRA limpiar(); // se limpia la pantalla cout << "\nPOR FAVOR, SELECCIONE UNA OPCION VALIDA." << endl; break; } } while (seleccion != 'D'); cout << "\nFIN DEL PROGRAMA." << endl; // MUESTRA EN PANTALLA UN MENSAJE DE FIN getch(); return 0; }
Optional Paste Settings
Category:
None
Cryptocurrency
Cybersecurity
Fixit
Food
Gaming
Haiku
Help
History
Housing
Jokes
Legal
Money
Movies
Music
Pets
Photo
Science
Software
Source Code
Spirit
Sports
Travel
TV
Writing
Tags:
Syntax Highlighting:
None
Bash
C
C#
C++
CSS
HTML
JSON
Java
JavaScript
Lua
Markdown (PRO members only)
Objective C
PHP
Perl
Python
Ruby
Swift
4CS
6502 ACME Cross Assembler
6502 Kick Assembler
6502 TASM/64TASS
ABAP
AIMMS
ALGOL 68
APT Sources
ARM
ASM (NASM)
ASP
ActionScript
ActionScript 3
Ada
Apache Log
AppleScript
Arduino
Asymptote
AutoIt
Autohotkey
Avisynth
Awk
BASCOM AVR
BNF
BOO
Bash
Basic4GL
Batch
BibTeX
Blitz Basic
Blitz3D
BlitzMax
BrainFuck
C
C (WinAPI)
C Intermediate Language
C for Macs
C#
C++
C++ (WinAPI)
C++ (with Qt extensions)
C: Loadrunner
CAD DCL
CAD Lisp
CFDG
CMake
COBOL
CSS
Ceylon
ChaiScript
Chapel
Clojure
Clone C
Clone C++
CoffeeScript
ColdFusion
Cuesheet
D
DCL
DCPU-16
DCS
DIV
DOT
Dart
Delphi
Delphi Prism (Oxygene)
Diff
E
ECMAScript
EPC
Easytrieve
Eiffel
Email
Erlang
Euphoria
F#
FO Language
Falcon
Filemaker
Formula One
Fortran
FreeBasic
FreeSWITCH
GAMBAS
GDB
GDScript
Game Maker
Genero
Genie
GetText
Go
Godot GLSL
Groovy
GwBasic
HQ9 Plus
HTML
HTML 5
Haskell
Haxe
HicEst
IDL
INI file
INTERCAL
IO
ISPF Panel Definition
Icon
Inno Script
J
JCL
JSON
Java
Java 5
JavaScript
Julia
KSP (Kontakt Script)
KiXtart
Kotlin
LDIF
LLVM
LOL Code
LScript
Latex
Liberty BASIC
Linden Scripting
Lisp
Loco Basic
Logtalk
Lotus Formulas
Lotus Script
Lua
M68000 Assembler
MIX Assembler
MK-61/52
MPASM
MXML
MagikSF
Make
MapBasic
Markdown (PRO members only)
MatLab
Mercury
MetaPost
Modula 2
Modula 3
Motorola 68000 HiSoft Dev
MySQL
Nagios
NetRexx
Nginx
Nim
NullSoft Installer
OCaml
OCaml Brief
Oberon 2
Objeck Programming Langua
Objective C
Octave
Open Object Rexx
OpenBSD PACKET FILTER
OpenGL Shading
Openoffice BASIC
Oracle 11
Oracle 8
Oz
PARI/GP
PCRE
PHP
PHP Brief
PL/I
PL/SQL
POV-Ray
ParaSail
Pascal
Pawn
Per
Perl
Perl 6
Phix
Pic 16
Pike
Pixel Bender
PostScript
PostgreSQL
PowerBuilder
PowerShell
ProFTPd
Progress
Prolog
Properties
ProvideX
Puppet
PureBasic
PyCon
Python
Python for S60
QBasic
QML
R
RBScript
REBOL
REG
RPM Spec
Racket
Rails
Rexx
Robots
Roff Manpage
Ruby
Ruby Gnuplot
Rust
SAS
SCL
SPARK
SPARQL
SQF
SQL
SSH Config
Scala
Scheme
Scilab
SdlBasic
Smalltalk
Smarty
StandardML
StoneScript
SuperCollider
Swift
SystemVerilog
T-SQL
TCL
TeXgraph
Tera Term
TypeScript
TypoScript
UPC
Unicon
UnrealScript
Urbi
VB.NET
VBScript
VHDL
VIM
Vala
Vedit
VeriLog
Visual Pro Log
VisualBasic
VisualFoxPro
WHOIS
WhiteSpace
Winbatch
XBasic
XML
XPP
Xojo
Xorg Config
YAML
YARA
Z80 Assembler
ZXBasic
autoconf
jQuery
mIRC
newLISP
q/kdb+
thinBasic
Paste Expiration:
Never
Burn after read
10 Minutes
1 Hour
1 Day
1 Week
2 Weeks
1 Month
6 Months
1 Year
Paste Exposure:
Public
Unlisted
Private
Folder:
(members only)
Password
NEW
Enabled
Disabled
Burn after read
NEW
Paste Name / Title:
Create New Paste
Hello
Guest
Sign Up
or
Login
Sign in with Facebook
Sign in with Twitter
Sign in with Google
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login
Public Pastes
Slide notes
4 hours ago | 2.46 KB
AMP floater example implementation
7 hours ago | 2.32 KB
HUB
7 hours ago | 0.01 KB
Verification
1 day ago | 0.19 KB
Secrets.kd
1 day ago | 0.25 KB
STAN internet
1 day ago | 2.03 KB
Vscode-Extensions
1 day ago | 0.88 KB
Mapscan v2.4 - Archeagus Grey Hack Series, Ep...
JavaScript | 2 days ago | 12.26 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the
Cookies Policy
.
OK, I Understand
Not a member of Pastebin yet?
Sign Up
, it unlocks many cool features!