Prévia do material em texto
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
LUCAS SILVA DANTAS
PROJETO INTEGRADO
RA: 3892016401
Campina Grande
2024
2
SUMÁRIO
1. INTRODUÇÃO ....................................................................................................... 3
2. MÉTODOS E RESULTADOS ................................................................................ 4
2.1 PASSO 1 – QUADRO KANBAN ........................................................................... 4
2.2 PASSO 2 – TABELA VERDADE .......................................................................... 5
2.3 PASSO 3 – CÓDIGO ........................................................................................... 6
2.4 PASSO 4 – DIAGRAMA DE CASO DE USO ..................................................... 11
3. CONCLUSÃO ...................................................................................................... 12
3
1. INTRODUÇÃO
A gestão de estoque é um ponto crucial dentro de qualquer empresa, pois,
fisicamente, é muito difícil realizar esse controle de produtos (disponibilidade,
quantidade, localização, etc), por esse motivo, o Sistema de Gerenciamento de
Estoque é essencial para manter a organização dentro da empresa, para isso, o
Sistema deve ter alguns requisitos:
Cadastro de Produtos: O sistema deve permitir o cadastro de novos
produtos, incluindo informações detalhadas como nome, categoria, quantidade em
estoque, preço e localização no depósito.
Atualização de Estoque: O sistema deve permitir a atualização precisa da
quantidade de produtos em estoque. A atualização em tempo real é crucial para
manter o controle exato do inventário.
Rastreamento de Localização: O sistema deve possibilitar o rastreamento
da localização dos produtos dentro dos depósitos.
Relatórios: O sistema deve gerar relatórios detalhados sobre o estado do
estoque. Relatórios informativos são essenciais para a tomada de decisões
estratégicas.
Para ajuda no desenvolvimento desse Sistema, também foi realizada a
criação de uma Tabela Verdade, que ajudará a observar as combinações de valores
(True e False) para as variáveis booleanas da situação problema e a criação de um
Diagrama de Caso de Uso para representar visualmente a interação do usuário com
o sistema e os principais casos de uso.
4
2. MÉTODOS E RESULTADOS
2.1 PASSO 1 – QUADRO KANBAN
Para ajudar a organizar o passo a passo da criação do Sistema, irá ser
utilizada o método Scrum, que é um framework de gerenciamento, utilizado pelas
equipes para auto-organização e trabalho conjunto. Ele é composto por um conjunto
de reuniões, ferramentas e funções, focados em realizar uma entrega eficiente dos
projetos propostos as equipes. Para uma visualização de forma visual desse método,
irá ser utilizado o Trello, que é uma ferramenta de gestão de projetos, permitindo uma
organização de atividades pessoais.
O quadro Kanban ficará dessa forma:
5
2.2 PASSO 2 – TABELA VERDADE
Foi definido as seguintes variáveis booleanas para os requisitos: P (Cadastro
de Produtos) E (Atualização de Estoque) L (Rastreamento de Localização) R
(Relatórios).
A coluna “Solução Completa” somente será verdadeira se todas as variáveis
(P, E, L, R) forem verdadeiras, ou seja, quando todos os requisitos forem atendidos.
Essa situação é representada pela expressão lógica “E” (AND) que é representada
pelo símbolo “Λ”, ficando da seguinte forma: P Λ E Λ L Λ R.
A tabela verdade fica da seguinte forma:
P E L R Solução Completa
F F F F F
F F F T F
F F T F F
F F T T F
F T F F F
F T F T F
F T T F F
T T T T F
T F F F F
T F F T F
T F T F F
T F T T F
T T F F F
T T F T F
T T T F F
T T T T T
Interpretação:
P (Produtos): Verdadeiro (T) se o sistema permite o cadastro de novos
produtos.
E (Estoque): Verdadeiro (T) se o sistema permite a atualização da quantidade
de produtos em estoque.
6
L (Localização): Verdadeiro (T) se o sistema possibilita o rastreamento da
localização dos produtos.
R (Relatórios): Verdadeiro (T) se o sistema gera relatórios sobre o estado do
estoque.
A coluna "Solução Completa" indica se todos os requisitos são atendidos. Será
verdadeira (T) apenas quando P, E, L e R forem todos verdadeiros, isto é, todos os
requisitos do sistema forem implementados e funcionais.
2.3 PASSO 3 – CÓDIGO
O código ele deve conter as funções básicas se o cliente pediu para o seu
Sistema, Cadastro de Produtos, Atualização de Estoque, Rastreamento de
Localização, Relatórios.
Para uma melhor explicação, foi colocado uma # (função para adicionar
comentários aos códigos), além disso, foi criado um design visual ao código através
da biblioteca tkinter, e para salvar as atualizações do código mesmo após o mesmo
fechar, foi utilizada a biblioteca json, o código foi rodado no software VS Code pois
tem suporte a visualizações gráficas.
O código fica da seguinte forma:
import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
import json
import os
# Listas para armazenar dados
produtos = []
categoria = []
movimentacoes = []
arquivo_produtos = "produtos.json"
# Função para salvar os produtos no arquivo JSON
7
def salvar_produtos():
with open(arquivo_produtos, "w") as f:
json.dump(produtos, f)
# Função para carregar os produtos do arquivo JSON
def carregar_produtos():
global produtos
if os.path.exists(arquivo_produtos):
with open(arquivo_produtos, "r") as f:
produtos = json.load(f)
# Função para cadastrar um novo produto
def cadProduto(id_produto, nome, categoria, quantidade, preco, localizacao):
novo_produto = {
'id_produto': id_produto,
'nome': nome,
'categoria': categoria,
'quantidade': quantidade,
'preco': preco,
'localizacao': localizacao
}
produtos.append(novo_produto)
salvar_produtos() # Salvar após cadastrar o produto
messagebox.showinfo("Sucesso", "Produto cadastrado com sucesso")
# Função para pegar dados da interface e chamar cadProduto
def cadastrar():
try:
id_produto = int(entry_id.get())
nome = entry_nome.get()
categoria = entry_categoria.get()
quantidade = int(entry_quantidade.get())
preco = float(entry_preco.get())
8
localizacao = entry_localizacao.get()
cadProduto(id_produto, nome, categoria, quantidade, preco, localizacao)
# Limpar campos após cadastro
entry_id.delete(0, tk.END)
entry_nome.delete(0, tk.END)
entry_categoria.delete(0, tk.END)
entry_quantidade.delete(0, tk.END)
entry_preco.delete(0, tk.END)
entry_localizacao.delete(0, tk.END)
except ValueError:
messagebox.showerror("Erro", "Por favor, insira valores válidos.")
# Função para exibir os produtos cadastrados em uma tabela
def ver_produtos():
# Cria uma nova janela para exibir os produtos
janela_produtos = tk.Toplevel(app)
janela_produtos.title("Produtos Cadastrados")
janela_produtos.geometry("600x400")
# Cria a estrutura Treeview (tabela) para mostrar os produtos
colunas = ("ID", "Nome", "Categoria", "Quantidade", "Preço", "Localização")
tree = ttk.Treeview(janela_produtos, columns=colunas, show="headings")
# Definindo os cabeçalhos das colunas
tree.heading("ID", text="ID")
tree.heading("Nome", text="Nome")
tree.heading("Categoria", text="Categoria")
tree.heading("Quantidade", text="Quantidade")
tree.heading("Preço", text="Preço")
tree.heading("Localização",text="Localização")
9
# Definindo o tamanho das colunas
tree.column("ID", width=50, anchor="center")
tree.column("Nome", width=100, anchor="center")
tree.column("Categoria", width=100, anchor="center")
tree.column("Quantidade", width=80, anchor="center")
tree.column("Preço", width=80, anchor="center")
tree.column("Localização", width=120, anchor="center")
# Inserindo os produtos na Treeview
for produto in produtos:
tree.insert("", "end", values=(produto["id_produto"], produto["nome"],
produto["categoria"], produto["quantidade"], produto["preco"], produto["localizacao"]))
tree.pack(expand=True, fill="both")
# Carregar produtos ao iniciar o programa
carregar_produtos()
# Criando a interface principal
app = tk.Tk()
app.title("Cadastro de Produto")
app.geometry("400x400")
# Labels e entradas de dados
tk.Label(app, text="ID do Produto:").grid(row=0, column=0, padx=10,
pady=10)
entry_id = tk.Entry(app)
entry_id.grid(row=0, column=1, padx=10, pady=10)
tk.Label(app, text="Nome:").grid(row=1, column=0, padx=10, pady=10)
entry_nome = tk.Entry(app)
entry_nome.grid(row=1, column=1, padx=10, pady=10)
10
tk.Label(app, text="Categoria:").grid(row=2, column=0, padx=10, pady=10)
entry_categoria = tk.Entry(app)
entry_categoria.grid(row=2, column=1, padx=10, pady=10)
tk.Label(app, text="Quantidade:").grid(row=3, column=0, padx=10, pady=10)
entry_quantidade = tk.Entry(app)
entry_quantidade.grid(row=3, column=1, padx=10, pady=10)
11
2.4 PASSO 4 – DIAGRAMA DE CASO DE USO
Descrição dos Atores
Estoquista: Responsável por registrar a entrada de produtos e validar a nota
fiscal de entrada.
Usuário: Responsável por emitir relatórios de posição semanal e solicitar a
compra de produtos.
Gerente de Setor: Responsável por autorizar a compra de produtos.
Descrição dos Casos de Uso
Registrar Entrada de Produtos: Estoquista registra a entrada de novos
produtos no sistema.
Validar Nota Fiscal: Estoquista irá validar a nota fiscal dos produtos que
entraram no estoque.
Emitir Relatório de Posição Semanal: Usuário emite relatórios semanais
sobre o estado do estoque.
Solicitar Compra de Produtos: Usuário solicita a compra de novos produtos
para repor o estoque.
12
Autorizar Compra de Produtos: Gerente de Setor autoriza a compra de
produtos solicitada pelo Usuário.
Consolidação de Compras: Processo necessário para consolidar as
solicitações de compra e emitir pedidos ao fornecedor.
Diante disso, o Diagrama do Sistema ficará da seguinte forma:
3. CONCLUSÃO
Finalizando o projeto do Sistema de Gerenciamento de Estoque, concluiu-se
o quão é importante realizar a junção de todo o aprendizado acumulado até esse
momento do curso, o quadro Kanban ajuda a organização do projeto logo em suas
fases preliminares, visto que, com uma visualização das tarefas que serão realizadas,
pode distribuir as tarefas de uma forma mais tranquila para toda a equipe.
A construção da tabela verdade por sua vez, ajuda na construção de
visualizara as possíveis probabilidades do programa, e quais as funcionalidades
13
deverá se implementar nele para que ele cumpra seu objetivo dentro da empresa
contratante. Justamente por isso se viu a importância de se implementar junto ao
código uma interface gráfica para facilitar a usabilidade do programa.
Por fim, o diagrama de caso de uso ajuda ao profissional responsável pelo
projeto a observar como os atores irão se comportar diante do software.
Desta forma, o projeto integrado de análise e desenvolvimento de sistemas
para o gerenciamento de estoque não só atendeu aos requisitos básicos requisitados,
mas também estabeleceu uma base sólida para o futuro crescimento e sucesso da
empresa, no caso fictício. A aplicação prática de conceitos teóricos e metodologias
ágeis demonstrou a eficácia de uma abordagem interdisciplinar e colaborativa na
resolução de problemas complexos. Além disso, deixou a possibilidade de futuras
mudanças que implementem mais funcionalidades, além de melhorar as
funcionalidades já existentes.