From b4540ec91f308805e2257b151d4d0352191e0842 Mon Sep 17 00:00:00 2001 From: Nicolas-Caldeira Date: Mon, 19 Aug 2024 10:04:36 -0300 Subject: [PATCH 1/6] =?UTF-8?q?Altera=C3=A7=C3=A3o=20para=20dois=20carros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.py | 65 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/src/main.py b/src/main.py index 49c199e..f4109ab 100644 --- a/src/main.py +++ b/src/main.py @@ -1,44 +1,57 @@ from frota import * +def simular_carro(carro: Carro ): + print('1- Ligar motor') + print('2- Desligar motor') + print('3- Acelerar') + + op = 0 + while op not in (1, 2, 3): + op = int(input("Digite as opcoes[1-3]: ")) + + if op == 1: + carro.ligar() + elif op == 2: + carro.desligar() + elif op == 3: + v = float(input("Informe a velocidade: ")) + t = float(input("Informe o tempo: ")) + carro.acelerar(v, t) + + print('Info do carro') + print(carro) + if __name__ == "__main__": - print('Cadastre um carro') + print('Cadastre o carro 1') nm_modelo = input('Digite o modelo: ') nm_marca = input('Digite a marca: ') nm_cor = input('Digite a cor: ') - kms = float(input('Digite com quantos Kms: ')) + carro1 = Carro(nm_modelo, nm_marca, nm_cor, 0, False) - carro1 = Carro(nm_modelo, nm_marca, nm_cor, kms, motor = True) + print('Cadastre o carro 2') + nm_modelo = input('Digite o modelo: ') + nm_marca = input('Digite a marca: ') + nm_cor = input('Digite a cor: ') + carro2 = Carro(nm_modelo, nm_marca, nm_cor, 0, False) ''' Controlando o carro até ele atingir 10000 Km ''' - while carro1.odometro < 10000: + while carro1.odometro < 300 and carro2.odometro <300: try: - print('1- Ligar motor') - print('2- Desligar motor') - print('3- Acelerar') - - op = 0 - while op not in (1,2,3): - op = int(input("Digite as opcoes[1-3]: ")) - - if op == 1: - carro1.ligar() - elif op == 2: - carro1.desligar() - elif op == 3: - v = float(input("Informe a velocidade: ")) - t = float(input("Informe o tempo: ")) - carro1.acelerar(v, t) - - print('Infos atuais do carro') - print(carro1) + op_carro=0 + while op_carro not in (1,2): + op_carro=int(input("Qual carro simular 1 ou 2")) + + if op_carro==1: + simular_carro(carro1) + else: + simular_carro(carro2) + except Exception as e: print("Erro!") print(e) - carro1.desligar() print(carro1) - print('Parar para trocar óleo!!!') - + print(carro2) From e37a8a299d7967a75b6c9ebd95f6a111c9ac1965 Mon Sep 17 00:00:00 2001 From: Nicolas-Caldeira Date: Mon, 19 Aug 2024 10:51:13 -0300 Subject: [PATCH 2/6] =?UTF-8?q?Altera=C3=A7=C3=A3o=20para=20dois=20carros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frota.py | 24 +++++++++++++++++++----- src/main.py | 10 +++++++--- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/frota.py b/src/frota.py index a4b3891..d6d791b 100644 --- a/src/frota.py +++ b/src/frota.py @@ -4,24 +4,36 @@ class Carro: cor : str odometro : 0.0 motor_on : False + tanque: float + consumo_medio: float def __init__(self, modelo : str, marca : str, cor : str, - odometro : float, motor : bool): + odometro : float, motor : bool, tanque : float, cpnsumo_medio : float): self.modelo = modelo self.marca = marca self.cor = cor self.odometro = odometro self.motor_on = motor + self.tanque = tanque + self.consumo_medio = cpnsumo_medio def ligar(self): - if not self.motor_on: + if not self.motor_on and self.tanque>0: self.motor_on = True else: - raise Exception("Erro: Motor já ligado!") + raise Exception("Erro: Motor já ligado! ou Sem Combstível") def acelerar(self, velocidade : float, tempo : float): if self.motor_on: - self.odometro += velocidade * tempo + km = velocidade*tempo + litros=km/self.consumo_medio + if self.tanque>litros: + self.tanque-=litros + self.odometro+=km + else: + self.odometro+=self.tanque*self.consumo_medio + self.tanque=0 + self.motor_on = False else: raise Exception("Erro: Não é possível acelerar! Motor desligado!") @@ -34,7 +46,9 @@ def desligar(self): def __str__(self): info = (f'Carro {self.modelo}, marca {self.marca}, ' f'cor {self.cor}\n{self.odometro} Km, ' - f'motor {self.motor_on}') + f'motor {self.motor_on}\n' + f'consumo {self.consumo_medio} Km/L' + f'nivel do tanque {self.tanque} L') return info diff --git a/src/main.py b/src/main.py index f4109ab..a77911e 100644 --- a/src/main.py +++ b/src/main.py @@ -26,19 +26,23 @@ def simular_carro(carro: Carro ): nm_modelo = input('Digite o modelo: ') nm_marca = input('Digite a marca: ') nm_cor = input('Digite a cor: ') + litros = float(input('Digite o nível do tanque ')) + cm = float(input('Digite o consumo médio do carro ')) - carro1 = Carro(nm_modelo, nm_marca, nm_cor, 0, False) + carro1 = Carro(nm_modelo, nm_marca, nm_cor, 0, False, litros, cm) print('Cadastre o carro 2') nm_modelo = input('Digite o modelo: ') nm_marca = input('Digite a marca: ') nm_cor = input('Digite a cor: ') + litros = float(input('Digite o nível do tanque ')) + cm = float(input('Digite o consumo médio do carro ')) - carro2 = Carro(nm_modelo, nm_marca, nm_cor, 0, False) + carro2 = Carro(nm_modelo, nm_marca, nm_cor, 0, False, litros, cm) ''' Controlando o carro até ele atingir 10000 Km ''' - while carro1.odometro < 300 and carro2.odometro <300: + while carro1.odometro < 300 and carro2.odometro <300 and (carro1.tanque>0 or carro2.tanque >0): try: op_carro=0 while op_carro not in (1,2): From b424fda14061f5de72acec3f11b2063001e6de9b Mon Sep 17 00:00:00 2001 From: Nicolas-Caldeira Date: Mon, 26 Aug 2024 08:28:42 -0300 Subject: [PATCH 3/6] nao --- src/frota.py | 45 +++++++++++++++++++++++++-------------------- src/main.py | 2 +- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/frota.py b/src/frota.py index d6d791b..37cb265 100644 --- a/src/frota.py +++ b/src/frota.py @@ -2,9 +2,9 @@ class Carro: modelo : str marca : str cor : str - odometro : 0.0 - motor_on : False - tanque: float + __odometro : 0.0 + __motor_on : False + __tanque: float consumo_medio: float def __init__(self, modelo : str, marca : str, cor : str, @@ -12,45 +12,50 @@ def __init__(self, modelo : str, marca : str, cor : str, self.modelo = modelo self.marca = marca self.cor = cor - self.odometro = odometro - self.motor_on = motor - self.tanque = tanque + self.__odometro = odometro + self.__motor_on = motor + self.__tanque = tanque self.consumo_medio = cpnsumo_medio def ligar(self): - if not self.motor_on and self.tanque>0: - self.motor_on = True + if not self.__motor_on and self.__tanque>0: + self.__motor_on = True else: raise Exception("Erro: Motor já ligado! ou Sem Combstível") def acelerar(self, velocidade : float, tempo : float): - if self.motor_on: + if self.__motor_on: km = velocidade*tempo litros=km/self.consumo_medio - if self.tanque>litros: - self.tanque-=litros - self.odometro+=km + if self.__tanque>litros: + self.__tanque-=litros + self.__odometro+=km else: - self.odometro+=self.tanque*self.consumo_medio - self.tanque=0 - self.motor_on = False + self.__odometro+= self.__tanque * self.consumo_medio + self.__tanque=0 + self.__motor_on = False else: raise Exception("Erro: Não é possível acelerar! Motor desligado!") def desligar(self): - if self.motor_on: - self.motor_on = False + if self.__motor_on: + self.__motor_on = False else: raise Exception("Erro: Motor já desligado!") def __str__(self): info = (f'Carro {self.modelo}, marca {self.marca}, ' - f'cor {self.cor}\n{self.odometro} Km, ' - f'motor {self.motor_on}\n' + f'cor {self.cor}\n{self.__odometro} Km, ' + f'motor {self.__motor_on}\n' f'consumo {self.consumo_medio} Km/L' - f'nivel do tanque {self.tanque} L') + f'nivel do tanque {self.__tanque} L') return info + def get_odometro(self): + return self.__odometro + + def get_tanque(self): + return self.__tanque diff --git a/src/main.py b/src/main.py index a77911e..c57d5ca 100644 --- a/src/main.py +++ b/src/main.py @@ -42,7 +42,7 @@ def simular_carro(carro: Carro ): ''' Controlando o carro até ele atingir 10000 Km ''' - while carro1.odometro < 300 and carro2.odometro <300 and (carro1.tanque>0 or carro2.tanque >0): + while carro1.get_odometro() < 300 and carro2.get_odometro() <300 and (carro1.get_tanque() > 0 or carro2.get_tanque() > 0): try: op_carro=0 while op_carro not in (1,2): From e6404597ab90b7870cf7519fb28788e49f28dcb6 Mon Sep 17 00:00:00 2001 From: Nicolas-Caldeira Date: Mon, 26 Aug 2024 08:30:32 -0300 Subject: [PATCH 4/6] nao --- .idea/.gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .idea/.gitignore diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml From 23ab2e6728009665083f7ab037110f5b083b1a42 Mon Sep 17 00:00:00 2001 From: Nicolas-Caldeira Date: Mon, 2 Sep 2024 08:52:48 -0300 Subject: [PATCH 5/6] Add files via upload --- src/eleicoes_v2/common.py | 60 ++++++++++++++ src/eleicoes_v2/eleicao.py | 54 +++++++++++++ src/eleicoes_v2/gerenciar_urna.py | 30 +++++++ src/eleicoes_v2/main.py | 129 ++++++++++++++++++++++++++++++ 4 files changed, 273 insertions(+) create mode 100644 src/eleicoes_v2/common.py create mode 100644 src/eleicoes_v2/eleicao.py create mode 100644 src/eleicoes_v2/gerenciar_urna.py create mode 100644 src/eleicoes_v2/main.py diff --git a/src/eleicoes_v2/common.py b/src/eleicoes_v2/common.py new file mode 100644 index 0000000..c26dce8 --- /dev/null +++ b/src/eleicoes_v2/common.py @@ -0,0 +1,60 @@ +class Pessoa: + __nome : str + __RG : str + __CPF : str + + def __init__(self, nome, RG, CPF): + self.__nome = nome + self.__RG = RG + self.__CPF = CPF + + def __str__(self): + info = (f'Nome: {self.__nome}\n' + f'RG: {self.__RG}\n' + f'CPF: {self.__CPF}\n') + return info + + def __repr__(self): + return f"Pessoa(nome='{self.__nome}', RG='{self.__RG}', CPF='{self.__CPF}')" + +class Eleitor(Pessoa): + __titulo : int + secao : int + zona : int + + def __init__(self, nome, RG, CPF, titulo, secao, zona): + super().__init__(nome, RG, CPF) + self.__titulo = titulo + self.secao = secao + self.zona = zona + + def __str__(self): + info = super().__str__() + info += (f'Titulo: {self.__titulo}\n' + f'Seção: {self.secao}\n' + f'Zona: {self.zona}\n') + return info + + def __repr__(self): + return f"Eleitor({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}')" + + def get_titulo(self): + return self.__titulo + +class Candidato(Pessoa): + __numero : int + + def __init__(self, nome, RG, CPF, numero): + super().__init__(nome, RG, CPF) + self.__numero = numero + + def __str__(self): + info = super().__str__() + info += (f'Numero: {self.__numero}\n') + return info + + def __repr__(self): + return f"Candidato({super().__repr__()}, numero='{self.__numero})'" + + def get_numero(self): + return self.__numero \ No newline at end of file diff --git a/src/eleicoes_v2/eleicao.py b/src/eleicoes_v2/eleicao.py new file mode 100644 index 0000000..474c14b --- /dev/null +++ b/src/eleicoes_v2/eleicao.py @@ -0,0 +1,54 @@ +import pickle +from typing import List +from common import * + +class Urna: + mesario : Pessoa + __secao : int + __zona : int + __eleitores_presentes : List[Eleitor] + __votos = {} #dicionario chave = numero do candidato, valor é a quantidade de votos + + def __init__(self, mesario : Pessoa, secao : int, zona : int, + candidatos : List[Candidato], eleitores : List[Eleitor]): + self.mesario = mesario + self.__secao = secao + self.__zona = zona + self.__nome_arquivo = f'{self.zona}_{self.secao}.pkl' + self.__candidatos = candidatos + self.__eleitores = [] + for eleitor in eleitores: + if eleitor.zona == zona and eleitor.secao == secao: + self.__eleitores.append(eleitor) + + for candidato in self.__candidatos: + self.__votos[candidato.get_numero()] = 0 + self.__votos['BRANCO'] = 0 + self.__votos['NULO'] = 0 + + with open(self.__nome_arquivo, 'wb') as arquivo: + pickle.dump(self.__votos, arquivo) + + def get_eleitor(self, titulo : int): + for eleitor in self.__eleitores: + if eleitor.get_titulo() == titulo: + return eleitor + return False + + def registrar_voto(self, eleitor : Eleitor, n_cand : int): + self.__eleitores_presentes.append(eleitor) + if n_cand in self.__votos: + self.__votos[n_cand] += 1 + else: + self.__votos['NULO'] += 1 + + with open(self.__nome_arquivo, 'wb') as arquivo: + pickle.dump(self.__votos, arquivo) + + def __str__(self): + info = (f'Urna da seção {self.__secao}, zona {self.__zona}\n' + f'Mesario {self.mesario}\n') + + + + diff --git a/src/eleicoes_v2/gerenciar_urna.py b/src/eleicoes_v2/gerenciar_urna.py new file mode 100644 index 0000000..9bee094 --- /dev/null +++ b/src/eleicoes_v2/gerenciar_urna.py @@ -0,0 +1,30 @@ +from common import * +from eleicao import Urna + +def iniciar_urna(eleitores, candidatos): + print("Iniciando Urna") + print("==============") + secao = int(input("Número da secao: ")) + zona = int(input("Número da zona: ")) + + nome_mes = input("Nome do Mesario: ") + rg_mes = input("RG do Mesario: ") + cpf_mes = input("CPF do Mesario: ") + + mesario = Pessoa(nome_mes, rg_mes, cpf_mes) + + return Urna(mesario, secao, zona, candidatos, eleitores) + +def votar(urna : Urna): + titulo_eleitor = int(input("Digite o titulo do eleitor: ")) + eleitor = urna.get_eleitor(titulo_eleitor) + + if not eleitor: + raise Exception("Eleitor não é desta Urna") + + print(eleitor) + print("Pode votar!") + print("===========") + voto = int(input("Digite o numero do candidato: ")) + urna.registrar_voto(eleitor, voto) + diff --git a/src/eleicoes_v2/main.py b/src/eleicoes_v2/main.py new file mode 100644 index 0000000..0a9d912 --- /dev/null +++ b/src/eleicoes_v2/main.py @@ -0,0 +1,129 @@ +import pickle +import traceback +import gerenciar_urna +from common import * + +FILE_ELEITORES = 'eleitores.pkl' +FILE_CANDIDATOS = 'candidatos.pkl' + +def menu(): + print("1-Novo Eleitor") + print("2-Atualizar Eleitor") + print("3-Inserir Candidato") + print("4-Listar Candidatos") + print("5-Iniciar Urna") + print("6-Testar Urna") + print("7-Sair") + op = int(input("Digite a opcao [1 a 7]? ")) + while op not in range(1, 8): + op = int(input("Digite a opcao [1 a 7]? ")) + return op + +def inserir_eleitor(eleitores): + titulo = int(input("Digite o Títlulo: ")) + + if titulo in eleitores: + raise Exception("Titulo já existente!") + + nome = input("Digite o nome: ") + RG = input("Digite o RG: ") + CPF = input("Digite o CPF: ") + secao = input("Digite a secao: ") + zona = input("Digite a zona: ") + + eleitor = Eleitor(nome, RG, CPF, titulo, secao, zona) + eleitores[eleitor.get_titulo()] = eleitor + + with open(FILE_ELEITORES, 'wb') as arquivo: + pickle.dump(eleitores, arquivo) + + print('Eleitor gravado com sucesso!') + print(eleitor) + +def atualizar_eleitor(eleitores): + titulo = int(input('Digite o titulo do eleitor: ')) + + if titulo in eleitores: + eleitor = eleitores[titulo] + print(eleitor) + secao = input("Digite a nova secao: ") + zona = input("Digite a nova zona: ") + eleitor.secao = secao + eleitor.zona = zona + + with open(FILE_ELEITORES, 'wb') as arquivo: + pickle.dump(eleitores, arquivo) + + print('Atualizados dados do eleitor!') + print(eleitor) + else: + raise Exception('Titulo inexistente') + +def inserir_candidato(candidatos): + numero = int(input("Digite o número do candidato: ")) + + if numero in candidatos: + raise Exception("Candidato já existente!") + + nome = input("Digite o nome: ") + RG = input("Digite o RG: ") + CPF = input("Digite o CPF: ") + + candidato = Candidato(nome, RG, CPF, numero) + candidatos[candidato.get_numero()] = candidato + + with open(FILE_CANDIDATOS, 'wb') as arquivo: + pickle.dump(candidatos, arquivo) + + print('Candidato gravado com sucesso!') + print(candidato) + +def listar_candidatos(candidatos): + for candidato in candidatos.values(): + print(candidato) + +if __name__ == "__main__": + eleitores = {} #dicionário a chave será o titulo + try: + print("Carregando arquivo de eleitores ...") + + with open(FILE_ELEITORES, 'rb') as arquivo: + eleitores = pickle.load(arquivo) + except FileNotFoundError as fnfe: + print(fnfe) + print("Arquivo nao encontrado, nenhum eleitor carregado!") + + candidatos = {} # dicionário a chave será o titulo + try: + print("Carregando arquivo de candidatos ...") + + with open(FILE_CANDIDATOS, 'rb') as arquivo: + candidatos = pickle.load(arquivo) + except FileNotFoundError as fnfe: + print(fnfe) + print("Arquivo nao encontrado, nenhum candidato carregado!") + + opcao = 1 + while opcao in range(1,8): + try: + opcao = menu() + + if opcao == 1: + inserir_eleitor(eleitores) + elif opcao == 2: + atualizar_eleitor(eleitores) + elif opcao == 3: + inserir_candidato(candidatos) + elif opcao == 4: + listar_candidatos(candidatos) + elif opcao == 5: + urna = gerenciar_urna.iniciar_urna(candidatos, eleitores) + elif opcao == 6: + gerenciar_urna.votar(urna) + elif opcao == 7: + print("Saindo!") + break + except Exception as e: + #traceback.print_exc() + print(e) + From 9c3fee9793a5573c97c49a90af8d90a15564c670 Mon Sep 17 00:00:00 2001 From: Nicolas-Caldeira Date: Mon, 2 Sep 2024 08:54:19 -0300 Subject: [PATCH 6/6] Add files via upload --- eleicoes_v2/common.py | 60 ++++++++++++++++ eleicoes_v2/eleicao.py | 54 ++++++++++++++ eleicoes_v2/gerenciar_urna.py | 30 ++++++++ eleicoes_v2/main.py | 129 ++++++++++++++++++++++++++++++++++ 4 files changed, 273 insertions(+) create mode 100644 eleicoes_v2/common.py create mode 100644 eleicoes_v2/eleicao.py create mode 100644 eleicoes_v2/gerenciar_urna.py create mode 100644 eleicoes_v2/main.py diff --git a/eleicoes_v2/common.py b/eleicoes_v2/common.py new file mode 100644 index 0000000..c26dce8 --- /dev/null +++ b/eleicoes_v2/common.py @@ -0,0 +1,60 @@ +class Pessoa: + __nome : str + __RG : str + __CPF : str + + def __init__(self, nome, RG, CPF): + self.__nome = nome + self.__RG = RG + self.__CPF = CPF + + def __str__(self): + info = (f'Nome: {self.__nome}\n' + f'RG: {self.__RG}\n' + f'CPF: {self.__CPF}\n') + return info + + def __repr__(self): + return f"Pessoa(nome='{self.__nome}', RG='{self.__RG}', CPF='{self.__CPF}')" + +class Eleitor(Pessoa): + __titulo : int + secao : int + zona : int + + def __init__(self, nome, RG, CPF, titulo, secao, zona): + super().__init__(nome, RG, CPF) + self.__titulo = titulo + self.secao = secao + self.zona = zona + + def __str__(self): + info = super().__str__() + info += (f'Titulo: {self.__titulo}\n' + f'Seção: {self.secao}\n' + f'Zona: {self.zona}\n') + return info + + def __repr__(self): + return f"Eleitor({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}')" + + def get_titulo(self): + return self.__titulo + +class Candidato(Pessoa): + __numero : int + + def __init__(self, nome, RG, CPF, numero): + super().__init__(nome, RG, CPF) + self.__numero = numero + + def __str__(self): + info = super().__str__() + info += (f'Numero: {self.__numero}\n') + return info + + def __repr__(self): + return f"Candidato({super().__repr__()}, numero='{self.__numero})'" + + def get_numero(self): + return self.__numero \ No newline at end of file diff --git a/eleicoes_v2/eleicao.py b/eleicoes_v2/eleicao.py new file mode 100644 index 0000000..474c14b --- /dev/null +++ b/eleicoes_v2/eleicao.py @@ -0,0 +1,54 @@ +import pickle +from typing import List +from common import * + +class Urna: + mesario : Pessoa + __secao : int + __zona : int + __eleitores_presentes : List[Eleitor] + __votos = {} #dicionario chave = numero do candidato, valor é a quantidade de votos + + def __init__(self, mesario : Pessoa, secao : int, zona : int, + candidatos : List[Candidato], eleitores : List[Eleitor]): + self.mesario = mesario + self.__secao = secao + self.__zona = zona + self.__nome_arquivo = f'{self.zona}_{self.secao}.pkl' + self.__candidatos = candidatos + self.__eleitores = [] + for eleitor in eleitores: + if eleitor.zona == zona and eleitor.secao == secao: + self.__eleitores.append(eleitor) + + for candidato in self.__candidatos: + self.__votos[candidato.get_numero()] = 0 + self.__votos['BRANCO'] = 0 + self.__votos['NULO'] = 0 + + with open(self.__nome_arquivo, 'wb') as arquivo: + pickle.dump(self.__votos, arquivo) + + def get_eleitor(self, titulo : int): + for eleitor in self.__eleitores: + if eleitor.get_titulo() == titulo: + return eleitor + return False + + def registrar_voto(self, eleitor : Eleitor, n_cand : int): + self.__eleitores_presentes.append(eleitor) + if n_cand in self.__votos: + self.__votos[n_cand] += 1 + else: + self.__votos['NULO'] += 1 + + with open(self.__nome_arquivo, 'wb') as arquivo: + pickle.dump(self.__votos, arquivo) + + def __str__(self): + info = (f'Urna da seção {self.__secao}, zona {self.__zona}\n' + f'Mesario {self.mesario}\n') + + + + diff --git a/eleicoes_v2/gerenciar_urna.py b/eleicoes_v2/gerenciar_urna.py new file mode 100644 index 0000000..9bee094 --- /dev/null +++ b/eleicoes_v2/gerenciar_urna.py @@ -0,0 +1,30 @@ +from common import * +from eleicao import Urna + +def iniciar_urna(eleitores, candidatos): + print("Iniciando Urna") + print("==============") + secao = int(input("Número da secao: ")) + zona = int(input("Número da zona: ")) + + nome_mes = input("Nome do Mesario: ") + rg_mes = input("RG do Mesario: ") + cpf_mes = input("CPF do Mesario: ") + + mesario = Pessoa(nome_mes, rg_mes, cpf_mes) + + return Urna(mesario, secao, zona, candidatos, eleitores) + +def votar(urna : Urna): + titulo_eleitor = int(input("Digite o titulo do eleitor: ")) + eleitor = urna.get_eleitor(titulo_eleitor) + + if not eleitor: + raise Exception("Eleitor não é desta Urna") + + print(eleitor) + print("Pode votar!") + print("===========") + voto = int(input("Digite o numero do candidato: ")) + urna.registrar_voto(eleitor, voto) + diff --git a/eleicoes_v2/main.py b/eleicoes_v2/main.py new file mode 100644 index 0000000..0a9d912 --- /dev/null +++ b/eleicoes_v2/main.py @@ -0,0 +1,129 @@ +import pickle +import traceback +import gerenciar_urna +from common import * + +FILE_ELEITORES = 'eleitores.pkl' +FILE_CANDIDATOS = 'candidatos.pkl' + +def menu(): + print("1-Novo Eleitor") + print("2-Atualizar Eleitor") + print("3-Inserir Candidato") + print("4-Listar Candidatos") + print("5-Iniciar Urna") + print("6-Testar Urna") + print("7-Sair") + op = int(input("Digite a opcao [1 a 7]? ")) + while op not in range(1, 8): + op = int(input("Digite a opcao [1 a 7]? ")) + return op + +def inserir_eleitor(eleitores): + titulo = int(input("Digite o Títlulo: ")) + + if titulo in eleitores: + raise Exception("Titulo já existente!") + + nome = input("Digite o nome: ") + RG = input("Digite o RG: ") + CPF = input("Digite o CPF: ") + secao = input("Digite a secao: ") + zona = input("Digite a zona: ") + + eleitor = Eleitor(nome, RG, CPF, titulo, secao, zona) + eleitores[eleitor.get_titulo()] = eleitor + + with open(FILE_ELEITORES, 'wb') as arquivo: + pickle.dump(eleitores, arquivo) + + print('Eleitor gravado com sucesso!') + print(eleitor) + +def atualizar_eleitor(eleitores): + titulo = int(input('Digite o titulo do eleitor: ')) + + if titulo in eleitores: + eleitor = eleitores[titulo] + print(eleitor) + secao = input("Digite a nova secao: ") + zona = input("Digite a nova zona: ") + eleitor.secao = secao + eleitor.zona = zona + + with open(FILE_ELEITORES, 'wb') as arquivo: + pickle.dump(eleitores, arquivo) + + print('Atualizados dados do eleitor!') + print(eleitor) + else: + raise Exception('Titulo inexistente') + +def inserir_candidato(candidatos): + numero = int(input("Digite o número do candidato: ")) + + if numero in candidatos: + raise Exception("Candidato já existente!") + + nome = input("Digite o nome: ") + RG = input("Digite o RG: ") + CPF = input("Digite o CPF: ") + + candidato = Candidato(nome, RG, CPF, numero) + candidatos[candidato.get_numero()] = candidato + + with open(FILE_CANDIDATOS, 'wb') as arquivo: + pickle.dump(candidatos, arquivo) + + print('Candidato gravado com sucesso!') + print(candidato) + +def listar_candidatos(candidatos): + for candidato in candidatos.values(): + print(candidato) + +if __name__ == "__main__": + eleitores = {} #dicionário a chave será o titulo + try: + print("Carregando arquivo de eleitores ...") + + with open(FILE_ELEITORES, 'rb') as arquivo: + eleitores = pickle.load(arquivo) + except FileNotFoundError as fnfe: + print(fnfe) + print("Arquivo nao encontrado, nenhum eleitor carregado!") + + candidatos = {} # dicionário a chave será o titulo + try: + print("Carregando arquivo de candidatos ...") + + with open(FILE_CANDIDATOS, 'rb') as arquivo: + candidatos = pickle.load(arquivo) + except FileNotFoundError as fnfe: + print(fnfe) + print("Arquivo nao encontrado, nenhum candidato carregado!") + + opcao = 1 + while opcao in range(1,8): + try: + opcao = menu() + + if opcao == 1: + inserir_eleitor(eleitores) + elif opcao == 2: + atualizar_eleitor(eleitores) + elif opcao == 3: + inserir_candidato(candidatos) + elif opcao == 4: + listar_candidatos(candidatos) + elif opcao == 5: + urna = gerenciar_urna.iniciar_urna(candidatos, eleitores) + elif opcao == 6: + gerenciar_urna.votar(urna) + elif opcao == 7: + print("Saindo!") + break + except Exception as e: + #traceback.print_exc() + print(e) +