Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Programa contas bancarias
- Funcionalidades implementadas:
- 1) Cadastrar
- 2) Listar dados
- 3) Editar
- 4) Excluir
- */
- #define N 100 /*numero máximo de registros*/
- //Libraries:
- #include<iostream>
- //#include<string.h> //string functions
- //#include <stdio.h>
- using namespace std;
- struct Conta{
- int nconta;
- string nome;
- double saldo;
- bool ativo; //utilizado para criar ou apagar uma conta
- };
- //Assinaturas das funções
- /*Limpar tela*/
- void clean();
- /*Pause para interação com o usuário */
- void pause();
- /*Valida se existem registros cadastrados*/
- bool validaReg(int qtde);
- /*Retorna o índice caso tenha uma conta cadastrada com o mesmo número, ou -1 caso contrário*/
- int pesquisa(Conta[], int, int);
- /*Entrada de dados de uma conta*/
- void entrada(Conta &C);
- /*Cadastra qts contas o usuário desejar*/
- void cadastra(Conta [], int &);
- /*Edita os dados de uma conta*/
- void edita(Conta v[], int qtde);
- /*Imprime os dados de uma conta*/
- void imprime(Conta c);
- /*Imprime os dados de todas as contas ativas*/
- void imprimeContasAtivas(Conta v[], int qtde);
- /*Imprime os dados das contas que possuem o maior saldo*/
- void imprimeMaiorSaldo(Conta v[], int qtde);
- /*Excluir uma conta*/
- void exclui(Conta v[], int qtde);
- int main() {
- Conta vet[N];
- int op=1, qtde=0; //qtde: qtde de contas cadastradas
- bool valid;
- while(op!=0) {
- clean();
- cout << "\nMenu"<<endl;
- cout << " 1- Cadastrar uma conta"<<endl;
- cout << " 2- Visualizar todas as contas"<<endl;
- cout << " 3- Editar dados de uma conta"<<endl;
- cout << " 4- Dados da conta com maior saldo"<<endl;
- cout << " 5- Excluir uma conta"<<endl;
- cout << " 0- Sair\n Digite sua opção:\n ";
- cin >> op;
- switch(op) {
- case 2: case 3: case 4: case 5:
- valid = validaReg(qtde);
- if(!valid) op = -1;
- }
- switch(op) {
- case 1:
- cadastra(vet, qtde);
- break;
- case 2:
- imprimeContasAtivas(vet, qtde);
- break;
- case 3:
- edita(vet, qtde);
- break;
- case 4:
- imprimeMaiorSaldo(vet, qtde);
- break;
- case 5:
- exclui(vet, qtde);
- }
- }
- return 0;
- }
- /*Limpar tela*/
- void clean() {
- #ifdef __linux__
- system ("clear");
- #else
- system ("CLS");
- #endif
- }
- /*Pause para interação com o usuário */
- void pause() {
- cout << "\n Digite qualquer tecla para continuar...";
- cin.ignore(); // ignores the newline
- cin.get(); //waits for character
- }
- /*Valida se existem registros cadastrados*/
- bool validaReg(int qtde) {
- if(qtde==0) {
- cout << "\n Nenhuma conta cadastrada.";
- pause();
- return false;
- }
- return true;
- }
- /*Retorna o indice caso tenha uma conta cadastrada com o mesmo número, ou -1 caso contrário*/
- int pesquisa(Conta v[], int qtde, int nc) {
- for(int i=0; i<qtde; i++)
- if(v[i].ativo == true && v[i].nconta == nc)
- return i;
- return -1;
- }
- /*Entrada de dados de uma conta*/
- void entrada(Conta &C) {
- cout << " Cliente: ";
- cin >> C.nome;
- cout << " Saldo: ";
- cin >> C.saldo;
- }
- /*Cadastra qts contas o usuário desejar*/
- void cadastra(Conta v[], int &qtde) {
- int nc, idx;
- char cont = 'S';
- Conta C;
- while(cont == 'S' and qtde < N) {
- cout << "\nCadastrar conta:\n";
- do{
- cout << " Número: ";
- cin >> nc;
- idx = pesquisa(v, qtde, nc);
- if(idx != -1)
- cout<<" Já existe conta cadastrada com o numero " << nc << endl;
- } while(idx != -1);
- C.nconta = nc;
- C.ativo = true;
- entrada(C);
- v[qtde++] = C;
- cout<<" Inserir nova conta? (S/N): ";
- cin >> cont;
- }
- if(qtde >= N)
- cout<<"Número máximo de contas já cadastrado!";
- }
- /*Edita os dados de uma conta*/
- void edita(Conta v[], int qtde) {
- int nc, idx;
- cout << "Digite o numero da conta que deseja alterar: ";
- cin >> nc;
- idx = pesquisa(v, qtde, nc);
- if(idx == -1) {
- cout<<" Conta " << nc << " não encontrada, verifique!";
- } else {
- entrada(v[idx]);
- cout<<"\n Conta atualizada com sucesso!";
- }
- pause();
- }
- /*Imprime os dados de uma conta*/
- void imprime(Conta c) {
- //cout<<"CONTA: \n";
- cout<<" Numero: " << c.nconta << endl;
- cout<<" Cliente: " << c.nome << endl;
- cout<<" Saldo: " << c.saldo << endl << endl;
- }
- /*Imprime os dados de todas as contas ativas*/
- void imprimeContasAtivas(Conta v[], int qtde) {
- clean();
- cout << "Contas cadastradas:\n";
- for(int i=0; i<qtde; i++)
- if(v[i].ativo == true) //imprime as contas ativas
- imprime(v[i]);
- pause();
- }
- /*Imprime os dados das contas que possuem o maior saldo*/
- void imprimeMaiorSaldo(Conta v[], int qtde) {
- int i, pmaior;
- double maior = 0;
- /*Obtendo o primeiro saldo válido*/
- for(i=0; i<qtde; i++) {
- if(v[i].ativo == true) { //contas ativas
- maior = v[i].saldo;
- pmaior = i;
- break;
- }
- }
- /*Procurando o maior*/
- for(i=0; i<qtde; i++) {
- if(v[i].ativo == true and v[i].saldo > maior) {
- maior = v[i].saldo;
- pmaior=i;
- }
- }
- //Imprimir os dados da conta
- clean();
- cout << "Conta(s) com o maior saldo: " << endl;
- imprime(v[pmaior]);
- /*procurando outras contas que possuem o maior valor*/
- for(i=0; i<qtde; i++)
- if(v[i].ativo == true && v[i].saldo == maior && i != pmaior)
- imprime(v[i]);
- pause();
- }
- /*Excluir uma conta*/
- void exclui(Conta v[], int qtde) {
- clean();
- int nc, p;
- cout << "Digite o numero da conta a excluir: ";
- cin >> nc;
- p = pesquisa(v, qtde, nc);
- if(p!=-1 && v[p].ativo == true) {
- v[p].ativo = false;
- cout << " Conta apagada com sucesso";
- } else
- cout<<"Número de conta inválido";
- pause();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement