Você está na página 1de 19

UNIVERSIDADE ESTÁCIO DE SÁ

CAMPUS MARACANÃ

GESTOR DE ESTOQUE INFOSTORE

Felipe Costa
Iago Touguinho
Lucas Totin
Pedro Igor
Marcos Teixeira

Orientador: Jander Vinicius Pereira

2023
Rio de Janeiro / RJ
Sumário
1. DIAGNÓSTICO E TEORIZAÇÃO.....................................................................................................3
1.1. Identificação das partes interessadas e parceiros.............................................................3
1.2. Problemática e/ou problemas identificados.....................................................................4
1.3. Justificativa.........................................................................................................................5
1.4. Objetivos/resultados/efeitos a serem alcançados (em relação ao problema identificado
e sob a perspectiva dos públicos envolvidos)....................................................................6
1.5. Referencial teórico (subsídio teórico para propositura de ações da extensão)................7
2. PLANEJAMENTO E DESENVOLVIMENTO DO PROJETO.................................................................8
2.1. Plano de trabalho (usando ferramenta acordada com o docente)...................................8
2.2. Descrição da forma de envolvimento do público participante na formulação do projeto,
seu desenvolvimento e avaliação, bem como as estratégias pelo grupo para mobilizá-
los.......................................................................................................................................9
2.3. Grupo de trabalho (descrição da responsabilidade de cada membro)..........................10
2.4. Metas, critérios ou indicadores de avaliação do projeto................................................10
2.5. Recursos previstos...........................................................................................................12
2.6. Detalhamento técnico do projeto...................................................................................12
1. DIAGNÓSTICO E TEORIZAÇÃO

1.1. Identificação das partes interessadas e parceiros

Proprietário - Lucas:

Perfil socioeconômico: Empreendedor e proprietário da loja "InfoStore".


Escolaridade: Pode variar, mas geralmente com experiência no setor de eletrônicos.
Gênero: Qualquer.
Faixa etária: Adulto.
Quantidade estimada de participantes: 1 (Lucas).
Outras informações: Lucas é o principal interessado, pois é o dono da loja e é quem solicita
o desenvolvimento do software.

Equipe de Desenvolvimento de Software:

Perfil socioeconômico: Desenvolvedores de software com experiência em programação e


desenvolvimento de aplicativos.
Escolaridade: Nível técnico ou superior em Ciência da Computação ou áreas relacionadas.
Gênero: Qualquer.
Faixa etária: Adultos.
Quantidade estimada de participantes: 7
Outras informações: A equipe de desenvolvimento é responsável por criar o software de
gestão de estoque conforme as necessidades de Lucas.

Funcionários da InfoStore:

Perfil socioeconômico: Funcionários da loja que serão treinados para usar o software.
Escolaridade: Pode variar, dependendo dos cargos.
Gênero: Qualquer.
Faixa etária: Pode variar, mas geralmente jovens a adultos.
Quantidade estimada de participantes: Dependerá do tamanho da equipe da loja.
Outras informações: Os funcionários usarão o software no dia a dia para gerenciar o
estoque e registrar vendas.

Parceiros de Fornecimento:

Perfil socioeconômico: Fornecedores de produtos eletrônicos.


Escolaridade: Pode variar, mas geralmente com experiência no setor.
Gênero: Qualquer.
Faixa etária: Adultos.
Quantidade estimada de participantes: Pode variar, dependendo dos fornecedores.
Outras informações: Os fornecedores podem ser parceiros importantes para a reposição
de estoque, e a integração com eles pode ser parte do projeto.
1.2. Problemática e/ou problemas identificados

Dificuldades na Gestão de Estoque Manual:

Lucas, o proprietário da "InfoStore", enfrenta dificuldades significativas na gestão do


estoque de produtos eletrônicos de sua loja. Até o momento, a loja tem gerenciado seu
estoque de forma manual, o que se tornou cada vez mais desafiador à medida que o volume
de vendas e a variedade de produtos aumentaram. Lucas e sua equipe têm enfrentado os
seguintes problemas:

• Erros de Contagem: O controle manual do estoque frequentemente resulta em erros de


contagem, levando a desequilíbrios entre o que está registrado como disponível e o que
realmente está em estoque.

• Dificuldade em Prever Reposições: A equipe muitas vezes luta para prever quando e quais
produtos precisam ser repostos. Isso pode resultar em falta de produtos populares ou
excesso de produtos que não têm demanda.

• Perda de Vendas: Devido à falta de informações precisas sobre o estoque, a loja perde
vendas quando os produtos não estão disponíveis ou quando os clientes não podem obter
informações sobre a disponibilidade de produtos.

• Ineficiência no Atendimento ao Cliente: A equipe da loja gasta muito tempo procurando


por produtos no estoque ou verificando manualmente a disponibilidade de produtos. Isso
afeta negativamente o atendimento ao cliente.

• Dificuldade em Gerar Relatórios: A geração de relatórios sobre o estoque atual e as


necessidades de reposição é um processo demorado e propenso a erros devido à gestão
manual.

A demanda sociocomunitária para a solução desse problema foi identificada por meio de
conversas e interações com Lucas, a equipe da loja e os clientes da InfoStore. Ficou claro que
a automação da gestão de estoque por meio de um software dedicado é uma necessidade
urgente para melhorar a eficiência operacional da loja, proporcionando uma experiência de
compra mais satisfatória para os clientes.

Portanto, a escolha de desenvolver um software de gestão de estoque se baseia na


necessidade real de resolver problemas operacionais da InfoStore e atender às expectativas
dos clientes. Isso não apenas beneficiará o proprietário da loja, mas também a comunidade
local que depende da loja para adquirir produtos eletrônicos de qualidade.
1.3. Justificativa

A resolução da problemática identificada por meio do desenvolvimento do software de


gestão de estoque é altamente pertinente academicamente, uma vez que promove a
aplicação prática de conhecimentos, o desenvolvimento de competências técnicas e a
compreensão de necessidades do cliente. Além disso, a motivação do grupo de trabalho
está ligada à oportunidade de aprendizado significativo e à aquisição de experiência
profissional valiosa para suas futuras carreiras.

Pertinência Acadêmica:

• Aplicação de Conhecimentos: A aprendizagem baseada em projetos envolve a aplicação


prática de conhecimentos teóricos e habilidades adquiridas em sala de aula. O
desenvolvimento de um software de gestão de estoque para a "InfoStore" permite que os
estudantes apliquem conceitos de programação, gerenciamento de banco de dados, design
de interface de usuário, e outros, em um contexto do mundo real.

• Resolução de Problemas Complexos: A resolução da problemática identificada requer a


análise e a solução de problemas complexos relacionados à gestão de estoque, que são
habilidades valiosas para estudantes em áreas como Ciência da Computação, Engenharia de
Software e Gestão de Negócios.

• Integração de Disciplinas: O projeto pode envolver uma integração de várias disciplinas,


como programação, gerenciamento de projetos, design de software e princípios de
negócios. Isso promove uma compreensão holística das complexidades envolvidas no
desenvolvimento de software.

- Relação com o Curso (Objetivos de Formação/Aprendizagens):


• Desenvolvimento de Competências Técnicas: O projeto oferece a oportunidade de
desenvolver e aprimorar competências técnicas essenciais, como programação,
desenvolvimento de bancos de dados e design de interface de usuário, que são
fundamentais em cursos relacionados à tecnologia da informação.

• Experiência Prática: Os estudantes ganharão experiência prática no desenvolvimento de


software real, o que é altamente valioso para sua futura carreira profissional.
• Gestão de Projetos: O projeto envolve a gestão de um projeto completo, desde a
identificação da necessidade até a entrega final. Isso ajuda os estudantes a aprenderem
sobre gestão de projetos, planejamento, controle e colaboração em equipe.

• Compreensão de Necessidades do Cliente: A necessidade de atender às demandas e


expectativas do cliente (Lucas, no caso) é um aspecto crítico do projeto. Os estudantes
aprenderão a identificar e satisfazer as necessidades do cliente, uma habilidade valiosa em
qualquer campo.

• Motivações do Grupo de Trabalho: Aprendizado Significativo: A oportunidade de trabalhar


em um projeto que aborda uma necessidade real e tangível é altamente motivadora para os
estudantes. Eles podem ver diretamente como suas habilidades e esforços contribuem para
resolver um problema real.

• Experiência Profissional: A participação em um projeto como este proporciona aos


estudantes uma experiência prática que pode ser destacada em seus currículos, tornando-os
mais competitivos no mercado de trabalho.

• Satisfação em Contribuir: O projeto oferece a oportunidade de fazer uma contribuição


significativa para a comunidade local, melhorando a eficiência das operações da loja
InfoStore e a experiência de compra dos clientes.

1.4. Objetivos/resultados/efeitos a serem alcançados (em relação ao


problema identificado e sob a perspectiva dos públicos envolvidos)

Desenvolver um Software Funcional de Gestão de Estoque:

• Desenvolver um software completo e funcional que permita o cadastro de produtos,


consulta de estoque, registro de vendas, reposição de estoque e geração de relatórios.

• Avaliação: Os públicos envolvidos poderão participar de testes de usabilidade e


funcionalidade do software, fornecendo feedback para garantir que atenda às necessidades.

- Melhorar a Eficiência Operacional da Loja:

• Implementar o software na operação diária da loja InfoStore com sucesso, melhorando a


gestão de estoque, reduzindo erros e aumentando a eficiência no atendimento ao cliente.

• Avaliação: A equipe da loja poderá avaliar a eficácia do software em termos de redução de


erros, economia de tempo e melhoria no atendimento ao cliente.

Capacitar a Equipe da Loja no Uso do Software:

• Fornecer treinamento adequado à equipe da loja InfoStore para garantir que eles possam
usar o software eficazmente em suas operações diárias.
• Avaliação: A equipe da loja pode ser avaliada por sua capacidade de utilizar o software e
integrá-lo com sucesso nas operações diárias.

Os resultados concretos a serem alcançados incluem o desenvolvimento de um software


funcional, a melhoria da eficiência operacional da loja e a capacitação da equipe no uso do
software. Para avaliar o sucesso do projeto, podem ser utilizados instrumentos como testes
de usabilidade, feedback da equipe e métricas operacionais, como a redução de erros no
controle de estoque e o aumento na satisfação do cliente.

1.5. Referencial teórico (subsídio teórico para propositura de ações


da extensão)

O projeto de extensão para o desenvolvimento do software de gestão de estoque se baseia


em conceitos e princípios teóricos que abordam a gestão de estoque, automação de
processos e eficiência operacional. Abaixo, são apresentados três autores cujas teorias são
relevantes para embasar as ações do projeto:

• Philip Kotler: É um renomado autor na área de marketing e gestão de negócios. Suas


teorias sobre a importância da satisfação do cliente e a entrega de valor são cruciais para o
projeto, uma vez que o software de gestão de estoque visa melhorar a experiência do
cliente ao garantir que os produtos estejam disponíveis quando necessário.

• Peter Drucker: É amplamente conhecido como o pai da administração moderna. Suas


ideias sobre eficiência operacional, gestão de processos e tomada de decisões embasam a
necessidade de automação da gestão de estoque da InfoStore para melhorar a eficiência e a
tomada de decisões informadas.

• Michael Porter: É conhecido por suas contribuições para a estratégia empresarial. Suas
teorias sobre cadeia de valor e diferenciação são relevantes para o projeto, pois a gestão
eficaz de estoque é fundamental para a competitividade e a criação de valor em uma
organização.

Esses autores oferecem perspectivas teóricas valiosas que sustentam a importância de


abordar a problemática da gestão de estoque da InfoStore por meio da automação e do
desenvolvimento do software. Suas teorias enfatizam a necessidade de atender às
expectativas do cliente, melhorar a eficiência operacional e criar vantagem competitiva -
objetivos fundamentais do projeto de extensão.
2. PLANEJAMENTO E DESENVOLVIMENTO DO PROJETO

2.1. Plano de trabalho (usando ferramenta acordada com o docente)

1. Design da Aplicação (30/09):

Responsável: Rafael com suporte de Iago, Pedro e Lucas.

Atividades:

• Projetar a arquitetura do sistema.


• Escolher o framework Java para o desenvolvimento.
• Criar um esboço da interface do usuário.

Prazo: Entrega até o final do mês de

setembro. 2. Implementação (15/10):

Responsáveis: Ricardo com suporte de Marcos e Felipe

Atividades:

• Desenvolver o sistema de acordo com a arquitetura definida.


• Implementar o cadastro de produtos, consulta de estoque e registro de vendas.
• Integrar o sistema com o banco de dados

PostgreSQL. Prazo: Entrega até o meio de outubro.

3. Alerta de Reposição e Relatórios (30/10):

Responsável: Ricardo e Rafael.

Aividades:

• Implementar a funcionalidade de alerta de reposição de estoque.


• Desenvolver a geração de relatórios

simples. Prazo: Entrega até o final de

outubro.

4. Testes (Semana 10/11):

Responsável: Equipe de Testes (Iago, Pedro, Lucas, Marcos e Felipe)

Atividades:
• Realizar testes de unidade e integração.
• Conduzir testes de aceitação com Lucas e a equipe da

"InfoStore". Prazo: Entrega até dia 10 de novembro.

4.1. Descrição da forma de envolvimento do público participante na


formulação do projeto, seu desenvolvimento e avaliação, bem como as
estratégias pelo grupo para mobilizá-los.

Planejamento:

• Reuniões de Escuta: O grupo de trabalho realizou reuniões com Lucas e sua equipe para
entender em detalhes os desafios enfrentados na gestão de estoque. Eles fizeram perguntas
abertas para identificar problemas, necessidades e expectativas.
• Brainstorming Colaborativo: Durante as reuniões, foram realizadas sessões de
brainstorming colaborativo para gerar ideias sobre como o software poderia abordar os
desafios identificados. As sugestões da equipe da loja foram valorizadas e consideradas na
fase de planejamento.
Desenvolvimento:
• Colaboração na Definição de Requisitos: Lucas e sua equipe desempenharam um papel
ativo na definição dos requisitos do software. Eles identificaram os campos de cadastro
necessários, os limiares mínimos de estoque e outras especificações importantes.
• Testes Piloto: Durante o desenvolvimento, Lucas e sua equipe participaram de testes
piloto do software. Isso permitiu que eles dessem feedback em tempo real sobre a
usabilidade e a funcionalidade do software.
Avaliação:
• Avaliação Continua: A equipe da loja participou da avaliação continua do software à
medida que ele era desenvolvido. Eles forneceram feedback regularmente e sugeriram
melhorias.
• Treinamento da Equipe: Para a avaliação do projeto, foi fundamental capacitar a equipe
da loja no uso do software. O grupo de trabalho conduziu sessões de treinamento para
garantir que a equipe estivesse confortável com a nova ferramenta.
- Estratégias de Mobilização:

• Comunicação Aberta: O grupo de trabalho estabeleceu canais de comunicação abertos,


como e-mails e reuniões regulares, para garantir que Lucas e sua equipe pudessem entrar
em contato a qualquer momento para fornecer feedback ou fazer perguntas.
• Feedback Valorizado: A equipe do projeto demonstrou que o feedback da equipe da loja
era valorizado e essencial para o sucesso do projeto. Isso incentivou a participação ativa da
equipe da loja em todas as fases do projeto.
• Sessões de Treinamento Interativas: Para o treinamento da equipe da loja, foram
conduzidas sessões interativas que permitiam a prática real com o software. Isso ajudou a
equipe a se sentir mais confiante e envolvida no processo.
Em resumo, o envolvimento do público participante, especialmente a equipe da loja
InfoStore, foi integral ao longo de todas as fases do projeto, desde o planejamento até a
avaliação. A colaboração próxima e a valorização do feedback foram estratégias-chave para
garantir que o software atendesse às necessidades reais da loja e da comunidade.

4.2. Grupo de trabalho (descrição da responsabilidade de cada membro)

Funções do Software:

Responsabilidade do Rafael:

• Cadastro de Produtos: O sistemas deve permitir o cadastro de produtos contendo


informações como nome, descrição, preço unitário e quantidade de estoque (
Podendo ser adicionando outros campos como Preço de Compra por exemplo).

Responsabilidade do Ricardo:

• Consulta de Estoque: Deve ser possível consultar o estoque atual de um


produto específico.

Responsabilidade do Iago:

• Registro de Vendas: Quando um produto é vendido, o sistema deve


atualizar automaticamente a quantidade em estoque.

Responsabilidade do Felipe e Lucas:

• Reposição de Estoque: O sistema deve alertar quando a quantidade em estoque de


um produto estiver baixo de um limite mínimo e sugerir a reposição de estoque.

Responsabilidade do Pedro e do Marcos:

• Relatórios Simples: Deve ser possível gerar relatórios simples, como a lista de todos
os produtos em estoque e a lista de produtos que precisam ser repostos.

4.3. Metas, critérios ou indicadores de avaliação do projeto

- Metas do Projeto:

Desenvolver um software de gestão de estoque funcional e eficiente para a InfoStore.


Melhorar o controle de estoque da loja, reduzindo a ocorrência de falta de produtos em
estoque.

Facilitar o acompanhamento de vendas e reposições de estoque para o proprietário,


Lucas. Garantir que o software seja de fácil utilização para a equipe da InfoStore.
Critérios de Avaliação:

• Funcionalidade: O software deve ser capaz de realizar todas as funções especificadas,


incluindo o cadastro de produtos, consulta de estoque, registro de vendas, reposição de
estoque e geração de relatórios.

• Eficiência: O software deve ser eficiente em termos de desempenho, garantindo tempos


de resposta rápidos, mesmo com um grande volume de dados.

• Usabilidade: A interface do usuário deve ser amigável e intuitiva, facilitando o uso por
parte da equipe da "InfoStore" sem a necessidade de treinamento extensivo.

• Precisão: O sistema deve manter um controle preciso do estoque, garantindo que as


quantidades em estoque correspondam à realidade da loja.

• Confiabilidade: O software deve ser estável e confiável, evitando erros críticos que possam
afetar as operações da loja.

- Indicadores de Avaliação:

• Taxa de Atendimento de Requisitos: Medir a porcentagem de requisitos do sistema que


foram implementados com sucesso. O objetivo é atingir 100%.

• Tempo Médio de Resposta: Avaliar o tempo médio necessário para executar operações no
sistema, como consultas de estoque e geração de relatórios. O objetivo é manter o tempo
de resposta abaixo de X segundos.

• Avaliação de Usuário: Coletar feedback dos usuários (equipe da InfoStore) por meio de
pesquisas ou avaliações regulares. O objetivo é manter uma pontuação de satisfação média
de pelo menos 4 em 5.

• Precisão do Estoque: Comparar as quantidades em estoque registradas pelo sistema com


as quantidades reais verificadas fisicamente na loja. O objetivo é manter uma precisão de
estoque de pelo menos 95%.
• Estabilidade do Sistema: Registrar o número de incidentes críticos que afetam a
disponibilidade do sistema. O objetivo é manter uma taxa de incidentes abaixo de 4 por
mês.

4.4. Recursos previstos

Recursos Materiais:

Computadores e Equipamentos de Desenvolvimento: Os membros da equipe de


desenvolvimento utilizarão seus próprios computadores pessoais e equipamentos de
desenvolvimento, minimizando os custos adicionais de aquisição de hardware.

Software e Ferramentas de Desenvolvimento:

O projeto utilizará ferramentas de desenvolvimento de código aberto ou gratuitas sempre


que possível, como o ambiente de desenvolvimento integrado (IDE) Eclipse ou IntelliJ IDEA.
Além disso, será utilizado o PostgreSQL como sistema de gerenciamento de banco de dados,
que também é uma opção gratuita.

Recursos Institucionais:

Espaço de Trabalho: Os membros da equipe podem utilizar salas de aula ou laboratórios de


informática da Estácio durante o desenvolvimento do projeto.

Equipe de Desenvolvimento:

A equipe de desenvolvimento será composta pelos programadores Rafael, Ricardo, Iago,


Pedro, Lucas, Marcos e Felipe. Esses são recursos humanos fundamentais para a
implementação do projeto.

4.5. Detalhamento técnico do projeto

Etapa 1 - Análise de Requisitos:

Durante esta etapa, a equipe de desenvolvimento trabalhou em estreita colaboração com o


proprietário da loja, Lucas, para entender os requisitos detalhados do sistema.

Etapa 2 - Design da Aplicação:

Com base nos requisitos coletados, a equipe projetou a arquitetura da aplicação.


Optou-se por utilizar a linguagem de programação Java e o framework Spring Boot para
desenvolver a aplicação web.
O sistema foi projetado para ser modular, com componentes para o cadastro de produtos,
consulta de estoque, registro de vendas, alerta de reposição de estoque e geração de
relatórios.

A interface do usuário foi projetada de forma amigável e intuitiva, com formulários de fácil
preenchimento e navegação simplificada.

Etapa 3 - Desenvolvimento:

Durante a fase de desenvolvimento, a equipe de desenvolvimento criou o software de


gestão de estoque usando a linguagem Java e o framework Spring Boot.
O banco de dados PostgreSQL foi utilizado para armazenar informações sobre produtos,
vendas e estoque.

Foram implementadas as seguintes funcionalidades:

• Cadastro de produtos com informações como nome, descrição, preço unitário e


quantidade de estoque.
• Consulta de estoque para verificar a quantidade disponível de um produto específico.
• Registro de vendas para atualizar automaticamente o estoque quando um produto é
vendido.
• Alerta de reposição de estoque que sugere a reposição quando a quantidade em estoque
é baixa.
• Geração de relatórios simples, incluindo uma lista de todos os produtos em estoque e uma
lista de produtos que precisam ser repostos.

Etapa 4 - Testes:

A equipe de testes realizou testes de unidade e testes de integração para garantir que todas
as partes do sistema funcionassem conforme o esperado.

Foram conduzidos testes de aceitação com Lucas e a equipe da loja para verificar se os
requisitos foram atendidos.
3.1. Relatório Coletivo:

Foi um trabalho desafiador, visto que a maioria de nós ainda não temos muito
conhecimento de programação, e Java possui a reputação de ser uma linguagem bem
complexa, mas a melhor forma de aprender, é praticando. Esse projeto nos ensinou muito,
principalmente a entender a lógica de programação e como funciona, basicamente, a
programação em Java.
Com muitas tentativas e erros chegamos em um resultado, pesquisamos muito na internet,
em sites como ‘DevMedia’, videos do Youtube, e um integrante do nosso grupo chegou a
assinar um plano do curso ‘Alura’ para entender melhor a programação em Java,
compartilhando os vídeos e materiais do curso conosco, através de videochamadas. 90% do
nosso trabalho foi desenvolvido através dessas videochamadas, onde chegamos em
conclusões juntos, e aprendemos da mesma maneira. Utilizamos do aplicativo de
computador ‘Discord’, criamos um servidor especificamente para desenvolver esse projeto,
e os outros 10% foi em sala de aula, com o direcionamento fundamental do professor
Jander Pereira, que nos motivou e fez acreditarmos que era sim possível entregar esse
projeto.

3.2 relatorio individual:


Código do trabalho:

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

class Produto {
private String nome;
private int quantidade;
private double valorPorUnidade;

public Produto(String nome, int quantidade, double valorPorUnidade) {


this.nome = nome;
this.quantidade = quantidade;
this.valorPorUnidade = valorPorUnidade;
}

public String getNome() {


return nome;
}

public int getQuantidade() {


return quantidade;
}

public double calcularValor() {


return quantidade * valorPorUnidade;
}
public double getValorPorUnidade() {
return valorPorUnidade;
}

public void adicionarQuantidade(int quantidade) {


this.quantidade += quantidade;
}

public void removerQuantidade(int quantidade) {


if (quantidade <= this.quantidade) {
this.quantidade -= quantidade;
} else {
System.out.println("Quantidade insuficiente em estoque para remover.");
}
}
}
class Estoque {
private Map<String, Produto> produtos;

public Estoque() {
produtos = new HashMap<>();
carregarEstoque(); // Carrega o estoque do arquivo quando o programa inicia
}

public void adicionarProduto(String nome, int quantidade, double valorPorUnidade) {


if (produtos.containsKey(nome)) {
Produto produto = produtos.get(nome);
produto.adicionarQuantidade(quantidade);
} else {
Produto novoProduto = new Produto(nome, quantidade, valorPorUnidade);
produtos.put(nome, novoProduto);
}
salvarEstoque(); // Salva o estoque no arquivo após adicionar um produto
}
public void removerProduto(String nome, int quantidade) {
if (produtos.containsKey(nome)) {
Produto produto = produtos.get(nome);
produto.removerQuantidade(quantidade);
if (produto.getQuantidade() == 0) {
produtos.remove(nome); // Remove o produto se a quantidade for zero
}
System.out.println(quantidade + " unidades de " + nome + " removidas do estoque.");
salvarEstoque(); // Salva o estoque atualizado no arquivo
} else {
System.out.println(nome + " não encontrado no estoque.");
}
}

public void mostrarEstoque() {


System.out.println("Produtos em Estoque:");
for (Produto produto : produtos.values()) {
double valorTotal = produto.calcularValor();
System.out.println(produto.getNome() + ": " + produto.getQuantidade() + " unidades,
Valor total: R$" + valorTotal);
}
}

private void carregarEstoque() {


try (BufferedReader reader = new BufferedReader(new FileReader("estoque.txt"))) {
String linha;
while ((linha = reader.readLine()) != null) {
String[] partes = linha.split(": ");
if (partes.length == 3) {
String nome = partes[0];
int quantidade = Integer.parseInt(partes[1]);
double valorPorUnidade = Double.parseDouble(partes[2]);
produtos.put(nome, new Produto(nome, quantidade, valorPorUnidade));
} else {
System.out.println("Formato de linha inválido no arquivo de estoque: " + linha);
}
}
} catch (IOException e) {
// Lidar com erros de leitura do arquivo (pode ser a primeira execução)
}
}

private void salvarEstoque() {


try (PrintWriter writer = new PrintWriter(new FileWriter("estoque.txt"))) {
for (Produto produto : produtos.values()) {
writer.println(produto.getNome() + ": " + produto.getQuantidade() + ": " +
produto.getValorPorUnidade());
}
} catch (IOException e) {
// Lidar com erros de gravação no arquivo
}
}
}

public class Main {


public static void main(String[] args) {
Estoque estoque = new Estoque();
Scanner scanner = new Scanner(System.in);

while (true) {
System.out.println("1 - Adicionar Produto ao Estoque");
System.out.println("2 - Remover produto do Estoque");
System.out.println("3 - Mostrar Estoque");
System.out.println("0 - Sair");
System.out.print("Escolha uma opção: ");

if (scanner.hasNextInt()) {
int opcao = scanner.nextInt();

switch (opcao) {
case 1:
System.out.print("Nome do Produto: ");
String nome = scanner.next();
nome += scanner.nextLine();
System.out.print("Quantidade a Adicionar: ");
if (scanner.hasNextInt()) {
int quantidade = scanner.nextInt();
System.out.print("Valor por Unidade : ");
if (scanner.hasNextDouble()) {
double valorPorUnidade = scanner.nextDouble();
estoque.adicionarProduto(nome, quantidade, valorPorUnidade);
} else {
System.out.println("Valor por unidade inválido. Tente novamente.");
scanner.nextLine(); // Consumir entrada inválida
}
} else {
System.out.println("Quantidade inválida. Tente novamente.");
scanner.nextLine();
}
break;
case 2:
scanner.nextLine(); // Consumir a quebra de linha pendente
System.out.print("Nome do Produto a Remover: ");
String nomeRemover = scanner.nextLine();
System.out.print("Quantidade a Remover: ");
int quantidadeRemover = scanner.nextInt();
estoque.removerProduto(nomeRemover, quantidadeRemover);
break;
case 3:
estoque.mostrarEstoque();
break;
case 0:
System.out.println("Saindo do Sistema de Reposição de Estoque. Até logo!");
scanner.close();
System.exit(0);
default:
System.out.println("Opção inválida. Tente novamente.");
}
} else {
System.out.println("Opção inválida. Tente novamente.");
scanner.nextLine(); // Consumir entrada inválida
}
}
}
}

Você também pode gostar