Brunoroman

PI Post Entrega 1

Sep 27th, 2021
963
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream> //LIBRERIA IOSTREAM permite ingresar y mostrar en pantalla texto
  2. #include <cstring> //LIBRERIA CSTRING facilita el uso de strings, con comandos como lenght
  3. #include <stdlib.h> //LIBRERIA STDLIB es una biblioteca estandar, se agrego para la funcion limpiar()
  4.  
  5. using namespace std;
  6.  
  7. //Funcion del programa
  8. //Sistema para registrar, administrar y consultar prestamos
  9.  
  10. //VARIABLES
  11. int cantidad_categorias=0;//Variable para saber cuantas categorias hay y poder iterar en los struct
  12. int cantidad_prestamos=0;//Lo mismo que la anterior para los prestamos
  13. int cantidad_prestatarios=0;//Lo mismo para los prestatarios
  14.  
  15.  
  16. struct c{                   //Plantilla del struct para las categorias
  17.      int codigo_categoria;
  18.      string descripcion;
  19. };
  20.  
  21. struct pr{                 //Plantilla del struct para los prestamos
  22.      int codigo_categoria;
  23.      int prestatario;
  24.      string descripcion;
  25.      bool estado;
  26. };
  27.  
  28. struct pres{                 //Plantilla del struct para prestatarios
  29.     int codigo_prestatario;
  30.     string apellido;
  31.     string nombre;
  32. };
  33.  
  34. c categorias[100];
  35. pr prestamos[100];             //Definicion de los 3 struct para almacenar categorias,prestamos y prestatarios respectivamente
  36. pres prestatarios[100];
  37.  
  38. //Funciones
  39.  
  40. string agregar_categoria(string descripcion);
  41. //Funcion agregar_categoria
  42. //PROPOSITO: Agregar una categoria al struct categorias, le asigna un codigo interno a la categoria y revisa que la categoria no este repetida
  43. //PARAMETROS: Descripcion de la categoria a agregar
  44. //RETORNO: Retorna un string que dice si se agrego o no la categoria
  45. string modificar_categoria(string descripcion);
  46. //Funcion modificar_categoria
  47. //PROPOSITO: Modificar una categoria existente en el struct categorias
  48. //PARAMETROS: Descripcion de la categoria a modificar
  49. //RETORNO: Retorna un string que dice si la modificacion fue satisfatoria o no
  50. string eliminar_categoria(string descripcion);
  51. //Funcion eliminar_categoria
  52. //PROPOSITO: Eliminar una categoria del struct antes nombrado, si y solo si la categoria no tiene un prestamo en activo
  53. //PARAMETROS: Descripcion de la categoria a eliminar
  54. //RETORNO: Retorna un string que dice si se pudo eliminar o no la categoria
  55. string agregar_prestatario(string nombre,string apellido);
  56. //Funcion agregar_prestatario
  57. //PROPOSITO: Agregar un prestatario al struct prestatarios, le asigna un codigo y revisa que el prestatario no este ya registrado
  58. //PARAMETROS: Nombre y Apellido del prestatario a agregar
  59. //RETORNO: Retorna un string que dice si se registro satisfactoriamente el nuevo prestatario o no
  60. string modificar_prestatario(string nombre,string apellido);
  61. //Funcion modificar_prestatario
  62. //PROPOSITO: Modificar el nombre o apellido de un prestatario ya registrado, en caso de que no retorna el error
  63. //PARAMETROS: Nombre y apellido del prestatario a modificar
  64. //RETORNO: Retorna un string que indica si la modificacion fue satisfactoria o no
  65. string eliminar_prestatario(string nombre,string apellido);
  66. //Funcion eliminar_prestatario
  67. //PROPOSITO: Eliminar un prestatario ya inscripto, como las anteriores que dependen de que este inscripto o no, notifica al usuario si el prestatario ya se encuentra registrado
  68. //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
  69. //PARAMETROS: Nombre y apellido del prestatario a modificar
  70. //RETORNO: Retorna un string que indica si se elimino o no al prestatario que se desea
  71. string agregar_prestamo(string categoria,string nombre,string apellido,string descripcion);
  72. //Funcion agregar_prestamo
  73. //PROPOSITO: Agregar un prestamo al struct de los mismos, generando un booleano que indica el estado del prestamo, TRUE=prestamo activo, FALSE=prestamo finalizado
  74. //PARAMETROS: Categoria del prestamo(aclaracion es un string ya que no se usara el codigo de la categoria, sino la descripcion del primer struct
  75. //llamado categorias para hacer mas facil al usuario el ingreso), aparte de este, se pide nombre y apellido del prestatario
  76. //y por ultimo una descripcion del prestamo
  77. //RETORNO: Retorna un string que indica si se agrego o no satisfatoriamente el prestamo a la base de datos
  78. string modificar_prestamo(string descripcion);
  79. //Funcion modificar_prestamo
  80. //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
  81. //PARAMETROS: Descripcion del prestamo a modificar
  82. //RETORNO: Retorna un string informando al usuario sobre el estado de la operacion realizada, en otras palabras si la modificacion salio bien o no
  83. string eliminar_prestamo(string descripcion);
  84. //Funcion eliminar_prestamo
  85. //PROPOSITO: Eliminar un prestamo de la base de datos
  86. //PARAMETROS: Se pide la descripcion del prestamo a eliminar
  87. //RETORNO: Retorna un string que indica el estado de la operacion realizada
  88. string terminar_prestamo(string descripcion);
  89. //Funcion terminar_prestamo
  90. //PROPOSITO: Terminar un prestamo en activo, cambiando su parte booleana de true a false
  91. //PARAMETROS: La descripcion del prestamo a terminar
  92. //RETORNO: Retorna un string y como todas las anteriores, este string indica si la operacion fue satisfatoria o no
  93.  
  94. string mayuscula(string cadena);
  95. //Funcion mayuscula
  96. //PROPOSITO: Hacer que el string ingresado, retorne en mayusculas, sirve para normalizar los string que se utilicen y evitar errores al compararlos
  97. //PARAMETROS: Un string deseado para convertirlo en mayusculas
  98. //RETORNO: Retorna un string que es el mismo que el ingresado, pero con todas sus letras en mayusculas
  99. void limpiar();
  100. //Funcion limpiar
  101. //PROPOSITO: Limpiar la pantalla mediante system("cls")
  102. //PARAMETROS: No pide ningun parametro
  103. //RETORNO:No retorna nada ya que es del tipo void
  104.  
  105. //Codigo principal
  106. int main(){
  107.     int opcion; //Variable local al main para comprobar si se elije bien la opcion deseada en los menus
  108.     int fin; //Variable local al main para controlar los while
  109.     string eleccion;//Variable local al main para S/N en administracion de prestamos
  110.     //Menu principal, loopeado mediante un do/while
  111.     do{ //do del menu principal, para permitir volver al menu tras realizada cualquier opcion del menu
  112.     cout << "Bienvenido"<< endl;
  113.     cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
  114.     cout << "1: Administrar y consultar Categorias y Prestatarios"<< endl; //Hace aparecer en pantalla el menu
  115.     cout << "2: Administrar Prestamos"<< endl;
  116.     cout << "3: Consultar Prestamos"<< endl;
  117.     cin>> opcion; //Se ingresa la opcion
  118.     while(opcion!=1 && opcion!=2 && opcion!=3){ //Bucle while, que solo funciona siempre y cuando se ingrese una opcion que no este en el menu
  119.         cout << "La opcion ingresada es incorrecta"<< endl; //Al detectar que la opcion ingresada no existe en el menu
  120.         cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;  //Se le muestran al usuario los siguientes mensajes
  121.         cout << "1: Administrar y consultar Categorias y Prestatarios"<< endl;                 //Mostrando devuelta una parte del menu
  122.         cout << "2: Administrar Prestamos"<< endl;                                            //Y permitiendole ingresar devuelta una opcion valida
  123.         cout << "3: Consultar Prestamos"<< endl;                                             //En caso de que la opcion sea otra vez incorrecta
  124.         cin>> opcion;                                                                      //El loop sigue en activo
  125.         limpiar();
  126.     }
  127.     do{
  128.     switch (opcion) { //Switch como principal forma de que funcione el menu
  129.     case 1:{ // Case para la opcion 1 del menu principal
  130.         cout << "Administracion y consulta de Categorías y Prestatarios"<< endl;
  131.         cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
  132.         cout << "1: Agregar categoria"<< endl;
  133.         cout << "2: Modificar categoria"<< endl;                             //Se pone en pantalla las opciones del apartado
  134.         cout << "3: Eliminar categoria"<< endl;                             //Administracion y consultas de categorias
  135.         cout << "4: Agregar prestatario"<< endl;                           //Con un funcionamiento casi igual al principal
  136.         cout << "5: Modificar prestatario"<< endl;                        //Permite ingresar al usuario otra opcion del menu
  137.         cout << "6: Eliminar prestatario"<< endl;                        //Y como en el principal se comprueba si la opcion ingresada
  138.         cin>> opcion;                                                   //Es o no correcta
  139.         while(opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4 && opcion!=5 && opcion!=6){ //Este while solo se activa en caso de que sea incorrecta
  140.             limpiar(); //Se limpia la pantalla                                            //la opcion ingresada
  141.             cout << "La opcion ingresada es incorrecta"<< endl;
  142.             cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;
  143.             cout << "1: Agregar categoria"<< endl;
  144.             cout << "2: Modificar categoria"<< endl;    //Se procede a mostrar el submenu devuelta
  145.             cout << "3: Eliminar categoria"<< endl;    //Para que el usuario pueda ver devuelta las opciones
  146.             cout << "4: Agregar prestatario"<< endl;  //Y como en el caso del menu principal se le permite ingresar una opcion que sea correcta
  147.             cout << "5: Modificar prestatario"<< endl;//De igual manera como en el menu principal el loop no termina hasta que el usuario
  148.             cout << "6: Eliminar prestatario"<< endl; //Ingrese una opcion que sea correcta
  149.             cin>> opcion;  //Ingreso de la opcion por parte del usuario
  150.         }
  151.         switch(opcion){ //Switch que controla el menu interno de la opcion 1 del menu principal
  152.         case 1:{//CASO AGREGAR CATEGORIA
  153.             cout << "Ingrese la categoria a agregar"<< endl; //Se le pregunta al usuario la descripcion de la categoria a agregar
  154.             string categoria_agregar_modificar_eliminar; //Variable local de la opcion 1-1, que guarda el dato de la descripcion de la categoria
  155.             cin>>categoria_agregar_modificar_eliminar; //Se ingresa la descripcion
  156.             cout<<agregar_categoria(categoria_agregar_modificar_eliminar)<<endl; //Se llama a la funcion agregar_categoria
  157.             cout << "------------------------------------------------------------------"<< endl;
  158.             cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Se le pregunta al usuario si desea volver al menu principal
  159.             cout << "S/N"<<endl;                                                                 //Para seguir operando con el programa
  160.             cin>> eleccion; //EL usuario ingresa la opcion
  161.             if(mayuscula(eleccion)=="S"){ //Se llama a la funcion mayuscula para no tener errores como en caso de que el usuario ingrese s y no S
  162.                 limpiar(); //Llama a la funcion limpiar para limpiar la pantalla
  163.                 fin=1; //Hace que fin sea 1 para cortar do/while
  164.                 continue; //Y continua la ejecucion del anterior do while
  165.             }
  166.             else{
  167.                 if (mayuscula(eleccion)=="N"){ //Caso no, se hace lo mismo que en el if del caso si
  168.                     return 0; // Pero en vez de continue y demas, realiza un return 0 finalizando la ejecucion del main
  169.                 }
  170.             }
  171.         }
  172.         case 2:{ //CASO MODIFICAR CATEGORIA
  173.             cout << "Ingrese la categoria a modificar"<< endl; //Se pide al usuario la descripcion categoria a modificar
  174.             string categoria_agregar_modificar_eliminar; //Se define la variable local que permite almacenar la descripcion
  175.             cin>>categoria_agregar_modificar_eliminar; //Se ingresa la descripcion guardandola en la variable anterior
  176.             cout<<modificar_categoria(categoria_agregar_modificar_eliminar); //Se llama la funcion que modifica categoria, y esta devuelve si se pudo o no realizar la operacion
  177.             cout << "------------------------------------------------------------------"<< endl;
  178.             cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Se realiza lo mismo que en el anterior caso
  179.             cout << "S/N"<<endl;                                                                //Para en caso de que el usuario quiera seguir operando, pueda volver al menu principal
  180.             cin>> eleccion;
  181.             if(eleccion=="S" || eleccion=="s"){
  182.                 limpiar();
  183.                 fin=1;
  184.                 continue;
  185.             }
  186.             else{
  187.                 if (eleccion=="N" || eleccion=="n"){
  188.                     return 0;
  189.                 }
  190.             }
  191.         }
  192.         case 3:{ //CASO ELIMINAR CATEGORIA
  193.             cout << "Ingrese la categoria a eliminar"<< endl; //Se pide al usuario la descripcion de la categoria a eliminar
  194.             string categoria_agregar_modificar_eliminar; //Se define una variable local para almacenar el dato pedido
  195.             cin>>categoria_agregar_modificar_eliminar; //Se pide el dato al usuario
  196.             cout <<eliminar_categoria(categoria_agregar_modificar_eliminar); //Se llama a la funcion y con el cout se muestra si se realizo satisfactoriamente o no
  197.             cout << "------------------------------------------------------------------"<< endl; //Separador
  198.             cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Como en los anteriores casos
  199.             cout << "S/N"<<endl;                                              //Permite volver al menu principal
  200.             cin>> eleccion;                                                  //Para que el usuario siga operando
  201.             if(mayuscula(eleccion)=="S"){
  202.                 fin=1;
  203.                 continue;
  204.             }
  205.             else{
  206.                 if (mayuscula(eleccion)=="N"){
  207.                     return 0;
  208.                 }
  209.             }
  210.         }
  211.         case 4:{ //CASO AGREGAR PRESTATARIO
  212.             string nombre_agg_modif_delete; //Variable local para el nombre del prestatario a agregar
  213.             string apellido_agg_modif_delete; //Variable local para el apellido del prestatario a agregar
  214.             cout << "Ingrese el nombre del prestatario a agregar"<< endl; //Se pide al usuario que ingrese el nombre a agregar
  215.             cin>>nombre_agg_modif_delete; //Se ingresa el nombre a agregar
  216.             cout << "Ingrese el apellido del prestatario a agregar"<< endl;//Se pide al usuario que ingrese el apellido a agregar
  217.             cin>>apellido_agg_modif_delete; //Se ingresa el apellido
  218.             cout>>agregar_prestatario(nombre_agg_modif_delete,apellido_agg_modif_delete)>>endl; //Se llama a la funcion para agregar prestatarios
  219.             cout << "------------------------------------------------------------------"<< endl; //Separador
  220.             cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Mismo procedimiento que las anteriores
  221.             cout << "S/N"<<endl;                                                          //Permite volver a el menu principal
  222.             cin>> eleccion;
  223.             if(mayuscula(eleccion)=="S"){
  224.                 limpiar();
  225.                 fin=1;
  226.                 continue;
  227.             }
  228.             else{
  229.                 if (mayuscula(eleccion)=="N"){
  230.                     return 0;
  231.                 }
  232.             }
  233.         }
  234.         case 5:{ //CASO MODIFICACION DE PRESTATARIO
  235.             string nombre_agg_modif_delete; //Variable local para guardar el nombre del prestatario a modificar
  236.             string apellido_agg_modif_delete;//Variable local parecida a la anterior pero con el apellido
  237.             cout << "Ingrese el nombre del prestatario a modificar"<< endl; //Se pide el nombre
  238.             cin>>nombre_agg_modif_delete;//Se ingresa el nombre
  239.             cout << "Ingrese el apellido del prestatario a modificar"<< endl;//Se pide el apellido
  240.             cin>>apellido_agg_modif_delete;//Se ingresa el apellido
  241.             cout <<modificar_prestatario(nombre_agg_modif_delete,apellido_agg_modif_delete)<<endl;//Se llama a la funcion que modifica prestatarios y devuelve si se modifico bien o no
  242.             cout << "------------------------------------------------------------------"<< endl; //Separador
  243.             cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  244.             cout << "S/N"<<endl;                                   //Se realiza lo mismo que el codigo anterior, permite volver al menu principal
  245.             cin>> eleccion;                                       //Mediante una estructura if
  246.             if(mayuscula(eleccion)=="S"){
  247.                 limpiar();
  248.                 fin=1;
  249.                 continue;
  250.             }
  251.             else{
  252.                 if (mayuscula(eleccion)=="N"){
  253.                     return 0;
  254.                 }
  255.             }
  256.         }
  257.         case 6:{ //CASO ELIMINACION DE PRESTATARIO
  258.             string nombre_agg_modif_delete; //Variable local,almacenara el nombre del prestatario a eliminar
  259.             string apellido_agg_modif_delete;//Variable local,almacenara el apellido del prestatario a eliminar
  260.             cout << "Ingrese el nombre del prestatario a eliminar"<< endl; //Se pide el nombre
  261.             cin>>nombre_agg_modif_delete;//Se ingresa el nombre
  262.             cout << "Ingrese el apellido del prestatario a eliminar"<< endl;//Se pide el apellido
  263.             cin>>apellido_agg_modif_delete; //Se ingresa el nombre
  264.             cout <<eliminar_prestatario(nombre_agg_modif_delete,apellido_agg_modif_delete)<<endl; //Se llama a la funcion eliminar prestatario, con un cout para que retorne el mensaje de error o no
  265.             cout << "------------------------------------------------------------------"<< endl; //Separador
  266.             //Se repite la misma parte de codigo anterior para volver(no se agrego como funcion por que una funcion no permite el continue)
  267.             cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  268.             cout << "S/N"<<endl;
  269.             cin>> eleccion;
  270.             if(mayuscula(eleccion)=="S"){
  271.                 limpiar();
  272.                 fin=1;
  273.                 continue;
  274.             }
  275.             else{
  276.                 if (mayuscula(eleccion)=="N"){
  277.                     return 0;
  278.                 }
  279.             }
  280.         }
  281.         }
  282.     }
  283.     case 2:{ //SUBMENU 2 Administracion de prestamos
  284.         cout << "Administracion de Préstamos"<< endl;
  285.         cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
  286.         cout << "1: Agregar préstamo"<< endl;
  287.         cout << "2: Modificar préstamo"<< endl;                                   //Se ponen en pantalla las opciones del submenu 2
  288.         cout << "3: Eliminar préstamo"<< endl;
  289.         cout << "4: Devolver préstamo"<< endl;
  290.         cin>> opcion; //Se ingresa la opcion
  291.         while (opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4){ //Se crea un bucle en caso de que la opcion ingresada sea incorrecta
  292.             limpiar();
  293.             cout << "La opcion ingresada es incorrecta"<< endl;  //Siempre y cuando se ingresen opciones incorrectas el bucle estara activo
  294.             cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;
  295.             cout << "1: Agregar préstamo"<< endl;
  296.             cout << "2: Modificar préstamo"<< endl;                         //Se muestra el menu otra vez
  297.             cout << "3: Eliminar préstamo"<< endl;                         //Para que el usuario pueda ver devuelta las opciones
  298.             cout << "4: Devolver préstamo"<< endl;
  299.             cin>> opcion;
  300.         }
  301.             switch (opcion) { //SWITCH PARA EL SUBMENU 2
  302.             case 1:{ //CASO AGREGAR PRESTAMO
  303.                 string categoria_agg_modif_delete;
  304.                 string nombre_agg_modif_delete;     //Variables locales para almacenar categoria, nombre, apellido
  305.                 string apellido_agg_modif_delete;   //y descripcion del prestamo a agregar
  306.                 string descripcion_prestamo_agg_modif_delete;
  307.                 cout << "Desea ver las categorias actuales para su Prestamo?"<<endl; //Se pregunta al usuario si desea ver las categorias existentes para su prestamo
  308.                 cout << "S/N"<<endl;
  309.                 cin>> eleccion; // Se ingresa s o n para si o no respectivamente
  310.                 if (mayuscula(eleccion)=="S"){ //Se comprueba que se elija si
  311.                     //Se realizaria la muestra de las categorias para los prestamos
  312.                     cout << "Ingrese una categoria para el prestamo"<<endl;
  313.                     cin>> categoria_agg_modif_delete;//Y le permite ingresar la descripcion de la categoria
  314.                 }
  315.                 else if(mayuscula(eleccion)=="N"){ //Se comprueba si eligio no
  316.                     cout << "Ingrese una categoria para el prestamo"<<endl; //En caso de que no se le da la opcion a ingresar
  317.                     cin>> categoria_agg_modif_delete;                       //una categoria sin ver todas
  318.                 }
  319.                 cout << "Desea ver los prestatarios ya inscriptos?"<<endl; //Se realiza lo mismo que en la pregunta anterior pero con los prestatarios
  320.                 cout << "S/N"<<endl;
  321.                 cin>> eleccion;
  322.                 if (mayuscula(eleccion)=="S"){//Caso Si
  323.                     //Se realizaria la muestra de los prestatarios
  324.                     cout << "Ingrese el nombre del prestatario para el prestamo"<<endl; //Se pide el nombre del prestatario
  325.                     cin>> nombre_agg_modif_delete; //Se ingresa
  326.                     cout << "Ingrese el apellido para el prestamo"<<endl; //Se pide el apellido del prestatario
  327.                     cin>> apellido_agg_modif_delete;//Se ingresa
  328.                 }                                                 //ACLARACION, en la funcion se busca el codigo del prestatario y el codigo de la categoria, para poder almacenar en el struct prestamos
  329.                 else if(mayuscula(eleccion)=="N"){//Caso No
  330.                     cout << "Ingrese el nombre del prestatario para el prestamo"<<endl; //Se piden e ingresan directamente nombre y apellido del prestatario para el prestamo
  331.                     cin>> nombre_agg_modif_delete;
  332.                     cout << "Ingrese el apellido del prestatario para el prestamo"<<endl;
  333.                     cin>> apellido_agg_modif_delete;
  334.                 }
  335.                 cout << "Ingrese una descripcion para el prestamo"<<endl; // Se pide ingresar una descripcion al prestamo
  336.                 cin>> descripcion_prestamo_agg_modif_delete; //Se ingresa
  337.                 cout <<agregar_prestamo(categoria_agg_modif_delete,nombre_agg_modif_delete,apellido_agg_modif_delete,descripcion_prestamo_agg_modif_delete)<<endl;//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
  338.                 cout << "------------------------------------------------------------------"<< endl; //Separador
  339.                 cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Se realiza lo mismo que en los otros casos para volve
  340.                 cout << "S/N"<<endl;                                                                //Al menu principal, como aclare antes no se pudo modularizar por el continue
  341.                 cin>> eleccion;
  342.                 if(mayuscula(eleccion)=="S"){
  343.                     limpiar();
  344.                     fin=1;
  345.                     continue;
  346.                 }
  347.                 else{
  348.                     if (mayuscula(eleccion)=="N"){
  349.                         return 0;
  350.                     }
  351.                 }
  352.  
  353.             }
  354.             case 2:{ // CASO MODIFICAR PRESTAMO
  355.                 string descripcion_prestamo_agg_modif_delete;//Variable local para almacenar la descripcion del prestamo a modificar
  356.                 cout << "Ingrese la descripcion del prestamo a modificar"<<endl;//Se le pide al usuario ingresarla
  357.                 cin>> descripcion_prestamo_agg_modif_delete;//Se ingresa
  358.                 cout<<modificar_prestamo(descripcion_prestamo_agg_modif_delete)<<endl;//Se llama a la funcion modificar_prestamo y con el cout se imprime el mensaje de error o no que devuelve la funcion
  359.                 cout << "------------------------------------------------------------------"<< endl; //Separador
  360.                 cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  361.                 cout << "S/N"<<endl;
  362.                 cin>> eleccion;
  363.                 if(mayuscula(eleccion)=="S"){ //Realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  364.                     limpiar();
  365.                     fin=1;
  366.                     continue;
  367.                 }
  368.                 else{
  369.                     if (mayuscula(eleccion)=="N"){
  370.                         return 0;
  371.                     }
  372.                 }
  373.             }
  374.             case 3:{//CASO ELIMINAR PRESTAMO
  375.                 string descripcion_prestamo_agg_modif_delete; //Variable local para almancenar la descripcion del prestamo a eliminar
  376.                 cout << "Ingrese la descripcion del prestamo a eliminar"<<endl; //Se pide al usuario
  377.                 cin>>descripcion_prestamo_agg_modif_delete;//Se elimina
  378.                 cout<< eliminar_prestamo(descripcion_prestamo_agg_modif_delete)<<endl; //Se llama a la funcion con un cout como en los anteriores casos para poder devolver el mensaje de error o lo contrario
  379.                 cout << "------------------------------------------------------------------"<< endl; //Separador
  380.                 cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  381.                 cout << "S/N"<<endl;
  382.                 cin>> eleccion;
  383.                 if(mayuscula(eleccion)=="S"){ //Eealiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  384.                     limpiar();
  385.                     fin=1;
  386.                     continue;
  387.                 }
  388.                 else{
  389.                     if (mayuscula(eleccion)=="N"){
  390.                         return 0;
  391.                     }
  392.                 }
  393.             }
  394.             case 4:{//CASO DEVOLUCION DE PRESTAMO
  395.                 string descripcion_prestamo_agg_modif_delete;//Variable local para almacenar la descripcion
  396.                 cout << "Ingrese la descripcion del prestamo a devolver"<<endl; //Se pide al usuario
  397.                 cin>>descripcion_prestamo_agg_modif_delete; //Se ingresa
  398.                 cout <<terminar_prestamo(descripcion_prestamo_agg_modif_delete)<<endl;//Se llama a la funcion con el parametro de la descripcion ingresada y se devuelve el mensaje de correcto o error
  399.                 cout << "------------------------------------------------------------------"<< endl; //Separador
  400.                 cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  401.                 cout << "S/N"<<endl;
  402.                 cin>> eleccion;
  403.                 if(mayuscula(eleccion)=="S"){ //Realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  404.                     limpiar();
  405.                     fin=1;
  406.                     continue;
  407.                 }
  408.                 else{
  409.                     if (mayuscula(eleccion)=="N"){
  410.                         return 0;
  411.                     }
  412.                 }
  413.             }
  414.             }
  415.         }
  416.     case 3:{ //Switch 3er SUBMENU Consultas
  417.             cout << "Consultas de Prestamos"<< endl;
  418.             cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
  419.             cout << "1: Cantidad de objetos prestados por categoría"<< endl;
  420.             cout << "2: Listado de prestamos por categoría"<< endl;                     //Se ponen en pantalla las opciones
  421.             cout << "3: Listado de préstamos ordenados por categoría o prestatario"<< endl;
  422.             cout << "4: Prestatarios con objetos en prestamo"<< endl;
  423.             cin>> opcion; //Se ingresa el numero de opcion
  424.             while(opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4){ //While para el caso de que el usuario ingrese una opcion incorrecta
  425.                 cout << "La opcion ingresada es incorrecta"<< endl;//Hace un bucle hasta que el usuario ingrese un opcion correcta
  426.                 cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;
  427.                 cout << "1: Cantidad de objetos prestados por categoría"<< endl;
  428.                 cout << "2: Listado de prestamos por categoría"<< endl;                            //Se realiza un proceso parecido al de los case 1 y 2
  429.                 cout << "3: Listado de préstamos ordenados por categoría o prestatario"<< endl;
  430.                 cout << "4: Prestatarios con objetos en prestamo"<< endl;
  431.                 cin>> opcion;//Se ingresa nuevamente la opcion
  432.             }
  433.                 switch(opcion){//Switch del submenu 3
  434.                 case 1:{//CASO CANTIDAD DE OBJETOS POR CATEGORIA
  435.                     cout << "------------------------------------------------------------------"<< endl; //Separador
  436.                     cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  437.                     cout << "S/N"<<endl;
  438.                     cin>> eleccion;
  439.                     if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  440.                         fin=1;
  441.                         continue;
  442.                     }
  443.                     else{
  444.                         if (mayuscula(eleccion)=="N"){
  445.                             return 0;
  446.                         }
  447.                     }
  448.                 }
  449.                 case 2:{//CASO LISTA DE PRESTAMOS POR CATGORIA
  450.                     cout << "Los prestamos por categoria son"<<endl;
  451.                     //Se realizaria la actividad deseada
  452.                     cout << "------------------------------------------------------------------"<< endl; //Separador
  453.                     cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  454.                     cout << "S/N"<<endl;
  455.                     cin>> eleccion;
  456.                     if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  457.                         limpiar();
  458.                         fin=1;
  459.                         continue;
  460.                     }
  461.                     else{
  462.                         if (mayuscula(eleccion)=="N"){
  463.                             return 0;
  464.                         }
  465.                     }
  466.                 }
  467.                 case 3:{//CASO PRESTAMOS POR CATEGORIA O POR PRESTATARIO
  468.                     cout << "Desea ver los prestamos ordenados por categoria o por prestatario?" << endl;
  469.                     cin >>eleccion;
  470.                     do{
  471.                     if(mayuscula(eleccion)=="CATEGORIA"){
  472.                         //Se realizaria el ordenado por categoria, genera error al todavia no estar definida la funcion mayuscula
  473.                     }
  474.                     else{
  475.                         if(mayuscula(eleccion)=="PRESTATARIO"){
  476.                             //Se realizaria el ordenado por prestatario, genera error al todavia no estar definida la funcion mayuscula
  477.                         }
  478.                         else{
  479.                             cout <<"Ingreso una opcion no valida, vuelva a ingresar una opcion que si lo sea"<< endl;
  480.  
  481.                         }
  482.                     }
  483.                     }while(mayuscula(eleccion)!="CATEGORIA" && mayuscula(eleccion)!="PRESTATARIO");
  484.                     cout << "------------------------------------------------------------------"<< endl; //Separador
  485.                     cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  486.                     cout << "S/N"<<endl;
  487.                     cin>> eleccion;
  488.                     if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  489.                         limpiar();
  490.                         fin=1;
  491.                         continue;
  492.                     }
  493.                     else{
  494.                         if (mayuscula(eleccion)=="N"){
  495.                             return 0;
  496.                         }
  497.                     }
  498.                 }
  499.                 case 4:{//CASO PRESTATARIOS CON OBJETOS EN PRESTAMO
  500.                     cout << "Los prestatarios con objetos en prestamo son"<< endl;
  501.                     //Se realizaria la opcion deseada
  502.                     cout << "------------------------------------------------------------------"<< endl; //Separador
  503.                     cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
  504.                     cout << "S/N"<<endl;
  505.                     cin>> eleccion;
  506.                     if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
  507.                         limpiar();
  508.                         fin=1;
  509.                         continue;
  510.                     }
  511.                     else{
  512.                         if (mayuscula(eleccion)=="N"){
  513.                             return 0;
  514.                         }
  515.                     }
  516.                 }
  517.                 }
  518.             }
  519.         }
  520.     }while(fin!=1);     //este while permite iterar al menu principal siempre y cuando se requiera, cuando el usuiario eliga voler, la variable fin sera "1" y se reiniciara el programa
  521. }while(fin==1);
  522. }
  523.  
  524. //Cuerpo de las funciones WIP
  525.  
  526. string agregar_categoria(string descripcion){
  527.     for(int i=0;i<=cantidad_categorias;i++){
  528.         if(mayuscula(descripcion)==mayuscula(categorias[i].descripcion)){
  529.             return ("La categoria que desea agregar ya existe");
  530.         }
  531.         else if(mayuscula(descripcion)!=mayuscula(categorias[i].descripcion)){
  532.             categorias[i].codigo_categoria=cantidad_categorias;
  533.             categorias[i].descripcion=descripcion;
  534.             cantidad_categorias++;
  535.             return ("Categoria agregada satisfatoriamente");
  536.         }
  537.     }
  538. }
  539. string modificar_categoria(string descripcion){
  540.      string categoria_modif;
  541.      string aux=descripcion;
  542.      for(int i=0;i<cantidad_categorias;i++){
  543.          if (mayuscula(categorias[i].descripcion)==mayuscula(aux)){
  544.              cout <<"La descripcion de la categoria ingresada es correcta"<< endl;
  545.              cout <<"A continuacion ingrese la nueva descripcion para la categoria" <<endl;
  546.              cin>> categoria_modif;
  547.              categorias[i].descripcion=categoria_modif;
  548.              return("Categoria modificada satisfactoriamente");
  549.          }
  550.          else{
  551.              return("La categoria que desea modificar no existe");
  552.          }
  553.      }
  554. }
  555. string eliminar_categoria(string descripcion){
  556.  
  557. }
  558. string agregar_prestatario(string nombre,string apellido){
  559.     prestatarios[cantidad_prestamos].codigo_prestatario=cantidad_prestamos;
  560.     prestatarios[cantidad_prestamos].nombre=mayuscula(nombre);
  561.     prestatarios[cantidad_prestamos].apellido=mayuscula(apellido);
  562.     cantidad_prestatarios++;
  563.  
  564. }
  565. string modificar_prestatario(string nombre,string apellido){
  566.     string nombre_modif;
  567.     string apellido_modif;
  568.     string nombre_aux=nombre;
  569.     string apellido_aux=apellido;
  570.      for(int i=0;i<cantidad_prestatarios;i++){
  571.          if(mayuscula(nombre_aux)==prestatarios[i].nombre && mayuscula(apellido_aux)==prestatarios[i].apellido){
  572.              cout <<"El prestatario a modificar es correcto"<< endl;
  573.              cout <<"Ingrese el nuevo nombre del prestatario" <<endl;
  574.              cin>>nombre_modif;
  575.              cout <<"Ingrese el nuevo apellido del prestatario" <<endl;
  576.              cin>>apellido_modif;
  577.              prestatarios[i].nombre=nombre_modif;
  578.              prestatarios[i].apellido=apellido_modif;
  579.              return("Prestatario modificado satisfactoriamente");
  580.          }
  581.          else{
  582.              return("El prestatario que desea modificar no existe");
  583.          }
  584.      }
  585. }
  586. string eliminar_prestatario(string nombre,string apellido){
  587.  
  588. }
  589. string agregar_prestamo(string categoria,string nombre,string apellido,string descripcion){
  590.  
  591. }
  592. string modificar_prestamo(string descripcion){
  593.  
  594. }
  595. string eliminar_prestamo(string descripcion){
  596.  
  597. }
  598. string terminar_prestamo(string descripcion){
  599.  
  600. }
  601. string mayuscula(string cadena){
  602.       for(int i=0;i<cadena.length();i++){
  603.           cadena[i]=toupper(cadena[i]);
  604.       }
  605.       return cadena;
  606. }
  607.  
  608. void limpiar(){
  609.     system("cls");
  610. }
  611.  
RAW Paste Data