Capítulo 20: Projeto Integrador Final

🎯 Objetivo da Aula

Chegou o momento da verdade. Nesta aula, você não aprenderá comandos novos, mas provará que domina todos os anteriores. O objetivo é desenvolver um Projeto Integrador que simule um sistema real de gestão, utilizando variáveis, estruturas de decisão, laços de repetição, vetores e funções em um único código.


🏢 O Cenário Prático (Seu Desafio Final)

Situação: A FastLog precisa de um Sistema de Gestão de Frota Simples. Requisitos do Sistema:

  1. Cadastro: O sistema deve permitir cadastrar o nome de 5 motoristas e a quilometragem atual de seus veículos em vetores.
  2. Consulta: Deve ser possível pesquisar um motorista pelo nome e ver sua quilometragem.
  3. Relatório: O sistema deve exibir quem é o motorista que mais rodou e qual a média de KM da frota.
  4. Interface: Tudo deve ser controlado por um menu (escolha) dentro de um laço (faca-enquanto).

🧠 Fundamentos: A Arquitetura do Projeto

1. Camadas do Sistema

Um projeto integrador une tudo o que vimos.

🎓 Exemplo 1: Cotidiano (Sistema Escolar)

Cadastrar alunos, notas e gerar boletim automático.

🚛 Exemplo 2: Técnico (Gestão de Frota FastLog)

Cadastrar motoristas, quilometragem e gerar relatório de consumo da frota.

graph TD
    A[Menu Principal] --> B[Cadastrar Motoristas]
    A --> C[Consultar por Nome]
    A --> D[Exibir Relatório de KM]
    A --> E[Sair]
    
    style A fill:#2ecc71,stroke:#fff,color:#fff
    style E fill:#e74c3c,stroke:#fff,color:#fff

📖 Exemplo Guiado: Sistema de Gestão de Frota

O projeto final une todos os conceitos. Observe a estrutura base com menu (escolha) dentro de um laço (faca-enquanto):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
programa {
	funcao inicio() {
		inteiro op
		cadeia nomes[3]
		real km[3]
		
		faca {
			escreva("\n1. Cadastrar | 2. Relatório | 3. Sair\nOpção: ")
			leia(op)
			escolha(op) {
				caso 1:
					para(inteiro i=0; i<3; i++) {
						escreva("Motorista: ") leia(nomes[i])
						escreva("KM: ") leia(km[i])
					}
					pare
				caso 2:
					escreva("--- RELATÓRIO ---\n")
					para(inteiro i=0; i<3; i++) {
						escreva(nomes[i], " -> ", km[i], "km\n")
					}
					pare
			}
		} enquanto (op != 3)
	}
}

🛠️ Prática Obrigatória 1: Implementação de Relatório

No código acima, melhore a opção 2 (Relatório) para que ela calcule e exiba também a Média de KM de toda a frota e o Total de KM rodado.

✅ Resultado Esperado

1
2
3
4
5
--- RELATÓRIO ---
Motorista A -> 100km
Motorista B -> 200km
TOTAL KM: 300km
MÉDIA KM: 150km

🛠️ Prática Obrigatória 2: Consulta por Nome FastLog

Adicione uma opção “4. Pesquisar Motorista” ao menu. O programa deve pedir um nome e informar qual a quilometragem desse motorista (use Busca Linear no vetor de nomes).

✅ Resultado Esperado

1
2
Digite o nome para busca: Beatriz
Beatriz rodou 150.0 km.

🔥 Desafio Final: Sistema de Gestão Completo

Implemente todas as funcionalidades acima em um único programa, utilizando Funções para cada caso do menu (Ex: funcao cadastrar(), funcao gerar_relatorio()).


📤 Instruções de Entrega (Microsoft Teams)

Parabéns por chegar ao fim!

  1. Garanta que o código esteja bem identado e comentado.
  2. Salve como: PROJETO_FINAL_SeuNome.por.
  3. Envie no Microsoft Teams na tarefa final “Capítulo 20 - Projeto Integrador”.

🔑 Gabarito de Código (Consulta por Nome)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
programa {
	funcao inicio() {
		cadeia nomes[3] = {"Ana", "Bia", "Caio"}, busca
		real km[3] = {100.0, 200.0, 150.0}
		logico achou = falso
		
		escreva("Nome: ") leia(busca)
		para (inteiro i = 0; i < 3; i++) {
			se (nomes[i] == busca) {
				escreva(busca, " rodou ", km[i], " km")
				achou = verdadeiro
				pare
			}
		}
		se (nao achou) { escreva("Motorista não encontrado.") }
	}
}