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;
22 string nomeRemetente, nomeDestinatario,cpfDestinatario, numeroApartamento, dataRecebimento;
23 string nomeVisitante, nomeVisitado, dataVisita;
24 int apartamento, andar;
25 vector<string> linhas;
28 arquivo.open(nomeArquivo +
".txt", ios::in | ios::app);
30 if(arquivo.is_open()){
33 while(getline(arquivo, linha)){
34 linhas.push_back(linha);
39 cout <<
"Erro ao abrir o arquivo!" << endl;
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];
50 Visitante visitante(nomeVisitante, nomeVisitado, apartamento, andar, dataVisita);
51 Visitantes.push_back(visitante);
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];
61 Encomenda encomenda(nomeRemetente, nomeDestinatario, cpfDestinatario, numeroApartamento, dataRecebimento);
62 encomendas.push_back(encomenda);
69 arquivo.open(nomeArquivo +
".txt", ios::out | ios::trunc);
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;
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;
93 cout <<
"Erro ao abrir o arquivo!" << endl;
105 throw runtime_error(
"\n---Erro: Digite um número inteiro!---\n");
109 }
catch(runtime_error &e){
110 system(
"clear || cls");
111 cout << e.what() << endl;
113 cin.ignore(numeric_limits<streamsize>::max(),
'\n');
121 string nomeRemetente, nomeDestinatario, cpfDestinatario, numeroApartamento, dataRecebimento;
123 system(
"clear || cls");
124 cout <<
"Cadastro de encomenda" << endl;
125 cout <<
"Nome do remetente: ";
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);
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);
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;
157 string nomeVisitante, nomeVisitado, dataVisita;
158 int apartamento, andar;
160 system(
"clear || cls");
161 cout <<
"Cadastro de visitante" << endl;
162 cout <<
"Nome do visitante: ";
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: ");
170 cout <<
"Data da visita: ";
171 getline(cin, dataVisita);
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);
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;
192 system(
"clear || cls");
193 if(Visitantes.size() == 0){
194 cout <<
"---Não há visitantes cadastrados!" << endl;
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;
210 string cpfDestinatario;
211 bool encontrou =
false;
213 system(
"clear || cls");
214 cout <<
"Digite o CPF do destinatário: ";
216 getline(cin, cpfDestinatario);
218 if(encomendas.size() == 0){
219 system(
"clear || cls");
220 cout <<
"---Não há encomendas cadastradas!---\n" << endl;
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;
237 system(
"clear || cls");
238 cout <<
"---Não há encomendas cadastradas para esse CPF!---\n" << endl;
244 bool encontrou =
false;
246 system(
"clear || cls");
247 cout <<
"Digite a data da visita: ";
249 getline(cin, buscarData);
251 if(Visitantes.size() == 0){
252 cout <<
"---Não há visitantes cadastrados!---\n" << endl;
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;
269 system(
"clear || cls");
270 cout <<
"---Não há visitantes cadastrados nessa data!---\n" << endl;
275 system(
"clear || cls");
276 if(encomendas.size() == 0){
277 cout <<
"---Não há encomendas cadastradas!" << endl;
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;
Classe que representa uma encomenda.
void buscarVisitanteData()
Busca visitantes com base em uma data específica.
void cadastrarVisitante()
Cadastra um novo visitante.
void buscarEncomenda()
Busca uma encomenda pelo CPF.
void lerArquivo(std::string nomeArquivo)
Lê informações de um arquivo e carrega os dados do objeto.
void menuPorteiro()
Exibe o menu do Porteiro.
void listarVisitantes()
Lista todos os visitantes cadastrados.
void cadastrarEncomenda()
Cadastra uma nova encomenda.
int lerInt(int numero, std::string msg)
Lê um número inteiro da entrada padrão com validação.
void listarEncomendas()
Lista todas as encomendas.
void atualizarArquivo(std::string nomeArquivo)
Atualiza as informações do arquivo com base nos dados do objeto.
Classe que representa um Visitante.