{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "```{thebe-init}\n", "---\n", "thebe: true\n", "---\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exemplo de Gerenciamento de Aquisições com Python\n", "## Introdução\n", "O gerenciamento de aquisições é uma parte essencial do gerenciamento de projetos, garantindo que os recursos e serviços necessários sejam obtidos para atender às necessidades do projeto. Nesta aula, usaremos Python para explorar:\n", "\n", "1. Planejamento de aquisições.\n", "2. Seleção de fornecedores.\n", "3. Geração de formulários para coleta de dados e critérios.\n", "\n", "Os exemplos estão alinhados com os conceitos do **PMBOK 7ª edição** no domínio **Entrega**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercício Prático: Planejamento de Aquisições para um Projeto de Construção\n", "\n", "Considere realizar um exercício prático onde você irá planejar as aquisições para um pequeno projeto de construção civil, levando em consideração as etapas descritas anteriormente.\n", "\n", "### Passos para o Exercício:\n", "1. **Defina as necessidades do projeto**: O que você precisa adquirir para o projeto?\n", "2. **Selecione os fornecedores**: Quem pode fornecer o que você precisa?\n", "3. **Determine o orçamento**: Qual é o orçamento disponível para as aquisições?\n", "4. **Estabeleça os prazos**: Quando os materiais e serviços precisam ser entregues?\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Planejamento de Aquisições\n", "Antes de adquirir recursos, é essencial planejar adequadamente. Vamos criar um formulário simples em Python para coletar requisitos do projeto." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Preencha os dados abaixo para criar um formulário de aquisições.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Formulário salvo como ../../../data/formulario_aquisicoes.csv.\n", "\n", "Conteúdo do Formulário de Aquisição Salvo:\n", "Nome do Requisitante: r\n", "Descrição do Item/Serviço: r\n", "Quantidade Necessária: r\n", "Prazo de Entrega: r\n", "Orçamento Estimado: r\n" ] }, { "data": { "text/html": [ "../../../data/formulario_aquisicoes.csv
" ], "text/plain": [ "c:\\Users\\DELL\\Downloads\\REPOSITORIOS\\gpc\\data\\formulario_aquisicoes.csv" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import csv\n", "from IPython.display import FileLink # Biblioteca para criar link de download\n", "\n", "def criar_formulario():\n", " # Definição dos campos do formulário\n", " campos = [\n", " \"Nome do Requisitante\",\n", " \"Descrição do Item/Serviço\",\n", " \"Quantidade Necessária\",\n", " \"Prazo de Entrega\",\n", " \"Orçamento Estimado\"\n", " ]\n", " \n", " print(\"Preencha os dados abaixo para criar um formulário de aquisições.\")\n", " dados = {} # Dicionário para armazenar os dados preenchidos pelo usuário\n", " \n", " # Coleta de dados interativa para cada campo\n", " for campo in campos:\n", " dados[campo] = input(f\"{campo}: \")\n", " \n", " # Atualiza o caminho do arquivo para a pasta ../../data/\n", " nome_arquivo = \"../../../data/formulario_aquisicoes.csv\"\n", " with open(nome_arquivo, mode=\"w\", newline=\"\") as arquivo:\n", " # Configura o escritor CSV com os campos definidos\n", " escritor = csv.DictWriter(arquivo, fieldnames=campos)\n", " escritor.writeheader() # Escreve os cabeçalhos no arquivo\n", " escritor.writerow(dados) # Escreve os dados coletados como uma linha\n", " \n", " print(f\"Formulário salvo como {nome_arquivo}.\") # Mensagem de sucesso\n", " return nome_arquivo # Retorna o nome do arquivo criado\n", "\n", "def exibir_formulario(nome_arquivo):\n", " # Exibe o conteúdo do formulário a partir do arquivo CSV\n", " print(\"\\nConteúdo do Formulário de Aquisição Salvo:\")\n", " with open(nome_arquivo, mode=\"r\", newline=\"\") as arquivo:\n", " leitor = csv.DictReader(arquivo)\n", " for linha in leitor:\n", " for campo, valor in linha.items():\n", " print(f\"{campo}: {valor}\")\n", "\n", "def criar_link_download(nome_arquivo):\n", " # Cria um link de download para o arquivo\n", " display(FileLink(nome_arquivo)) # Exibe o link para download do arquivo\n", "\n", "# Executa a função para testar a criação do formulário\n", "arquivo_salvo = criar_formulario()\n", "\n", "# Exibe o conteúdo do arquivo salvo\n", "exibir_formulario(arquivo_salvo)\n", "\n", "# Cria o link de download do arquivo\n", "criar_link_download(arquivo_salvo)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Seleção de Fornecedores\n", "Após coletar os requisitos, avaliamos os fornecedores com base em critérios como preço, qualidade e prazos. Aqui está um exemplo prático em Python para selecionar fornecedores." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ranking dos Fornecedores:\n", " Fornecedor Preço Qualidade (1-10) Prazo de Entrega (dias) Pontuação\n", "1 Fornecedor B 1200 9 40 3.605333\n", "0 Fornecedor A 1000 8 30 3.207067\n", "2 Fornecedor C 1100 7 25 2.808364\n" ] } ], "source": [ "import pandas as pd\n", "\n", "# Dados fictícios de fornecedores\n", "dados = {\n", " \"Fornecedor\": [\"Fornecedor A\", \"Fornecedor B\", \"Fornecedor C\"],\n", " \"Preço\": [1000, 1200, 1100],\n", " \"Qualidade (1-10)\": [8, 9, 7],\n", " \"Prazo de Entrega (dias)\": [30, 40, 25]\n", "}\n", "\n", "# Criar DataFrame\n", "df = pd.DataFrame(dados)\n", "\n", "# Pesos para critérios\n", "pesos = {\"Preço\": 0.4, \"Qualidade (1-10)\": 0.4, \"Prazo de Entrega (dias)\": 0.2}\n", "\n", "# Normalizar dados e calcular pontuação\n", "df[\"Pontuação\"] = (\n", " (1 / df[\"Preço\"]) * pesos[\"Preço\"] +\n", " df[\"Qualidade (1-10)\"] * pesos[\"Qualidade (1-10)\"] +\n", " (1 / df[\"Prazo de Entrega (dias)\"]) * pesos[\"Prazo de Entrega (dias)\"]\n", ")\n", "\n", "# Ordenar por pontuação\n", "df = df.sort_values(by=\"Pontuação\", ascending=False)\n", "\n", "print(\"Ranking dos Fornecedores:\")\n", "print(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusão\n", "Com Python, podemos automatizar partes importantes do gerenciamento de aquisições, como:\n", "\n", "1. Coletar requisitos por meio de formulários.\n", "2. Avaliar fornecedores com base em critérios definidos.\n", "\n", "Baixe o arquivo gerado durante a execução para usá-lo em seus projetos!\n", "\n", "### Sugestão de Atividade:\n", "- Modifique os critérios de seleção e os pesos no exemplo para ver como o ranking dos fornecedores muda." ] } ], "metadata": { "kernelspec": { "display_name": "jupyterbook", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.13.0" } }, "nbformat": 4, "nbformat_minor": 2 }