Controle de Estoque

Revisão de 16h54min de 27 de junho de 2016 por JessOliveira (discussão | contribs) (Fase II)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

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