def transfere(cnta:str,valor:float,destino:str,cursor,sinc)->bool: if Conta.saca(cnta,valor,cursor,False): if Conta.deposita(destino,valor,cursor,False,sinc): cursor.execute('SELECT titular,numero FROM contas') for num_cont in cursor: if(num_cont[1] == destino): aux = num_cont[0] cursor.execute('SELECT nome,cpf FROM pessoas') for nome in cursor: if(nome[1] == aux): cliente = nome[0] nova_transacao = 'Transferencia para {} -- Data: {} Valor: {}'.format(cliente,datetime.now().strftime('%d/%m/%Y %H:%M'),valor) Historico.adicionar_transacao(cnta,nova_transacao,cursor) cursor.execute('SELECT titular,numero FROM contas') for num_cont2 in cursor: if(num_cont2[1] == cnta): aux2 = num_cont2[0] cursor.execute('SELECT nome,cpf FROM pessoas') for nome2 in cursor: if(nome2[1] == aux): cliente2 = nome2[0] nova_transacao = 'Tranferencia recebida de "{}" -- Data: {} Valor: {} '.format(cliente2,datetime.now().strftime('%d/%m/%Y %H:%M'),valor) Historico.adicionar_transacao(destino,nova_transacao,cursor) return True return False
def __init__(self, cliente, senha, saldo=0, limite=5000): self._numero = str((Conta.cont + 1) * 1000) self._saldo = float(saldo) self._cliente = cliente self._senha = str(senha) self._limite = float(limite) self._historico = Historico() Conta.cont += 1
def __init__(self, numero, titular, saldo, limite, data_abertura): Conta._total_contas += 1 self._id = Conta._total_contas self._numero = numero self._titular = titular self._saldo = saldo self._limite = limite self._data_abertura = data_abertura self._historico = Historico() self._tipo = ""
def listar(self, id_usuario): objHistorico = Historico() resultados = objHistorico.listarHistorico(id_usuario) #listagem do histórico for i, dado in enumerate(resultados): Label(self.frame1, text=dado[1], fg='black', font=('Verdana','12')).grid(row=i+3, column=1) Label(self.frame1, text=dado[2], fg='black', font=('Verdana','12')).grid(row=i+3, column=2) Label(self.frame1, text=dado[3], fg='black', font=('Verdana','12')).grid(row=i+3, column=3) Label(self.frame1, text=dado[4], fg='black', font=('Verdana','12')).grid(row=i+3, column=4) self.frame1.pack()
def __init__(self, numero, titular, saldo, limite=1000.0): self._numero = numero self._titular = titular self._saldo = saldo self._limite = limite Conta._total_contas += 1 self.historico = Historico()
def enterHandler(self, event): nroMatric = self.limiteIns.inputNro.get() nome = self.limiteIns.inputNome.get() cursoSel = self.limiteIns.escolhaCombo.get() curso = self.ctrlPrincipal.ctrlCurso.getCurso(cursoSel) try: if nroMatric == '' or nome == '' or cursoSel == '': raise OpcaoVazia mat = '' for matricula in self.ctrlPrincipal.ctrlCurso.getListaNroMatric(): if matricula == nroMatric: mat = 'Erro' if mat == 'Erro': raise MatriculaIgual except OpcaoVazia: self.limiteIns.mostraJanela('Alerta', 'Campo vazio') except MatriculaIgual: self.limiteIns.mostraJanela('Alerta', 'Matricula já existente') else: historico = Historico() aluno = Aluno(nroMatric, nome, curso, historico) self.ctrlPrincipal.ctrlCurso.listaAlunos.append(aluno) self.limiteIns.mostraJanela('Sucesso', 'Aluno cadastrado com sucesso') self.clearHandler(event)
def __init__(self, titular: Cliente, saldo: float, limite=1000.0): self.__numero = Conta.total_contas() self.__titular = titular self.__saldo = saldo self.__limite = limite self.__historico = Historico() Conta.incrementa_total_contas()
def deposita(self, valor): data = datetime.strftime(datetime.today(), "%d/%m/%Y") histDep = Historico("Deposito", data, valor) self.listaHist.append(histDep) self.saldo = self.saldo + valor print("Voce depositou: {}".format(valor))
def __init__(self,numero:str,titular:str,saldo:float,limite:float): self._numero = numero self._titular = titular self._saldo = saldo self._limite = limite self._data_abertura = str(datetime.now().strftime('%d/%m/%Y %H:%M')) self._historico = Historico()
def __init__(self, numero, cliente, saldo, limite): self._numero = numero self._titular = cliente self._saldo = saldo self._limite = limite self._historico = Historico() self._identificador = Conta.identificador Conta.identificador += 1
def __init__(self,cliente,saldo,limite): # Aqui eu passei uma objeto 'cliente' como refêrencia # Através dele posso acessar todos os métodos do objeto # Assim está classe foi associada a classe cliente self.cliente = cliente self.saldo = saldo self.limite = limite self.historico = Historico() print("\nConta criada com sucesso")
def __init__(self, numero, cliente, saldo, limite=1000.0): #print("Inicializando uma conta") self.numero = numero self.titular = cliente self.saldo = saldo self.limite = limite self.historico = Historico()
def calcularImc(self): usuario = self.usuario peso = self.peso.get() altura = self.altura.get() data = date.today() objHist = Historico() if peso != "" and altura != "": imc = float(peso) / float(altura) ** 2 gravar = objHist.gravarHistorico(float(peso), float(altura), data, imc, usuario) if gravar == True: from historico_lista_tela import HistoricoListaTela t = HistoricoListaTela() t.listar(usuario)
def __init__(self, numero, cliente, saldo=0, limite=1000.0): self._numero = numero self._titular = cliente self._saldo = saldo self._limite = limite self._historico = Historico() self._data_abertura = Data() self._tipo = type(self).__name__ Conta._identificador += 1
def saca(cnta:str,valor:float,cursor,controle)->bool: saldo = 0.0 cursor.execute('SELECT numero,saldo FROM contas') for conta in cursor: conta[0] == cnta saldo = conta[1] if valor <= saldo and valor > 0: saldo -= valor cursor.execute('UPDATE contas SET saldo = %s WHERE numero = %s',(float(saldo),cnta)) if controle: nova_transacao = 'Saque -- Data: {} Valor: {}'.format((datetime.now().strftime('%d/%m/%Y %H:%M')),valor) Historico.adicionar_transacao(cnta,nova_transacao,cursor) return True return False
def saca(self, valor): data = datetime.strftime(datetime.today(), "%d/%m/%Y") histSac = Historico("Saque", data, valor) self.listaHist.append(histSac) validacao = valor - self.saldo if validacao > (self.limite): print("Impossivel efetuar o saque, limite excedido!") else: self.saldo = self.saldo - valor print("Voce sacou: {}".format(valor))
def deposita(cnta:str,valor:float,cursor,controle,sinc)->bool: saldo = 0.0 sinc.acquire() cursor.execute('SELECT numero,saldo FROM contas') sinc.release() for conta in cursor: conta[0] == cnta saldo = conta[1] if valor > 0: saldo += valor sinc.acquire() cursor.execute('UPDATE contas SET saldo = %s WHERE numero = %s',(float(saldo),cnta)) sinc.release() if controle: nova_transacao = 'Deposito -- Data: {} Valor: {}'.format(datetime.now().strftime('%d/%m/%Y %H:%M'),valor) Historico.adicionar_transacao(cnta,nova_transacao,cursor) return True return False
class Conta: ''' Essa classe representa uma conta do banco Attributes: numero (str): numero da conta (id) saldo (float): qnt de dinheiro disponivel cliente (Cliente): objeto Cliente com os dados do titular senha (str): senha para realizar operacoes na conta limite (float): valor maximo para depositar na conta historico (Historico): objeto historico que armazena as operacoes feitas na conta ''' __slots__ = [ '_numero', '_senha', '_saldo', '_cliente', '_limite', '_historico' ] cont = 0 #contador da classe def __init__(self, cliente, senha, saldo=0, limite=5000): self._numero = str((Conta.cont + 1) * 1000) self._saldo = float(saldo) self._cliente = cliente self._senha = str(senha) self._limite = float(limite) self._historico = Historico() Conta.cont += 1 #metodos de acesso @property def numero(self): return self._numero @property def senha(self): return self._senha @senha.setter def senha(self, s): self._senha = s @property def cliente(self): return self._cliente @cliente.setter def cliente(self, c): self._cliente = c @property def limite(self): return self._limite @limite.setter def limite(self, l): self._limite = l @property def saldo(self): return self._saldo @saldo.setter def saldo(self, s): self._saldo = s @property def historico(self): return self._historico #Metodos def saque(self, valor): ''' Metodo para retirar um valor da conta Args: valor(float): valor a ser retirado da conta Returns: 1. Se o saldo for menor que o valor: 'False,saldo,limite' 2. Caso contrario: 'True,saldo,limite' ''' if self._saldo < valor: #return 'Valor não disponível para saque!' return f'False,{self._saldo},{self._limite}' else: self._saldo -= valor self._limite += valor self._historico.adicionar_transacao('Saque', valor) #return 'Saque realizado com sucesso!\nSaldo restante = {}'.format(self._saldo) return f'True,{self._saldo},{self._limite}' def depositar(self, valor): ''' Metodo que realiza o deposito na conta Args: valor(float): valor a ser depositado Returns: 1. Se o valor for maior que o limite: 'False,saldo,limite' 2. Caso contrario: 'True,saldo,limite' ''' if valor > self._limite: return f'False,{self._saldo},{self._limite}' else: self._saldo += valor self._limite -= valor self._historico.adicionar_transacao('Deposito', valor) #return 'Deposito realizado com sucesso!\nSaldo da conta = {}'.format(self._saldo) return f'True,{self._saldo},{self._limite}' def transfere_para(self, c, valor): ''' Metodo que faz a transferencia de um valor para outra conta Args: c (Conta): conta que vai receber o valor valor (float): valor a ser transferido Returns: 1. Se o saldo for menor que o valor: 'False,saldo,limite' 2. Caso contrario: 'True,saldo,limite' ''' if valor > self._saldo: #return 'Valor a ser transferido não pode ser negativo!' #return 'Valor não disponível para transferencia!' return f'False,{self._saldo},{self._limite}' else: self._saldo -= valor self._limite += valor c._saldo += valor c._limite -= valor self._historico.adicionar_transacao( f'Transferencia para {c.cliente.nome}', valor) c._historico.adicionar_transacao( f'Transferencia recebida de {self._cliente.nome}', valor) #return 'Transferencia realizada com sucesso!' return f'True,{self._saldo},{self._limite}' def imprimir(self): ''' Metodo que retorna uma string com o extrato da conta ''' transacoes = self._historico._transacoes lista = [item + ',' for item in transacoes] historico = ''.join(lista) return historico
class Conta(abc.ABC): ''' Representação de uma Conta bancária. Atributos: numero: número da conta titular: objeto do tipo Cliente representando o titular da conta saldo: saldo inicial da conta limite: limite de cheque especial da conta data_abertura: objeto do tipo Data representando a data de abertura da conta ''' # definir os Slots impede que se crie novos atributos na classe dinamicamente em tempo # de execução (ele apaga o __dict__) __slots__ = [ '_id', '_numero', '_titular', '_saldo', '_limite', '_data_abertura', '_historico', '_tipo' ] _total_contas = 0 def __init__(self, numero, titular, saldo, limite, data_abertura): Conta._total_contas += 1 self._id = Conta._total_contas self._numero = numero self._titular = titular self._saldo = saldo self._limite = limite self._data_abertura = data_abertura self._historico = Historico() self._tipo = "" @property def id(self): return self._id @property def numero(self): return self._numero @numero.setter def numero(self, valor): self._numero = valor @property def titular(self): return self._titular @titular.setter def titular(self, valor): self._titular = valor @property def saldo(self): return self._saldo @property def limite(self): return self._limite @limite.setter def limite(self, valor): self._limite = valor @property def data_abertura(self): return self._data_abertura @data_abertura.setter def data_abertura(self, valor): self._data_abertura = valor @property def historico(self): return self._historico @property def tipo(self): return self._tipo @classmethod def total_contas(cls): return cls._total_contas def deposita(self, valor): ''' Realiza um depósito acrescentando o valor informado ao saldo da conta ''' if (valor <= 0): raise ValueError("Valor para depósito deve ser positivo") else: self._saldo += valor self._historico.atualiza_historico( f'Depósito realizado no valor de {valor}. Saldo parcial: {self._saldo}' ) def saca(self, valor): ''' Realiza um saque deduzindo o valor informado do saldo da conta ''' if (valor <= 0): raise ValueError("Valor para saque deve ser positivo") elif ((self._saldo + self._limite) < valor): raise SaldoInsuficienteError("Saldo insuficiente") else: self._saldo -= valor self._historico.atualiza_historico( f'Saque realizado no valor de {valor}. Saldo parcial: {self._saldo}' ) return True def transfere_para(self, destino, valor): ''' Realiza uma transferência do valor informado para a conta destino ''' if (valor <= 0): raise ValueError("Valor para transferência deve ser positivo") try: retirou = self.saca(valor) if (retirou == False): return False else: destino.deposita(valor) self._historico.atualiza_historico( f'Transferência realizada no valor de {valor} para a conta número {destino.numero} - titular: {destino.titular.nome} {destino.titular.sobrenome}. Saldo parcial: {self._saldo}' ) return True except SaldoInsuficienteError as e: raise SaldoInsuficienteError( "Saldo insuficente para transferência") except: raise e def extrato(self): ''' Demonstra o extrato da conta informada ''' print( f"Titular: {self._titular.nome} {self._titular.sobrenome}\nCPF: {self._titular.cpf}" ) print(f"Conta número: {self._numero}\nSaldo: {self._saldo}") print('\n') self._historico.imprime() @abc.abstractmethod def atualiza(self, taxa): ''' Atualiza o saldo com a taxa informada ''' #self._saldo += self._saldo * taxa #self._historico.atualiza_historico(f'Atualização de rendimentos - taxa: {taxa}. Saldo parcial: {self._saldo}') pass def __str__(self): return f"Tipo: {self._tipo} - Titular: {self._titular.nome} {self._titular.sobrenome} - CPF: {self._titular.cpf}"
def __init__(self, numero, cliente, saldo, limite=1000): self.numero = numero self.titular = cliente self.saldo = saldo self.limite = limite self.historico = Historico()
def run(self): print("Conectado...") while (True): recebe = self.socket.recv(1024) msg_recebida = recebe.decode() print('cliente: ' + msg_recebida) if msg_recebida != '': msg = msg_recebida.split(',') print(msg) if msg[0] == 'add_cliente': # ,nome,cpf,data_nascimento if not (Cliente.cadast_clie(msg[1], msg[2], msg[3], cursor)): con.send('erro'.encode()) else: con.send('sucesso'.encode()) #bd.commit() if msg[0] == 'add_conta': # ,numero,titular,saldo,limite if not (Conta.abrir_conta(msg[1], msg[2], msg[3], msg[3], cursor, self.sinc)): con.send('erro'.encode()) else: con.send('sucesso'.encode()) #bd.commit() if msg[0] == 'transfere': # ,num,numDest,valor if not (Conta.transfere(msg[1], float(msg[2]), msg[3], cursor, self.sinc)): con.send('erro'.encode()) else: con.send('sucesso'.encode()) #bd.commit() if msg[0] == 'saque': # ,num,valor if not (Conta.saca(msg[1], float(msg[2]), cursor, True)): con.send('erro'.encode()) else: con.send('sucesso'.encode()) #bd.commit() if msg[0] == 'deposita': # ,num,valor if not (Conta.deposita(msg[1], float(msg[2]), cursor, True, self.sinc)): con.send('erro'.encode()) else: con.send('sucesso'.encode()) #bd.commit() if msg[0] == 'saldo': # ,num extr = Conta.extrato(msg[1], cursor) if extr == None: con.send('erro'.encode()) else: con.send(str(extr).encode()) #bd.commit() if msg[0] == 'busc_clie': # ,cpf cli = Cliente.busca_clie(msg[1], cursor) if cli == False: con.send('erro'.encode()) else: con.send(f'{cli}'.encode()) #bd.commit() if msg[0] == 'busca_cnta': # ,num cta = Conta.busca_conta(msg[1], cursor, self.sinc) if cta == False: con.send('erro'.encode()) else: con.send(f'{cta}'.encode()) #bd.commit() if msg[0] == 'historic': # ,num hist = Historico.imprimir_transacoes(msg[1], cursor) if hist == None: con.send('erro'.encode()) else: con.send(f'{hist}'.encode()) bd.commit()
def saca(self,valor): '''Metodo Saca''' self.saldo -= valor self.listahistorico.append(Historico('Saque',datetime.today(),valor))
def deposita(self,valor): '''Metodo deposita''' self.saldo += valor self.listahistorico.append(Historico('Deposito',datetime.today(),valor))
class Conta: __slots__ = [ '_numero', '_senha', '_saldo', '_cliente', '_limite', '_historico' ] cont = 0 #contador da classe def __init__(self, cliente, senha, saldo=0, limite=5000): self._numero = str((Conta.cont + 1) * 1000) self._saldo = float(saldo) self._cliente = cliente self._senha = str(senha) self._limite = float(limite) self._historico = Historico() Conta.cont += 1 #metodos de acesso @property def numero(self): return self._numero @property def senha(self): return self._senha @senha.setter def senha(self, s): self._senha = s @property def cliente(self): return self._cliente @cliente.setter def cliente(self, c): self._cliente = c @property def limite(self): return self._limite @limite.setter def limite(self, l): self._limite = l @property def saldo(self): return self._saldo @saldo.setter def saldo(self, s): self._saldo = s @property def historico(self): return self._historico #Metodos def saque(self, valor): if self._saldo < valor: #return 'Valor não disponível para saque!' return False else: self._saldo -= valor self._limite += valor self._historico.adicionar_transacao('Saque', valor) #return 'Saque realizado com sucesso!\nSaldo restante = {}'.format(self._saldo) return True def depositar(self, valor): if valor > self._limite: return False else: self._saldo += valor self._limite -= valor self._historico.adicionar_transacao('Deposito', valor) #return 'Deposito realizado com sucesso!\nSaldo da conta = {}'.format(self._saldo) return True ''' def extrato(self): print("numero: {} saldo: {}".format(self._numero, self._saldo)) self._historico.adicionar_transacao("tirou extrato - saldo de {}".format(self._saldo)) ''' def transfere_para(self, c, valor): if valor > self._saldo: #return 'Valor a ser transferido não pode ser negativo!' #return 'Valor não disponível para transferencia!' return False else: self._saldo -= valor self._limite += valor c._saldo += valor c._limite -= valor self._historico.adicionar_transacao( f'Transferencia para {c.cliente.nome}', valor) c._historico.adicionar_transacao( f'Transferencia recebida de {self._cliente.nome}', valor) #return 'Transferencia realizada com sucesso!' return True def imprimir_transacoes(self): historico = '' transacoes = self._historico._transacoes for transacao in transacoes: historico += transacao return historico def imprimir_conta(self): print('Titular = ', self._cliente.nome, 'Numero = ', self._numero, 'Saldo = ', self._saldo, 'Limite = ', self._limite)