Good night everyone,
I have to deliver a job in college, the same is being done in C ++.
As it is the first time that 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 written as follows:
- 1 | henrique felix | 4324342 | 23424-5 | 01/23/1997 | andres, 483 | drinking center | 1799999999 | [email protected]
- 2 | Leonardo Felix | 32312312 | 34235 | 2/17/1997 | andreas | center | drinker | 1799999999 | leo.foda
I can normally list this data, but the job requires that it has a search option, ie the user informs a value and the system searches the file for the data.
Below, it follows my function to search the registered clients, it should have 4 options: 1 - search for code, 2 - search for name, 3 - search for cpf - These 3 parts are working correctly - 4 - search by city (here, it should bring the result of all clients of x city informed.
Ex: sao paulo - > will list all customers from sao paulo
But I packed that 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 do to list the data?
Thank you in advance