Código
<syntaxhighlight lang="python3">
Controle = "controle_de_estoque.txt"
Consumo = "consumo_reagente.txt"
Reposição = "reposição_reagente.txt"
def escrever_linhas (texto):
try:
arq = open(Controle, "a+")
arq.writelines('\n'+texto)
arq.close()
except IOError:
print("\nErro ao abrir o arquivo!")
def pesquisa(texto):
try:
arq = open(Controle, "r")
controle = {}
for i in arq.readlines():
t = eval(i)
if t['reagente'] == texto:
controle = t
return controle
arq.close()
except:
pass
while(True):
print("\n Bem vindo ao Controle de Estoque, escolha uma das opções apresentadas abaixo:")
print(80*"=")
print("1: Cadastrar um novo reagente")
print("2: Alterar dados de um reagente já cadastrado")
print("3: Listar todos os reagentes cadastrados")
print("4: Deletar reagente cadastrado")
print("5: Atualizar volume de reagente já cadastrado")
print("6: Listar o consumo dos reagentes")
print("7: Repor reagente consumido")
print("8: Listar reposições")
print("9: Sair do programa")
print(80*"=")
op_escolhida = int(input("Digite o número referente a opção escolhida, por favor:"))
if op_escolhida == 1:
controle_estoque = {}
a = int(input("Digite o número de reagentes líquidos a serem cadastrados: "))
for i in range(a):
reagente = input("Digite o nome do reagente líquido: ")
if pesquisa(reagente):
print('Reagente já cadastrado, tente novamente!')
else:
volume_total = float(input("Digite o volume total do reagente líquido(mL): "))
volume_limite = float(input("Digite o valor limite para o reagente líquido(mL): "))
while(True):
if (volume_limite >= volume_total):
print("Valor limite inválido, tente novamente!")
volume_limite = float(input("Digite o valor limite para o reagente líquido(mL): "))
else:
break
controle_estoque["reagente"] = reagente
controle_estoque["volume_total"] = volume_total
controle_estoque["volume_limite"] = volume_limite
escrever_linhas(str(controle_estoque))
print("\nReagente cadastrado com sucesso!")
elif op_escolhida == 2:
alterar = input("Digite o nome do reagente a ser alterado: ")
# Buscar nome digitado no arquivo Controle
if True:
for i in controle_estoque():
controle = input().split(" ")
controle_estoque["reagente"], controle_estoque["volume_total"], controle_estoque["volume_limite"] = controle
if controle_estoque["reagente"] == alterar:
novo_reagente = input("Digite um novo nome para o reagente: ")
controle_estoque["reagente"] = novo_reagente
print("Deseja mudar o volume total e limite desde reagente? ")
resposta = input("Digite S para sim e N para não: ")
if resposta == "S":
novo_total = float(input("Digite o novo volume total: "))
novo_limite = float(input("Digite o novo valor limite: "))
controle_estoque["volume_total"] = novo_total
controle_estoque["volume_limite"] = novo_limite
print("Alterações no nome e nos volumes do reagente feitas com sucesso!")
elif resposta != "N":
print("Caractere inválido tente novamente")
else:
pass
else:
escrever_linhas(str(controle_estoque))
print("\nAlteração feita com sucesso!")
if False:
print("O reagente ainda não foi cadastrado!")
elif op_escolhida == 3:
print("Todos os reagentes já cadastrados no programa: ")
def ler_arquivo ():
try:
arq = open(Controle, "r+")
for i in arq.readlines():
print(Controle)
arq.close()
except IOError:
print("\nArquivo não encontrado!")
ler_arquivo()
elif op_escolhida == 4:
deletar = input("Digite o nome do reagente a ser deletado: ")
####Pesquisar no arquivo de Controle pelo nome digitado, if True apagar, if False print("\nReagente não encontrado!)
while(True):
if deletar == reagente:
del controle_estoque["reagente"]
print("\nO reagente foi deletado com sucesso!")
else:
print("Reagente não encontrado, tente novamente!")
break
elif op_escolhida == 5:
def escrever_linhas (texto):
try:
arq1 = open(Consumo, "a+")
arq1.writelines('\n'+texto)
arq1.close()
except IOError:
print("\nErro ao abrir o arquivo!")
def pesquisa(texto):
try:
arq1 = open(Consumo, "r")
consumo = {}
for i in arq.readlines():
t = eval(i)
if t['reagente'] == texto:
controle = t
return controle
arq1.close()
except IOError:
print("\nErro ao abrir o arquivo!")
consumo = {}
atualizar = input("Digite o nome do reagente a ser atualizado: ")
###Mecanismo de busca para ver se existe o nome do reagente atualizado se sim recuperar o nome e os volumes cadastrados para o mesmo
if True:
volume_gasto = float(input("Digite o volume gasto para o reagente: "))
volume_total = volume_total - volume_gasto
if volume_total <= volume_limite:
print("Limite atingido, por favor realize reposição!")
else:
pass
print("\nVolume atualizado com sucesso!")
consumo["consumo"] = volume_gasto
###No arquivo consumo só salva o volume gasto cadastrado para o reagente pesquisado
escrever_linhas(str(consumo))
###Atualiza o volume_total antes cadastrados para o reagente pesquisado
escrever_linhas(str(controle_estoque))
if False:
print("Reagente não encontrado, tente novamente!")
elif op_escolhida == 6:
print("Todos os consumos já registrados no programa: ")
def ler_arquivo ():
try:
arq1 = open(Consumo, "r+")
for i in arq.readlines():
print(consumo)
arq1.close()
except IOError:
print("\nNenhum consumo registrado!")
elif op_escolhida == 7:
def escrever_linhas (texto):
try:
arq2 = open(Reposição, "a+")
arq2.writelines('\n'+texto)
arq2.close()
except IOError:
print("\nErro ao abrir o arquivo!")
def pesquisa(texto):
try:
arq2 = open(Reposição, "r+")
reposição = {}
for i in arq.readlines():
t = eval(i)
if t['reagente'] == texto:
controle = t
return controle
arq2.close()
except IOError:
print("\nErro ao abrir o arquivo!")
resposição={ }
repor = input("Digite o nome do reagente a ser reposto: ")
###Pesquisar no arquivo Controle o nome e o volume totoal do reagente digitado, caso seja encontrado:
novo_volume = float(input("Digite o volume a ser reposto: "))
volume_total = novo_volume
###Automaticamente o volume_total para o reagente em reposição deve ser atualizado no arquivo Controle e o novo_volume salvo no arquivo Reposição
print("\nReagente reposto com sucesso!")
reposição["reposição"] = novo_volume
escrever_linhas(str(reposição))
if False:
print("\nReangente não encontrado, tente novamente!")
elif op_escolhida == 8:
print("Todas reposição já registradas no programa: ")
def ler_arquivo ():
try:
arq2 = open(Reposição, "r+")
for i in arq.readlines():
print(reposição)
arq.close()
except IOError:
print("\nNenhuma reposição ainda foi realizada!")
arq2.close()
elif op_escolhida == 0:
pesquisa(input())
elif op_escolhida == 9:
break
</syntaxhighlight>
Escopo
- Objetivo da aplicação
- O presente projeto visa desenvolver um programa o qual tem como principal objetivo realizar o controle de estoque dos reagentes líquidos presentes em um laboratório biológico, de modo assim a esboçar a necessidade ou não de reposição de tais reagentes de acordo com sua utilização. No primeiro momento de implementação deste sistema, seria necessário realizar o cadastramento dos reagentes no programa, para isto o utilizador digitaria o nome e o volume total descritos pelo rótulo do reagente em questão. Posteriormente a este cadastro, o programa irá solicitar ao seu utilizador que digite um volume crítico para o reagente, pois será por meio deste valor que futuramente o sistema lançará uma nota de aviso solicitando a reposição do mesmo. É importante ressaltar que este processo será repetido até que todos os reagentes do laboratório sejam cadastros.
- Em um segundo momento, o programa já estará disponível para aplicação, de modo que a cada utilização de um determinado reagente, os utilizadores devem acessar o programa, buscar pelo nome do reagente que foi utilizado e acrescentar o volume gasto, é importante que nesta etapa não haja omissões para garantir assim o bom funcionamento do sistema. Automaticamente, o programa irá descontar do volume total cadastrado está fração que foi utilizada, de modo que quando atingir-se o volume estabelecido como crítico para aquele reagente o sistema lançará ao utilizador a seguinte mensagem “O reagente X atingiu o seu valor limite, por favor realize a sua reposição e atualize o cadastro do mesmo”, onde X refere-se ao nome que foi descrito na etapa de cadastramento. Sendo assim, o utilizador deverá repor o reagente em questão e novamente atualizar o cadastro do mesmo, contudo nesta etapa não sendo necessário adicionar novamente o nome do reagente e sim apenas o novo volume total.
Entradas
- O que o sistemas receberá de dados?
- Nome dos reagentes líquidos
- Volume total dos reagentes líquidos
- Volume crítico de cada um dos reagentes líquidos
- Volume gasto para um determinado reagente líquido após sua utilização.
Saídas
- O que será gerado de resultado impresso?
• Mensagem de cadastramento realizado com sucesso
• Mensagem de atualização do volume do reagente líquido feita com sucesso
• Mensagem de alerta para reposição do reagente líquido.
Armazenamento
- O que será gravado em arquivo?
• Nome dos reagentes líquidos
• Volume total dos reagentes líquidos
• Volume crítico de cada um dos reagentes líquidos
• Volume gasto para um determinado reagente líquido após sua utilização
Cálculos
- O que será processado?
• Subtração entre o volume total cadastrado para um dado reagente líquido e o primeiro volume gasto para o mesmo
• Subtração entre o volume anteriormente gasto para um dado reagente líquido e o novo volume gasto para este mesmo reagente
Fase II
- O que vocês fariam se fossem continuar evoluindo nesta aplicação?
1. Uma futura possibilidade para o projeto seria o desenvolvimento de duas plataformas distintas, na qual uma seria direcionada ao diretor do laboratório onde o programa está sendo aplicado ou a um outro operador responsável por administrar o programa, e uma segunda plataforma voltada para os usuários propriamente ditos do laboratório. De tal forma, para a utilização do programa pelos possíveis operadores do laboratório, seria necessário a criação de um usuário e senha para cada um destes operadores. A aprovação desde cadastro por sua vez, caberia a aquele que encontra-se responsável pela plataforma de administração. Por meio disto, haveria uma maior restrição sobre aqueles que podem ter acesso ao cadastramento e controle dos reagentes do laboratório;
2. Uma outra possibilidade envolveria a aplicação de sensores no projeto. Por meio da utilização dos mesmos, o programa tornar-se-ia mais automatizado, uma vez que não seria mais necessário entrar com os dados de consumo e nem de reposição, ou seja, seria necessário apenas o cadastramento dos reagentes no programa, o restante seria tudo feito automaticamente pelo próprios sensores implementados.
Desenvolvedores
- Filipe Cruz Naves,
- Géssyca Ferreira Gomes,
- Jéssica Pereira de Oliveira e
- Luiz Felipe Dias dos Santos Costa