Sistema condomínio  v1.0
Membros públicos | Mostrar lista completa dos membros
Referência à classe Porteiro

Classe que representa um Porteiro. Mais...

#include <porteiro.hpp>

Diagrama de heranças da classe Porteiro
Inheritance graph
[legenda]
Diagrama de colaboração para Porteiro:
Collaboration graph
[legenda]

Membros públicos

void menuPorteiro ()
 Exibe o menu do Porteiro. Mais...
 
void lerArquivo (std::string nomeArquivo)
 Lê informações de um arquivo e carrega os dados do objeto. Mais...
 
void atualizarArquivo (std::string nomeArquivo)
 Atualiza as informações do arquivo com base nos dados do objeto. Mais...
 
int lerInt (int numero, std::string msg)
 Lê um número inteiro da entrada padrão com validação. Mais...
 
void cadastrarEncomenda ()
 Cadastra uma nova encomenda. Mais...
 
void cadastrarVisitante ()
 Cadastra um novo visitante. Mais...
 
void listarVisitantes ()
 Lista todos os visitantes cadastrados. Mais...
 
void buscarEncomenda ()
 Busca uma encomenda pelo CPF. Mais...
 
void buscarVisitanteData ()
 Busca visitantes com base em uma data específica. Mais...
 
void listarEncomendas ()
 Lista todas as encomendas. Mais...
 
- Membros públicos herdados de Visitante
 Visitante ()
 Construtor padrão da classe Visitante. Mais...
 
 Visitante (std::string nomeVisitante, std::string nomeVisitado, int apartamento, int andar, std::string dataVisita)
 Construtor da classe Visitante. Mais...
 
std::string getNomeVisitante ()
 Obtém o nome do visitante. Mais...
 
std::string getNomeVisitado ()
 Obtém o nome da pessoa visitada. Mais...
 
int getApartamento ()
 Obtém o número do apartamento visitado. Mais...
 
int getAndar ()
 Obtém o número do andar visitado. Mais...
 
std::string getDataVisita ()
 Obtém a data da visita. Mais...
 
void setNomeVisitante (std::string nomeVisitante)
 Define o nome do visitante. Mais...
 
void setNomeVisitado (std::string nomeVisitado)
 Define o nome da pessoa visitada. Mais...
 
void setApartamento (int apartamento)
 Define o número do apartamento visitado. Mais...
 
void setAndar (int andar)
 Define o número do andar visitado. Mais...
 
void setDataVisita (std::string dataVisita)
 Define a data da visita. Mais...
 
- Membros públicos herdados de Encomenda
 Encomenda ()
 Construtor padrão da classe Encomenda. Mais...
 
 Encomenda (std::string nomeRemetente, std::string nomeDestinatario, std::string cpfDestinatario, std::string numeroApartamento, std::string dataRecebimento)
 Construtor que inicializa os membros da classe com valores específicos. Mais...
 
std::string getNomeRemetente ()
 Obtém o nome do remetente da encomenda. Mais...
 
std::string getNomeDestinatario ()
 Obtém o nome do destinatário da encomenda. Mais...
 
std::string getCpfDestinatario ()
 Obtém o CPF do destinatário da encomenda. Mais...
 
std::string getNumeroApartamento ()
 Obtém o número do apartamento da encomenda. Mais...
 
std::string getDataRecebimento ()
 Obtém a data de recebimento da encomenda. Mais...
 
void setNomeRemetente (std::string nomeRemetente)
 Define o nome do remetente da encomenda. Mais...
 
void setNomeDestinatario (std::string nomeDestinatario)
 Define o nome do destinatário da encomenda. Mais...
 
void setCpfDestinatario (std::string cpfDestinatario)
 Define o CPF do destinatário da encomenda. Mais...
 
void setNumeroApartamento (std::string numeroApartamento)
 Define o número do apartamento da encomenda. Mais...
 
void setDataRecebimento (std::string dataRecebimento)
 Define a data de recebimento da encomenda. Mais...
 
- Membros públicos herdados de Residentes
 Residentes ()
 Construtor padrão da classe Residentes. Mais...
 
 Residentes (std::string nome, std::string cpf, std::string dataNascimento, int predio, int apartamento, int andar, int vagaGaragem, std::string dataEntrada, std::string dataSaida, std::string telefone, std::string email)
 Construtor da classe Residentes. Mais...
 
int getPredio ()
 Obtém o número do prédio. Mais...
 
int getApartamento ()
 Obtém o número do apartamento. Mais...
 
int getAndar ()
 Obtém o número do andar. Mais...
 
int getVagaGaragem ()
 Obtém o número da vaga de garagem. Mais...
 
std::string getDataEntrada ()
 Obtém a data de entrada. Mais...
 
std::string getDataSaida ()
 Obtém a data de saída. Mais...
 
std::string getTelefone ()
 Obtém o número de telefone. Mais...
 
std::string getEmail ()
 Obtém o endereço de e-mail. Mais...
 
void setPredio (int predio)
 Define o número do prédio. Mais...
 
void setApartamento (int apartamento)
 Define o número do apartamento. Mais...
 
void setAndar (int andar)
 Define o número do andar. Mais...
 
void setVagaGaragem (int vagaGaragem)
 Define o número da vaga de garagem. Mais...
 
void setDataEntrada (std::string dataEntrada)
 Define a data de entrada. Mais...
 
void setDataSaida (std::string dataSaida)
 Define a data de saída. Mais...
 
void setTelefone (std::string telefone)
 Define o número de telefone. Mais...
 
void setEmail (std::string email)
 Define o endereço de e-mail. Mais...
 
- Membros públicos herdados de Pessoa
 Pessoa ()
 Construtor padrão da classe Pessoa. Mais...
 
 Pessoa (std::string nome, std::string cpf, std::string dataNascimento)
 Construtor que inicializa os membros da classe com valores específicos. Mais...
 
std::string getNome ()
 Obtém o nome da pessoa. Mais...
 
std::string getCpf ()
 Obtém o CPF da pessoa. Mais...
 
std::string getDataNascimento ()
 Obtém a data de nascimento da pessoa. Mais...
 
void setNome (std::string nome)
 Define o nome da pessoa. Mais...
 
void setCpf (std::string cpf)
 Define o CPF da pessoa. Mais...
 
void setDataNascimento (std::string dataNascimento)
 Define a data de nascimento da pessoa. Mais...
 

Descrição detalhada

Classe que representa um Porteiro.

Esta classe herda características de Funcionarios, Encomenda, Visitante e Residentes.

Autor
João Paulo

Definido na linha 18 do ficheiro porteiro.hpp.

Documentação dos métodos

◆ atualizarArquivo()

void Porteiro::atualizarArquivo ( std::string  nomeArquivo)

Atualiza as informações do arquivo com base nos dados do objeto.

Parâmetros
nomeArquivoNome do arquivo a ser atualizado.

Definido na linha 67 do ficheiro porteiro.cpp.

67  {
68  fstream arquivo;
69  arquivo.open(nomeArquivo + ".txt", ios::out | ios::trunc);
70 
71  if(arquivo.is_open()){
72  if(nomeArquivo == "archives/visitantes"){
73  for(int i = 0; i < Visitantes.size(); i++){
74  arquivo << Visitantes[i].getNomeVisitante() << endl;
75  arquivo << Visitantes[i].getNomeVisitado() << endl;
76  arquivo << Visitantes[i].getApartamento() << endl;
77  arquivo << Visitantes[i].getAndar() << endl;
78  arquivo << Visitantes[i].getDataVisita() << endl;
79  arquivo << endl;
80  }
81  } else if(nomeArquivo == "archives/encomendas"){
82  for(int i = 0; i < encomendas.size(); i++){
83  arquivo << encomendas[i].getNomeRemetente() << endl;
84  arquivo << encomendas[i].getNomeDestinatario() << endl;
85  arquivo << encomendas[i].getCpfDestinatario() << endl;
86  arquivo << encomendas[i].getNumeroApartamento() << endl;
87  arquivo << encomendas[i].getDataRecebimento() << endl;
88  arquivo << endl;
89  }
90  }
91  arquivo.close();
92  } else{
93  cout << "Erro ao abrir o arquivo!" << endl;
94  }
95 }

◆ buscarEncomenda()

void Porteiro::buscarEncomenda ( )

Busca uma encomenda pelo CPF.

Definido na linha 209 do ficheiro porteiro.cpp.

209  {
210  string cpfDestinatario;
211  bool encontrou = false;
212 
213  system("clear || cls");
214  cout << "Digite o CPF do destinatário: ";
215  cin.ignore();
216  getline(cin, cpfDestinatario);
217 
218  if(encomendas.size() == 0){
219  system("clear || cls");
220  cout << "---Não há encomendas cadastradas!---\n" << endl;
221  } else{
222  for(int i = 0; i < encomendas.size(); i++){
223  if(encomendas[i].getCpfDestinatario() == cpfDestinatario){
224  cout << "---------------------------------" << endl;
225  cout << "Nome do remetente: " << encomendas[i].getNomeRemetente() << endl;
226  cout << "Nome do destinatário: " << encomendas[i].getNomeDestinatario() << endl;
227  cout << "CPF do destinatário: " << encomendas[i].getCpfDestinatario() << endl;
228  cout << "Número do apartamento: " << encomendas[i].getNumeroApartamento() << endl;
229  cout << "Data de recebimento: " << encomendas[i].getDataRecebimento() << endl;
230  cout << "---------------------------------\n" << endl;
231  encontrou = true;
232  }
233  }
234  }
235 
236  if(!encontrou){
237  system("clear || cls");
238  cout << "---Não há encomendas cadastradas para esse CPF!---\n" << endl;
239  }
240 }
std::string getCpfDestinatario()
Obtém o CPF do destinatário da encomenda.
Definition: encomenda.cpp:31

◆ buscarVisitanteData()

void Porteiro::buscarVisitanteData ( )

Busca visitantes com base em uma data específica.

Definido na linha 242 do ficheiro porteiro.cpp.

242  {
243  string buscarData;
244  bool encontrou = false;
245 
246  system("clear || cls");
247  cout << "Digite a data da visita: ";
248  cin.ignore();
249  getline(cin, buscarData);
250 
251  if(Visitantes.size() == 0){
252  cout << "---Não há visitantes cadastrados!---\n" << endl;
253  } else{
254  for(int i = 0; i < Visitantes.size(); i++){
255  if(Visitantes[i].getDataVisita() == buscarData){
256  cout << "---------------------------------" << endl;
257  cout << "Nome do visitante: " << Visitantes[i].getNomeVisitante() << endl;
258  cout << "Nome do visitado: " << Visitantes[i].getNomeVisitado() << endl;
259  cout << "Número do apartamento: " << Visitantes[i].getApartamento() << endl;
260  cout << "Número do andar: " << Visitantes[i].getAndar() << endl;
261  cout << "Data da visita: " << Visitantes[i].getDataVisita() << endl;
262  cout << "---------------------------------\n" << endl;
263  encontrou = true;
264  }
265  }
266  }
267 
268  if(!encontrou){
269  system("clear || cls");
270  cout << "---Não há visitantes cadastrados nessa data!---\n" << endl;
271  }
272 }
std::string getDataVisita()
Obtém a data da visita.
Definition: visitante.cpp:39

◆ cadastrarEncomenda()

void Porteiro::cadastrarEncomenda ( )

Cadastra uma nova encomenda.

Definido na linha 120 do ficheiro porteiro.cpp.

120  {
121  string nomeRemetente, nomeDestinatario, cpfDestinatario, numeroApartamento, dataRecebimento;
122 
123  system("clear || cls");
124  cout << "Cadastro de encomenda" << endl;
125  cout << "Nome do remetente: ";
126  cin.ignore();
127  getline(cin, nomeRemetente);
128  cout << "Nome do destinatário: ";
129  getline(cin, nomeDestinatario);
130  cout << "CPF do destinatário: ";
131  getline(cin, cpfDestinatario);
132  cout << "Número do apartamento: ";
133  getline(cin, numeroApartamento);
134  cout << "Data de recebimento: ";
135  getline(cin, dataRecebimento);
136 
137  system("clear || cls");
138  cout << "---Encomenda cadastrada com sucesso!---\n" << endl;
139  Encomenda encomenda(nomeRemetente, nomeDestinatario, cpfDestinatario, numeroApartamento, dataRecebimento);
140  encomendas.push_back(encomenda);
141 
142  fstream arquivo;
143  arquivo.open("archives/encomendas.txt", ios::out | ios::app);
144  if(arquivo.is_open()){
145  arquivo << nomeRemetente << endl;
146  arquivo << nomeDestinatario << endl;
147  arquivo << cpfDestinatario << endl;
148  arquivo << numeroApartamento << endl;
149  arquivo << dataRecebimento << endl;
150  arquivo << endl;
151  arquivo.close();
152  }
153 
154 }
Classe que representa uma encomenda.
Definition: encomenda.hpp:10

◆ cadastrarVisitante()

void Porteiro::cadastrarVisitante ( )

Cadastra um novo visitante.

Definido na linha 156 do ficheiro porteiro.cpp.

156  {
157  string nomeVisitante, nomeVisitado, dataVisita;
158  int apartamento, andar;
159 
160  system("clear || cls");
161  cout << "Cadastro de visitante" << endl;
162  cout << "Nome do visitante: ";
163  cin.ignore();
164  getline(cin, nomeVisitante);
165  cout << "Nome do visitado: ";
166  getline(cin, nomeVisitado);
167  apartamento = lerInt(apartamento, "Número do apartamento: ");
168  andar = lerInt(andar, "Número do andar: ");
169  cin.ignore();
170  cout << "Data da visita: ";
171  getline(cin, dataVisita);
172 
173  system("clear || cls");
174  cout << "---Visitante cadastrado com sucesso!---\n" << endl;
175  Visitante visitante(nomeVisitante, nomeVisitado, apartamento, andar, dataVisita);
176  Visitantes.push_back(visitante);
177 
178  fstream arquivo;
179  arquivo.open("archives/visitantes.txt", ios::out | ios::app);
180  if(arquivo.is_open()){
181  arquivo << nomeVisitante << endl;
182  arquivo << nomeVisitado << endl;
183  arquivo << apartamento << endl;
184  arquivo << andar << endl;
185  arquivo << dataVisita << endl;
186  arquivo << endl;
187  arquivo.close();
188  }
189 }
int lerInt(int numero, std::string msg)
Lê um número inteiro da entrada padrão com validação.
Definition: porteiro.cpp:97
Classe que representa um Visitante.
Definition: visitante.hpp:10

◆ lerArquivo()

void Porteiro::lerArquivo ( std::string  nomeArquivo)

Lê informações de um arquivo e carrega os dados do objeto.

Parâmetros
nomeArquivoNome do arquivo a ser lido.

Definido na linha 21 do ficheiro porteiro.cpp.

21  {
22  string nomeRemetente, nomeDestinatario,cpfDestinatario, numeroApartamento, dataRecebimento;
23  string nomeVisitante, nomeVisitado, dataVisita;
24  int apartamento, andar;
25  vector<string> linhas;
26  fstream arquivo;
27 
28  arquivo.open(nomeArquivo + ".txt", ios::in | ios::app);
29 
30  if(arquivo.is_open()){
31  string linha;
32 
33  while(getline(arquivo, linha)){
34  linhas.push_back(linha);
35  }
36 
37  arquivo.close();
38  } else{
39  cout << "Erro ao abrir o arquivo!" << endl;
40  }
41 
42  if(nomeArquivo == "archives/visitantes"){
43  for(int i = 0; i < linhas.size(); i+=6){
44  nomeVisitante = linhas[i];
45  nomeVisitado = linhas[i+1];
46  apartamento = stoi(linhas[i+2]);
47  andar = stoi(linhas[i+3]);
48  dataVisita = linhas[i+4];
49 
50  Visitante visitante(nomeVisitante, nomeVisitado, apartamento, andar, dataVisita);
51  Visitantes.push_back(visitante);
52  }
53  } else if(nomeArquivo == "archives/encomendas"){
54  for(int i = 0; i < linhas.size(); i+=6){
55  nomeRemetente = linhas[i];
56  nomeDestinatario = linhas[i+1];
57  cpfDestinatario = linhas[i+2];
58  numeroApartamento = linhas[i+3];
59  dataRecebimento = linhas[i+4];
60 
61  Encomenda encomenda(nomeRemetente, nomeDestinatario, cpfDestinatario, numeroApartamento, dataRecebimento);
62  encomendas.push_back(encomenda);
63  }
64  }
65 }

◆ lerInt()

int Porteiro::lerInt ( int  numero,
std::string  msg 
)

Lê um número inteiro da entrada padrão com validação.

Parâmetros
numeroVariável para armazenar o número lido.
msgMensagem a ser exibida antes da leitura.
Retorna
Número inteiro lido.

Definido na linha 97 do ficheiro porteiro.cpp.

97  {
98  bool flag = false;
99 
100  do{
101  try{
102  cout << msg;
103  cin >> numero;
104  if(cin.fail()){
105  throw runtime_error("\n---Erro: Digite um número inteiro!---\n");
106  } else{
107  flag = true;
108  }
109  } catch(runtime_error &e){
110  system("clear || cls");
111  cout << e.what() << endl;
112  cin.clear();
113  cin.ignore(numeric_limits<streamsize>::max(), '\n');
114  }
115  } while(!flag);
116 
117  return numero;
118 }

◆ listarEncomendas()

void Porteiro::listarEncomendas ( )

Lista todas as encomendas.

Esta função exibe uma lista de todas as encomendas disponíveis. Cada encomenda é exibida com informações relevantes, como nome do remetente, nome do destinatário, CPF do destinatário, número do apartamento e data de recebimento.

Definido na linha 274 do ficheiro porteiro.cpp.

274  {
275  system("clear || cls");
276  if(encomendas.size() == 0){
277  cout << "---Não há encomendas cadastradas!" << endl;
278  } else{
279  cout << " -----Lista de encomendas-----" << endl;
280  for(int i = 0; i < encomendas.size(); i++){
281  cout << "Nome do remetente: " << encomendas[i].getNomeRemetente() << endl;
282  cout << "Nome do destinatário: " << encomendas[i].getNomeDestinatario() << endl;
283  cout << "CPF do destinatário: " << encomendas[i].getCpfDestinatario() << endl;
284  cout << "Número do apartamento: " << encomendas[i].getNumeroApartamento() << endl;
285  cout << "Data de recebimento: " << encomendas[i].getDataRecebimento() << endl;
286  cout << "---------------------------------\n" << endl;
287  }
288  }
289 }

◆ listarVisitantes()

void Porteiro::listarVisitantes ( )

Lista todos os visitantes cadastrados.

Definido na linha 191 do ficheiro porteiro.cpp.

191  {
192  system("clear || cls");
193  if(Visitantes.size() == 0){
194  cout << "---Não há visitantes cadastrados!" << endl;
195  } else{
196  cout << " -----Lista de visitantes-----" << endl;
197  for(int i = 0; i < Visitantes.size(); i++){
198  cout << "Visitante Nº " << i + 1 << endl;
199  cout << "Nome do visitante: " << Visitantes[i].getNomeVisitante() << endl;
200  cout << "Nome do visitado: " << Visitantes[i].getNomeVisitado() << endl;
201  cout << "Número do apartamento: " << Visitantes[i].getApartamento() << endl;
202  cout << "Número do andar: " << Visitantes[i].getAndar() << endl;
203  cout << "Data da visita: " << Visitantes[i].getDataVisita() << endl;
204  cout << "---------------------------------\n" << endl;
205  }
206  }
207 }

◆ menuPorteiro()

void Porteiro::menuPorteiro ( )

Exibe o menu do Porteiro.

Definido na linha 10 do ficheiro porteiro.cpp.

10  {
11  cout << "1- Cadastrar visitante" << endl;
12  cout << "2- Cadastrar encomenda" << endl;
13  cout << "3- Listar visitantes" << endl;
14  cout << "4- Buscar encomenda" << endl;
15  cout << "5- Buscar visitante por data" << endl;
16  cout << "6- Listar encomendas" << endl;
17  cout << "7- Sair" << endl;
18 }

A documentação para esta classe foi gerada a partir dos seguintes ficheiros: