11 cout <<
"1- Cadastrar Residente" << endl;
12 cout <<
"2- Cadastrar Funcionário" << endl;
13 cout <<
"3- Listar Residentes" << endl;
14 cout <<
"4- Listar Funcionários" << endl;
15 cout <<
"5- Remover Residente" << endl;
16 cout <<
"6- Remover Funcionário" << endl;
17 cout <<
"7- Buscar Residente" << endl;
18 cout <<
"8- Buscar Funcionário" << endl;
19 cout <<
"9- Sair" << endl;
23 string nome, cpf, dataNascimento, dataEntrada, dataSaida, telefone, email, matricula, funcao, setor, turno;
24 int predio, apartamento, andar, vagaGaragem;
25 float cargaHoraria, salario;
26 vector<string> linhas;
29 arquivo.open(nomeArquivo +
".txt", ios::in | ios::app);
31 if(arquivo.is_open()){
34 while(getline(arquivo, linha)){
35 linhas.push_back(linha);
40 cout <<
"Erro ao abrir o arquivo!" << endl;
43 for(
int i = 0; i < linhas.size(); i+= 4){
46 dataNascimento = linhas[i + 2];
48 if(nomeArquivo ==
"archives/residentes"){
49 predio = stoi(linhas[i + 3]);
50 apartamento = stoi(linhas[i + 4]);
51 andar = stoi(linhas[i + 5]);
52 vagaGaragem = stoi(linhas[i + 6]);
53 dataEntrada = linhas[i + 7];
54 dataSaida = linhas[i + 8];
55 telefone = linhas[i + 9];
56 email = linhas[i + 10];
58 Residentes novoResidente(nome, cpf, dataNascimento, predio, apartamento, andar, vagaGaragem, dataEntrada, dataSaida, telefone, email);
59 residentes.push_back(novoResidente);
63 matricula = linhas[i + 3];
64 funcao = linhas[i + 4];
65 setor = linhas[i + 5];
66 cargaHoraria = stof(linhas[i + 6]);
67 salario = stof(linhas[i + 7]);
68 turno = linhas[i + 8];
70 if(nomeArquivo ==
"archives/zeladores"){
71 Zelador novoZelador(nome, cpf, dataNascimento, matricula, funcao, setor, cargaHoraria, salario, turno,
true);
72 zeladores.push_back(novoZelador);
75 if(nomeArquivo ==
"archives/segurancas"){
76 Seguranca novoSeguranca(nome, cpf, dataNascimento, matricula, funcao, setor, cargaHoraria, salario, turno,
true);
77 segurancas.push_back(novoSeguranca);
87 arquivo.open(nomeArquivo +
".txt", ios::out);
89 if(arquivo.is_open()){
90 if(nomeArquivo ==
"archives/residentes"){
91 for(
int i = 0; i < residentes.size(); i++){
92 arquivo << residentes[i].getNome() << endl;
93 arquivo << residentes[i].getCpf() << endl;
94 arquivo << residentes[i].getDataNascimento() << endl;
95 arquivo << residentes[i].getPredio() << endl;
96 arquivo << residentes[i].getApartamento() << endl;
97 arquivo << residentes[i].getAndar() << endl;
98 arquivo << residentes[i].getVagaGaragem() << endl;
99 arquivo << residentes[i].getDataEntrada() << endl;
100 arquivo << residentes[i].getDataSaida() << endl;
101 arquivo << residentes[i].getTelefone() << endl;
102 arquivo << residentes[i].getEmail() << endl;
105 }
else if(nomeArquivo ==
"archives/zeladores"){
106 for(
int i = 0; i < zeladores.size(); i++){
107 arquivo << zeladores[i].getNome() << endl;
108 arquivo << zeladores[i].getCpf() << endl;
109 arquivo << zeladores[i].getDataNascimento() << endl;
110 arquivo << zeladores[i].getMatricula() << endl;
111 arquivo << zeladores[i].getFuncao() << endl;
112 arquivo << zeladores[i].getSetor() << endl;
113 arquivo << zeladores[i].getCargaHoraria() << endl;
114 arquivo << zeladores[i].getSalario() << endl;
115 arquivo << zeladores[i].getTurno() << endl;
118 }
else if(nomeArquivo ==
"archives/segurancas"){
119 for(
int i = 0; i < segurancas.size(); i++){
120 arquivo << segurancas[i].getNome() << endl;
121 arquivo << segurancas[i].getCpf() << endl;
122 arquivo << segurancas[i].getDataNascimento() << endl;
123 arquivo << segurancas[i].getMatricula() << endl;
124 arquivo << segurancas[i].getFuncao() << endl;
125 arquivo << segurancas[i].getSetor() << endl;
126 arquivo << segurancas[i].getCargaHoraria() << endl;
127 arquivo << segurancas[i].getSalario() << endl;
128 arquivo << segurancas[i].getTurno() << endl;
133 cout <<
"Erro ao abrir o arquivo!" << endl;
145 throw runtime_error(
"\n---Erro: Digite um número inteiro!---\n");
149 }
catch(runtime_error &e){
150 cout << e.what() << endl;
152 cin.ignore(numeric_limits<streamsize>::max(),
'\n');
167 throw runtime_error(
"\n---Erro: Digite um número real!---\n");
171 }
catch(runtime_error &e){
172 cout << e.what() << endl;
174 cin.ignore(numeric_limits<streamsize>::max(),
'\n');
182 string nome, cpf, dataNascimento, dataEntrada, dataSaida, telefone, email;
183 int predio, apartamento, andar, vagaGaragem;
185 system(
"clear||cls");
186 cout <<
"---Casdastro de Residente---" << endl;
194 cout <<
"Data de Nascimento: ";
195 getline(cin, dataNascimento);
197 predio = lerInt(predio,
"Número do Prédio: ");
199 apartamento = lerInt(apartamento,
"Número do Apartamento: ");
201 andar = lerInt(andar,
"Número do Andar: ");
203 vagaGaragem = lerInt(vagaGaragem,
"Número da Vaga de Garagem: ");
205 cout <<
"Data de Entrada: ";
207 getline(cin, dataEntrada);
209 cout <<
"Data de Saída: ";
210 getline(cin, dataSaida);
212 cout <<
"Telefone: ";
213 getline(cin, telefone);
218 Residentes novoResidente(nome, cpf, dataNascimento, predio, apartamento, andar, vagaGaragem, dataEntrada, dataSaida, telefone, email);
219 residentes.push_back(novoResidente);
221 system(
"clear || cls");
223 cout <<
"---Residente cadastrado com sucesso!\n" << endl;
227 string nome, cpf, dataNascimento, matricula, funcao, setor, turno;
228 float cargaHoraria, salario;
230 system(
"clear||cls");
232 cout <<
"---Cadastro de Funcionário---" << endl;
240 cout <<
"Data de Nascimento: ";
241 getline(cin, dataNascimento);
243 cout <<
"Matrícula: ";
244 getline(cin, matricula);
247 getline(cin, funcao);
252 cargaHoraria = lerFloat(cargaHoraria,
"Carga Horária: ");
254 salario = lerFloat(salario,
"Salário: ");
260 system(
"clear || cls");
262 if(funcao ==
"Zelador" || funcao ==
"zelador"){
263 Zelador novoZelador(nome, cpf, dataNascimento, matricula, funcao, setor, cargaHoraria, salario, turno,
false);
264 zeladores.push_back(novoZelador);
266 cout <<
"---Zelador cadastrado com sucesso!\n" << endl;
267 }
else if(funcao ==
"Segurança" || funcao ==
"segurança"){
268 Seguranca novoSeguranca(nome, cpf, dataNascimento, matricula, funcao, setor, cargaHoraria, salario, turno,
false);
269 segurancas.push_back(novoSeguranca);
271 cout <<
"---Segurança cadastrado com sucesso!\n" << endl;
273 cout <<
"\n---Função inválida!" << endl;
274 cout <<
"---As funções válidas são: Zelador e Segurança\n" << endl;
279 system(
"clear || cls");
280 if(residentes.size() == 0){
281 cout <<
"---Não há residentes cadastrados!---\n" << endl;
283 cout <<
"--------Lista de Residentes--------" << endl;
284 for(
int i = 0; i < residentes.size(); i++){
285 cout <<
"---Residente N°" << i + 1 << endl;
286 cout <<
"Nome: " << residentes[i].getNome() << endl;
287 cout <<
"CPF: " << residentes[i].getCpf() << endl;
288 cout <<
"Data de Nascimento: " << residentes[i].getDataNascimento() << endl;
289 cout <<
"Número do Prédio: " << residentes[i].getPredio() << endl;
290 cout <<
"Número do Apartamento: " << residentes[i].getApartamento() << endl;
291 cout <<
"Número do Andar: " << residentes[i].getAndar() << endl;
292 cout <<
"Número da Vaga de Garagem: " << residentes[i].getVagaGaragem() << endl;
293 cout <<
"Data de Entrada: " << residentes[i].getDataEntrada() << endl;
294 cout <<
"Data de Saída: " << residentes[i].getDataSaida() << endl;
295 cout <<
"Telefone: " << residentes[i].getTelefone() << endl;
296 cout <<
"E-mail: " << residentes[i].getEmail() << endl;
297 cout <<
"-----------------------------------";
304 system(
"clear || cls");
305 cout <<
"-----------Lista de Funcionários-----------" << endl;
307 if(zeladores.size() == 0){
308 cout <<
"\n---Não há zeladores cadastrados!---\n" << endl;
310 cout <<
"---Lista de Zeladores---" << endl;
311 for(
int i = 0; i < zeladores.size(); i++){
312 cout <<
"Zelador N°" << i + 1 << endl;
313 cout <<
"Nome: " << zeladores[i].getNome() << endl;
314 cout <<
"CPF: " << zeladores[i].getCpf() << endl;
315 cout <<
"Data de Nascimento: " << zeladores[i].getDataNascimento() << endl;
316 cout <<
"Matrícula: " << zeladores[i].getMatricula() << endl;
317 cout <<
"Função: " << zeladores[i].getFuncao() << endl;
318 cout <<
"Setor: " << zeladores[i].getSetor() << endl;
319 cout <<
"Carga Horária: " << zeladores[i].getCargaHoraria() << endl;
320 cout <<
"Salário: " << zeladores[i].getSalario() << endl;
321 cout <<
"Turno: " << zeladores[i].getTurno() << endl;
322 cout <<
"-----------------------------------";
327 if(segurancas.size() == 0){
328 cout <<
"---Não há seguranças cadastrados!---\n" << endl;
330 cout <<
"---Lista de Seguranças---" << endl;
331 for(
int i = 0; i < segurancas.size(); i++){
332 cout <<
"Segurança N°" << i + 1 << endl;
333 cout <<
"Nome: " << segurancas[i].getNome() << endl;
334 cout <<
"CPF: " << segurancas[i].getCpf() << endl;
335 cout <<
"Data de Nascimento: " << segurancas[i].getDataNascimento() << endl;
336 cout <<
"Matrícula: " << segurancas[i].getMatricula() << endl;
337 cout <<
"Função: " << segurancas[i].getFuncao() << endl;
338 cout <<
"Setor: " << segurancas[i].getSetor() << endl;
339 cout <<
"Carga Horária: " << segurancas[i].getCargaHoraria() << endl;
340 cout <<
"Salário: " << segurancas[i].getSalario() << endl;
341 cout <<
"Turno: " << segurancas[i].getTurno() << endl;
342 cout <<
"-----------------------------------";
350 bool residenteEncontrado =
false;
352 system(
"clear || cls");
353 cout <<
" ---Remover Residente---" << endl;
354 cout <<
"Digite o CPF do Residente (000.000.000-00): ";
358 for(
int i = 0; i < residentes.size(); i++){
359 if(residentes[i].getCpf() == cpf){
360 residentes.erase(residentes.begin() + i);
361 residenteEncontrado =
true;
366 if(residenteEncontrado){
367 cout <<
"---Residente removido com sucesso!\n" << endl;
369 cout <<
"---Residente não encontrado!\n" << endl;
374 string matricula, funcao;
375 bool funcionarioEncontrado =
false, flag =
false;
377 system(
"clear || cls");
378 cout <<
" ---Remover Funcionário---" << endl;
383 cout <<
"Função do Funcionário: ";
384 getline(cin, funcao);
386 if(funcao !=
"Zelador" && funcao !=
"zelador" && funcao !=
"Segurança" && funcao !=
"segurança"){
387 throw runtime_error(
"---Erro: Função inválida!---\n");
391 }
catch(runtime_error &e){
392 cout << e.what() << endl;
397 cout <<
"Digite a Matrícula do Funcionário: ";
398 getline(cin, matricula);
400 if(funcao ==
"Zelador" || funcao ==
"zelador"){
401 for(
int i = 0; i < zeladores.size(); i++){
402 if(zeladores[i].getMatricula() == matricula){
403 zeladores.erase(zeladores.begin() + i);
404 funcionarioEncontrado =
true;
408 }
else if(funcao ==
"Segurança" || funcao ==
"segurança"){
409 for(
int i = 0; i < segurancas.size(); i++){
410 if(segurancas[i].getMatricula() == matricula){
411 segurancas.erase(segurancas.begin() + i);
412 funcionarioEncontrado =
true;
418 if(funcionarioEncontrado){
419 cout <<
"---Funcionário removido com sucesso!---\n" << endl;
421 cout <<
"\n---Funcionário não encontrado!---\n" << endl;
427 bool residenteEncontrado =
false;
429 system(
"clear || cls");
430 cout <<
" ---Buscar Residente---" << endl;
431 cout <<
"Digite o CPF do Residente (000.000.000-00): ";
435 for(
int i = 0; i < residentes.size(); i++){
436 if(residentes[i].getCpf() == cpf){
437 cout <<
"-------Residente encontrado!-------" << endl;
438 cout <<
"Nome: " << residentes[i].getNome() << endl;
439 cout <<
"CPF: " << residentes[i].getCpf() << endl;
440 cout <<
"Data de Nascimento: " << residentes[i].getDataNascimento() << endl;
441 cout <<
"Número do Prédio: " << residentes[i].getPredio() << endl;
442 cout <<
"Número do Apartamento: " << residentes[i].getApartamento() << endl;
443 cout <<
"Número do Andar: " << residentes[i].getAndar() << endl;
444 cout <<
"Número da Vaga de Garagem: " << residentes[i].getVagaGaragem() << endl;
445 cout <<
"Data de Entrada: " << residentes[i].getDataEntrada() << endl;
446 cout <<
"Data de Saída: " << residentes[i].getDataSaida() << endl;
447 cout <<
"Telefone: " << residentes[i].getTelefone() << endl;
448 cout <<
"E-mail: " << residentes[i].getEmail() << endl;
449 cout <<
"-----------------------------------";
451 residenteEncontrado =
true;
456 if(!residenteEncontrado){
457 cout <<
"---Residente não encontrado!\n" << endl;
463 bool funcionarioEncontrado =
false;
465 system(
"clear || cls");
466 cout <<
" ---Buscar Funcionário---" << endl;
468 cout <<
"Digite a Matrícula do Funcionário: ";
470 getline(cin, matricula);
472 if(zeladores.size() != 0){
473 for(
int i = 0; i < zeladores.size(); i++){
474 if(zeladores[i].getMatricula() == matricula){
475 cout <<
"------Funcionário encontrado!------" << endl;
476 cout <<
"Nome: " << zeladores[i].getNome() << endl;
477 cout <<
"CPF: " << zeladores[i].getCpf() << endl;
478 cout <<
"Data de Nascimento: " << zeladores[i].getDataNascimento() << endl;
479 cout <<
"Matrícula: " << zeladores[i].getMatricula() << endl;
480 cout <<
"Função: " << zeladores[i].getFuncao() << endl;
481 cout <<
"Setor: " << zeladores[i].getSetor() << endl;
482 cout <<
"Carga Horária: " << zeladores[i].getCargaHoraria() << endl;
483 cout <<
"Salário: " << zeladores[i].getSalario() << endl;
484 cout <<
"Turno: " << zeladores[i].getTurno() << endl;
485 cout <<
"-----------------------------------";
487 funcionarioEncontrado =
true;
493 if(segurancas.size() != 0){
494 for(
int i = 0; i < segurancas.size(); i++){
495 if(segurancas[i].getMatricula() == matricula){
496 cout <<
"------Funcionário encontrado!------" << endl;
497 cout <<
"Nome: " << segurancas[i].getNome() << endl;
498 cout <<
"CPF: " << segurancas[i].getCpf() << endl;
499 cout <<
"Data de Nascimento: " << segurancas[i].getDataNascimento() << endl;
500 cout <<
"Matrícula: " << segurancas[i].getMatricula() << endl;
501 cout <<
"Função: " << segurancas[i].getFuncao() << endl;
502 cout <<
"Setor: " << segurancas[i].getSetor() << endl;
503 cout <<
"Carga Horária: " << segurancas[i].getCargaHoraria() << endl;
504 cout <<
"Salário: " << segurancas[i].getSalario() << endl;
505 cout <<
"Turno: " << segurancas[i].getTurno() << endl;
506 cout <<
"-----------------------------------";
508 funcionarioEncontrado =
true;
514 if(!funcionarioEncontrado){
515 system(
"clear || cls");
516 cout <<
"---Funcionário não encontrado!\n" << endl;
void removerFuncionario()
Remove um funcionário (Zelador ou Segurança) com base na matrícula e função fornecidas.
void menuAdministrador()
Exibe o menu de opções para o administrador.
void atualizarArquivo(std::string nomeArquivo)
Atualiza um arquivo com os dados armazenados nos objetos de Residente, Zelador ou Segurança.
int lerInt(int numero, std::string msg)
Lê um número inteiro da entrada padrão com validação.
void buscarResidente()
Busca um residente com base no CPF fornecido.
void removerResidente()
Remove um residente com base no CPF fornecido.
float lerFloat(float numero, std::string msg)
Lê um número de ponto flutuante da entrada padrão com validação.
void lerArquivo(std::string nomeArquivo)
Lê os dados de um arquivo e os armazena em objetos de Residente, Zelador ou Segurança.
void buscarFuncionario()
Busca um funcionário (Zelador ou Segurança) com base na matrícula fornecida.
void listarResidentes()
Lista os residentes cadastrados.
void listarFuncionarios()
Lista os funcionários (Zeladores e Seguranças) cadastrados.
void cadastrarResidente()
Cadastra um novo residente com base nas informações fornecidas.
void cadastrarFuncionario()
Cadastra um novo funcionário (Zelador ou Segurança) com base nas informações fornecidas.
Classe que representa um Residente.
Classe que representa um Segurança.
Classe que representa um Zelador.