Componentes: Guilherme H. Joergensen, Guilherme Ferraz, Adolfo Kurt do Prado e Weliton De S. França.
Objetivos: Automatizar o processo de cadastros de telhas de aço da empresa.
Metodologia de desenvolvimento: Foram utilizado os programas: VSCode e Google Colaboratory.
# -*- coding: utf-8 -*-
"""Trabalgo de IPOO.ipynb
Automatically generated by Colab.
Original file is located at
https://colab.research.google.com/drive/1L7giLAiRpud_m1XU_i25FSXkwD0fRkJD
"""
from openpyxl import Workbook
from google.colab import files
# CLASSE MÃE
class Item:
def __init__(self, codigo):
self.__codigo = codigo # Encapsulamento
# Getter
def get_codigo(self):
return self.__codigo
def descricao(self):
return "Item genérico"
def __str__(self):
return f"Código: {self.get_codigo()} | {self.descricao()}"
# CLASSE FILHA (TELHA)
class Telha(Item):
def __init__(self, codigo, tipo, material, espessura, cor, comprimento):
super().__init__(codigo)
# Atributos encapsulados
self.__tipo = tipo
self.__material = material
self.__espessura = espessura
self.__cor = cor
self.__comprimento = comprimento
# GETTERS DOS ATRIBUTOS
def get_tipo(self):
return self.__tipo
def get_material(self):
return self.__material
def get_espessura(self):
return self.__espessura
def get_cor(self):
return self.__cor
def get_comprimento(self):
return self.__comprimento
def descricao(self):
texto = f"{self.get_tipo()} {self.get_material()} {self.get_comprimento()}x{self.get_espessura()}"
if self.get_cor() != "N/A":
texto += f" {self.get_cor()}"
return texto
# SISTEMA DE CADASTRO
class SistemaCadastro:
def __init__(self):
self.__items = {} # Encapsulado
self.__proximo_codigo = 1
self.__ultimo_codigo = None
def gerar_codigo(self):
codigo = str(self.__proximo_codigo).zfill(6)
self.__proximo_codigo += 1
return codigo
def cadastrar_item(self):
print("\n--- Cadastro ---")
tipo = input("Tipo (TPR-17, TPR-25, TPR-35, TPR-40, TPR-100): ").upper()
material = input("Material (PRE, GALV): ").upper()
espessura = input("Espessura (0,43 / 0,50 / 0,65): ").upper()
comprimento = input("Comprimento (mm): ")
cor = "N/A" if material == "GALV" else input("Cor: ").upper()
# Verificar duplicado
for item in self.__items.values():
if (
item.get_tipo() == tipo and
item.get_material() == material and
item.get_espessura() == espessura and
item.get_cor() == cor and
item.get_comprimento() == int(comprimento)
):
print("\nItem já existe!")
print(item)
self.__ultimo_codigo = item.get_codigo()
return
codigo = self.gerar_codigo()
novo = Telha(codigo, tipo, material, espessura, cor, int(comprimento))
self.__items[codigo] = novo
self.__ultimo_codigo = codigo
print("\nItem cadastrado!")
print(novo)
def excluir_ultimo_item(self):
if self.__ultimo_codigo in self.__items:
del self.__items[self.__ultimo_codigo]
print("\nÚltimo item removido!")
self.__proximo_codigo -= 1
self.__ultimo_codigo = None
else:
print("\nNenhum item para excluir.")
def exportar_excel(self):
if len(self.__items) == 0:
print("Nenhum item para exportar.")
return
wb = Workbook()
ws = wb.active
ws.title = "Itens"
ws.append(["Código", "Tipo", "Material", "Espessura", "Cor", "Comprimento", "Descrição"])
for item in self.__items.values():
ws.append([
item.get_codigo(),
item.get_tipo(),
item.get_material(),
item.get_espessura(),
item.get_cor(),
item.get_comprimento(),
item.descricao()
])
wb.save("itens.xlsx")
print("\nArquivo Excel gerado!")
files.download("itens.xlsx")
def pesquisar(self):
print("\n--- Pesquisa ---")
print("1 - Por código")
print("2 - Por descrição")
escolha = input("Escolha: ")
if escolha == "1":
codigo = input("Código (000001): ")
item = self.__items.get(codigo)
print(item if item else "Não encontrado.")
elif escolha == "2":
termo = input("Buscar: ").lower()
achados = [item for item in self.__items.values() if termo in item.descricao().lower()]
if achados:
for item in achados:
print(item)
else:
print("Nenhum item encontrado.")
else:
print("Opção inválida.")
def menu(self):
while True:
print("\n====== MENU ======")
print("1 - Cadastrar item")
print("2 - Excluir último item")
print("3 - Pesquisar item")
print("4 - Exportar Excel")
print("5 - Sair")
opcao = input("Escolha: ")
if opcao == "1":
self.cadastrar_item()
elif opcao == "2":
self.excluir_ultimo_item()
elif opcao == "3":
self.pesquisar()
elif opcao == "4":
self.exportar_excel()
elif opcao == "5":
print("Saindo...")
break
else:
print("Opção inválida!")
sistema = SistemaCadastro()
sistema.menu()