Ir para conteúdo
Fórum Script Brasil
  • 0

Matheus Fernandes

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...