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

Funções (Editar , Excluir) [Help plz]


Head

Pergunta

Olá a todos! Primeira vez no tópico, e com pressa! Desculpem as ca**das.

Estou fazendo um projeto em c++, mais especificamente, um cadastro. De que? Produtos em geral... Nada muito complexo não.

O problema é que eu ainda não consegui arrumar as 2 ultimas funções que faltam pro projeto ficar bem feito. Quais são? Editar e Excluir cadastro.

Meu projeto é este :

#include<iostream>
using namespace std;

/*    *****************************************************************
      *                Projeto: Register                              *
      *                Autores: Thiago Rodrigues                      *
      *                         Guilherme XXXXXXXX                    *
      *                05/12/2009                                     *
      *                2º Periodo Eng.Elétrica - Inatel               *
      *                Prof. Rosana                                   *
      *                                                               *
      *                Descrição:                                     *
      *                Este programa serve para manter                *
      *                registrado os produtos que voce                *
      *                deseja fiscalizar, independentemente           *
      *                do produto.                                    *
      *                Bom uso.                                       *
      *****************************************************************
*/
struct dados
{
    char nome[51]; //Nome do produto
    char dsc[501]; //Descrição do produto
    int qt; //Unidades
    int qtv; //Unidades vendidas
    int qtd; //Unidades defeituosas
    int D; //Dia entrada
    int M; //Mês entrada
    int A; //Ano entrada
    int HR; //Hora entrada
    int MIM; //Minutos entrada
    int SG; //Segundos entrada
    int DS; //Dia saida
    int MS; //Mês saida
    int AS; //Ano saida
    int HRS; //Hora saida
    int MIMS; //Minutos saida
    int SGS; //Segundos saida
    float preço; //Preço do produto    
} x;

FILE *arquivo = NULL;
int cont=0;

void cadastrar();
void listar();
void procurar();
void editar();
void excluir();

int main()
{
    system("color 80");
    int op;
    system("date /t");
    system("time /t");

    arquivo = fopen("Register.txt","r+");

    if(arquivo == NULL)
    {
        cout<<"Arquivo inexistente."<<endl;
        cout<<"Criando arquivo..."<<endl;
        arquivo = fopen("Register.txt","w+");
        if(arquivo == NULL)
        {
            cout<<"não é possivel criar este arquivo!"<<endl;
            exit(1);
        }

        fseek(arquivo, 0, SEEK_SET);
        fwrite(&cont, sizeof(cont), 1, arquivo);
    }
    else
    {
        cout<<"                                                      "<<endl;
        cout<<"                                                      "<<endl;
        cout<<"                           Arquivo aberto com sucesso!"<<endl;
        fseek(arquivo, 0, SEEK_SET);
        fread(&cont, sizeof(cont), 1, arquivo);
    }

    do{
        do{
            cout<<"                    |--------------------------------------|"<<endl;
            cout<<"                    |            Menu Register             |"<<endl;
            cout<<"                    |                                      |"<<endl;
            cout<<"                    |       1 - Registrar Produto          |"<<endl;        
            cout<<"                    |       2 - Produtos Registrados       |"<<endl;
            cout<<"                    |       3 - Procurar Produto           |"<<endl;
            cout<<"                    |       4 - Editar produto             |"<<endl;
            cout<<"                    |       5 - Excluir produto            |"<<endl;
            cout<<"                    |                                      |"<<endl;
            cout<<"                    |       6 - Sair                       |"<<endl;
            cout<<"                    |--------------------------------------|"<<endl;
            cout<<"                                                            "<<endl;
            cout<<"                              Opcao: ";cin>>op;

        } while((op<1) || (op>6));

        switch(op)
        {
            case 1:
                system("cls");
                cadastrar();
                break;
            case 2:
                system("cls");
                listar();
                break;
            case 3:
                system("cls");
                procurar();
                break;
            case 4:
                system("cls");
                editar();
                break;
            case 5:
                system("cls");
                excluir();
                break;
            case 6:
                system("cls");
                cout<<"Saindo do programa..."<<endl;
                break;
            default:
                system("cls");
                cout<<"Digite uma opcao valida"<<endl;
        }
        system("pause");
        system("cls");
    } while(op!=4);

    fclose(arquivo);
}

void cadastrar()
{
    cout<<" -------------------------- Registro --------------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Digite o nome do produto: ";
    cin.ignore();
    cin.getline(x.nome, 50);
    cout<<"             O preço do produto (Use '.' nos centavos): ";
    cin>>x.preço;
    cout<<"                          "<<endl;
    cout<<" -------------------------- Unidades --------------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Total: ";
    cin>>x.qt;
    cout<<"             Vendidas: ";
    cin>>x.qtv;
    cout<<"             Defeituosas/Devolvidas: ";
    cin>>x.qtd;
    cout<<"                          "<<endl;
    cout<<" ----------------------- Data de entrada ----------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Dia: ";
    cin>>x.D;
    cout<<"             Mes: ";
    cin>>x.M;
    cout<<"             Ano: ";
    cin>>x.A;
    cout<<"                          "<<endl;
    cout<<" ---------------------------- Hora ----------------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Hora: ";
    cin>>x.HR;
    cout<<"             Minuto: ";
    cin>>x.MIM;
    cout<<"             Segundo: ";
    cin>>x.SG;
    cout<<"                          "<<endl;
    cout<<" ----------------------- Data de saida ------------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Dia: ";
    cin>>x.DS;
    cout<<"             Mes: ";
    cin>>x.MS;
    cout<<"             Ano: ";
    cin>>x.AS;
    cout<<"                          "<<endl;
    cout<<" ----------------------- Hora de saida ------------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Hora: ";
    cin>>x.HRS;
    cout<<"             Minuto: ";
    cin>>x.MIMS;
    cout<<"             Segundo: ";
    cin>>x.SGS;
    cout<<"                          "<<endl;
    cout<<" --------------------------------------------------------------"<<endl;
    cout<<"                          "<<endl;
    cout<<"             Descricao do produto: "<<endl;
    cin.ignore();
    cin.getline(x.dsc, 500);

    fseek(arquivo, sizeof(cont)+sizeof(dados)*cont, SEEK_SET);
    fwrite(&x, sizeof(dados), 1, arquivo);

    cont++;

    fseek(arquivo, 0, SEEK_SET);
    fwrite(&cont, sizeof(cont), 1, arquivo);
}

void listar()
{
    int posicao;

    for(int i=0; i<cont; i++)
    {
        posicao = sizeof(cont)+sizeof(dados)*i;
        fseek(arquivo, posicao, SEEK_SET);
        fread(&x, sizeof(dados), 1, arquivo);

        cout<<" |---------------------------------------------------------"<<endl;
        cout<<" |      Produto: "<<x.nome<<endl;
        cout<<" |      preço: R$"<<x.preço<<endl;
        cout<<" |-                                                        "<<endl; 
        cout<<" |      Total (Unidades): "<<x.qt<<endl;
        cout<<" |      Vendidas (Unidades): "<<x.qtv<<endl;
        cout<<" |      Defeituosa/Devolvida (Unidades): "<<x.qtd<<endl;
        cout<<" |-                                                        "<<endl;
        cout<<" |      Data - entrada: "<<x.D<<"/"<<x.M<<"/"<<x.A<<" --- "<<x.HR<<":"<<x.MIM<<":"<<x.SG<<endl;
        cout<<" |      Data - saida: "<<x.DS<<"/"<<x.MS<<"/"<<x.AS<<" --- "<<x.HRS<<":"<<x.MIMS<<":"<<x.SGS<<endl;
        cout<<" |-                                                        "<<endl;
        cout<<" |      Descricao: "<<endl;
        cout<<" |      "<<x.dsc<<endl;
        cout<<" |---------------------------------------------------------"<<endl;
    }
}

void procurar()
{
    int posicao;
    bool achou=false;
    char name[51];

    cout<<"Digite o nome do produto: ";
    cin.ignore();
    cin.getline(name, 50);

    for(int i=0; i<cont; i++)
    {
        posicao = sizeof(cont)+sizeof(dados)*i;
        fseek(arquivo, posicao, SEEK_SET);
        fread(&x, sizeof(dados), 1, arquivo);

        if(strcmpi(x.nome, name)==0)
        {
            achou=true;
            cout<<" |---------------------------------------------------------"<<endl;
            cout<<" |      Produto: "<<x.nome<<endl;
            cout<<" |      preço: R$"<<x.preço<<endl;
            cout<<" |-                                                        "<<endl; 
            cout<<" |      Total (Unidades): "<<x.qt<<endl;
            cout<<" |      Vendidas (Unidades): "<<x.qtv<<endl;
            cout<<" |      Defeituosa/Devolvida (Unidades): "<<x.qtd<<endl;
            cout<<" |-                                                        "<<endl;
            cout<<" |      Data - entrada: "<<x.D<<"/"<<x.M<<"/"<<x.A<<" --- "<<x.HR<<":"<<x.MIM<<":"<<x.SG<<endl;
            cout<<" |      Data - saida: "<<x.DS<<"/"<<x.MS<<"/"<<x.AS<<" --- "<<x.HRS<<":"<<x.MIMS<<":"<<x.SGS<<endl;
            cout<<" |-                                                        "<<endl;
            cout<<" |      Descricao: "<<endl;
            cout<<" |      "<<x.dsc<<endl;
            cout<<" |---------------------------------------------------------"<<endl;
        }
    }
    if(achou == false)
        cout<<"Desculpe, produto não encontrado."<<endl;
}
void editar()
{
    //Iagora Jusé?
}
void excluir()
{
    //Iagora jusé?
}

Gostaria de ajuda, qualquer tipo de ajuda, pra fazer estas 2 funções, ai sim termino meu projetinho :)

Obrigado pela atenção ai, aguardo respostas!!

EDIT: Tava pensando ... Nas 2 funções terei que procurar o produto, certo? Portanto meio caminho andando, já tenho a função procurar.

Copio a função 'procurar' e colo pra fazer o inicio da função 'editar', quando esta achar o produto, ira fazer a seguinte pergunta... cout<<"Este é o produto que você deseja editar ? ai vem o resto que to com duvida... "digite sim se for, e não se não for" caso resposta seja sim entre em modo de edição (que eu n sei como fazer) caso resposta seja não, faça a seguinte pergunta, deseja procurar denovo ? Se sim, procure, se não, volte ao menu.

isso serve para função excluir também.

Alguma alma generosa da uma luz ?? Vlwwss XD

Editado por Head
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá Head.

Uma maneira simples para excluir o cadastro seria você atribuir uma palavra chave no cadastro que deseja excluir, de modo que quando você listar os cadastros ele o ignore. Por exemplo você pode excluir um cadastro atribuindo o nome do produto como "IGN". Ai você coloca uma condição na função de listar os produtos para que ele não exiba os produtos com nome "IGN".

Observe que o registro ainda continuará no arquivo, ele apenas não será exibido.

Agora para editar faz assim.

Quando o usuário buscar o registro para ser editado, a função de busca tem que te retornar a posição do registro no arquivo. Com isso você usa o fseek para posicionar nessa posição e fwrite para escrever os novos valores.

Espero que dê certo ai.

Abraço.

Link para o comentário
Compartilhar em outros sites

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...