0
Good night to you all,
I have to deliver a job in college , the same being done in C++.
As it is the first time I come across this language , I have a problem in one of the part of the program.
Follows :
In the text file, the data is recorded as follows:
- 1|Henrique Felix|4324342|23424-5|23/01/1997|Rua dos Bottled,483|centre|drinking bottle|1799999999|[email protected]
- 2|Leonardo Felix|32312312|34235|17/02/1997|Rua dos Andradas|center|drinking bottle|1799999999|leo.foda
I can normally list this data , but the work requires that you have a search option , that is, the user informs a value and the system searches the file for the data.
Below , follows my function to seek registered customers , she must have 4 options : 1 - search by code ,2 - search by name , 3 - search by Cpf - These 3 parts are working correctly - 4 - search by city ( here , should bring the result of all customers x city informed.
Ex: sao paulo -> ira list all customers from sao paulo
But , I stopped in this last part.
void buscarClientes() {
system("cls");
Cliente cliente;
fstream arquivo;
string codCliente;
int cod, i;
string nome, cpf, cidade;
cout << "--------------------------------------------------------\n";
cout << "-------------------- Buscar clientes por: --------------\n\n";
cout << "1 - Código | 2 - Nome | 3 - CPF | 4 - Cidade \n\n";
cout << "Opção': ";
cin >> i;
rewind(stdin); //limpa o buffer do teclado
arquivo.open("dados/clientes.txt", ios::in);
if (arquivo.is_open()) {
while (!arquivo.eof()) {
getline(arquivo, codCliente, '|');
if (codCliente != "") {
cliente.codigo = stoi(codCliente); //converte a string codCliente para inteiro
getline(arquivo, cliente.nome, '|');
getline(arquivo, cliente.cpf, '|');
getline(arquivo, cliente.rg, '|');
getline(arquivo, cliente.data_nasc, '|');
getline(arquivo, cliente.endereco, '|');
getline(arquivo, cliente.bairro, '|');
getline(arquivo, cliente.cidade, '|');
getline(arquivo, cliente.telefone, '|');
getline(arquivo, cliente.email,'|');
if (i == 1) {
cout << "Informe o código do cliente: ";
cin >> cod;
rewind(stdin); //limpa o buffer do teclado
if (cliente.codigo == cod) {
cout << "\nCódigo: " << cliente.codigo << " || Nome: " << cliente.nome << "\n";
cout << "CPF: " << cliente.cpf << " || RG: " << cliente.rg << "\n";
cout << "Data de nascimento: " << cliente.data_nasc << "\n";
cout << "Endereço: " << cliente.endereco << "\n";
cout << "Bairro: " << cliente.bairro << " || Cidade: " << cliente.cidade << "\n";
cout << "Telefone: " << cliente.telefone << "\n";
cout << "E-mail: " << cliente.email;
cout << "\n--------------------------------";
system("pause > null"); //para a execução para poder exibir o cliente encontrado
break; //Termina a execução do while, sem precisar ler todo o arquivo
}
}else if (i == 2) {
cout << "Informe o nome do cliente: ";
getline(cin,nome);
transform(nome.begin(), nome.end(), nome.begin(), ::tolower); //converte as letras maiusculas
//para minusculas
if (cliente.nome == nome) {
cout << "\nCódigo: " << cliente.codigo << " || Nome: " << cliente.nome << "\n";
cout << "CPF: " << cliente.cpf << " || RG: " << cliente.rg << "\n";
cout << "Data de nascimento: " << cliente.data_nasc << "\n";
cout << "Endereço: " << cliente.endereco << "\n";
cout << "Bairro: " << cliente.bairro << " || Cidade: " << cliente.cidade << "\n";
cout << "Telefone: " << cliente.telefone << "\n";
cout << "E-mail: " << cliente.email;
cout << "\n--------------------------------";
system("pause > null"); //para a execução para poder exibir o cliente encontrado
break; //Termina a execução do while, sem precisar ler todo o arquivo
}else {
cout << "Cliente não encontradado! Tente novamente!\n";
}
}else if (i == 3) {
cout << "Informe o cpf do cliente: ";
cin >> cpf;
if (cliente.cpf == cpf) {
cout << "\nCódigo: " << cliente.codigo << " || Nome: " << cliente.nome << "\n";
cout << "CPF: " << cliente.cpf << " || RG: " << cliente.rg << "\n";
cout << "Data de nascimento: " << cliente.data_nasc << "\n";
cout << "Endereço: " << cliente.endereco << "\n";
cout << "Bairro: " << cliente.bairro << " || Cidade: " << cliente.cidade << "\n";
cout << "Telefone: " << cliente.telefone << "\n";
cout << "E-mail: " << cliente.email;
cout << "\n--------------------------------";
system("pause > null"); //para a execução para poder exibir o cliente encontrado
break; //Termina a execução do while, sem precisar ler todo o arquivo
}
}//if opçao 3
else if (i == 4) {
cout << "Informe a cidade do cliente: ";
cin >> cidade;
cout << "\n---- CLIENTES da cidade de:" << cidade << "---------\n\n";
} //if de cidade
else {
cout << "Opção invalida!! Tente novamente!!\n";
}
}//IF cod cliente != null
}//while arquivo aberto
arquivo.close(); // fecha o arquivo
}
else {
cout << "Não foi possível abrir o arquivo!";
}
}
How can I list the data ?
From now on, thank you
Hello, Henrique. Could you explain better which part is causing you doubts? It seems to me that you couldn’t think of the algorithm, as it involves searching for data that matches a potentially repeated value. That’s it?
– Pablo Almeida
good afternoon @Pablo , sorry the delay in responding. Exactly that , I’ve thought about how to do , but in none of the attempts I succeeded. All the rest of the program is ready, because I must present it later this week , I owe only this part to conclude.
– Henrique Felix
@Henriquefelix If you can post the answer if you have it, it will help the community.
– Ismael