DS Store
DS Store
hpp"
#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
#include <fstream>
#include <sstream>
Pessoa::~Pessoa() {}
if (it != turmas.end()) {
turmas.erase(it);
std::cout << "Turma " << codigoTurma << " removida do aluno " << nome <<
".\n";
return true;
} else {
std::cout << "O aluno nao esta matriculado na turma " << codigoTurma << ".\
n";
return false;
}
}
void Turma::adicionaAluno(int n) {
numero_alunos += n;
}
void Turma::removeAluno(int n) {
if (numero_alunos >= n) {
numero_alunos -= n;
} else {
std::cout << "Erro: numero de alunos insuficiente para remocao.\n";
}
}
if (it != turmas.end()) {
turmas.erase(it);
std::cout << "Turma " << codigoTurma << " removida do professor " << nome
<< ".\n";
return true;
} else {
std::cout << "O professor nao esta matriculado na turma " << codigoTurma <<
".\n";
return false;
}
}
std::cout << "Turmas lecionadas por " << nome << ":\n";
for (const auto& turma : turmas) {
std::cout << "- Codigo: " << turma->getCodigo() << "\n";
}
}
// Registra a nota
aluno.adicionarNota(turma, nota);
std::cout << "Nota " << nota << " registrada para o aluno " << aluno.getNome()
<< " na turma " << turma->getCodigo() << ".\n";
return true;
}
// Registra a frequ�ncia
aluno.adicionarFrequencia(turma, frequencia);
std::cout << "Frequencia de " << frequencia << "% registrada para o aluno "
<< aluno.getNome() << " na turma " << turma->getCodigo() << ".\n";
return true;
}
// Construtor
Administrador::Administrador(std::string nome, std::string email, std::string
senha, std::string codigoAdm)
: Pessoa(nome, email, senha), codigoAdm(codigoAdm) {}
// Construtor
Disciplina::Disciplina(std::string nome)
: nome(nome), numero_turmas(0) {}
// M�todos de acesso
std::string Disciplina::getNome() const { return nome; }
std::vector<Turma*> Disciplina::getTurmas() const { return turmas; }
// Construtor
Curso::Curso(std::string nome, std::string descricao)
: nome(nome), descricao(descricao), numero_disciplinas(0) {}
// M�todos de acesso
std::string Curso::getNome() const { return nome; }
std::vector<Disciplina*> Curso::getDisciplinas() const { return disciplinas; }
std::string Curso:: getDescricao() const{ return descricao;}
std::vector<Curso>& Escola::getCursos() {
return cursos;
}
std::string linha;
std::string secaoAtual;
std::map<std::string, Turma*> turmasCarregadas; // Mapa para armazenar turmas
temporariamente
if (linha[0] == '[') {
// Identificar a se��o atual
secaoAtual = linha;
} else if (secaoAtual == "[Alunos]") {
// Carregar alunos (sem turmas)
std::istringstream stream(linha);
std::string nome, email, senha, matriculaStr, curso;
std::getline(stream, nome, ',');
std::getline(stream, email, ',');
std::getline(stream, senha, ',');
std::getline(stream, matriculaStr, ',');
std::getline(stream, curso, ',');
arquivo.close();
std::cout << "Dados carregados com sucesso!\n";
}
void Menu::salvarDados() {
std::ofstream arquivo("dados.txt");
if (arquivo.is_open()) {
escola.salvarAlunos(arquivo);
escola.salvarProfessores(arquivo);
escola.salvarTurmas(arquivo);
escola.salvarCursos(arquivo);
arquivo.close();
} else {
std::cout << "Erro ao salvar dados.\n";
}
}
void Menu::iniciarSistema() {
escola.carregarDados("dados.txt");
int opcao;
do {
std::cout << "\n--- Menu Principal ---\n";
std::cout << "1. Menu Escola\n";
std::cout << "2. Menu Login\n";
std::cout << "0. Sair\n";
std::cout << "Escolha uma opcao: ";
std::cin >> opcao;
switch (opcao) {
case 1:
menuEscola();
break;
case 2:
menuLogin();
break;
case 0:
std::cout << "Saindo do sistema.\n";
salvarDados();
break;
default:
std::cout << "Opcao invalida. Tente novamente.\n";
}
} while (opcao != 0);
}
void Menu::menuEscola() {
int opcao;
do {
std::cout << "\n--- Menu Escola ---\n";
std::cout << "1. Criar Professor\n";
std::cout << "2. Criar Aluno\n";
std::cout << "3. Criar Administrador\n";
std::cout << "4. Criar Curso\n";
std::cout << "5. Criar e Adicionar Disciplina ao Curso\n";
std::cout << "6. Criar e Adicionar uma Turma a uma Disciplina\n";
std::cout << "0. Voltar\n";
std::cout << "Escolha uma opcao: ";
std::cin >> opcao;
switch (opcao) {
case 1:
criarProfessor();
break;
case 2:
criarAluno();
break;
case 3:
criarAdministrador();
break;
case 4:
criarCurso();
break;
case 5:
criarDisciplinaCurso();
break;
case 6:
criarTurmaDisciplina();
break;
case 0:
std::cout << "Voltando ao menu principal.\n";
break;
default:
std::cout << "Opcao invalida. Tente novamente.\n";
}
} while (opcao != 0);
}
void Menu::menuLogin() {
int opcao;
do {
std::cout << "\n--- Menu Login ---\n";
std::cout << "1. Login Professor\n";
std::cout << "2. Login Aluno\n";
std::cout << "3. Login Administrador\n";
std::cout << "0. Voltar\n";
std::cout << "Escolha uma opcao: ";
std::cin >> opcao;
switch (opcao) {
case 1:
loginProfessor();
break;
case 2:
loginAluno();
break;
case 3:
loginAdministrador();
break;
case 0:
std::cout << "Voltando ao menu principal.\n";
break;
default:
std::cout << "Opcao invalida. Tente novamente.\n";
}
} while (opcao != 0);
}
std::size_t opcaoCurso;
std::cout << "Escolha o numero do curso: ";
std::cin >> opcaoCurso;
void Menu::criarProfessor() {
std::string nome, email, senha, id;
void Menu::criarAdministrador() {
std::string nome, email, senha, codigo;
void Menu::criarCurso() {
std::string nome, descricao;
void Menu::criarDisciplinaCurso() {
std::string nomeCurso, nomeDisciplina;
void Menu::criarTurmaDisciplina() {
std::string nomeCurso, nomeDisciplina, codigoTurma, idProfessor;
void Menu::loginAluno() {
int matricula;
std::string senha;
void Menu::loginProfessor() {
std::string id, senha;
void Menu::loginAdministrador() {
std::string codigo, senha;
switch (opcao) {
case 1:
std::cout << "Digite o novo Email: ";
std::cin >> email;
aluno.alterarEmail(email);
break;
case 2:
std::cout << "Digite a nova Senha: ";
std::cin >> senha;
aluno.alterarSenha(senha);
break;
case 3:
aluno.exibirInformacoes();
break;
case 4:
aluno.consultarNotas();
break;
case 5:
aluno.consultarFrequencia();
break;
case 0:
std::cout << "Saindo do menu do aluno.\n";
break;
default:
std::cout << "Op��o invalida. Tente novamente.\n";
}
} while (opcao != 0);
}
switch (opcao) {
case 1:
std::cout << "Digite o novo Email: ";
std::cin >> email;
professor.alterarEmail(email);
break;
case 2:
std::cout << "Digite a nova Senha: ";
std::cin >> senha;
professor.alterarSenha(senha);
break;
case 3:
professor.exibirInformacoes();
break;
case 4:
// Listar turmas
std::cout << "Listando turmas...\n";
try {
professor.listarTurmas();
} catch (const std::exception& e) {
std::cout << "Erro ao listar turmas: " << e.what() << "\n";
}
break;
case 5:
// Registrar aluno em turma
{
int idAluno;
std::string codigoTurma;
std::cout << "Digite a matricula do aluno: ";
std::cin >> idAluno;
switch (opcao) {
case 1:
//gerenciarCursos(administrador);
break;
case 2:
//gerenciarProfessores(administrador);
break;
case 3:
//gerenciarAlunos(administrador);
break;
case 0:
std::cout << "Saindo do menu administrador.\n";
break;
default:
std::cout << "Opcao invalida. Tente novamente.\n";
}
} while (opcao != 0);
}