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

Sign in to follow this  
gsilvap

Ajuda - Desenvolver simulador de caixa multibanco

Recommended Posts

gsilvap

Boas...

Sou um iniciante nestas andanças de programar em c, e estou com um projecto em mãos, que consiste em criar um simulados de uma caixa multibanco, este simulador tem de ter:

-> um sistema de login (nºconta e pin) (varias contas, dois tipos de utilizadores, clientes e funcionarios, em que os funcionarios podem criar/eliminar contas, listar clientes(por saldo), listar operaçoes realizadas no CBA, alterar o numero de notas do CBA, desbloquear cartoes)

-> levantamento (notas de 5,10,20,50, em que o numero de notas tem de ser o menor possível, e tem de entregar sempre que possivel uma nota de cada montante disponivel no CBA)

-> transferência

-> alteração pin

-> deposito

Gostava que me dessem ideias por onde começar, é que sinceramente, não to a ver muito bem por onde lhe pegar.... :nono1:

PS.: Não quero que me façam o programa, apenas quero dicas de por onde começar, e do que vou precisar, ou seja, uma ideia geral das funções que tenho de criar.

Eu tenho algumas duvidas em relação à escrita em ficheiros, porque toda e qualquer operação feito no CBA tem de ser colocado num ficheiro, ao qual só o funcionário tem acesso....

Cumpz

Share this post


Link to post
Share on other sites
Strabush

Faz parte por parte. Começa por criar um sitema de login, e assim sucessivamente. Precisarás de conhecimentos em structs, apontadores, listas, e a sintaxe básica do C.

Vai fazendo cada etapa, e se precisares de ajuda nelas a gente dá.

Share this post


Link to post
Share on other sites
gsilvap

O próprio sistema de login vai ser um problema para mim, porque tenho de ter um ficheiro com as varias contas e o seu pin correspondente, tipo:

(Conta) (Pin)

1 3583

150 6985

1023586 2365

1204587 3654

mas, como é que eu vou procurar nesse ficheiro o numero de conta??

Divido o ficheiro em linhas, criando um vector com cada linha? e depois crio um vector com o numero da conta inserido pelo utilizador (um espaço) e o pin da conta e comparo-os pa ver quando são iguais?? Qual é a melhor forma de fazer o login??

Não to nada ambientado com os ficheiros....

Cumpz

Share this post


Link to post
Share on other sites
Colector Boy

Vê se percebes este código.

#include <stdlib.h> //para usar a funcao exit(inteiro)

int c; //variavel em que guardas o algarismo que vais buscar ao ficheiro
FILE *fin=NULL; //apontador para ficheiro

//abrir ficheiro chamado fich.txt que esta no directório da aplicação em modo leitura (r)
fin=fopen("fich.txt","r"); 

if(fin==NULL) //se o ficheiro nao foi aberto com sucesso então da erro
{
printf("Erro ao abrir ficheiro \n");
exit(-1); //sai da aplicação
}

//enquanto c diferente de EOF ->fim de ficheiro, vai buscar o próximo algarismo
while ((c = fgetc (fin))!= EOF) 
{
    //guardar dados do ficheiro no programa
    //código

}


fclose (fin); //fechar ficheiro

Espero ter ajudado.

Share this post


Link to post
Share on other sites
gsilvap

Boas...

Colector Boy, antes de mais, obrigado pela ajuda, mas tenho algumas duvidas em relação ao teu código....

Não percebo qual é a função deste ciclo: "while ((c = fgetc (fin))!= EOF) "

O fgetc lê carácter a carácter, certo??

O c no programa vai ser o que??? nao percebi bem a sua função...

onde está "c=fgetc(fin)", não devia ser "c==fgetc(fin)"??

Um ficheiro no fim tem sempre "EOF"?

O "exit(-1);" faz o programa sair da aplicação se tiver problemas ao abrir o ficheiro, ou o ficheiro não existir certo, e tem incorporado um "return -1", certo??

Eu tenho que fazer um scanf para pedir ao utilizador o numero da conta, procura-lo num ficheiro, e se o encontrar pedir o pin, caso contrario dá erro(se acontecer três vezes o cartão fica bloqueado, sem ser possível fazer operações com o mesmo), depois, tem de verificar se o pin corresponde à conta introduzida inicialmente, mas qual a melhor forma de fazer isto???

Criar duas funções, uma para verificar se a conta x existe, e uma segunda para verificar se o pin y corresponde à lista x??

Ou

juntar a conta x ao pin y num vector, e verificar se isso existe no ficheiro???

Espero que percebam as minhas duvidas, e obrigado pelas dicas....

Cumpz

Share this post


Link to post
Share on other sites
Colector Boy

while ((c = fgetc (fin))!= EOF)

é igual a

do
{
   c= fgetc (fin); //vai buscar um carácter ao ficheiro
}
while (c!= EOF)  //se esse carácter for diferente de fim de ficheiro então continuas a ler

O fgetc lê 1 carácter de um ficheiro por essa razão precisas de um ciclo para leres os caracteres todos do ficheiro.

O c vai ser uma variável do tipo int onde vais colocar os algarismos de cada linha.

Para depois fazeres com eles o que quiseres.

onde está "c=fgetc(fin)", não devia ser "c==fgetc(fin)"??

Não, neste caso quero mesmo fazer "while ((c = fgetc (fin))!= EOF)" pois ao fazer isso estou a fazer 3 coisas:

1->buscar carácter ao ficheiro

2->atribuir esse carácter a variável c

3->verificar se e c não tem o valor EOF

Um ficheiro no fim tem sempre "EOF"?

Sim.

O "exit(-1);" faz o programa sair da aplicação se tiver problemas ao abrir o ficheiro, ou o ficheiro não existir certo, e tem incorporado um "return -1", certo??

Não.

O exit(inteiro) sai da aplicação e retorna o valor inteiro,o que faz o programa sair da aplicação se tiver problemas ao abrir o ficheiro, ou o ficheiro não existir é o pedaço de código em baixo:

if(fin==NULL) //se o ficheiro nao foi aberto com sucesso então da erro
{
printf("Erro ao abrir ficheiro \n");
exit(-1); //sai da aplicação
}

Vou tentar explicar passo a passo como é que ficamos com o código que está em cima.

1->No código acima verificamos se não tivemos nenhum problema ao abrir o ficheiro.

Isso é feito com este if:


if(fin==NULL) //se o ficheiro nao foi aberto com sucesso então da erro
{

}

2->Imprimimos uma mensagem de erro para o utilizador saber que houve algum problema

if(fin==NULL) //se o ficheiro nao foi aberto com sucesso então da erro
{
printf("Erro ao abrir ficheiro \n");

}

3->Saímos do programa

if(fin==NULL) //se o ficheiro nao foi aberto com sucesso então da erro
{
printf("Erro ao abrir ficheiro \n");
exit(-1); //sai da aplicação
}

Share this post


Link to post
Share on other sites
gsilvap

Colector Boy

Fiquei 100% esclarecido, muito obrigado pelas dicas....

Agora tenho de ir para uma Aula de Analise Matemática II, mais logo já vou aplicar estas dicas todas....

Cumprimentos, e mais uma vez Obrigado

Share this post


Link to post
Share on other sites
gsilvap

Alguém que perceba de C que não se importe de me dar o seu mail por pm ou assim, para perguntar algumas duvidas e dicas para o meu projecto, não quero disponibilizar o código que tenho, apesar de ainda ser muito pouco....

Se alguém não se importar, eu agradeço....

Cumpz

Share this post


Link to post
Share on other sites
gsilvap

Por mim, não me importava de fazer isso....mas não queira expor o meu código, porque há mais pessoas que eu conheço com o mesmo projecto.....

Cumpz

Share this post


Link to post
Share on other sites
Strabush

Não precisas expor o projecto todo, põe parte por parte. Ou melhor, põe onde tens dúvida apenas.

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
Sign in to follow this  

×

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.