Uma só lógica, duas interfaces: o pacote banco tem todo o funcionamento,
o terminal e o site são apenas caras diferentes para o mesmo sistema.
Este trabalho é o projeto final da UC
UC00607 — Desenvolver Programas Complexos em Linguagem Estruturada.
A linguagem de programação principal usada é o Python: toda a lógica do banco
(o pacote banco), a versão de terminal e o servidor web da interface
(Flask) estão escritos nele.
O formador da UC é o Diogo Lopes Vaz, da EISNT.
O código do projeto está no GitHub: github.com/bmmcastro/banco-python-uc607
| Ficheiro | O que faz |
|---|---|
| main.py | Arranque da versão de terminal |
| servidor.py | A API web (Flask) que o site chama com fetch |
| banco/modelos.py | As estruturas Conta e Transacao (dataclasses) |
| banco/erros.py | Os erros próprios do sistema |
| banco/operacoes.py | As funções do banco: criar conta, entrar, transferir, IBAN, retorno |
| banco/dados.py | A base de dados SQLite e a exportação para CSV |
| banco/relatorio.py | O relatório do sistema com threads |
| banco/menus.py | Os menus e a conversa com o utilizador no terminal |
| testes/testes.py | Os testes unitários (unittest) |
O limpar_iban() normaliza o que foi escrito: maiúsculas,
sem espaços e sem o PT50 repetido. pt50 0002 e 0002
dão o mesmo resultado.
O procurar_por_iban() diz de quem é a conta.
O destinatário é sempre mostrado antes de qualquer
dinheiro sair da conta.
Só depois da confirmação o transferir() mexe nos saldos:
o valor sai da conta de origem e entra na de destino.
A transação fica registada com data e hora e é gravada no
banco.db logo a seguir à operação.
SaldoInsuficienteError)erros.py, apanhados com try/except nas duas interfaces
Os dados vivem num ficheiro SQLite (banco.db),
gravado após cada operação. O histórico é consultado por IBAN
(enviadas e recebidas) e pode ser exportado para
transacoes_<username>.csv.
O projeto tem 5 testes unitários: utilizador duplicado, IBAN inexistente, saldo insuficiente, levantamento e depósito.