All pastes #501650 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-22 04:33 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>

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;
}