Skip to content

beta-final

Pre-release
Pre-release
Compare
Choose a tag to compare
@Alyssonmach Alyssonmach released this 22 Nov 14:47
· 71 commits to main since this release
4785ef7

Controle de Estoque e Vendas (beta-final)

Projeto de controle de estoque e vendas em Farmácia.

Versões do Projeto

Documentação Link para Download
Pré-lançamento - documentação controle-estoque-vendas-0.5
Pré-lançamento - documentação controle-estoque-vendas-0.8.5

Objetivo

Implementar um projeto que faça o controle de estoque e vendas de uma farmácia usando a linguagem de programação C++.

Material Utilizado

  • Todo o projeto foi versionado utilizando o Git, possibilitando rastrear e organizar cada etapa de progresso;
  • O projeto foi desenvolvido utilizando a linguagem de programação C++, como fruto da conclusão da disciplina Técnicas de Programação, na Universidade Federal de Campina Grande, curso de Engenharia Elétrica;
  • O projeto foi desenvolvido utilizando o conhecimento de orientação a objetos, através da criação de classes e classes com herança, seguido do posterior desenvolvimento dos seus métodos. Além disso, foi criando um fluxo de comunicação entre as classes;
  • Utilização de Tratamento de exceções e erros, manipulação de arquivos e alocação dinâmica (possibilitado com a implementação de um Vector);
  • Especificação do Diagrama UML e do diagrama de Casos;

Classes e Métodos Implementados

  • Sobrecarga1 e Sobrecarga2 [Concluído]

As implementações de Sobrecarga1 e Sobrecarga2 são responsáveis por realizar sobrecarga em operadores específicos, de modo que seja possível fazer toda a parte de manipulação com os arquivos nos construtores e destrutores, garantido que as listas de objetos sejam lidas logo no início da execução e sobrescritas ao final da execução. Com essas implementações, é possível realizar a manipulação de arquivos em listas de Vector de forma rápida e prática nas seguintes classes:

  • Classe Produto;

  • Classe ProdutoPerecivel;

  • Classe Remedio;

  • Classe Funcionário;

  • Produto [Concluído]

A classe Produto é responsável por armazenar diversos atributos de um objeto não perecível. Envolve informações sobre preço de aquisição, preço de compra, nome do produto, nome do fabricante, categoria, quantidade em estoque e código de barras do produto. Os métodos são referentes a configuração e impressão dos atributos.

  • ProdutoPerecivel [Concluído]

A classe ProdutoPerecivel é responsável por armazenar diversos atributos de um objeto perecível. Sendo uma classe que tem herança com a classe Produto, ela vai englobar todos os métodos envolvidos nessa classe, com o adicional de uma data de validade. Além disso, foi implementado um método que computa a data atual do produto, de modo que seja possível verificar se tal produto está vencido ou não.

  • Remedio [Concluído]

A classe Remedio é responsável por armazenar diversos atributos de um objeto perecível. Sendo uma classe que tem herança com a classe ProdutoPerecivel, ela vai englobar todos os métodos envolvidos nessa classe, com o adicional de informações de medidas do remédio e informações da finalidade desse remédio.

  • Funcionario [Concluído]

A classe Funcionario é responsável por armazenar diversos atributos dos empregados da farmácia, tais como nome, cpf, cargo, login e senha. Através dela, será possível ter um controle do acesso de funcionários em determinadas áreas da farmácia, podendo ser divididas entre os seguintes cargos:

  • Controle de Vendas;

  • Controle de Estoque;

  • Estoque [Concluído]

A classe Estoque é responsável por fazer todos os gerenciamentos dos produtos disponíveis a venda na farmácia. Armazenando todos os objetos pertencentes a classe Produto, ProdutoPerecivel e Remedio em um Vector, foi implementado os seguintes métodos:

  • Métodos para checar o vencimento de produtos Perecíveis e Remédios;

  • Métodos para ler as listas de Produtos, Produtos Perecíveis e Remédios armazenados em um arquivo;

  • Métodos para salvar as listas de Produtos, Produtos Perecíveis e Remédios armazenados em um .arquivo;

  • Métodos para inserir os Produtos, Produtos Perecíveis e Remédios nas listas de Vector;

  • Métodos para imprimir os Produtos, Produtos Perecíveis e Remédios nas listas de Vector;

  • Métodos para remover os Produtos, Produtos Perecíveis e Remédios nas listas de Vector;

  • Métodos para remover os Produtos, Produtos Perecíveis e Remédios que estão vencidos nas listas .de Vector;

  • Métodos para pesquisar os Produtos, Produtos Perecíveis e Remédios nas listas de Vector;

  • Métodos para pesquisar os Produtos, Produtos Perecíveis e Remédios que estão vencidos nas listas de Vector;

  • Métodos que retornam um objeto armazenado na lista de Vector através do índice;

  • Métodos para retornar todas as listas de vector que armazena os objetos Produto, Produto Perecível e Remédio armazenados em arquivos distintos;

  • Métodos para realizar a ordenação nos dados através dos atributos distintos associados as classes de objetos;

  • Métodos que alteram a quantidade de cada um dos produtos distintos no estoque;

  • Método que calcula a despesa no estado atual da farmácia, conforme o preço de aquisição dos produtos e sua quantidade em estoque dos produtos no estoque;

  • Vendas [Concluído]

A classe Vendas é responsável por fazer a comunicação indireta com o Estoque. Através dela, os funcionários de uma farmácia poderiam vender os produtos disponíveis no estoque, elaborar notas fiscais das compras realizadas e ter uma análise rápida do saldo, apurado e despesas da farmácia em um determinado mês. Nessa classe, estão envolvidos os seguintes métodos:

  • Métodos para computar a gestão financeira da empresa a cada venda realizada;

  • Métodos que fazem a gestão do fluxo de notas fiscais no diretório, permitindo dinamizar a forma como as notas fiscais podem ser salvas e visualizadas;

  • Métodos que pesquisam diversos tipos de produtos no estoque, de modo que seja possível vendê-los;

  • Métodos que permitem remover produtos que já passaram pelo caixa, caso o consumidor repense a compra de algum item, permitindo que tal produto estorne para o estoque;

  • Métodos que limpam e restauram o histórico de notas fiscais, mantendo-as intactas em outro diretório;

  • Método que imprime na tela do usuário as últimas n notas elaboradas;

  • Método que fecha as contas do mês, recomeçando toda a apuração da parte de finanças da farmácia;

  • Métodos que retornam o apurado e o saldo mensal da farmácia;

  • ListaFuncionarios [Concluído]

A classe ListaFuncionarios é responsável por fazer a gestão de funcionários da farmácia. Em outras farmácias, armazena informações de cadastro dos funcionários, criando senhas de acesso específica para cada um deles. Há três tipos distintos de cadastro:

  • Cadastro do Administrador;
  • Cadastro de funcionários de vendas dá poder aos membros de de gerar saída de produtos do estoque por meio de notas fiscais;
  • Cadastro de funcionários de estoque dá livre acesso ao estoque da loja, de modo que seja possível implementar todos os métodos envolvidos da classe Estoque;

Sendo uma classe que herda de Funcionario, ela possuí todos os atributos ligados a essa classe, podendo armazenar cada objeto em uma lista de Vector. Na classe ListaFuncionarios, foi implementado os seguintes métodos:

  • Métodos parar inserir objetos do tipo Funcionario na Lista de Vector e imprimi-los;
  • Método para realizar a remoção de qualquer funcionário da lista pelo cpf;
  • Método para pesquisar funcionários da lista pelo cpf;
  • Métodos para validar o acesso de funcionários da parte do Controle de Vendas e Controle de Estoque, através de login e senha previamente definidos;
  • Métodos para ordenar a lista de vector ligado a todos os possíveis atributos da classe Funcionario;

Diretórios

  • Arquivos

  • Contém todos os arquivos de texto .txt que armazenam em lista os objetos do tipo Produto, ProdutoPerecivel e Remedio;

  • NotasFiscais

  • Contém todo o fluxo de notas fiscais, mantendo um diretório a parte para salvá-las e outro como todo o histórico de notas fiscais das vendas realizada;

  • funcionarios

  • Contém todos os arquivos de texto .txt que armazenam em lista os objetos do tipo Funcionario;

  • Headers

  • Contém todos os arquivos de cabeçalho .h das classes utilizadas no projeto;

  • Implementations

  • Contém todos os arquivos de implementação .cpp das classes utilizadas no projeto;

  • testes

  • Contém todos os arquivos de teste .cpp que para verificar o funcionamento de cada um dos métodos da classe;