BR_Gustavo

Simulador Withdraw

Nov 1st, 2020
1,380
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pymysql
  2. from modulos import uteis
  3. from time import sleep
  4.  
  5. conta_info = dict()
  6. campos = ['ID', 'nome', 'sobrenome', 'cpf', 'conta', 'senha', 'poupanca', 'corrente']
  7. conexao = pymysql.connect(host="localhost", user="gustavo", passwd="gustavo", db="python", autocommit=True)
  8.  
  9.  
  10. def carregar_contas():
  11.     cursor = conexao.cursor()
  12.     cursor.execute("SELECT * FROM contas;")
  13.  
  14.     linhas = cursor.fetchall()
  15.     lista = list()
  16.     for linha in linhas:
  17.         dicionario = dict()
  18.         for elemento_id, elemento in enumerate(linha):
  19.             dicionario[campos[elemento_id]] = elemento
  20.         lista.append(dicionario)
  21.         del dicionario
  22.  
  23.     global conta_info
  24.     for e in lista:
  25.         conta_info[e['cpf']] = Conta(e['ID'], e['nome'], e['sobrenome'], e['cpf'], e['conta'], e['senha'],
  26.                                      uteis.transformarMoeda(e['poupanca']), uteis.transformarMoeda(e['corrente']))
  27.  
  28.  
  29. def cliente_logar():
  30.     exibir_mensagem()
  31.     while True:
  32.         nome_cliente = uteis.leiastr("Qual é o seu nome? (Primeiro nome):  ")
  33.         cpf_cliente = uteis.leiastr("Qual é o número o seu CPF?: ")
  34.         cpf_cliente = cpf_cliente.replace('-', '').replace(',', '').replace('.', '')
  35.         cliente = 0
  36.         try:
  37.             cliente = conta_info[cpf_cliente]
  38.             if cliente.nome.lower() == nome_cliente.lower():
  39.                 tantativas = 0
  40.                 cliente_senha = uteis.leiastr("Digite a senha: ")
  41.                 while cliente_senha.lower() != cliente.senha.lower():
  42.                     print("\033[31mERRO: Senha incorreta!\033[m")
  43.                     cliente_senha = uteis.leiastr("Digite a senha: ")
  44.                     tantativas += 1
  45.                     if tantativas >= 5:
  46.                         print(f"Você errou {tantativas} vezes a senha.")
  47.                         exibir_mensagem()
  48.                         break
  49.                 if cliente_senha.lower() == cliente.senha.lower():
  50.                     break
  51.                 else:
  52.                     continue
  53.             else:
  54.                 print("\033[31mERRO: Nome e CPF não coincidem.\033[m")
  55.                 input("Tecle enter para voltar: ")
  56.                 continue
  57.  
  58.         except KeyError:
  59.             print("\033[31mERRO: Número do CPF é invalido.\033[m")
  60.             input("Tecle enter para voltar:")
  61.             continue
  62.  
  63.     exibir_mensagem()
  64.     menu_cliente(cliente)
  65.  
  66.  
  67. def exibir_mensagem():
  68.     for c in range(0, 150):
  69.         print(" ")
  70.     print("-" * 40)
  71.  
  72.  
  73. def menu_cliente_sacar(id_cliente):
  74.     if id_cliente.cpf in conta_info:
  75.         exibir_mensagem()
  76.  
  77.         valor = uteis.leiamoeda("Digite um valor: ")
  78.         if 1 <= valor <= id_cliente.corrente:
  79.             id_cliente.sacar(corrente=valor)
  80.             id_cliente.atualizar()
  81.             print(f"Valor de R${valor} sacado da conta corrente.")
  82.             print(f"Saldo em conta CORRENTE: {id_cliente.corrente}.")
  83.             input("Tecle enter para voltar: ")
  84.             menu_cliente(id_cliente)
  85.  
  86.         else:
  87.             print("\033[31mERRO: Você não possui essa quantia nca conta CORRENTE. Transfira para pode sacar.\033[m")
  88.             input("Tecle enter para voltar: ")
  89.             menu_cliente(id_cliente)
  90.     else:
  91.         print("ERRO: Você não está logado")
  92.         exit()
  93.  
  94.  
  95. def menu_cliente_transferir(id_cliente):
  96.     exibir_mensagem()
  97.     if id_cliente.cpf in conta_info:
  98.         print(f"* Saldo conta corrente: {id_cliente.corrente}.")
  99.         print(f"* Saldo conta corrente: {id_cliente.poupanca}.\n")
  100.  
  101.         print("[1] - Transferir da conta corrente para poupança\n[2] - Transferir da poupança para conta corrente\n"
  102.               "[3] - Transferir para outra pessoa\n[4] - Voltar\n")
  103.         escolha = uteis.leiaint("Escolha uma opção: ")
  104.         while 1 > escolha > 4:
  105.             escolha = uteis.leiaint("Escolha uma opção: ")
  106.  
  107.         if escolha == 1:
  108.             valor = uteis.leiamoeda("Digite um valor: ")
  109.             if 1 <= valor <= id_cliente.corrente:
  110.                 print("Aguarde..")
  111.                 sleep(1)
  112.                 id_cliente.depositar(poupanca=valor)
  113.                 id_cliente.sacar(corrente=valor)
  114.                 print("Transaçao finalizada!")
  115.                 input("Tecle enter para avançar: ")
  116.                 menu_cliente_transferir(id_cliente)
  117.  
  118.             else:
  119.                 print("ERRO: Você não possui essa quantia na conta CORRENTE.")
  120.                 input("Tecle ENTER para avançar: ")
  121.                 menu_cliente_transferir(id_cliente)
  122.         if escolha == 2:
  123.             valor = uteis.leiamoeda("Digite um valor: ")
  124.             if 1 <= valor <= id_cliente.poupanca:
  125.                 print("Aguarde..")
  126.                 sleep(1)
  127.                 id_cliente.depositar(corrente=valor)
  128.                 id_cliente.sacar(poupanca=valor)
  129.                 print("Transaçao finalizada!")
  130.                 input("Tecle enter para avançar: ")
  131.                 menu_cliente_transferir(id_cliente)
  132.  
  133.             else:
  134.                 print("ERRO: Você não possui essa quantia na conta POUPANÇA.")
  135.                 input("Tecle ENTER para avançar: ")
  136.                 menu_cliente_transferir(id_cliente)
  137.         elif escolha == 3:
  138.             exibir_mensagem()
  139.             receptor_nome = uteis.leiastr("Nome receptor (Primeiro nome): ")
  140.             receptor_nome.lower().capitalize()
  141.             receptor_cpf = uteis.leiastr("CPF receptor: ")
  142.             receptor_cpf = receptor_cpf.replace(".", "").replace(",", "")
  143.             receptor_conta = uteis.leiastr("Número conta: ")
  144.             receptor_conta = receptor_conta.replace(".", "").replace(",", "")
  145.  
  146.             try:
  147.                 id_receptor = conta_info[receptor_cpf]
  148.                 if id_receptor.conta == receptor_conta and id_receptor.nome.lower() == receptor_nome.lower():
  149.                     exibir_mensagem()
  150.                     print("** IMPORTANTE ** O Valor a ser transferido precisa estar na conta CORRENTE.")
  151.                     valor = uteis.leiamoeda("Qual é o valor que você deseja transferir: ")
  152.                     id_cliente.atualizar()
  153.                     if id_cliente.corrente >= valor >= 1:
  154.                         print("Aguarde...")
  155.                         id_cliente.sacar(corrente=valor)
  156.                         id_receptor.depositar(corrente=valor)
  157.                         sleep(1)
  158.                         print("Transferência realizada com sucesso!")
  159.                         input("Tecle enter para voltar: ")
  160.                         menu_cliente_transferir(id_cliente)
  161.                     else:
  162.                         print("ERRO: Você não possui essa quantia na conta CORRENTE.")
  163.                         input("Tecle enter para voltar: ")
  164.                         menu_cliente_transferir(id_cliente)
  165.                 else:
  166.                     print("ERRO: Informações não conferem. Verifique e tente novamente.")
  167.                     input("Tecle enter para voltar: ")
  168.                     menu_cliente_transferir(id_cliente)
  169.             except KeyError:
  170.                 print("ERRO: Informações não conferem. Verifique e tente novamente.")
  171.                 input("Tecle enter para voltar: ")
  172.                 menu_cliente_transferir(id_cliente)
  173.  
  174.         else:
  175.             menu_cliente(id_cliente)
  176.     else:
  177.         print("ERRO: Você não está logado.")
  178.         exit()
  179.  
  180.  
  181. def menu_cliente_extrato(id_cliente):
  182.     for c in range(0, 50):
  183.         print(" ")
  184.     if id_cliente.cpf in conta_info:
  185.         print("\033[34m", end="")
  186.         print("~" * 50)
  187.         print(" " * 15, "[EXTRATO CONTA]")
  188.         print("~" * 50)
  189.         print("\033[m", end="")
  190.         print(f"\033[35mNome:\033[31m {id_cliente.nome}")
  191.         print(f"\033[35mCPF:\033[31m {id_cliente.cpf}")
  192.         print(f"\033[35mConta:\033[31m {id_cliente.conta}")
  193.         print(f"\033[35mCorrente:\033[31m {id_cliente.corrente}")
  194.         print(f"\033[35mPoupança:\033[31m {id_cliente.poupanca}")
  195.         print("\033[34m", end="")
  196.         print("~" * 50, end="\033[m")
  197.         input("\nTecle enter para voltar: ")
  198.         menu_cliente(id_cliente)
  199.     else:
  200.         print("ERRO: Você não está logado.")
  201.         exit()
  202.  
  203.  
  204. def menu_cliente(id_cliente):
  205.     exibir_mensagem()
  206.     if id_cliente.cpf in conta_info:
  207.         print("[1] - Sacar\n[2] - Transferir\n[3] - Extrato\n[4] - Encerrar")
  208.         escolha = uteis.leiaint("Escolha uma opção: ")
  209.  
  210.         while 1 > escolha > 4:
  211.             escolha = uteis.leiaint("Escolha uma opção: ")
  212.  
  213.         if escolha == 1:
  214.             menu_cliente_sacar(id_cliente)
  215.         elif escolha == 2:
  216.             menu_cliente_transferir(id_cliente)
  217.         elif escolha == 3:
  218.             menu_cliente_extrato(id_cliente)
  219.         else:
  220.             exit()
  221.             cliente_logar()
  222.     else:
  223.         print("ERRO: Você não está logado")
  224.         exit()
  225.  
  226.  
  227. class Conta:
  228.     def __init__(self, id_id, nome, sobrenome, cpf, conta, senha, poupanca=0, corrente=0):
  229.         self.id_id = id_id
  230.         self.nome = nome
  231.         self.sobrenome = sobrenome
  232.         self.cpf = cpf
  233.         self.conta = conta
  234.         self.senha = senha
  235.         self.poupanca = poupanca
  236.         self.corrente = corrente
  237.  
  238.     def depositar(self, poupanca=0, corrente=0):
  239.         self.atualizar()
  240.         cursor = conexao.cursor()
  241.         if poupanca >= 1:
  242.             self.poupanca = float(self.poupanca)+poupanca
  243.             cursor.execute(f"UPDATE `contas` SET poupanca = '{self.poupanca}' WHERE conta = '{self.conta}';")
  244.         elif corrente >= 1:
  245.             self.corrente = float(self.corrente)+corrente
  246.             cursor.execute(f"UPDATE `contas` SET corrente = '{self.corrente}' WHERE conta = '{self.conta}';")
  247.         cursor.close()
  248.  
  249.     def sacar(self, poupanca=0, corrente=0):
  250.         self.atualizar()
  251.         cursor = conexao.cursor()
  252.         if poupanca >= 1:
  253.             self.poupanca -= poupanca
  254.             cursor.execute(f"UPDATE `contas` SET poupanca = '{self.poupanca}' WHERE conta = '{self.conta}';")
  255.         elif corrente >= 1:
  256.             self.corrente -= corrente
  257.             cursor.execute(f"UPDATE `contas` SET corrente = '{self.corrente}' WHERE conta = '{self.conta}';")
  258.         cursor.close()
  259.  
  260.     def atualizar(self):
  261.         cursor = conexao.cursor()
  262.         cursor.execute(f"SELECT * FROM `contas` WHERE conta = '{self.conta}';")
  263.  
  264.         for info in cursor.fetchall():
  265.             self.id_id = info[0]
  266.             self.nome = info[1]
  267.             self.sobrenome = info[2]
  268.             self.cpf = info[3]
  269.             self.conta = info[4]
  270.             self.senha = info[5]
  271.             self.poupanca = info[6]
  272.             self.corrente = info[7]
  273.         cursor.close()
  274.  
  275.  
  276. if __name__ == "__main__":
  277.     carregar_contas()
  278.     cliente_logar()
  279.  
RAW Paste Data