Advertisement
wagner-cipriano

Programa contas bancárias

Jun 20th, 2023
894
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.82 KB | Science | 0 0
  1. /*Programa contas bancarias
  2.   Funcionalidades implementadas:
  3.     1) Cadastrar
  4.     2) Listar dados
  5.     3) Editar
  6.     4) Excluir
  7. */
  8. #define N 100 /*numero máximo de registros*/
  9. //Libraries:
  10. #include<iostream>
  11. //#include<string.h>    //string functions
  12. //#include <stdio.h>
  13. using namespace std;
  14.  
  15. struct Conta{
  16.   int nconta;
  17.   string nome;
  18.   double saldo;
  19.   bool ativo; //utilizado para criar ou apagar uma conta
  20. };
  21.  
  22. //Assinaturas das funções
  23. /*Limpar tela*/
  24. void clean();
  25. /*Pause para interação com o usuário */
  26. void pause();
  27. /*Valida se existem registros cadastrados*/
  28. bool validaReg(int qtde);
  29. /*Retorna o índice caso tenha uma conta cadastrada com o mesmo número, ou -1 caso contrário*/
  30. int pesquisa(Conta[], int, int);
  31. /*Entrada de dados de uma conta*/
  32. void entrada(Conta &C);
  33. /*Cadastra qts contas o usuário desejar*/
  34. void cadastra(Conta [], int &);
  35. /*Edita os dados de uma conta*/
  36. void edita(Conta v[], int qtde);
  37. /*Imprime os dados de uma conta*/
  38. void imprime(Conta c);
  39. /*Imprime os dados de todas as contas ativas*/
  40. void imprimeContasAtivas(Conta v[], int qtde);
  41. /*Imprime os dados das contas que possuem o maior saldo*/
  42. void imprimeMaiorSaldo(Conta v[], int qtde);
  43. /*Excluir uma conta*/
  44. void exclui(Conta v[], int qtde);
  45.  
  46.  
  47. int main() {
  48.   Conta vet[N];
  49.   int op=1, qtde=0; //qtde: qtde de contas cadastradas
  50.   bool valid;
  51.  
  52.   while(op!=0) {
  53.     clean();
  54.     cout << "\nMenu"<<endl;
  55.     cout << "  1- Cadastrar uma conta"<<endl;
  56.     cout << "  2- Visualizar todas as contas"<<endl;
  57.     cout << "  3- Editar dados de uma conta"<<endl;
  58.     cout << "  4- Dados da conta com maior saldo"<<endl;
  59.     cout << "  5- Excluir uma conta"<<endl;
  60.     cout << "  0- Sair\n     Digite sua opção:\n  ";
  61.     cin >> op;
  62.  
  63.     switch(op) {
  64.       case 2: case 3: case 4: case 5:
  65.         valid = validaReg(qtde);
  66.         if(!valid) op = -1;
  67.     }
  68.     switch(op) {
  69.       case 1:
  70.           cadastra(vet, qtde);
  71.           break;
  72.       case 2:
  73.           imprimeContasAtivas(vet, qtde);
  74.           break;
  75.       case 3:
  76.           edita(vet, qtde);
  77.           break;
  78.       case 4:
  79.           imprimeMaiorSaldo(vet, qtde);
  80.           break;
  81.       case 5:
  82.           exclui(vet, qtde);
  83.     }
  84.   }
  85.   return 0;
  86. }
  87.  
  88. /*Limpar tela*/
  89. void clean() {
  90.   #ifdef __linux__
  91.     system ("clear");
  92.   #else
  93.     system ("CLS");
  94.   #endif
  95. }
  96.  
  97. /*Pause para interação com o usuário */
  98. void pause() {
  99.     cout << "\n  Digite qualquer tecla para continuar...";
  100.     cin.ignore(); // ignores the newline
  101.     cin.get(); //waits for character
  102. }
  103.  
  104. /*Valida se existem registros cadastrados*/
  105. bool validaReg(int qtde) {
  106.   if(qtde==0) {
  107.     cout << "\n  Nenhuma conta cadastrada.";
  108.     pause();
  109.     return false;
  110.   }
  111.   return true;
  112. }
  113.  
  114. /*Retorna o indice caso tenha uma conta cadastrada com o mesmo número, ou -1 caso contrário*/
  115. int pesquisa(Conta v[], int qtde, int nc) {
  116.   for(int i=0; i<qtde; i++)
  117.     if(v[i].ativo == true && v[i].nconta == nc)
  118.       return i;
  119.   return -1;
  120. }
  121.  
  122. /*Entrada de dados de uma conta*/
  123. void entrada(Conta &C) {
  124.     cout << "  Cliente: ";
  125.     cin >> C.nome;
  126.     cout << "  Saldo:   ";
  127.     cin >> C.saldo;
  128. }
  129.  
  130. /*Cadastra qts contas o usuário desejar*/
  131. void cadastra(Conta v[], int &qtde) {
  132.   int nc, idx;
  133.   char cont = 'S';
  134.   Conta C;
  135.   while(cont == 'S' and qtde < N) {
  136.     cout << "\nCadastrar conta:\n";
  137.     do{
  138.       cout << "  Número:  ";
  139.       cin >> nc;
  140.       idx = pesquisa(v, qtde, nc);
  141.       if(idx != -1)
  142.         cout<<"  Já existe conta cadastrada com o numero " << nc << endl;
  143.     } while(idx != -1);
  144.  
  145.     C.nconta = nc;
  146.     C.ativo = true;
  147.     entrada(C);
  148.     v[qtde++] = C;
  149.  
  150.     cout<<"  Inserir nova conta? (S/N): ";
  151.     cin >> cont;
  152.   }
  153.   if(qtde >= N)
  154.       cout<<"Número máximo de contas já cadastrado!";
  155. }
  156.  
  157. /*Edita os dados de uma conta*/
  158. void edita(Conta v[], int qtde) {
  159.   int nc, idx;
  160.   cout << "Digite o numero da conta que deseja alterar: ";
  161.   cin >> nc;
  162.   idx = pesquisa(v, qtde, nc);
  163.   if(idx == -1) {
  164.     cout<<"  Conta " << nc << " não encontrada, verifique!";
  165.   } else {
  166.     entrada(v[idx]);
  167.     cout<<"\n  Conta atualizada com sucesso!";
  168.   }
  169.   pause();
  170. }
  171.  
  172. /*Imprime os dados de uma conta*/
  173. void imprime(Conta c) {
  174.     //cout<<"CONTA: \n";
  175.     cout<<"  Numero:  " << c.nconta << endl;
  176.     cout<<"  Cliente: " << c.nome << endl;
  177.     cout<<"  Saldo:   " << c.saldo << endl << endl;
  178. }
  179.  
  180. /*Imprime os dados de todas as contas ativas*/
  181. void imprimeContasAtivas(Conta v[], int qtde) {
  182.     clean();
  183.     cout << "Contas cadastradas:\n";
  184.     for(int i=0; i<qtde; i++)
  185.       if(v[i].ativo == true) //imprime as contas ativas
  186.         imprime(v[i]);
  187.     pause();
  188. }
  189.  
  190. /*Imprime os dados das contas que possuem o maior saldo*/
  191. void imprimeMaiorSaldo(Conta v[], int qtde) {
  192.   int i, pmaior;
  193.   double maior = 0;
  194.   /*Obtendo o primeiro saldo válido*/
  195.   for(i=0; i<qtde; i++)  {
  196.      if(v[i].ativo == true) {  //contas ativas
  197.          maior = v[i].saldo;
  198.          pmaior = i;
  199.          break;
  200.      }
  201.   }
  202.   /*Procurando o maior*/
  203.   for(i=0; i<qtde; i++) {
  204.     if(v[i].ativo == true and v[i].saldo > maior) {
  205.        maior = v[i].saldo;
  206.        pmaior=i;
  207.     }
  208.   }
  209.   //Imprimir os dados da conta
  210.   clean();
  211.   cout << "Conta(s) com o maior saldo: " << endl;
  212.   imprime(v[pmaior]);
  213.   /*procurando outras contas que possuem o maior valor*/
  214.   for(i=0; i<qtde; i++)
  215.     if(v[i].ativo == true && v[i].saldo == maior && i != pmaior)
  216.       imprime(v[i]);
  217.   pause();
  218. }
  219.  
  220. /*Excluir uma conta*/
  221. void exclui(Conta v[], int qtde) {
  222.     clean();
  223.     int nc, p;
  224.     cout << "Digite o numero da conta a excluir: ";
  225.     cin >> nc;
  226.  
  227.     p = pesquisa(v, qtde, nc);
  228.     if(p!=-1 && v[p].ativo == true) {
  229.         v[p].ativo = false;
  230.         cout << "  Conta apagada com sucesso";
  231.     } else
  232.         cout<<"Número de conta inválido";
  233.     pause();
  234. }
  235.  
  236.  
Tags: array struct
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement