#include #include int main(int argc, char *argv[]) { const int MAX_CUENTAS = 10; //cantidad maxima de cuentas, es constante const int MAX_CDP = 100; //cantidad maxima de depositos a plazo, es constante int menu_principal = 1; //indica si hay que seguir corriendo el menu principal int menu_ahorro = 1; //indica si hay que seguir corriendo el menu de ahorros int menu_inversion = 1; //indica si hay que seguir corriendo el menu de inversion int menu_balances = 1; //indica si hay que seguir corriendo el menu de balances int opcion_principal; //contiene la opcion elegida en el menu principal int opcion_ahorro; //contiene la opcion elegida en el menu de ahorros int opcion_inversion; //contiene la opcion elegida en el menu de inversion int opcion_balance; //contiene la opcion elegida en el menu de balances char usuario[100]; //nombre del usuario del sistema int id_cuenta[10] = {0}; //id de cuenta para cada cliente char nombre_cuenta[MAX_CUENTAS][100]; //nombre de cada cliente char cedula_cuenta[MAX_CUENTAS][100]; //cedula de cada cliente char residencia_cuenta[MAX_CUENTAS][100]; //lugar de residencia de cada cliente float monto_cuenta[MAX_CUENTAS]; //monto de la cuenta de cada cliente float monto_cdp[MAX_CDP]; //monto de cada CDP float interes_mensual = 0.15/12.0; //interes mensual para los CDP int cuenta_cdp[MAX_CDP]; //cuenta asociada a cada CDP int meses_cdp[MAX_CDP]; //cantidad de meses para cada CDP int id_cdp[100] = {0}; //id unico para cada CDP int i; //indice para iterar sobre arreglos int id; //lectura temporal de un id de cuenta int id_cdp_temp; //lectura temporal de un id para un CDP int cuenta; //variable para determinar si ya existe un id de cuenta int cdp; //variable para determinar si ya existe un id de un CDP float monto_final_cdp; //monto final del CDP (valor original + intereses) printf("\t$$$ Bienvenido al Gran Banco Costarricense $$$\n\n"); printf("Digite el nombre de usuario por favor: "); scanf(" %[^\n]", &usuario); system("cls"); while(menu_principal != 0) //El menu principal es distinto de cero, cuando es cero el ciclo termina {//Este ciclo me permite ejecutar el menu siempre y cuando sea distinto de cero, cuando el valor de la opcion es el case 3, el menu se hace cero y se sale del programa, corresponde a la condicion de parada printf("\t* Menu principal *\n\n"); //Se despliega el menu principal printf("Bienvenid@ %s\n\n", usuario); printf("1) Menu de ahorro\n"); printf("2) Menu de inversion\n"); printf("3) Salir\n\n"); printf("Digite su opcion por favor: "); scanf("%d", &opcion_principal); system("cls"); //Limpiar pantalla switch(opcion_principal) //Me lleva a las opciones existentes segun el numero digitado { case 1: while(menu_ahorro != 0) //Se ejecuta la opcion mientras el menu sea distinto de cero, en caso de serlo, se sale al menu anterior { printf("\t** Menu de Ahorro **\n\n"); printf("1) Crear cuenta nueva\n"); printf("2) Ver cuentas existentes\n"); printf("3) Volver al menu principal\n\n"); printf("Digite su opcion por favor: "); scanf("%d", &opcion_ahorro); system("cls"); switch(opcion_ahorro) // Me despliega las acciones segun la opcion elegida { case 1: printf("Digite el numero de cuenta: "); //Corresponde al numero temporal de cuenta, debo verificar diferentes condiciones scanf("%d", &id); if(id == 0) // Validar si es 0, pues se asume que 0 es un campo disponible { printf("El numero de cuenta debe ser distinto de 0!\n\n"); //Si la cuenta es cero, se tomaria como un campo disponible, entonces no se crea la cuenta nueva } else { cuenta = -1; // Se asume que no existe la cuenta y no hay campos disponibles, o sea ya tengo 10 cuentas for(i = 0; i < MAX_CUENTAS; i++) //MAX_CUENTAS lo habia declarado como 10 { if(id_cuenta[i] == id) //Para verificar cuenta unica { printf("El numero de cuenta ya existe!\n\n"); //Si ya hay una cuenta con el mismo id, el id temporal no puede establecer una nueva cuenta break; } if(id_cuenta[i] == 0) //El campo de la cuenta esta disponible, utilizarlo { cuenta = i; // Se le asigna un campo i a la cuenta id_cuenta[i] = id; // A la identificacion temporal se le asigna un id de cuenta nueva en el arreglo break; } } if(cuenta == -1) //A la cuenta se le asigna el -1, porque el numero ya existe o no se pudo encontrar un campo { if(id_cuenta[i] != id) // Si no se pudo encontrar un campo { printf("No es posible crear mas cuentas!\n\n"); } } else //Todo bien, seguir pidiendo datos { printf("Digite el nombre del cliente: "); scanf(" %[^\n]", &nombre_cuenta[cuenta]); printf("Digite el numero de cedula del cliente: "); scanf(" %[^\n]", &cedula_cuenta[cuenta]); printf("Digite la residencia del cliente: "); scanf(" %[^\n]", &residencia_cuenta[cuenta]); printf("Digite el monto inicial de la cuenta: "); scanf("%f", &monto_cuenta[cuenta]); system("cls"); } } break; case 2: while(menu_balances != 0) //El menu se ejecuta siempre y cuando sea distinto de cero, que es la condicion de parada { printf("\t*** Menu de Cuentas ***\n\n"); //Ingreso al menu de cuentas (balance de cuentas) printf("1) Consultar todas las cuentas\n"); printf("2) Consultar cuenta especifica\n"); printf("3) Volver al menu de ahorro\n\n"); scanf("%d", &opcion_balance); printf("Digite su opcion por favor: "); system("cls"); switch(opcion_balance) // Despliego opciones segun desee el usuario desde el menu de cuentas { case 1: printf("NUMERO\tNOMBRE\tCEDULA\tMONTO\t\tRESIDENCIA\t\n"); // Fila fija para designar nombres de columnas for(i = 0; i < MAX_CUENTAS; i++) //El ciclo se ejecuta hasta que el numero maximo de cuentas sea 10 { if(id_cuenta[i] != 0) //No imprimir los campos con cuentas invalidas { printf("%d\t%s\t%s\t%f\t%s\n", id_cuenta[i], nombre_cuenta[i], cedula_cuenta[i], monto_cuenta[i], residencia_cuenta[i]); //Previamente se declararon los arreglos anteriores que guardan los datos que se digitan, se le asigna un campo a cada dato de cada cliente } } printf("\n"); break; case 2: printf("Digite el numero de cuenta: "); scanf("%d", &id); cuenta = -1; // Le as for(i = 0; i < MAX_CUENTAS; i++) { if(id_cuenta[i] == id) // El id temporal corresponde al id de cuenta existente { cuenta = i; // Cuenta en el iesimo campo, se despliegan datos printf("NUMERO\tNOMBRE\tCEDULA\tMONTO\tRESIDENCIA\t\n"); // Desplegar los datos de la cuenta existente que se desee consultar printf("%d\t%s\t%s\t%f\t%s\n", id_cuenta[i], nombre_cuenta[i], cedula_cuenta[i], monto_cuenta[i], residencia_cuenta[i]); break; } } if(cuenta == -1) { printf("La cuenta no existe!\n\n"); } printf("\n"); break; case 3: menu_balances = 0; // Me asigna la condicion de salida break; } } menu_balances = 1; break; case 3: menu_ahorro = 0; break; } } menu_ahorro = 1; break; case 2: while(menu_inversion != 0) // El menu se ejecuta siempre y cuando no se cumpla la condicion de parada { printf("\t** Menu de Inversiones **\n\n"); printf("1) Comprar certificado de deposito a largo plazo (CDP)\n"); printf("2) Volver al menu principal\n\n"); scanf("%d", &opcion_inversion); printf("Digite su opcion por favor: "); system("cls"); switch(opcion_inversion) // Me despliega las opciones presentes dentro del menu anterior { case 1: printf("Digite el id del CDP: "); // Le asigno un id temporal al CDP scanf("%d", &id_cdp_temp); cdp = -1; // Si termina en -1 significa que no hay mas campos for(i = 0; i < MAX_CDP; i++) { if(id_cdp[i] == id_cdp_temp) // Si el id ya existe { printf("El numero de CDP ya existe!\n\n"); break; } if(id_cdp[i] == 0) // Existe un campo disponible para el CDP { cdp = i; id_cdp[i] = id_cdp_temp; break; } } if(cdp == -1 && id_cdp[i] != id_cdp_temp) //No hay mas campos { printf("No es posible crear mas CDP's!\n\n"); break; } else {// Datos para el CDP printf("Digite el monto: "); scanf("%f", &monto_cdp[cdp]); printf("Digite la cantidad de meses: "); scanf("%d", &meses_cdp[cdp]); printf("Digite el numero de cuenta: "); scanf("%d", &cuenta_cdp[cdp]); cuenta == -1; // Se asume que no existe for(i = 0; i < MAX_CUENTAS; i++) // Ver si la cuenta existe, recorro las cuentas existentes. Si no existe, blanquear los campos de nuevo { if(cuenta_cdp[cdp] == id_cuenta[i]) { cuenta = i; break; } } if(cuenta == -1) // No se pudo encontrar el numero de cuenta { //Es necesario poner los valores de nuevo en 0 id_cdp[cdp] = 0; monto_cdp[cdp] = 0; meses_cdp[cdp] = 0; cuenta_cdp[cdp] = 0; } else { //Calcular el monto final del CDP monto_final_cdp = monto_cdp[cdp] + (monto_cdp[cdp]*(interes_mensual*meses_cdp[cdp])); monto_cuenta[cuenta] += monto_final_cdp; //Se acumula en la cuenta existente printf("El valor final del CDP fue de %f\n", monto_final_cdp); printf("La cuenta ahora tiene %f\n", monto_cuenta[cuenta]); } } break; case 2: menu_inversion = 0; break; } } menu_inversion = 1; break; case 3: menu_principal = 0; break; } } //system("PAUSE"); return 0; }