Banco - Aplicación con colas (B)

También para linux

Igual requiere de: pilas.h y pilas.c que encuentras en en la entrada anterior.

/* 
 * Archivo:   Banco.c
 * Autores: Rodrigo y Antonio
 *
 * Creado el 17 de febrero de 2011, 09:30 PM
 */

#include "colas.h"

int main() {

    cola *Fila_Banco = crear_c();//Creamos una nueva pila
    int tiempo_espera = 0;//Esta variable controlará el tiempo de espera.
    int menu = 0;//Variable para el menu principal
    do{
        printf("Banco Bonito :D\n");
        printf("Menú de administrador:\n\t1)Llegada de cliente\n\t2)Salida de cliente\n\t3)Salir\n");
        printf("Elige: ");
        scanf("%d",&menu);
        switch(menu)//Opciones de administrador
        {
            case 1://Recibimos al cliente
                printf("\n\n\n\tNuevo cliente\n");
                tipodato nuevo_cliente;//Creamos una nueva estructura
                printf("Introduce el nombre del cliente: ");
                getchar();//Evitar retorno de carro, Linux ;)
                nuevo_cliente.nombre =(char *) calloc(51,sizeof(char));//Reservar memoria para el nombre del cliente
                gets(nuevo_cliente.nombre);//Obtener el nombre del cliente
                int tiempo_operaciones = 0;//Aquí se guardará el tiempo de operaciones del nuevo cliente
                int submenu = 0;//Variable para el submenu
                do{
                    printf("\nElija la(s) operacion(es) que %s realizará:\n",nuevo_cliente.nombre);
                    printf("\t1)Depósito\n\t2)Retiro\n\t3)Cobro de cheques\n\t4)Depósito a terceros\n\t5)Consulta de saldo\n\t6)Nada");
                    printf("\nElige: ");
                    scanf("%d",&submenu);
                    switch(submenu)//Se acumula el tiempo de operaciones del nuevo cliente
                    {
                        case 1: tiempo_operaciones += 5; break;
                        case 2: tiempo_operaciones += 6; break;
                        case 3: tiempo_operaciones += 8; break;
                        case 4: tiempo_operaciones += 4; break;
                        case 5: tiempo_operaciones += 2; break;
                        default: break;
                    }
                }while(submenu != 6);
                nuevo_cliente.tiempo = tiempo_operaciones;//Se guarda en la estructura el tiempo total de operaciones de el cliente nuevo
                if(introducir_c(nuevo_cliente,Fila_Banco))
                {
                    printf("\n\n\t%s está formado y va a esperar %d minutos para ser atendido\n\n",nuevo_cliente.nombre,tiempo_espera);//Desplegar información
                }
                tiempo_espera += tiempo_operaciones;//Se suma el tiempo de operaciones al tiempo de espera global
                break;
            case 2://Atendemos al cliente
                if(vacia_c(Fila_Banco))//Si la cola está vacía
                {
                    printf("\t\nLa fila está vacía, ya atendiste a todos tus clientes... o nunca has tenido clientes  :P\n");
                }
                else
                {
                    tipodato cliente_atendido = sacar_c(Fila_Banco);//Se saca el cliente de la cola
                    if(!(cliente_atendido.nombre == NULL)){
                        printf("\t\nWoha! se ha atendido a %s\n", cliente_atendido.nombre);
                        tiempo_espera -= cliente_atendido.tiempo;//Un cliente sacado de la cola es un cliente atendido, se resta su tiempo de atención al tiempo global de espera
                    }
                }
                break;
            case 3: break;
            default: break;
        }
    }while(menu != 3);
    return (EXIT_SUCCESS);
}

¡Saludos! @fferegrino :)

1 comment:

  1. Dios! hermano creeme que ya intente de todo y no se como hacer para que tu programa funcione... segun veo el codigo es exactamente lo que ando buscando por todos lados del internet pero no puedo, si me podrias mandar el .cpp junto con sus librerias te lo agradezco gracias siempre por todo!
    fanstein@hotmail.com (ese es mi correo)

    ReplyDelete

¡Hey, gracias por tu comentario! No seas anónimo, inicia sesión para que te responda más fácilmente.