Advertisement
lucast0rres

BancoBIN v2.0

Jul 16th, 2016
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.77 KB | None | 0 0
  1. #Author: Lucas Pereira Torres de Araujo
  2. #Lista 10 (Sub-rotinas) - FUP's Class - 2016.1
  3. #BancoBIN v2.0
  4.  
  5. import os
  6.  
  7. def check_file():
  8.     if not os.path.isfile('contas.exe'):
  9.         print "\n>>> Aviso de seguranca:"
  10.         print "O arquivo contas.exe (BIN) nao existe. Vamos criar um agora!"
  11.         file('contas.exe', 'wb').close()
  12.  
  13. def carregar_contas():
  14.     #Abrir as listas
  15.     arquivo = open('contas.exe', 'rb')
  16.     for linha in arquivo.readlines():
  17.         keys = linha.split()
  18.         dic = {}
  19.         dic['nome_conta'] = keys[0]
  20.         dic['saldo_conta'] = float(keys[1])
  21.         contas.append(dic)
  22.     #Fechar
  23.     arquivo.close()
  24.  
  25. def salvar_contas():
  26.     #Salvar listas
  27.     arquivo = open('contas.exe', 'wb')
  28.     for j in xrange(len(contas)):
  29.         dic = contas[j]
  30.         key_conta = dic['nome_conta']
  31.         key_valor = dic['saldo_conta']
  32.         word = str(key_conta) + " " + str(key_valor) + "\n"
  33.         arquivo.write(word)
  34.     arquivo.close()
  35.  
  36. def menu():
  37.     print "\n### Menu ###"
  38.     print "0 - Sair"
  39.     print "1 - Criar uma nova conta"
  40.     print "2 - Remover uma conta"
  41.     print "3 - Credito"
  42.     print "4 - Debito"
  43.     print "5 - Transferencia"
  44.     print "6 - Consultar saldo\n"
  45.  
  46. def verificar_conta(parametro, flag = 1):
  47.     for verificar in contas:
  48.         if verificar['nome_conta'] == parametro:
  49.             flag = 0
  50.  
  51.     return flag
  52.  
  53. def index_conta(parametro, flag_index = -1, flag_delete = 0):
  54.     for verificar in contas:
  55.         flag_index += 1
  56.         if verificar['nome_conta'] == parametro:
  57.             flag_delete = 1
  58.             break
  59.    
  60.     return (flag_index, flag_delete)
  61.  
  62. def criar_conta(conta, saldo):
  63.     dados_conta = {}
  64.     dados_conta['nome_conta'] = conta
  65.  
  66.     flag = verificar_conta(conta)
  67.    
  68.     if flag == 0:
  69.         print "\nO numero da conta ja existe. Tente novamente."
  70.     else:
  71.         dados_conta['saldo_conta'] = saldo
  72.         contas.append(dados_conta)
  73.         print "\nOperacao efetuada com sucesso."
  74.  
  75. def remover_conta(conta):
  76.     index, delete = index_conta(conta)
  77.     if delete == 1:
  78.         del contas[index]
  79.         print "\nOperacao efetuada com sucesso."
  80.     else:
  81.         print "\nO numero da conta nao existe. Tente novamente."
  82.  
  83. def operacao_credito(conta, valor):
  84.     flag = verificar_conta(conta)
  85.     if flag == 1:
  86.         print "\nO numero da conta nao foi encontrado. Tente novamente."
  87.     else:
  88.         if valor < 0:
  89.             print "\nValores negativos nao sao aceitos. Tente novamente."
  90.         else:
  91.             index, delete = index_conta(conta)
  92.             contas[index]['saldo_conta'] += valor
  93.             print "\nOperacao efetuada com sucesso."
  94.  
  95.  
  96. def operacao_debito(conta, valor):
  97.     flag = verificar_conta(conta)
  98.     if flag == 1:
  99.         print "\nO numero da conta nao foi encontrado. Tente novamente."
  100.     else:
  101.         if valor < 0:
  102.             print "\nValores negativos nao sao aceitos. Tente novamente."
  103.         else:
  104.             index, delete = index_conta(conta)
  105.             contas[index]['saldo_conta'] -= valor
  106.             print "\nOperacao efetuada com sucesso."
  107.  
  108. def operacao_transferencia(saida, destino, valor):
  109.     if saida == destino:
  110.         print "\nNao eh possivel transferir dinheiro para a mesma conta."
  111.     elif valor < 0:
  112.         print "\nNao eh possivel transferir um valor negativo."
  113.     else:
  114.         flag_out = verificar_conta(saida)
  115.         flag_in = verificar_conta(destino)
  116.         if flag_in == 1 and flag_out == 1:
  117.             print "\nO numero das duas contas nao foi encontrado. Tente novamente."
  118.         elif flag_in == 0 and flag_out == 1:
  119.             print "\nO numero da sua conta nao foi encontrado. Tente novamente."
  120.         elif flag_in == 1 and flag_out == 0:
  121.             print "\nO numero da conta destino nao foi encontrado. Tente novamente."
  122.         else:
  123.             index_out, delete = index_conta(saida)
  124.             index_in, delete = index_conta(destino)
  125.  
  126.             if contas[index_out]['saldo_conta'] < valor:
  127.                 print "\nNao eh possivel transferir um valor maior que o seu saldo."
  128.             else:
  129.                 contas[index_out]['saldo_conta'] -= valor
  130.                 contas[index_in]['saldo_conta'] += valor
  131.                 print "\nOperacao efetuada com sucesso."
  132.  
  133. def consultar_saldo(conta):
  134.     flag = verificar_conta(conta)
  135.  
  136.     if flag == 1:
  137.         print "\nO numero da conta nao foi encontrado. Tente novamente."
  138.     else:
  139.         index, delete = index_conta(conta)
  140.         saldo = contas[index]['saldo_conta']
  141.  
  142.         if saldo >= 0:
  143.             status = "Positivo"
  144.         else:
  145.             status = "Negativo"
  146.  
  147.         print "\nO saldo eh: R$ %.2f (%s)" % (saldo, status)
  148.  
  149.  
  150. def sair(run = 0):
  151.     print "\nSistema encerrado."   
  152.     return run
  153.    
  154. run = 1
  155.  
  156. print ">>> Bem-vindo ao sistema BancoBIN v2.0 <<<"
  157.  
  158. while run == 1:
  159.  
  160.     contas = []
  161.  
  162.     #Check File 'contas.txt'
  163.     check_file()
  164.  
  165.     #Carrega as contas existentes
  166.     carregar_contas()
  167.  
  168.     #Mostrar o menu
  169.     menu()
  170.     #Seleciona a opcao desejada
  171.     op = raw_input("Seleciona a operacao que deseja realizar:\n>>> ")
  172.  
  173.     #Sair
  174.     if op == "0":
  175.         run = sair()
  176.  
  177.     #Criar nova conta
  178.     elif op == "1":
  179.         nconta = raw_input("Digite o numero da nova conta:\n>>> ")
  180.         nsaldo = float(input("Digite o saldo da nova conta:\n>>> "))
  181.         criar_conta(nconta, nsaldo)
  182.    
  183.     #Remover conta existente
  184.     elif op == "2":
  185.         conta = raw_input("Digite o numero da conta para remover:\n>>> ")
  186.         remover_conta(conta)
  187.  
  188.     #Credito em conta
  189.     elif op == "3":
  190.          conta = raw_input("Digite o numero da conta:\n>>> ")
  191.          valor_credito = float(input("Digite o valor do credito:\n>>> R$ "))
  192.          operacao_credito(conta, valor_credito)
  193.  
  194.     #Debito em conta
  195.     elif op == "4":
  196.         conta = raw_input("Digite o numero da conta:\n>>> ")
  197.         valor_debito = float(input("Digite o valor do debito:\n>>> R$ "))
  198.         operacao_debito(conta, valor_debito)
  199.  
  200.     #Transferencia
  201.     elif op == "5":
  202.         conta1 = raw_input("Digite o numero da sua conta:\n>>> ")
  203.         conta2 = raw_input("Digite o numero da conta destino:\n>>> ")
  204.         valor_transfer = float(input("Digite o valor da transferencia:\n>>> R$ "))
  205.         operacao_transferencia(conta1, conta2, valor_transfer)
  206.  
  207.     #Consulta de saldo
  208.     elif op == "6":
  209.         conta = raw_input("Digite o numero da conta para consultar o saldo:\n>>> ")
  210.         consultar_saldo(conta)
  211.  
  212.     else:
  213.         print "\nOperacao invalida."
  214.  
  215.     #Salva os dados das contas
  216.     salvar_contas()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement