Vem ser Tech | Dados - Ada Tech (Primavera 2023)
Créditos | Contexto e objetivo | Especificação | Tecnologias | Organização dos arquivos | Execução | Equipe
- Instituição: Let's Code (Ada Tech)
- Curso: Vem ser Tech | Dados
- Disciplina: Lógica de Programação I
- Professores: Thiago
O desenvolvimento do projeto dar-se-á conclusão do módulo I do curso Vem ser Tech | Dados, consistindo em um sistema simples de cadastro e monitoramentos de restaurantes.
O seu grupo foi encarregado de fazer uma interface para cadastro e monitoramento de restaurantes no iFood. Desenvolvam um sistema com menu que tenha as seguintes características:
- Cadastro de um novo restaurante, da forma [nome_restaurante, [lat, lon], n_pedidos];
- Criar cardápio;
- Registrar histórico de vendas;
- Verificar restaurantes mais pertos de uma localidade;
- Além disso, crie também pelo menos três novas funcionalidades para essa interface.
Obs:. Você terá em mãos algumas funções que implementam a manipulação de arquivos, para viabilizar o projeto.
- Python
A linguagem utilizada para o desenvolvimento fora Python, tanto por ser a ferramenta de aprendizado utilizada durante o curso, quanto por ser uma linguagem de alto nível, orientada a objetos, funcional e de tipagem dinâmica e forte.
- JSON
Sendo uma importante ferramenta utilizada para trocar informações entre um servidor e um cliente, além de seu formato de dados leve e de fácil leitura, o JSON, neste projeto, fora utilizado de forma que cada entrada representa um restaurante e é definida como um objeto detentor de várias propriedades, como uma matriz de objetos que descrevem os itens do cardápio ou vendas anteriores.
Este projeto inclui arquivos executáveis e de destino, além de acesso ao diretório fonte (repositório), como a seguir:
- main.py - Contém o código-fonte responsável pelos menus disponíveis para o restaurante parceiro e para o cliente (incluindo procedimentos de cadastro, validação de pedidos através da disponibilidade do produto em estoque, mensagens de erro para entradas inválidas etc.).
- json_manipulation.py - Define um conjunto de funções para lidar com a criação, leitura, validação, gravação e manipulação dos dados em formato JSON no arquivo importado no cabeçalho do código.
- restaurante.py - As funcionalidades deste código reduzem o estoque do item quando este é confirmado, incrementam o contador de pedidos do restaurante, criam um dicionário representando a solicitação e adicionam o pedido ao histórico de vendas do restaurante.
-
» No arquivo main.py:
- import os: fornece funcionalidades para interagir com o sistema operacional, como manipular arquivos, pastas e variáveis de ambiente.
- import platform: permite ao programa obter informações sobre a plataforma na qual ele está sendo executado, como o sistema operacional e a arquitetura do sistema.
-
» No arquivo json_manipulation.py:
- from uuid import uuid4: sendo uma importação específica do módulo uuid, permite a geração de chaves primárias.
-
» No arquivo restaurante.py:
- import math: sendo a principal biblioteca por fornecer várias funções e constantes matemáticas, neste código, ela é responsável calcular a proximidade entre um conjunto de restaurantes e as coordenadas geográficas do usuário através da fórmula de Haversine.
-
» No arquivo main.py:
- from src.restaurante import *: esta linha importa todas as funções, classes e variáveis definidas no módulo "restaurante", localizado no diretório "src." Isso significa que o código pode utilizar todas as definições deste módulo em todo o programa.
- from src.json_manipulation import *: importa todas as funções, classes e variáveis definidas no módulo "json_manipulation" localizado no diretório "src."
- json_db.json: Contém informações fictícias sobre usuários e restaurantes, sendo utilizado como um pequeno banco de dados para o projeto.
- Cadastro-e-Monitoramento-de-Restaurantes-iFood: Inclui todos os arquivos listados acima.
Como a proposta do projeto foi a utilização de técnicas e tecnologias vistas em aula, não fez-se necessário a utilização de pacotes externos.
A ordem a seguir, de possível execução dos arquivos do programa, deve ser seguida após realizar o dowload do arquivo ZIP do diretório fonte:
É necessário que o arquivo json_manipulation.py seja carregado e executado antes de todos os outros do repositório, visto que, em termos de dependência, é o responsável por criar o diretório e o arquivo JSON de banco de dados, caso eles não existam. Após, carrega os dados do arquivo, salva-os na ferramenta JSON e adiciona um novo restaurante ao data-base.
Diferentemente do arquivo JSON de manipulação, supracitado, este banco armazena os dados dos restaurantes, cardápios e histórico de vendas.
O arquivo main.py exerce a base do projeto quando possui funções as quais exibem o menu principal do programa, permitindo que o usuário escolha entre acessar como 1. parceiro ou 2. usuário. Na opção 1, há o menu de operações disponíveis para um parceiro, como cadastrar um novo restaurante, criar cardápio, ver histórico de vendas, listar restaurantes, remover restaurante, atualizar estoque ou sair. A opção 2, por sua vez, permite que o usuário encontre restaurantes próximos e realize pedidos.
No arquivo restaurante.py, há funções relacionadas à manipulação de restaurantes, cardápio, atualização de estoque, cálculo de proximidade e realização de pedidos.
Um arquivo de ambiente Conda é indispensável para especificar as dependências necessárias para executar o projeto.
Projeto desenvolvido pelos Devs: