Buscar

Trabalho_Python

Prévia do material em texto

1 
 
 
 
 
 
 
 
UNIVERSIDADE ESTÁCIO DE SÁ 
PÓS-GRADUAÇÃO EM CIÊNCIA DE DADOS E BIG 
DATA ANALYTICS 
 
 
TRABALHO PYTHON 
MAIKSON RODRIGO DE LIMA NOBRE 
 
 
 
Trabalho da disciplina Linguagem Python 
 Tutor: Prof. André Luiz Braga 
 
Macapá - AP 
2021 
http://portal.estacio.br/
 
 
 
2 
1. Trabalho a ser desenvolvido: 
 Faça um programa que permita ao usuário a manipulação de um arquivo binário para 
criação de um pequeno controle de votos de uma eleição, utilizando os seguintes campos: 
cod_candidato, nome, cargo, regiao, num_votos. Em seguida, o usuário deverá ser capaz de 
inserir no arquivo os dados de cada candidato e depois listar todos os candidatos, votos por 
candidatos, total por candidato e por região. 
2. Desenvolvimento 
# coding=utf-8 
"""ALUNO MAIKSON RODRIGO DE LIMA NOBRE, MATRICULA 202010095674 
 
FAÇA UM PROGRAMA QUE PERMITA AO USUÁRIO A MANIPULAÇÃO DE UM 
ARQUIVO BINÁRIO PARA CRIAÇÃO DE UM PEQUENO CONTROLE DE VOTOS DE UMA 
ELEIÇÃO, UTILIZANDO OS SEGUINTES CAMPOS: COD_CANDIDATO, NOME, CARGO, 
REGIAO, NUM_VOTOS. 
 
EM SEGUIDA, O USUÁRIO DEVERÁ SER CAPAZ DE INSERIR NO 
ARQUIVO OS DADOS de CADA CANDIDATO e DEPOIS LISTAR TODOS CADIDATOS, 
VOTOS 
POR CANDIDATOS, TOTAL POR CANDIDATO e POR REGIAO. 
""" 
import cPickle 
import os 
 
 
def valida_arquivo(): 
 try: 
 pickle_file = open("arquivo.dat", "rb") 
 except: 
 print "ARQUIVO NÃO ENCONTRADO \n" 
 raw_input("PARA CRIAR UM NOVO ARQUIVO PRESSIONE <ENTER>\n") 
 cria_arquivo() 
 
 
def valida(cod): 
 # VALIDA SE JA EXISTE UM CANDIDATO CADASTRADO COM O MESMO CODIGO 
 duplicado = False 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 pickle_file.close() 
 if cod in base.keys(): 
 duplicado = True 
 return duplicado 
 
 
def contador(): 
 # CONTAGEM DE CANDIDATOS CADASTRADOS 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 print('EXISTEM ' + str(len(base)) + ' CANDIDATOS REGISTRADOS 
ATUALMENTE\n') 
 
 
 
3 
 pickle_file.close() 
 
 
def listar_todos(): 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 if len(base) > 0: 
 for cod in base.keys(): 
 print 'CODIGO: ' + base[cod]['cod_candidato'] 
 print 'NOME: ' + base[cod]['nome'] 
 print 'CARGO: ' + base[cod]['cargo'] 
 print 'REGIAO: ' + base[cod]['regiao'] 
 print 'TOTAL DE VOTOS: ' + str(base[cod]['num_votos']) 
 print('\n' + '#' * 25 + '\n') 
 raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') 
 pickle_file.close() 
 menu() 
 
 
def votos_candidato(): 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 if len(base) > 0: 
 for cod in base.keys(): 
 print 'NOME: ' + base[cod]['nome'] 
 print 'TOTAL DE VOTOS: ' + str(base[cod]['num_votos']) 
 print '\n' + '#' * 25 + '\n' 
 raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') 
 pickle_file.close() 
 menu() 
 
 
def votos_regiao(): 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 regioes = dict() 
 for candidato in base.values(): 
 regioes[candidato['regiao']] = 
regioes.get(candidato['regiao'], 0) + candidato['num_votos'] 
 print('TOTAL DE VOTOS POR REGIAO: ' + str(regioes)) 
 raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') 
 pickle_file.close() 
 menu() 
 
 
def cria_arquivo(): 
 base = {} 
 pickle_file = open("arquivo.dat", "wb") 
 cPickle.dump(base, pickle_file) 
 print "O ARQUIVO FOI CRIADO COM SUCESSO \n" 
 pickle_file.close() 
 menu() 
 
 
def busca(): 
 # PESQUISA DE CANDIDATO POR COD 
 
 
 
4 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 cod = raw_input('INFORME O CÓDIGO DO CANDIDATO: \n') 
 if valida(cod): 
 print '#' * 25 
 print 'CODIGO: ' + base[cod]['cod_candidato'] 
 print 'NOME: ' + base[cod]['nome'] 
 print 'CARGO: ' + base[cod]['cargo'] 
 print 'REGIAO: ' + base[cod]['regiao'] 
 print 'TOTAL DE VOTOS: 
{0}'.format(str(base[cod]['num_votos'])) 
 print '#' * 25 + '\n' 
 raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') 
 else: 
 print('CANDIDATO NÃO ENCONTRADO, TENTE NOVAMENTE \n') 
 raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') 
 pickle_file.close() 
 menu() 
 
 
def add_candidato(): 
 # ADICIONA UM NOVO CANDIDATO 
 pickle_file = open("arquivo.dat", "rb") 
 base = cPickle.load(pickle_file) 
 candidato = {} 
 cod = raw_input('INFORME O CÓDIGO DO CANDIDATO: \n') 
 candidato['cod_candidato'] = cod 
 candidato['nome'] = raw_input('INFORME O NOME DO CANDIDATO: \n') 
 candidato['cargo'] = raw_input('INFORME O CARGO DO CANDIDATO: 
\n') 
 candidato['regiao'] = raw_input('INFORME A REGIÃO DO CANDIDATO: 
\n') 
 candidato['num_votos'] = int(raw_input('INFORME A QUANTIDADE DE 
VOTOS DO CANDIDATO: \n')) 
 base[cod] = candidato 
 pickle_file.close() 
 pickle_file = open("arquivo.dat", "wb") 
 cPickle.dump(base, pickle_file) 
 print "NOVO CANDIDATO INSERIDO AO REGISTRO \n" 
 pickle_file.close() 
 menu() 
 
 
def menu(): 
 # MENU INICIAL DO PROGRAMA 
 os.system('cls') 
 print \ 
 """ 
 ############### CONTROLE DE VOTOS / ELEICÃO 2021 ############ 
 ## ## 
 ## (1) SAIR DO PROGRAMA ## 
 ## (2) CRIAR ARQUIVO BASE ## 
 ## (3) ADICIONAR UM NOVO CANDIDATO ## 
 ## (4) PESQUISAR UM CANDIDATO ## 
 ## (5) LISTAR VOTOS POR CANDIDATO ## 
 ## (6) LISTAR TODOS OS CANDIDATOS ## 
 
 
 
5 
 ## (7) LISTAR VOTOS POR REGIÃO ## 
 ## ## 
 ############################################################# 
 """ 
 contador() 
 
 
def main(): 
 valida_arquivo() 
 choice = None 
 menu() 
 while choice != 1: 
 choice = raw_input("\nESCOLHA UMA OPÇÃO: \n") 
 if choice == "1": 
 print "PROGRAMA FINALIZADO" 
 break 
 
 elif choice == "2": 
 cria_arquivo() 
 
 elif choice == "3": 
 add_candidato() 
 
 elif choice == "4": 
 busca() 
 
 elif choice == "5": 
 votos_candidato() 
 
 elif choice == "6": 
 listar_todos() 
 
 elif choice == "7": 
 votos_regiao() 
 
 else: 
 print "\nDESCULPE, MAS %s NÃO É UMA OPÇÃO VALIDA." % 
choice 
 
 
main() 
raw_input("PRESSIONE <ENTER> PARA SAIR.") 
 
 
 
 
 
 
 
 
 
6 
3. Resultado. 
O programa solicitado teve como resultado as seguintes telas. 
3.1 – Menu inicial do programa: 
 
3.2 – Criação do arquivo binário para manipulação dos dados inseridos pelo usuário: 
 
 
 
 
 
 
7 
3.3 – Adicionar um novo candidato: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8 
3.4 – Listar votos por candidato: 
 
 
 
 
 
 
 
 
 
 
 
9 
3.5 – Listar todos os candidatos: 
 
 
 
 
 
 
 
 
 
 
10 
3.6 Listar votos por região:

Continue navegando