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

Lista de Celulares - Dificuldade em alterar dados de um celular


karenfreitas

Pergunta

Olá pessoal, estou trabalhando em programa de lista técnica de celulares. Falta apenas uma função, que a função alterar dados de um celular. Já tentei fazer isso utilizando fseek, utilizando algo como renomear arquvos mas não deu certo, meu professor deu uma dica para dividir sub-menus e depois usar o strcpy, também tentei mas não consegui... Penso que strcpy seria uma boa maneira, mas sério não consigo utilizar, se vocês puderem me ajudar fico grata. Abaixo colocarei o código a titulo de informação, vocês talvez encontraram erros nele... Mas minha maior preocupação é sobre como alterar esses benditos dados de um celular.

 

[code]

#define MAX 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct celular
{
    char marca[15];
    char modelo[25];
    char processador[10];
    char memoria [8];
    char tela [4];
    char inter [4];
    char sisopera [15];
    char valor [10];
};
typedef struct celular TCelular;

struct listaDeCelulares
{
    unsigned ncel;  // Número de celulares na lista
    TCelular celulares[MAX];
};
typedef struct listaDeCelulares TListaCelulares;

void mostreCelular(TCelular cel)
{
    printf("%-12s",cel.marca);
    printf("%-15s",cel.modelo);
    printf("%-8s",cel.processador);
    printf("%-7s",cel.memoria);
    printf("%-4s",cel.tela);
    printf("%-4s",cel.inter);
    printf("%-15s",cel.sisopera);
    printf("%-9s",cel.valor);
    printf("\n");

}

void mostreListaDeCelulares(TListaCelulares *lis)
{
    int i;
    printf("\n\n  ---------------------- Lista de Celulares ----------------------------\n");
    printf("\n");
    printf("  MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
    printf("\n");
    for(i=0; i<lis->ncel; i++) {
        printf("  ");
        mostreCelular(lis->celulares);
        printf("\n");
    }
    printf("\n\n");
}
int buscaCelular(TListaCelulares *lis, TCelular cel)
{
    int i;
    for(i=0; i<lis->ncel; i++)
        if(strcmp(cel.modelo,lis->celulares.modelo) == 0)
            printf("\n");
    return i;
    return -1;
}

int buscaCelularmodelo(TListaCelulares *lis, TCelular cel)
{
    int i;
    for(i=0; i<lis->ncel; i++)
        if(strcmp(cel.modelo,lis->celulares.modelo) == 0)
            mostreCelular(lis->celulares);
            printf("\n");
    return i;
    return -1;
}

int buscaCelularmarca(TListaCelulares *lis, TCelular cel)
{
    int i;
    for(i=0; i<lis->ncel; i++)
        if(strcmp(cel.marca,lis->celulares.marca) == 0)
            mostreCelular(lis->celulares);
        printf("\n\n");
        return i;
        return -1;
}

int buscaCelularinternet(TListaCelulares *lis, TCelular cel)
{
    int i;
    for(i=0; i<lis->ncel; i++)
        if(strcmp(cel.inter,lis->celulares.inter) == 0)
            mostreCelular(lis->celulares);
    printf("\n\n");
    return i;
    return -1;
}

void insereCelular(TListaCelulares *lis, TCelular cel)
{
    lis->celulares[lis->ncel] = cel;
    lis->ncel++;
}

int ordenaMarca(const void *a, const void *b)
{
    TCelular *ca = (TCelular *) a;
    TCelular *cb = (TCelular *) b;
    return strcmp(ca->marca,cb->marca);
}

int ordenaValor(const void *a, const void *b)
{
    TCelular *ca = (TCelular *) a;
    TCelular *cb = (TCelular *) b;
    return strcmp(ca->valor,cb->valor);
}

int ordenaProcessador(const void *a, const void *b)
{
    TCelular *ca = (TCelular *) a;
    TCelular *cb = (TCelular *) b;
    return strcmp(ca->processador,cb->processador);
}

TCelular removeCelular(TListaCelulares *lis, int ind)
{
    int i;
    TCelular res = lis->celulares[ind];
    for(i=ind; i<lis->ncel-1; i++)
        lis->celulares = lis->celulares[i+1];
    lis->ncel--;
    return res;
}


char menu()
{
    printf("******************************\n");
    printf("* Ficha T%ccnica de Celulares *\n",130);
    printf("******************************\n\n");
    printf("  1 - BUSCAR  celular pela Marca\n");
    printf("  2 - BUSCAR  pela Tecnologia de Internet (3G ou 4G)\n");
    printf("  3 - INSERIR celular\n");
    printf("  4 - APAGAR  celular\n");
    printf("  5 - MOSTRAR celulares ordenados pela Marca\n");
    printf("  6 - MOSTRAR celulares ordenados pelo Valor\n");
    printf("  7 - MOSTRAR celulares ordenados pelo Processador\n");
    printf("  8 - EDITAR  dados de um celular");
    printf("\n  0 - SAIR do aplicativo\n");
    printf("\n  Escolha uma op%c%co: ",135,198);
    fflush(stdin);
    return getchar();
}

int main()
{
    TListaCelulares liscel;
    liscel.ncel = 0;
    TCelular cel;
    int rb;
    int alterado = 0;
    char op2 = 'A';
    char op = 'A';

    FILE *fp;
    fp = fopen("Celulares.arq","rb");
    if(fp != NULL) {
        fread(&liscel.ncel,sizeof(unsigned),1,fp);
        fread(liscel.celulares,sizeof(TCelular),liscel.ncel,fp);
        //fread(&liscon,sizeof(TListaContatos),1,fp);
    }
    fclose(fp);
    while(op != '0')
    {
        op = menu();
        switch(op)
        {
            fflush(stdin);
            case '1':
                printf("\n\n  **** Filtrar celulares pela marca ****\n");
                printf("\n Marca: ");
                fflush(stdin);
                gets(cel.marca);
                printf("\n\n-------------Lista de Celulares Filtrados pela Marca--------------\n");
                printf("MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
                rb = buscaCelularmarca(&liscel,cel);
                if(rb < 0)
                    printf("\n  **** Celular com esta marca n%co existe ****\n",198);
                printf("\n\n");
                break;
            case '2':
                printf("\n\n **** Filtrar celulares pela Tecnologia de Iternet (3G ou 4G) ****\n");
                printf("\n Tecnologia de Internet: ");
                fflush(stdin);
                gets(cel.inter);
                printf("\n\n------------Lista de Celulares Filtrados pela Internet------------\n");
                printf("MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
                rb = buscaCelularinternet(&liscel,cel);
                if(rb < 0)
                    printf("\n  **** Celular com esta tecnologia de internet n%co existe ****\n",198);
                printf("\n\n");
                break;
            case '3':
                fflush(stdin);
                printf("\n\n  --- Cria novo celular ---\n");
                printf("  Modelo: ");
                gets(cel.modelo);
                rb = buscaCelular(&liscel,cel);
//                if(rb >= 0)
//                    printf("\n  **** Celular existente ****\n\n");
//                else
                {
                    printf("\n\n");
                    printf(" Marca                 : ");
                    gets(cel.marca);
                    printf(" Modelo                : ");
                    gets(cel.modelo);
                    printf(" Processador           : ");
                    fflush(stdin);
                    gets(cel.processador);
                    printf(" Memoria               : ");
                    gets(cel.memoria);
                    printf(" Tela                  : ");
                    gets(cel.tela);
                    printf(" Tecnologia de Internet: ");
                    gets(cel.inter);
                    printf(" Sistema Operacional   : ");
                    gets(cel.sisopera);
                    printf(" Valor                 : ");
                    gets(cel.valor);
                    while(op2!='s' && op2!='S' && op2!='n' && op2!='N')
                    {
                        printf("\n  Salvar celular? (s/n): ");
                        fflush(stdin);
                        op2 = getchar();
                        if(op2=='S' || op2=='s')
                        {
                            alterado = 1;
                            insereCelular(&liscel,cel);
                            printf("\n\n  **** Celular criado ****\n\n");
                        }
                        else
                            if(op2!='N' && op2!='n')
                                printf("\n\n  **** Pressione S ou N ****\n\n");
                    }
                }
                op2 = 'A';
                break;

            case '4':
                fflush(stdin);
                printf("\n\n  **** Apagar celular ****\n");
                printf("  Modelo: ");
                gets(cel.modelo);
                rb = buscaCelular(&liscel,cel);
                if(rb < 0)
                    printf("\n  **** Celular n%co existe ****\n",198);
                else
                {
                    printf("  Excluir %s? (S/N):  ",cel.modelo);
                    op2 = getchar();
                    if(op2=='s' || op2=='S') {
                        removeCelular(&liscel,rb);
                        alterado = 1;
                    }
                }
                printf("\n\n");
                break;
            case '5':
                qsort(liscel.celulares,liscel.ncel,sizeof(TCelular),ordenaMarca);
                mostreListaDeCelulares(&liscel);
                break;
            case '6':
                qsort(liscel.celulares,liscel.ncel,sizeof(TCelular),ordenaValor);
                mostreListaDeCelulares(&liscel);
                break;
            case '7':
                qsort(liscel.celulares,liscel.ncel,sizeof(TCelular),ordenaProcessador);
                mostreListaDeCelulares(&liscel);
                break;
            case '8':
                printf("\n\n");
            case '0':
                break;
            default:
                printf("\n\n  **** Entrada invalida ****\n\n");
        }
    }
    if(alterado)
    {
        printf("\n\n  Arquivo alterado. Deseja salvar as altera%c%ces? (S/N): ",135,228);
        fflush(stdin);
        op2 = getchar();
        if(op2=='S' || op2=='s')
        {
            fp = fopen("Celulares.arq","wb");
            fwrite(&liscel.ncel,sizeof(unsigned),1,fp);
            fwrite(liscel.celulares,sizeof(TCelular),liscel.ncel,fp);
            //fwrite(&liscon,sizeof(TListaContatos),1,fp);
            fclose(fp);
            printf("\n  **** O arquivo foi salvo ****\n");
        }
    }
    printf("\n");
return 0;
}

 [/code] 

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