Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <string.h>
- #define QUANT_CLIENTES 5
- typedef struct {
- int agencia;// número inteiro de 3 dígitos;
- int contaCorrente ;// número inteiro de 4 dígitos;
- char nome[100];// vetor de caracteres (string) de no máximo 100 posições;
- float saldoC; // número real com duas casas de aproximação;
- float chequeEspecial;
- int preenchido;
- } tCliente;
- void abrirContaCorrente(tCliente clientes[]){
- int i, op;
- float valorDeposito;
- fflush(stdin);
- for(i=0;i<QUANT_CLIENTES;i++){
- if(clientes[i].preenchido != 1){
- printf("\t--Cadastro do Cliente--");
- printf("\nNome: ");
- fgets(clientes[i].nome, 100, stdin); // Le o nome completo e com espaços e limpa o buffer do teclado
- //obrigando o usuario a digitar um numero de 3 digitos
- while(clientes[i].agencia < 100 || clientes[i].agencia > 999){
- printf("\nAgencia[N° de 3 digitos]: ");
- scanf("%d", &clientes[i].agencia);
- }
- //obrigando o usuario a digitar um numero de 4 digitos
- while(clientes[i].contaCorrente < 1000 || clientes[i].contaCorrente > 9999){
- printf("\nConta Corrente[N° de 4 digitos]: ");
- scanf("%d", &clientes[i].contaCorrente);
- }
- printf("\nDeseja fazer um deposito inicial? <1 - Sim, outro valor - Nao>");
- scanf("%d", &op);
- if(op==1){
- printf("Informe o valor do deposito: ");
- scanf("%f", &valorDeposito);
- while(valorDeposito<0){
- printf("Valor invalido! Por favor digite um valor positivo: ");
- scanf("%f", &valorDeposito);
- }
- clientes[i].saldoC = valorDeposito;
- }
- else
- clientes[i].saldoC = 0;
- //atribuições
- clientes[i].chequeEspecial = 200;
- clientes[i].preenchido = 1;
- return;
- }
- }
- if(i==QUANT_CLIENTES)
- printf("ERRO: Atingiu a quantidade Maxima de Contas\n");
- }
- int verificaUser(tCliente clientes[]){
- int agencia = 0,contaC = 0, i;
- while(agencia < 100 || agencia > 999){
- printf("Informe sua Agencia (3 digitos): ");
- scanf("%d",&agencia);
- }
- while(contaC < 1000 || contaC > 9999){
- printf("Informe sua Conta Corrente (4 digitos): ");
- scanf("%d",&contaC);
- }
- for(i=0;i<QUANT_CLIENTES;i++){
- if(clientes[i].agencia == agencia && clientes[i].contaCorrente == contaC)
- return i;
- }
- return -1;
- }
- /*void Imprimir(tCliente cliente[]){
- int i;
- for(i=0;i<QUANT_CLIENTES; i++){
- if(cliente[i].preenchido ==1)
- printf("\nPosicao [%d] Prenchida\n",i);
- else
- printf("\nPosicao [%d] Nao Prenchida\n",i);
- }
- }
- */
- void imprimirSaldo(tCliente clientes[], int *aux){
- printf("\nSaldo Real: %2.f",clientes[*aux].saldoC);
- printf("\tChegue Especial: %2.f",clientes[*aux].chequeEspecial);
- printf("\tSaldo Total: %2.f\n", clientes[*aux].chequeEspecial + clientes[*aux].saldoC);
- }
- void debitar(tCliente clientes[],int *aux,float *valor, float *saldoTotal){
- if(*valor == *saldoTotal){
- clientes[*aux].saldoC = 0;
- clientes[*aux].chequeEspecial = 0;
- }
- if(*valor >= clientes[*aux].saldoC && *valor < *saldoTotal){
- clientes[*aux].chequeEspecial -= *valor - clientes[*aux].saldoC;
- clientes[*aux].saldoC = 0;
- }
- if(*valor <= clientes[*aux].saldoC){
- clientes[*aux].saldoC -= *valor;
- }
- }
- void saldoContaCorrrente(tCliente clientes[]){
- int aux = verificaUser(clientes);
- if(aux >= 0){
- printf("\nSaldo Real: %2.f",clientes[aux].saldoC);
- printf("\tChegue Especial: %2.f",clientes[aux].chequeEspecial);
- printf("\tSaldo Total: %2.f\n", clientes[aux].chequeEspecial + clientes[aux].saldoC);
- }else
- printf("\n\tCliente nao existe\n");
- }
- void fecharContaCorrente(tCliente clientes[]){
- int aux = verificaUser(clientes),i;
- if(aux >= 0){
- if(clientes[aux].saldoC == 0)
- printf("\nConta Fechada Com Sucesso !!\n");
- if(clientes[aux].saldoC > 0)
- printf("\nVenha receber R$ %2.f que está na sua conta",clientes[aux].saldoC);
- if(clientes[aux].chequeEspecial<200)
- printf("\nVenha nos pagar R$ %2.f",200 - clientes[aux].chequeEspecial);
- //apagando e reorganizando o vetor]
- for(i=aux;i<QUANT_CLIENTES;i++){
- clientes[i] = clientes[i+1];
- }
- }else
- printf("\n\tCliente nao existe\n");
- }
- void depositoContaCorrente(tCliente clientes[]){
- float valorDeposito, debito;
- int aux = verificaUser(clientes);
- printf ("\n");
- if(aux>=0){
- printf("Informe o valor do deposito: ");
- scanf("%f", &valorDeposito);
- while(valorDeposito<0){
- printf("Valor invalido! Por favor digite um valor positivo: ");
- scanf("%f", &valorDeposito);
- }
- debito = 200 - clientes[aux].chequeEspecial;
- if (debito >= valorDeposito){
- clientes[aux].chequeEspecial += valorDeposito;
- }
- if(debito < valorDeposito){
- valorDeposito -= debito;
- clientes[aux].chequeEspecial += debito;
- clientes[aux].saldoC += valorDeposito;
- }
- printf("\nDeposito realizado com sucesso!\n");
- imprimirSaldo(clientes, &aux);
- }
- else
- printf("\n\tCliente nao existe\n");
- }
- void saqueContaCorrente(tCliente clientes[]){
- int op, aux = verificaUser(clientes);
- float saque, saldoTotal = clientes[aux].saldoC + clientes[aux].chequeEspecial;
- printf("\nSeu saldo total eh: %.2f\n", saldoTotal);
- if(saldoTotal==0){
- printf("\nVoce nao possui saldo suficiente para saque!\n");
- }
- else{
- printf("\nInforme um valor para saque: ");
- scanf("%f", &saque);
- while(saque > saldoTotal){
- printf("\nSaldo insuficiente!\n");
- printf("\nDeseja digitar outro valor? (1 - Sim, Outro valor - Nao)\n");
- scanf("%d", &op);
- if(op==1){
- printf("Informe um valor: ");
- scanf("%f", &saque);
- }else{
- printf("Operacao Cancelada!\n");
- return;
- }
- }
- debitar(clientes, &aux, &saque, &saldoTotal);
- }
- printf("\nSaque realizado com sucesso!\n");
- imprimirSaldo(clientes, &aux);
- }
- void transferenciaEntreContas(tCliente clientes[]){
- int aux1, aux2, op, status;
- float transferir, saldoTotal, debito;
- printf("--Dados da conta a ser RETIRADO o dinheiro--\n\n");
- aux1 = verificaUser(clientes);
- if(aux1>=0){
- saldoTotal = clientes[aux1].saldoC + clientes[aux1].chequeEspecial;
- printf("\nInforme um valor a ser transferido: ");
- scanf("%f", &transferir);
- while(transferir > saldoTotal){
- printf("\nSaldo insuficiente!\n");
- printf("\nDeseja digitar outro valor? (1 - Sim, Outro valor - Nao)\n");
- scanf("%d", &op);
- if(op==1){
- printf("Informe um valor: ");
- scanf("%f", &transferir);
- }else{
- printf("Operacao Cancelada!\n");
- return;
- }
- }
- }else{
- printf("\n\tCliente nao existe\n");
- }
- printf("\n--Dados da conta a ser DEPOSITADO o dinheiro--\n\n");
- aux2 = verificaUser(clientes);
- if(aux1 != aux2){
- if(aux2>=0){
- printf("\n--CONTA A SER RETIRADO O DINHEIRO--\n\n");
- printf("Nome: %s", clientes[aux1].nome);
- printf("Agencia: %d\n", clientes[aux1].agencia);
- printf("Conta: %d\n", clientes[aux1].contaCorrente);
- printf("\n--CONTA A SER DEPOSITADO O DINHEIRO--\n\n");
- printf("Nome: %s", clientes[aux2].nome);
- printf("Agencia: %d\n", clientes[aux2].agencia);
- printf("Conta: %d\n", clientes[aux2].contaCorrente);
- status = 1;
- }else{
- printf("\nNao foi possivel realizar a transacao!\n");
- printf("\n\tCliente nao existe\n");
- status = 0;
- }
- }else{
- printf("\nNao foi possivel realizar a transacao!\n");
- printf("As contas sao iguais!\n");
- }
- if(status==1){
- debitar(clientes, &aux1, &transferir, &saldoTotal);
- debito = 200 - clientes[aux2].chequeEspecial;
- if (debito >= transferir){
- clientes[aux2].chequeEspecial += transferir;
- }
- if(debito < transferir){
- transferir -= debito;
- clientes[aux2].chequeEspecial += debito;
- clientes[aux2].saldoC += transferir;
- }
- }
- }
- int main(){
- tCliente clientes[QUANT_CLIENTES];
- int opcaoM;
- do{
- printf("\n--SISTEMA BANCARIO UNIVERSITARIO--\n");
- printf("\t1. Abrir Conta Corrente"); //ok - Faltava validar algumas entradas e deposito inicial
- printf("\n\t2. Saldo de Conta Corrente"); //ok
- printf("\n\t3. Deposito em Conta Corrente"); //ok
- printf("\n\t4. Saque de Conta Corrente"); //ok
- printf("\n\t5. Transferencia entre Contas Correntes"); //ok
- printf("\n\t6. Fechar Conta Corrente"); //ok
- printf("\n\t0. Sair do sistema\n"); //ok
- printf("Digite a opcao do menu: ");
- scanf("%d", &opcaoM);
- printf("\n");
- switch(opcaoM) {
- case 1:
- abrirContaCorrente(clientes);
- break;
- case 2:
- saldoContaCorrrente(clientes);
- break;
- case 3:
- depositoContaCorrente(clientes);
- break;
- case 4:
- saqueContaCorrente(clientes);
- break;
- case 5:
- transferenciaEntreContas(clientes);
- break;
- case 6:
- fecharContaCorrente(clientes);
- break;
- case 0:
- printf("\tBye Bye!\n");
- break;
- default:
- printf("\tOpcao Invalida !\n");
- break;
- }
- }while(opcaoM!=0);
- return 0;
- }
Add Comment
Please, Sign In to add comment