Problem when listing text file data in c ++

0

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

    
asked by anonymous 06.11.2015 / 21:35

0 answers