O trabalho consiste em fazer a interface gráfica para um caixa de
banco bem simples. O arquivo abaixo, banco.py
,
contém a classe das contas bancárias e uma pequena base
consistindo de três contas e alguns lançamentos, e deve ser importado
dentro do programa principal do trabalho com:
from banco import *
O arquivo banco.py
:
from datetime import date def hoje(): return str(date.today()) class Conta: def __init__(self, numero, nome, saldo = 0): self.numero = numero self.correntista = nome self.saldo = saldo self.lancamentos = [] def alterarNome(self, nome): self.correntista = nome def deposito(self, valor, msg = "deposito"): self.lancamentos.append((hoje(), msg, valor)) self.saldo = self.saldo + valor def saque(self, valor, msg = "saque"): self.lancamentos.append((hoje(), msg, -valor)) self.saldo = self.saldo - valor def transferencia(self, outra, valor): self.saque(valor, "transferencia para %s" % outra.numero) outra.deposito(valor, "transferencia de %s" % self.numero) def extrato(self, data): linhas = [] saldo = self.saldo i = len(self.lancamentos) - 1 while i >= 0 and self.lancamentos[i][0] >= data: saldo = saldo - self.lancamentos[i][2] i = i - 1 i = i + 1 while i < len(self.lancamentos): datalanc, desc, val = self.lancamentos[i] saldo = saldo + val linhas.append("%s %-34s%10.2f%10.2f" % (datalanc, desc, val, saldo)) i = i + 1 return linhas contas = {} contas["123"] = Conta("123", "Fulano", 40) contas["456"] = Conta("456", "Beltrano", 100) contas["768"] = Conta("768", "Cicrano", 70) contas["123"].lancamentos = [("2011-04-20", "abertura", 100),\ ("2011-05-10", "saque", -30),\ ("2011-05-15", "deposito", 20),\ ("2011-05-29", "transferencia para 456", -50)] contas["456"].lancamentos = [("2011-04-12", "abertura", 50),\ ("2011-05-29", "transferencia de 123", 50)] contas["768"].lancamentos = [("2011-05-01", "abertura", 70)]
Quando executado, o programa principal do trabalho deverá mostrar a tela a seguir:
O usuário tem duas opções: pode clicar em "Depósito" para ir para a tela de depósito, ou entrar um número de conta e clicar em "Entrar" para ir para a tela de movimentação.
A tela de depósito é a seguinte:
A caixa de opções mostra os números de todas as contas do sistema. O valor é quanto o usuário quer depositar na conta selecionada (está preenchido nessa imagem, mas deve aparecer vazio quando a tela é mostrada).
O botão de "Voltar" volta para a tela inicial do sistema. O botão de depósito efetua o depósito, mostrando a seguinte tela de aviso:
O botão "Voltar" da tela de aviso volta para a tela inicial do sistema.
Se o usuário entra um número de conta válido o sistema mostra a seguinte tela de movimentação:
Caso a conta não exista a seguinte tela é mostrada, com o botão "Voltar" retornando à tela inicial:
O botão "Voltar" da tela de movimentação volta para a tela inicial. Os botões "Saque", "Transf" e "Extrato" vão para as respectivas telas.
A tela de saque tem a seguinte forma (o valor está preenchido na imagem, mas no programa é vazio quando a tela é mostrada):
O usuário deve entrar o valor do saque e clicar em "Sacar" se quiser efetuar o saque, ou "Voltar" para voltar à tela de movimentação. Se o usuário clicar em "Sacar" e a conta tenha saldo suficiente para o saque o sistema efetua o saque e mostra a seguinte tela de aviso (o botão "Voltar" da tela de aviso vai para a tela de movimentação):
Caso a conta não tenha saldo suficiente para o saque o mesmo não é feito e o sistema mostra a seguinte tela de aviso (o botão "Voltar" da tela de aviso vai para a tela de movimentação):
A tela de transferência é muita parecida com a de depósito, e funciona de um modo parecido:
O botão "Voltar" volta para a tela de movimentação. O botão transferir confere se a conta tem saldo suficiente para a transferência, e caso tenha efetua a transferência para a conta selecionada e mostra a seguinte tela de aviso (o botão "Voltar" da tela de aviso vai para a tela de movimentação):
Caso a conta não tenha saldo suficiente para a transferência a mesma não é feita e o sistema mostra a seguinte tela de aviso (o botão "Voltar" da tela de aviso vai para a tela de movimentação):
A tela de extrato tem um campo para o usuário entrar a data de início do extrato, e botões para pedir mostrar o extrato e para voltar para a tela de movimentação (na imagem o campo de data aparece preenchido, mas ele deve aparecer vazio quando a tela é mostrada):
Quando o usuário clica no botão "Mostrar" a tela de extrato é mostrada, com as linhas de extrato a partir da data:
O botão "Voltar" dessa tela volta para a tela de movimentação.