Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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()
- using namespace std;
- //Funcion del programa
- //Sistema para registrar, administrar y consultar prestamos
- //VARIABLES
- int cantidad_categorias=0;//Variable para saber cuantas categorias hay y poder iterar en los struct
- int cantidad_prestamos=0;//Lo mismo que la anterior para los prestamos
- int cantidad_prestatarios=0;//Lo mismo para los prestatarios
- 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;
- };
- c categorias[100];
- pr prestamos[100]; //Definicion de los 3 struct para almacenar categorias,prestamos y prestatarios respectivamente
- pres prestatarios[100];
- //Funciones
- string agregar_categoria(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
- string modificar_categoria(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 eliminar_categoria(string descripcion);
- //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
- //RETORNO: Retorna un string que dice si se pudo eliminar o no la categoria
- string agregar_prestatario(string nombre,string apellido);
- //Funcion agregar_prestatario
- //PROPOSITO: Agregar un prestatario al struct prestatarios, le asigna un codigo y revisa que el prestatario no este ya registrado
- //PARAMETROS: Nombre y Apellido del prestatario a agregar
- //RETORNO: Retorna un string que dice si se registro satisfactoriamente el nuevo prestatario o no
- string modificar_prestatario(string nombre,string apellido);
- //Funcion modificar_prestatario
- //PROPOSITO: Modificar el nombre o apellido de un prestatario ya registrado, en caso de que no retorna el error
- //PARAMETROS: Nombre y apellido del prestatario a modificar
- //RETORNO: Retorna un string que indica si la modificacion fue satisfactoria o no
- string eliminar_prestatario(string nombre,string apellido);
- //Funcion eliminar_prestatario
- //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
- //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 agregar_prestamo(string categoria,string nombre,string apellido,string descripcion);
- //Funcion agregar_prestamo
- //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 modificar_prestamo(string descripcion);
- //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 eliminar_prestamo(string descripcion);
- //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 terminar_prestamo(string descripcion);
- //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 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
- 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
- //Codigo principal
- int main(){
- int opcion; //Variable local al main para comprobar si se elije bien la opcion deseada en los menus
- int fin; //Variable local al main para controlar los while
- string eleccion;//Variable local al main para S/N en administracion de prestamos
- //Menu principal, loopeado mediante un do/while
- do{ //do del menu principal, para permitir volver al menu tras realizada cualquier opcion del menu
- cout << "Bienvenido"<< endl;
- cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
- cout << "1: Administrar y consultar Categorias y Prestatarios"<< endl; //Hace aparecer en pantalla el menu
- cout << "2: Administrar Prestamos"<< endl;
- cout << "3: Consultar Prestamos"<< endl;
- cin>> opcion; //Se ingresa la opcion
- 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
- cout << "La opcion ingresada es incorrecta"<< endl; //Al detectar que la opcion ingresada no existe en el menu
- cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl; //Se le muestran al usuario los siguientes mensajes
- cout << "1: Administrar y consultar Categorias y Prestatarios"<< endl; //Mostrando devuelta una parte del menu
- cout << "2: Administrar Prestamos"<< endl; //Y permitiendole ingresar devuelta una opcion valida
- cout << "3: Consultar Prestamos"<< endl; //En caso de que la opcion sea otra vez incorrecta
- cin>> opcion; //El loop sigue en activo
- limpiar();
- }
- do{
- switch (opcion) { //Switch como principal forma de que funcione el menu
- case 1:{ // Case para la opcion 1 del menu principal
- cout << "Administracion y consulta de Categorías y Prestatarios"<< endl;
- cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
- cout << "1: Agregar categoria"<< endl;
- cout << "2: Modificar categoria"<< endl; //Se pone en pantalla las opciones del apartado
- cout << "3: Eliminar categoria"<< endl; //Administracion y consultas de categorias
- cout << "4: Agregar prestatario"<< endl; //Con un funcionamiento casi igual al principal
- cout << "5: Modificar prestatario"<< endl; //Permite ingresar al usuario otra opcion del menu
- cout << "6: Eliminar prestatario"<< endl; //Y como en el principal se comprueba si la opcion ingresada
- cin>> opcion; //Es o no correcta
- while(opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4 && opcion!=5 && opcion!=6){ //Este while solo se activa en caso de que sea incorrecta
- limpiar(); //Se limpia la pantalla //la opcion ingresada
- cout << "La opcion ingresada es incorrecta"<< endl;
- cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;
- cout << "1: Agregar categoria"<< endl;
- cout << "2: Modificar categoria"<< endl; //Se procede a mostrar el submenu devuelta
- cout << "3: Eliminar categoria"<< endl; //Para que el usuario pueda ver devuelta las opciones
- cout << "4: Agregar prestatario"<< endl; //Y como en el caso del menu principal se le permite ingresar una opcion que sea correcta
- cout << "5: Modificar prestatario"<< endl;//De igual manera como en el menu principal el loop no termina hasta que el usuario
- cout << "6: Eliminar prestatario"<< endl; //Ingrese una opcion que sea correcta
- cin>> opcion; //Ingreso de la opcion por parte del usuario
- }
- switch(opcion){ //Switch que controla el menu interno de la opcion 1 del menu principal
- case 1:{//CASO AGREGAR CATEGORIA
- cout << "Ingrese la categoria a agregar"<< endl; //Se le pregunta al usuario la descripcion de la categoria a agregar
- string categoria_agregar_modificar_eliminar; //Variable local de la opcion 1-1, que guarda el dato de la descripcion de la categoria
- cin>>categoria_agregar_modificar_eliminar; //Se ingresa la descripcion
- cout<<agregar_categoria(categoria_agregar_modificar_eliminar)<<endl; //Se llama a la funcion agregar_categoria
- cout << "------------------------------------------------------------------"<< endl;
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Se le pregunta al usuario si desea volver al menu principal
- cout << "S/N"<<endl; //Para seguir operando con el programa
- cin>> eleccion; //EL usuario ingresa la opcion
- 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
- limpiar(); //Llama a la funcion limpiar para limpiar la pantalla
- fin=1; //Hace que fin sea 1 para cortar do/while
- continue; //Y continua la ejecucion del anterior do while
- }
- else{
- if (mayuscula(eleccion)=="N"){ //Caso no, se hace lo mismo que en el if del caso si
- return 0; // Pero en vez de continue y demas, realiza un return 0 finalizando la ejecucion del main
- }
- }
- }
- case 2:{ //CASO MODIFICAR CATEGORIA
- cout << "Ingrese la categoria a modificar"<< endl; //Se pide al usuario la descripcion categoria a modificar
- string categoria_agregar_modificar_eliminar; //Se define la variable local que permite almacenar la descripcion
- cin>>categoria_agregar_modificar_eliminar; //Se ingresa la descripcion guardandola en la variable anterior
- 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
- cout << "------------------------------------------------------------------"<< endl;
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Se realiza lo mismo que en el anterior caso
- cout << "S/N"<<endl; //Para en caso de que el usuario quiera seguir operando, pueda volver al menu principal
- cin>> eleccion;
- if(eleccion=="S" || eleccion=="s"){
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (eleccion=="N" || eleccion=="n"){
- return 0;
- }
- }
- }
- case 3:{ //CASO ELIMINAR CATEGORIA
- cout << "Ingrese la categoria a eliminar"<< endl; //Se pide al usuario la descripcion de la categoria a eliminar
- string categoria_agregar_modificar_eliminar; //Se define una variable local para almacenar el dato pedido
- cin>>categoria_agregar_modificar_eliminar; //Se pide el dato al usuario
- cout <<eliminar_categoria(categoria_agregar_modificar_eliminar); //Se llama a la funcion y con el cout se muestra si se realizo satisfactoriamente o no
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Como en los anteriores casos
- cout << "S/N"<<endl; //Permite volver al menu principal
- cin>> eleccion; //Para que el usuario siga operando
- if(mayuscula(eleccion)=="S"){
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 4:{ //CASO AGREGAR PRESTATARIO
- string nombre_agg_modif_delete; //Variable local para el nombre del prestatario a agregar
- string apellido_agg_modif_delete; //Variable local para el apellido del prestatario a agregar
- cout << "Ingrese el nombre del prestatario a agregar"<< endl; //Se pide al usuario que ingrese el nombre a agregar
- cin>>nombre_agg_modif_delete; //Se ingresa el nombre a agregar
- cout << "Ingrese el apellido del prestatario a agregar"<< endl;//Se pide al usuario que ingrese el apellido a agregar
- cin>>apellido_agg_modif_delete; //Se ingresa el apellido
- cout>>agregar_prestatario(nombre_agg_modif_delete,apellido_agg_modif_delete)>>endl; //Se llama a la funcion para agregar prestatarios
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Mismo procedimiento que las anteriores
- cout << "S/N"<<endl; //Permite volver a el menu principal
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 5:{ //CASO MODIFICACION DE PRESTATARIO
- string nombre_agg_modif_delete; //Variable local para guardar el nombre del prestatario a modificar
- string apellido_agg_modif_delete;//Variable local parecida a la anterior pero con el apellido
- cout << "Ingrese el nombre del prestatario a modificar"<< endl; //Se pide el nombre
- cin>>nombre_agg_modif_delete;//Se ingresa el nombre
- cout << "Ingrese el apellido del prestatario a modificar"<< endl;//Se pide el apellido
- cin>>apellido_agg_modif_delete;//Se ingresa el apellido
- 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
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl; //Se realiza lo mismo que el codigo anterior, permite volver al menu principal
- cin>> eleccion; //Mediante una estructura if
- if(mayuscula(eleccion)=="S"){
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 6:{ //CASO ELIMINACION DE PRESTATARIO
- string nombre_agg_modif_delete; //Variable local,almacenara el nombre del prestatario a eliminar
- string apellido_agg_modif_delete;//Variable local,almacenara el apellido del prestatario a eliminar
- cout << "Ingrese el nombre del prestatario a eliminar"<< endl; //Se pide el nombre
- cin>>nombre_agg_modif_delete;//Se ingresa el nombre
- cout << "Ingrese el apellido del prestatario a eliminar"<< endl;//Se pide el apellido
- cin>>apellido_agg_modif_delete; //Se ingresa el nombre
- 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
- cout << "------------------------------------------------------------------"<< endl; //Separador
- //Se repite la misma parte de codigo anterior para volver(no se agrego como funcion por que una funcion no permite el continue)
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- }
- }
- case 2:{ //SUBMENU 2 Administracion de prestamos
- cout << "Administracion de Préstamos"<< endl;
- cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
- cout << "1: Agregar préstamo"<< endl;
- cout << "2: Modificar préstamo"<< endl; //Se ponen en pantalla las opciones del submenu 2
- cout << "3: Eliminar préstamo"<< endl;
- cout << "4: Devolver préstamo"<< endl;
- cin>> opcion; //Se ingresa la opcion
- while (opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4){ //Se crea un bucle en caso de que la opcion ingresada sea incorrecta
- limpiar();
- cout << "La opcion ingresada es incorrecta"<< endl; //Siempre y cuando se ingresen opciones incorrectas el bucle estara activo
- cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;
- cout << "1: Agregar préstamo"<< endl;
- cout << "2: Modificar préstamo"<< endl; //Se muestra el menu otra vez
- cout << "3: Eliminar préstamo"<< endl; //Para que el usuario pueda ver devuelta las opciones
- cout << "4: Devolver préstamo"<< endl;
- cin>> opcion;
- }
- switch (opcion) { //SWITCH PARA EL SUBMENU 2
- case 1:{ //CASO AGREGAR PRESTAMO
- string categoria_agg_modif_delete;
- string nombre_agg_modif_delete; //Variables locales para almacenar categoria, nombre, apellido
- string apellido_agg_modif_delete; //y descripcion del prestamo a agregar
- string descripcion_prestamo_agg_modif_delete;
- 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"<<endl;
- cin>> eleccion; // Se ingresa s o n para si o no respectivamente
- if (mayuscula(eleccion)=="S"){ //Se comprueba que se elija si
- //Se realizaria la muestra de las categorias para los prestamos
- cout << "Ingrese una categoria para el prestamo"<<endl;
- cin>> categoria_agg_modif_delete;//Y le permite ingresar la descripcion de la categoria
- }
- else if(mayuscula(eleccion)=="N"){ //Se comprueba si eligio no
- cout << "Ingrese una categoria para el prestamo"<<endl; //En caso de que no se le da la opcion a ingresar
- cin>> categoria_agg_modif_delete; //una categoria sin ver todas
- }
- cout << "Desea ver los prestatarios ya inscriptos?"<<endl; //Se realiza lo mismo que en la pregunta anterior pero con los prestatarios
- cout << "S/N"<<endl;
- cin>> eleccion;
- if (mayuscula(eleccion)=="S"){//Caso Si
- //Se realizaria la muestra de los prestatarios
- cout << "Ingrese el nombre del prestatario para el prestamo"<<endl; //Se pide el nombre del prestatario
- cin>> nombre_agg_modif_delete; //Se ingresa
- cout << "Ingrese el apellido para el prestamo"<<endl; //Se pide el apellido del prestatario
- cin>> apellido_agg_modif_delete;//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(eleccion)=="N"){//Caso No
- cout << "Ingrese el nombre del prestatario para el prestamo"<<endl; //Se piden e ingresan directamente nombre y apellido del prestatario para el prestamo
- cin>> nombre_agg_modif_delete;
- cout << "Ingrese el apellido del prestatario para el prestamo"<<endl;
- cin>> apellido_agg_modif_delete;
- }
- cout << "Ingrese una descripcion para el prestamo"<<endl; // Se pide ingresar una descripcion al prestamo
- cin>> descripcion_prestamo_agg_modif_delete; //Se ingresa
- 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
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl; //Se realiza lo mismo que en los otros casos para volve
- cout << "S/N"<<endl; //Al menu principal, como aclare antes no se pudo modularizar por el continue
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 2:{ // CASO MODIFICAR PRESTAMO
- string descripcion_prestamo_agg_modif_delete;//Variable local para almacenar la descripcion del prestamo a modificar
- cout << "Ingrese la descripcion del prestamo a modificar"<<endl;//Se le pide al usuario ingresarla
- cin>> descripcion_prestamo_agg_modif_delete;//Se ingresa
- 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
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //Realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 3:{//CASO ELIMINAR PRESTAMO
- string descripcion_prestamo_agg_modif_delete; //Variable local para almancenar la descripcion del prestamo a eliminar
- cout << "Ingrese la descripcion del prestamo a eliminar"<<endl; //Se pide al usuario
- cin>>descripcion_prestamo_agg_modif_delete;//Se elimina
- 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
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //Eealiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 4:{//CASO DEVOLUCION DE PRESTAMO
- string descripcion_prestamo_agg_modif_delete;//Variable local para almacenar la descripcion
- cout << "Ingrese la descripcion del prestamo a devolver"<<endl; //Se pide al usuario
- cin>>descripcion_prestamo_agg_modif_delete; //Se ingresa
- 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
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //Realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- }
- }
- case 3:{ //Switch 3er SUBMENU Consultas
- cout << "Consultas de Prestamos"<< endl;
- cout << "Elija el numero correspondiente a la opcion que desea"<< endl;
- cout << "1: Cantidad de objetos prestados por categoría"<< endl;
- cout << "2: Listado de prestamos por categoría"<< endl; //Se ponen en pantalla las opciones
- cout << "3: Listado de préstamos ordenados por categoría o prestatario"<< endl;
- cout << "4: Prestatarios con objetos en prestamo"<< endl;
- cin>> opcion; //Se ingresa el numero de opcion
- while(opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4){ //While para el caso de que el usuario ingrese una opcion incorrecta
- cout << "La opcion ingresada es incorrecta"<< endl;//Hace un bucle hasta que el usuario ingrese un opcion correcta
- cout << "Vuelva a ingresar un numero correspondiente a las siguientes opciones"<< endl;
- cout << "1: Cantidad de objetos prestados por categoría"<< endl;
- cout << "2: Listado de prestamos por categoría"<< endl; //Se realiza un proceso parecido al de los case 1 y 2
- cout << "3: Listado de préstamos ordenados por categoría o prestatario"<< endl;
- cout << "4: Prestatarios con objetos en prestamo"<< endl;
- cin>> opcion;//Se ingresa nuevamente la opcion
- }
- switch(opcion){//Switch del submenu 3
- case 1:{//CASO CANTIDAD DE OBJETOS POR CATEGORIA
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 2:{//CASO LISTA DE PRESTAMOS POR CATGORIA
- cout << "Los prestamos por categoria son"<<endl;
- //Se realizaria la actividad deseada
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 3:{//CASO PRESTAMOS POR CATEGORIA O POR PRESTATARIO
- cout << "Desea ver los prestamos ordenados por categoria o por prestatario?" << endl;
- cin >>eleccion;
- do{
- if(mayuscula(eleccion)=="CATEGORIA"){
- //Se realizaria el ordenado por categoria, genera error al todavia no estar definida la funcion mayuscula
- }
- else{
- if(mayuscula(eleccion)=="PRESTATARIO"){
- //Se realizaria el ordenado por prestatario, genera error al todavia no estar definida la funcion mayuscula
- }
- else{
- cout <<"Ingreso una opcion no valida, vuelva a ingresar una opcion que si lo sea"<< endl;
- }
- }
- }while(mayuscula(eleccion)!="CATEGORIA" && mayuscula(eleccion)!="PRESTATARIO");
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- case 4:{//CASO PRESTATARIOS CON OBJETOS EN PRESTAMO
- cout << "Los prestatarios con objetos en prestamo son"<< endl;
- //Se realizaria la opcion deseada
- cout << "------------------------------------------------------------------"<< endl; //Separador
- cout << "Desea volver al menu principal para seguir utilizando el programa?"<< endl;
- cout << "S/N"<<endl;
- cin>> eleccion;
- if(mayuscula(eleccion)=="S"){ //realiza lo mismo que antes para volver al menu principal en caso de que se desee hacerlo
- limpiar();
- fin=1;
- continue;
- }
- else{
- if (mayuscula(eleccion)=="N"){
- return 0;
- }
- }
- }
- }
- }
- }
- }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
- }while(fin==1);
- }
- //Cuerpo de las funciones WIP
- string agregar_categoria(string descripcion){
- for(int i=0;i<=cantidad_categorias;i++){
- if(mayuscula(descripcion)==mayuscula(categorias[i].descripcion)){
- return ("La categoria que desea agregar ya existe");
- }
- else if(mayuscula(descripcion)!=mayuscula(categorias[i].descripcion)){
- categorias[i].codigo_categoria=cantidad_categorias;
- categorias[i].descripcion=descripcion;
- cantidad_categorias++;
- return ("Categoria agregada satisfatoriamente");
- }
- }
- }
- string modificar_categoria(string descripcion){
- string categoria_modif;
- string aux=descripcion;
- for(int i=0;i<cantidad_categorias;i++){
- if (mayuscula(categorias[i].descripcion)==mayuscula(aux)){
- cout <<"La descripcion de la categoria ingresada es correcta"<< endl;
- cout <<"A continuacion ingrese la nueva descripcion para la categoria" <<endl;
- cin>> categoria_modif;
- categorias[i].descripcion=categoria_modif;
- return("Categoria modificada satisfactoriamente");
- }
- else{
- return("La categoria que desea modificar no existe");
- }
- }
- }
- string eliminar_categoria(string descripcion){
- }
- string agregar_prestatario(string nombre,string apellido){
- prestatarios[cantidad_prestamos].codigo_prestatario=cantidad_prestamos;
- prestatarios[cantidad_prestamos].nombre=mayuscula(nombre);
- prestatarios[cantidad_prestamos].apellido=mayuscula(apellido);
- cantidad_prestatarios++;
- }
- string modificar_prestatario(string nombre,string apellido){
- 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)==prestatarios[i].nombre && mayuscula(apellido_aux)==prestatarios[i].apellido){
- cout <<"El prestatario a modificar es correcto"<< endl;
- cout <<"Ingrese el nuevo nombre del prestatario" <<endl;
- cin>>nombre_modif;
- cout <<"Ingrese el nuevo apellido del prestatario" <<endl;
- cin>>apellido_modif;
- prestatarios[i].nombre=nombre_modif;
- prestatarios[i].apellido=apellido_modif;
- return("Prestatario modificado satisfactoriamente");
- }
- else{
- return("El prestatario que desea modificar no existe");
- }
- }
- }
- string eliminar_prestatario(string nombre,string apellido){
- }
- string agregar_prestamo(string categoria,string nombre,string apellido,string descripcion){
- }
- string modificar_prestamo(string descripcion){
- }
- string eliminar_prestamo(string descripcion){
- }
- string terminar_prestamo(string descripcion){
- }
- string mayuscula(string cadena){
- for(int i=0;i<cadena.length();i++){
- cadena[i]=toupper(cadena[i]);
- }
- return cadena;
- }
- void limpiar(){
- system("cls");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement