Ir para o conteúdo
  • 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

Mensagens Recomendadas

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;
    }    


Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.