Alguém poderia me ajudar, o programa basicamente é uma adega de vinhos no qual ele tem q cadastrar, listar e buscar no arquivo.
O que acontece é o seguinte, eu cadastro um tipo de vinho, e listo ele aparece normal, mais quando eu cadastro um novo vinho ele sobrescreve o que já está cadastrado e assim por diante se eu tenta cadastrar outros. Lembrando que no arquivo deve ser gravado em forma de texto e não em binário, deve se ter a conversão usando c_str, é nessa parte o erro. Se alguém poder me dar uma segunda opinião eu agradeço.
Segue abaixo o código: void ListarVinho () o problema!
Pergunta
Matheus Fernandes
Alguém poderia me ajudar, o programa basicamente é uma adega de vinhos no qual ele tem q cadastrar, listar e buscar no arquivo.
O que acontece é o seguinte, eu cadastro um tipo de vinho, e listo ele aparece normal, mais quando eu cadastro um novo vinho ele sobrescreve o que já está cadastrado e assim por diante se eu tenta cadastrar outros. Lembrando que no arquivo deve ser gravado em forma de texto e não em binário, deve se ter a conversão usando c_str, é nessa parte o erro. Se alguém poder me dar uma segunda opinião eu agradeço.
Segue abaixo o código: void ListarVinho () o problema!
#include <iostream>
#include <fstream>
#include <locale>
#include <cstring>
#include <cstdlib>
#include <stdlib.h>
using namespace std;
struct AdegaVinho{
int codigo;
char nome [20];
char tipo [10];
char fabricante [20];
int anoFab;
char recomendacao [1000];
};
void CadastrarVinho();
void ListarVinho();
void BuscarTipoVinho();
void Fabricante();
void AnoFab();
void BuscarRecomendacaoVinho();
int main()
{
setlocale(LC_ALL, "Portuguese");
cout << endl;
cout << "Sistema de Controle da Adega de Vinhos " << endl;
int selecionar;
do{
cout << endl;
cout << endl;
cout << "Selecione qualquer opção listada abaixo no menu: " << endl;
cout << "1 - Cadastrar Vinho: " << endl;
cout << "2 - Listar Todos" << endl;
cout << "3 - Buscar por Tipo" << endl;
cout << "4 - Busca por Fabricante" << endl;
cout << "5 - Buscar Ano de Fabricação" << endl;
cout << "6 - Busca por Recomendação" << endl;
cout << "0 - Sair"<<endl;
cin >> selecionar;
cout << endl;
switch (selecionar){
case 1:CadastrarVinho();
break;
case 2:ListarVinho();
break;
case 3:BuscarTipoVinho();
break;
case 4:Fabricante();
break;
case 5:AnoFab();
break;
case 6:BuscarRecomendacaoVinho();
break;
if(selecionar >= 6 || selecionar < 0){
cout << "Opção Inválida, Tente Novamente..."<< endl;
}
}
}while (selecionar != 0);
return 0;
}
AdegaVinho adegavinho;
void CadastrarVinho(){
fstream arq;
arq.open("dados.txt", ios::in | ios :: out | ios::app);
cout << "Código: ";
cin >> adegavinho.codigo;
cin.ignore();
cout << "Nome: ";
gets (adegavinho.nome);
cout << "Tipo(Tinto/Rose/Branco): ";
gets (adegavinho.tipo);
cout << "Fabricante: ";
gets (adegavinho.fabricante);
cout << "Ano de Fabricação: ";
cin >> adegavinho.anoFab;
cin.ignore();
cout << "Recomendação: ";
gets (adegavinho.recomendacao);
cout << endl;
arq << adegavinho.codigo;
arq << adegavinho.nome;
arq << adegavinho.tipo;
arq << adegavinho.fabricante;
arq << adegavinho.anoFab ;
arq << adegavinho.recomendacao;
arq.close();
};
void ListarVinho (){
int cont = 0;
string texto;
fstream arq;
arq.open("dados.txt", ios::in | ios:: out);
while(arq.good()){
getline(arq, texto);{
// atoi(texto char *str);
strcpy(<arraychar>, texto.c_str());
cout << "Código: " << adegavinho.codigo << endl;
cout << "Nome: " << adegavinho.nome << endl;
cout << "Tipo: " << adegavinho.tipo << endl;
cout << "Fabricante: " << adegavinho.fabricante << endl;
cout << "Ano de Fabricação: " << adegavinho.anoFab << endl;
cout << "Recomendação: " << adegavinho.recomendacao<< endl;
cout << endl;
cont++;
}
}
if (cont == 0){
cout << endl;
cout << "Arquivo Inexistente...";
}
arq.close();
};
void BuscarTipoVinho(){
int cont =0;
string texto;
fstream arq;
char tipo[6];
cout << "Informe o tipo do vinho a ser buscado(Tinto/Rose/Branco) " << endl;
cin >> tipo;
arq.open("dados.txt", ios::in | ios::out);
while(arq.good()){
getline(arq, texto);{
if (strcmp(tipo,adegavinho.tipo)==0){
cout << "Código: " << adegavinho.codigo << endl;
cout << "Nome: " << adegavinho.nome << endl;
cout << "Tipo: " << adegavinho.tipo << endl;
cout << "Fabricante: " << adegavinho.fabricante << endl;
cout << "Ano de Fabricação: " << adegavinho.anoFab << endl;
cout << "Recomendação: " << adegavinho.recomendacao<< endl;
cout << endl;
cont++;
}
}
}
if (cont == 0){
cout << endl;
cout << "Arquivo Inexistente...";
}
arq.close();
};
void Fabricante(){
int cont =0;
string texto;
fstream arq;
char fabricanteT[20];
cout << "Informe o Fabricante do Vinho: " << endl;
cin >> fabricanteT;
arq.open("dados.txt", ios::in | ios::out);
while(arq.good()){
if (strcmp(fabricanteT,adegavinho.fabricante)==0){
getline(arq, texto);{
cout << "Código: " << adegavinho.codigo << endl;
cout << "Nome: " << adegavinho.nome << endl;
cout << "Tipo: " << adegavinho.tipo << endl;
cout << "Fabricante: " << adegavinho.fabricante << endl;
cout << "Ano de Fabricação: " << adegavinho.anoFab << endl;
cout << "Recomendação: " << adegavinho.recomendacao<< endl;
cout << endl;
cont++;
}
}
}
if (cont == 0){
cout << endl;
cout << "Arquivo Inexistente...";
}
arq.close();
};
void AnoFab(){
int cont =0;
string texto;
fstream arq;
int ano;
cout << "Informe o Ano de Fabricação do Vinho: ";
cin >> ano;
arq.open("dados.txt", ios::in | ios::out);
while(arq.good()){
if (ano == adegavinho.anoFab){
getline(arq, texto);{
cout << "Código: " << adegavinho.codigo << endl;
cout << "Nome: " << adegavinho.nome << endl;
cout << "Tipo: " << adegavinho.tipo << endl;
cout << "Fabricante: " << adegavinho.fabricante << endl;
cout << "Ano de Fabricação: " << adegavinho.anoFab << endl;
cout << "Recomendação: " << adegavinho.recomendacao<< endl;
cout << endl;
cont++;
}
}
}
if (cont == 0){
cout << endl;
cout << "Arquivo Inexistente...";
}
arq.close();
};
void BuscarRecomendacaoVinho(){
int cont =0;
string texto;
fstream arq;
char recomendacaoR[1000];
cout << "Informe a Recomendação a ser Buscada: " << endl;
cin >> recomendacaoR;
arq.open("dados.txt", ios::in | ios::out);
while(arq.good()){
//if (recomendacaoR == adegavinho.recomendacao){
if (strcmp(recomendacaoR,adegavinho.recomendacao)==0){
getline(arq, texto);{
cout << "Código: " << adegavinho.codigo << endl;
cout << "Nome: " << adegavinho.nome << endl;
cout << "Tipo: " << adegavinho.tipo << endl;
cout << "Fabricante: " << adegavinho.fabricante << endl;
cout << "Ano de Fabricação: " << adegavinho.anoFab << endl;
cout << "Recomendação: " << adegavinho.recomendacao<< endl;
cout << endl;
cont++;
}
}
}
if (cont == 0){
cout << endl;
cout << "Arquivo Inexistente...";
}
arq.close();
};
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.