Faça um programa para gerenciar as notas dos alunos de uma turma salva em um arquivo. O programa deverá ter um menu contendo as seguintes opções:
(a) Definir informações da turma;
(b) Inserir aluno e notas;
© Exibir alunos e médias;
(d) Exibir alunos aprovados;
(e) Exibir alunos reprovados;
(f) Salvar dados em Disco;
(g) Sair do programa (fim).
(a) Definir informações da turma;
(b) Inserir aluno e notas;
© Exibir alunos e médias;
(d) Exibir alunos aprovados;
(e) Exibir alunos reprovados;
(f) Salvar dados em Disco;
(g) Sair do programa (fim).
Passo 1
Primeiro, vamos resumir o que o programa deve fazer: gerenciar uma turma de alunos cujas informações ficam salvas em arquivo. O menu deve permitir definir informações da turma, inserir alunos e notas, exibir alunos com médias, exibir aprovados, exibir reprovados, salvar tudo em disco e sair.
Passo 2
Escolher uma linguagem (aqui usamos Python) e definir a estrutura de dados: um dicionário para as informações da turma (nome, disciplina, etc.) e uma lista de dicionários para os alunos (cada dicionário com “nome”, “notas” e “media”).
Passo 3
Implementar a função definir_informacoes() que pede ao usuário os dados da turma e os armazena no dicionário da turma.
Passo 4
Implementar inserir_aluno() que solicita nome e notas (por exemplo, três notas), calcula a média com
e adiciona um dicionário na lista de alunos.
Passo 5
Implementar exibir_alunos_medias() que percorre a lista de alunos e imprime nome e média de cada um.
Passo 6
Implementar exibir_aprovados() e exibir_reprovados(), filtrando os alunos cuja média é
ou
, respectivamente, e exibindo apenas os nomes e médias correspondentes.
Passo 7
Implementar salvar_dados() que abre um arquivo (por exemplo ‘turma.txt’) em modo escrita e salva primeiro as informações da turma e depois cada aluno em linhas formatadas.
Passo 8
Criar a função main() que faz o loop do menu: exibe as opções, lê a escolha do usuário e chama a função correspondente até a opção de sair.
Passo 9
No final, chamar main() para executar o programa.
Resposta
Programa em Python para gerenciar notas de alunos
definir_informacoes(turma):
turma[‘nome’] = input("Nome da turma: ")
turma[‘disciplina’] = input("Disciplina: ")
turma[‘professor’] = input("Professor: ")
turma[‘nome’] = input("Nome da turma: ")
turma[‘disciplina’] = input("Disciplina: ")
turma[‘professor’] = input("Professor: ")
definir_media(notas):
return sum(notas) / len(notas)
return sum(notas) / len(notas)
def inserir_aluno(alunos):
nome = input("Nome do aluno: ")
notas = []
for i in range(1, 4):
nota = float(input(f"Nota {i}: “))
notas.append(nota)
media = definir_media(notas)
alunos.append({‘nome’: nome, ‘notas’: notas, ‘media’: media})
print(f"Aluno {nome} inserido com média {media:.2f}”)
nome = input("Nome do aluno: ")
notas = []
for i in range(1, 4):
nota = float(input(f"Nota {i}: “))
notas.append(nota)
media = definir_media(notas)
alunos.append({‘nome’: nome, ‘notas’: notas, ‘media’: media})
print(f"Aluno {nome} inserido com média {media:.2f}”)
def exibir_alunos_medias(alunos):
print("\n— Alunos e Médias —")
for a in alunos:
print(f"{a[‘nome’]}: {a[‘media’]:.2f}")
print()
print("\n— Alunos e Médias —")
for a in alunos:
print(f"{a[‘nome’]}: {a[‘media’]:.2f}")
print()
def exibir_aprovados(alunos):
print("\n— Alunos Aprovados —")
for a in alunos:
if a[‘media’] >= 7.0:
print(f"{a[‘nome’]}: {a[‘media’]:.2f}")
print()
print("\n— Alunos Aprovados —")
for a in alunos:
if a[‘media’] >= 7.0:
print(f"{a[‘nome’]}: {a[‘media’]:.2f}")
print()
def exibir_reprovados(alunos):
print("\n— Alunos Reprovados —")
for a in alunos:
if a[‘media’] < 7.0:
print(f"{a[‘nome’]}: {a[‘media’]:.2f}")
print()
print("\n— Alunos Reprovados —")
for a in alunos:
if a[‘media’] < 7.0:
print(f"{a[‘nome’]}: {a[‘media’]:.2f}")
print()
def salvar_dados(turma, alunos, nome_arquivo=‘turma.txt’):
with open(nome_arquivo, ‘w’) as f:
f.write(f"Turma: {turma[‘nome’]}\n")
f.write(f"Disciplina: {turma[‘disciplina’]}\n")
f.write(f"Professor: {turma[‘professor’]}\n")
f.write("\nAlunos:\n")
for a in alunos:
notas_str = ‘,’.join(f"{n:.2f}" for n in a[‘notas’])
f.write(f"{a[‘nome’]} | Notas: {notas_str} | Média: {a[‘media’]:.2f}\n")
print(f"Dados salvos em {nome_arquivo}\n")
with open(nome_arquivo, ‘w’) as f:
f.write(f"Turma: {turma[‘nome’]}\n")
f.write(f"Disciplina: {turma[‘disciplina’]}\n")
f.write(f"Professor: {turma[‘professor’]}\n")
f.write("\nAlunos:\n")
for a in alunos:
notas_str = ‘,’.join(f"{n:.2f}" for n in a[‘notas’])
f.write(f"{a[‘nome’]} | Notas: {notas_str} | Média: {a[‘media’]:.2f}\n")
print(f"Dados salvos em {nome_arquivo}\n")
def main():
turma = {}
alunos = []
while True:
print("\nMenu:")
print(“a) Definir informações da turma”)
print(“b) Inserir aluno e notas”)
print(“c) Exibir alunos e médias”)
print(“d) Exibir alunos aprovados”)
print(“e) Exibir alunos reprovados”)
print(“f) Salvar dados em Disco”)
print(“g) Sair do programa”)
opcao = input("Escolha uma opção: ").lower()
turma = {}
alunos = []
while True:
print("\nMenu:")
print(“a) Definir informações da turma”)
print(“b) Inserir aluno e notas”)
print(“c) Exibir alunos e médias”)
print(“d) Exibir alunos aprovados”)
print(“e) Exibir alunos reprovados”)
print(“f) Salvar dados em Disco”)
print(“g) Sair do programa”)
opcao = input("Escolha uma opção: ").lower()
if opcao == 'a':
definir_informacoes(turma)
elif opcao == 'b':
inserir_aluno(alunos)
elif opcao == 'c':
exibir_alunos_medias(alunos)
elif opcao == 'd':
exibir_aprovados(alunos)
elif opcao == 'e':
exibir_reprovados(alunos)
elif opcao == 'f':
salvar_dados(turma, alunos)
elif opcao == 'g':
print("Saindo...")
break
else:
print("Opção inválida. Tente novamente.")
if name == “main”:
main()
main()