Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
karenfreitas

Lista de Celulares - Dificuldade em alterar dados de um celular

Question

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] 

Edited by karenfreitas

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148407
    • Total Posts
      643815
×
×
  • Create New...