Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Luan

Dúvida em Sistema em C

Recommended Posts

Luan

Olá,

Eu tenho que entregar esse trabalho na faculdade, e estou tendo tendo dificuldades na hora de excluir contas e transferir dinheiro. Será que vcs podem me ajudar? Segue abaixo a descrição do trabalho e código fonte feito até agora.

Faça um sistema que controle as movimentações das contas bancárias de uma determinada agência. O sistema deve possuir um menu principal, através do qual o usuário pode escolher a opção que deseja. As opções (operações) do menu principal são:

+ Inclusão de uma nova conta no banco. Nesta operação, deve-se entrar com o número da conta, o nome, o CPF e o endereço do novo cliente. Considere que exista apenas um cliente para cada conta e que o saldo inicial de uma nova conta é 0 (zero). Não existem contas de mesmo número. Não existe um número máximo de contas bancárias.

+ Exclusão de contas existentes. Neste caso, deve-se entrar com o número da conta que será excluída. Caso a conta exista, devem aparecer o nome, o CPF e o endereço do cliente desta conta para uma confirmação da exclusão. Se a não existir, deve ser apresentada uma mensagem de erro, impossibilitando a exclusão.

+ Alteração dos dados de contas existentes. Neste caso, deve-se entrar com o número da conta cujos dados serão alterados. Caso a conta exista, devem aparecer as informações referentes ao cliente desta conta para que as alterações desejadas possam ser feitas; não se pode alterar o número e o saldo da conta. Se a conta não existir, deve ser apresentada uma mensagem de erro, impossibilitando a alteração.

+ Movimentações bancárias em contas existentes. Neste caso, inicialmente, o usuário deve escolher a movimentação que deseja fazer sobre uma conta: saque, depósito ou transferência. A partir daí:

35]o Saque ou depósito: deve-se entrar com o número da conta e o valor da movimentação. Deve-se registrar também a data da movimentação. Caso a conta exista, devem aparecer o nome e o CPF do cliente desta conta para uma confirmação da movimentação; caso a movimentação seja confirmada, o saldo da conta deve ser atualizado, considerando que o saldo não pode ficar negativo, ou seja, não se pode sacar um valor superior ao saldo atual da conta. Se a conta não existir, deve ser apresentada uma mensagem de erro, impossibilitando a movimentação.

35]o Transferência: deve-se entrar com o número da conta origem, o número da conta destino e o valor da movimentação. Deve-se registrar também a data da movimentação. Caso as contas existam, devem aparecer o nome e o CPF dos clientes das contas para uma confirmação da transferência; caso seja confirmada, os saldos das contas devem ser devidamente atualizados, considerando que o saldo da conta origem não pode ficar negativo. Se alguma conta não existir, deve ser apresentada uma mensagem de erro, impossibilitando a transferência.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct banco{
    int n_conta;
    char nome [30];
    int nexc;
    int cpf;
    char end_cliente[30];
    };

int main (void){

banco b;

int op;
float saldo_conta=0;
int numtest;
int verifica = 0;
FILE*arq;
FILE*arqtemp;

do{
    system ("cls");
    printf(" [ 0 ] - Sair\n");
    printf(" [ 1 ] - Cadastrar Cliente\n");
    printf(" [ 2 ] - Listagem de Contas \n");
    printf(" [ 3 ] - Excluir Conta\n");
    printf(" [ 3 ] - Alterar Conta\n");
    printf(" [ 4 ] - Movimentar Conta\n");

    printf("\n\nOpcao: ");
    scanf("%d", &op);

    switch(op){
    case 0:
    printf("Saindo do Programa!!!\n\n");
    break;

    case 1: //Cadastrar contas//
    system("cls");

        printf("\nDigite o numero da conta:");
        scanf("%d",&b.n_conta);

        //recebe o numero da conta
        numtest = b.n_conta;

    arq = fopen("c:/Banco/clientes.txt", "rb");
    while ((fread(&b,sizeof(b),1,arq)==1)){

            if (numtest==b.n_conta)
            verifica = 1; //utilizada para verificar se existe ou não numero de conta igual

            }
            fclose(arq);

    if(verifica==1){
    printf("\nO codigo informado ja exite!!!\n\n");
    }
    else if(verifica==0){

    printf("\nNome do Cliente: ");
    fflush(stdin);
    gets(b.nome);

    b.n_conta=numtest;

    printf("CPF do Cliente: ");
    scanf("%d", &b.cpf);

    printf("Endereco do Cliente: ");
    fflush(stdin);
    gets(b.end_cliente);

    //Abertura de Arquivo//
    arq = fopen("c:/Banco/clientes.txt", "ab");

    //Gravando o Arquivo//
    if (fwrite(&b,sizeof(b),1, arq)==1){
        printf("\n\nConta cadastrada com sucesso!!!\n\n");
        }
                        }    
    //Fechar Arquivo//
    fclose(arq);
    break;

    case 2: //listar contas
    system("cls");
    printf("\n\n\t CONTAS EXISTENTES \t\n");
    arq = fopen("c:/Banco/clientes.txt", "rb");
    while ((fread(&b,sizeof(b),1,arq)==1)){

            printf("\n------------------------------------\n");
            printf("Numero da conta: %d\n", b.n_conta);
            printf("Nome: %s\n", b.nome);
            printf("CPF: %d\n", b.cpf);
            printf("Endereco: %s\n", b.end_cliente);
            printf("Saldo atual: %.2f\n",saldo_conta);
            printf("\n------------------------------------\n\n");

            }
            fclose(arq);
            memset(&b, 0, sizeof(b));
            break;

    case 3://excluir contas
    system("cls");
    verifica=0;
    printf("\nInforme o numero da conta a ser excluida: ");
    scanf("%d", &numtest);

    arq = fopen("c:/Banco/clientes.txt", "rb");//modo leitura
    arqtemp = fopen("c:/Banco/Bancotemp.txt", "wb");//modo sobrepõe escrita

            while((fread(&b,sizeof(b),1,arq)==1)){
            if(numtest == b.n_conta)
                verifica=1;//verifica se o há o numero de conta digitado existe

                // if ((verifica==1) && (numtest!=b.n_conta)){
                    fwrite(&b,sizeof(b),1,arqtemp);//copio tudo para o arquivo temporario, menos a conta a ser excluida
                                b.n_conta=0;
                                printf("\nConta excluida com sucesso!!!\n\n");
                                                //}
                                    fclose(arq);
                                        fclose(arqtemp);        
                                                        }
            system("pause");


            arq = fopen("c:/Banco/clientes.txt", "wb");//modo sobrepõe escrita, para sobrescrever as contas existentes
            arqtemp = fopen("c:/Banco/Bancotemp.txt", "rb");//modo leitura

                    while((fread(&b,sizeof(b),1,arqtemp)==1)){//listagem das contas constantes no temporário(todas menos a que vai ser excluida)

                            fwrite(&b,sizeof(b),1,arq);//Copio as contas do arq temp, que são todas menos a excluida, sobreescrevendo as contas antigas
                            b.n_conta==0;
                            }


            if(verifica!=1){
            printf("\nConta inexistente!!!\n\n");
            }
            fclose(arq);
            fclose(arqtemp);
            break;



    default:
    printf("\nOpcao invalida!\n\n");
    break;
    }

    system("pause");

    }while(op != 0);

    return 0;
    }    


Edited by pmg
Falta LP no GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

no teu post não especificas qual a tua dúvida e/ou problema.

dizer que não faz o pretendido e depois apresentar um enunciado é meio caminho andado para que ninguém te responda ao tópico.

antes de mais, separa o teu código por funções, e corrige a indentação do código


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.