Jump to content
ranistel rodrigues

Simular um telemóvel

Recommended Posts

ranistel rodrigues

Tenho este programa de simular um telemóvel mas não consigo fazer as outras  partes dele .gostaria de ter um ajuda

/*************************************************************************
* UM_AEDII_MOBILE_NETWOR_SIMULATOR:  Programa que impementa              *
*                                    Trabalho prático de AED II          *
*                                    Autor(es) : Ranistel Rodrigues      *
*                                    Docente   : Paulo Silva             *
*                                    Data : 11-05-2016 - Versão 1.0.1    *
*************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>

#include "aed.h"


#define MAX_TELEM 100


//char *rede[MAX_TELEM];
char rede[MAX_TELEM][8];
int PIN[MAX_TELEM];
float saldo[MAX_TELEM];
char *desligado[MAX_TELEM];
char numTele[];
double valorCarregamento;
int _carregamento(char numTele[], double valorCarregamento);
int _chamada(char numeroTelem[]);
char numeroTelem[];
char telemOrigem[], numTelemDestino[],  valor;
int _chamada(char numeroTelem[]);

int main() {
    system ("color F9");

    setlocale(LC_ALL,"");
    int resp;
    int querTerminar=0;

    int num_saldo;
    int desconto;

    char* comando="";
    char comandoD[20];
    char numeroM[8];
    int codPin;
    int contaTelem=0;


    int resultadChamada=0;

    limpaCls();

    msgInicial();

    do {

       resp=lerComando(comandoD);


       switch (resp) {
                case 1 : {
                    resp=lerMovel(numeroM);

                    if (resp == -2) break;

                    if (lerPIN(&codPin) == -2 ) break;

                    resultadChamada =_registarMovel(numeroM,codPin,&contaTelem);
                    if (resultadChamada)
                         printf("\nRegisto Movel %s OK\n", numeroM);
                    else if (resultadChamada == 0)
                          printf("\nRegisto Movel %s NOK\n", numeroM);
                    getchar();
                    break;
                }
                case 2 : {
                             lerMovel(numeroM);
                             lerPIN(&codPin);
                            _ligarMovel(numeroM, codPin);
                             break;
                }
                case 3 : {
                             lerMovel(numeroM);
                            _desligarMovel(numeroM);
                             break;
                }
                case 4 : {

                            _carregamento(numTele[MAX_TELEM],valorCarregamento);

                          //  _carregamento();
                            break;
                }
                case 5 : {
                             lerMovel(numeroM);
                             lerPIN(&codPin);
                             _dalSaldo(numTele[MAX_TELEM]);
                             printf ("||Numero de movel: %s\t||saldo:  %.2f$00\t||estado:%d\n", numeroM,valorCarregamento);
                          //  _dalSaldo();
                            break;
                }
                case 6 :{
                              _tmaSaldo(telemOrigem[MAX_TELEM],numTelemDestino[MAX_TELEM],valor);
                          //_tmaSaldo();
                            break;

                }
                case 7 : {
                    _chamada(numeroTelem[MAX_TELEM]);


                         //   _chamada();
                            break;
                }
                case 8 : {
                         //   _sms();
                            break;
                }
                case 9 : {
                         //   _chamarsos();
                            break;
                }
                case 10 : {
                            limpaCls();
                            _ajuda();
                            break;
                }
                case 11 : {
                            _show();
                            break;
                }
                case 12 : {
                            // status();
                            break;
                }
                case -1 : {
                            querTerminar=1;
                            break;
                }
                case -2 : {
                      printf("\n\nComando inválido. Para obter ajuda digite help\n");
                      printf("Primir ENTER para continuar");
                      getchar();
                      limpaCls();
                      break;
                }
                case 0 : {
                      limpaCls();
                      msgInicial();
                      break;
                }
       }
    } while (!querTerminar);


    return 0;
}


/****************************************************************
* msgInicial: apresenta mensagem inicial do programa ao iniciar *
*                                                               *
*                                                               *
****************************************************************/
void msgInicial() {
    printf("__UM AED II Mobile Network__\n");
    printf("__Para realizar alguma acção escreve um comando__");

}


/****************************************************************
*   limpaCls: limpa o ecra                                      *
* *
* *
***************************************************************/
void limpaCls() {

   #ifdef __linux__
           system("clear");
   #elif defined WIN32 || WIN64
           system("cls");
   #else
           printf("\nERRO: Plataforma nao suportada.\n");
           printf("Disponivel apenas para Linux e Windows");
           getchar();
           exit(1);
   #endif
}


/****************************************************************
*   lerComando: Função que vai ler uma sequência de caracteres  *
*               que representa um comando.                      *
*               retorna: inteiro que é o comando correspondente *
************************************************************** */
int lerComando(char *c) {
    //char comandoS[20];
    char comandoS[20];
    int valido=-1;

    printf("\n\nregistrar\nligar\ndesligar\ncarregamento\ndasaldo\ntmasaldo\nchamada\nsms\nsos\nshow\nstatus\nterminar");

    printf("\n\nSimulador UM Mobile ---->: ");
    fgets(comandoS,20,stdin);

    strncpy(c, comandoS,20);

    if (strcmp(c,"\n") == 0) {
        return 0;
    }

    if (strcmp(c,"registar\n") == 0) {
           c = comandoS;
           valido=1;
    }
    else if (strcmp(comandoS,"ligar\n")== 0) {
           c = comandoS;
           valido=2;
    }
    else if (strcmp(comandoS,"desligar\n")== 0) {
           c = comandoS;
           valido=3;
    }
    else if (strcmp(comandoS,"carregamento\n")== 0) {
           c = comandoS;
           valido=4;
    }
    else if (strcmp(comandoS,"daSaldo\n")== 0) {
           c = comandoS;;
           valido=5;
    }
    else if (strcmp(comandoS,"tmaSaldo\n")== 0) {
           c = comandoS;
           valido=6;
    }
    else if (strcmp(comandoS,"chamada\n")== 0) {
           c = comandoS;
           valido=7;
    }
    else if (strcmp(comandoS,"sms\n")== 0) {
           c = comandoS;
           valido=8;
    }
    else if (strcmp(comandoS,"sos\n")== 0) {
           c = comandoS;
           valido=9;
    }
    else if (strcmp(comandoS,"help\n")== 0) {
            c = comandoS;
            valido=10;
    }
    else if (strcmp(comandoS,"show\n")== 0) {
           c = comandoS;
           valido=11;
    }
    else if (strcmp(comandoS,"status\n")== 0) {
           c = comandoS;
           valido=12;
    }
    else if (strcmp(comandoS,"terminar\n")== 0) {
           c = comandoS;
           valido=-1;
    }
    else
            valido=-2;

    return valido;

}


/******************************************************************
* registarMovel: função para registar um novo telemóvel na rede   *
*                retorna um inteiro: 1 se for possível fazer o    *
*                registo -1 se já for excedido o número de        *
*                telemóveis permitidos e 2 se o número que se     *
*                pretende registar já foi registado anteriormente *
******************************************************************/
int _registarMovel(char numTelem[], int codPIN, int *i) {


    int pos = *i;

 //   printf("teste e %s \n", numTelem);

    rede[pos][0] = numTelem[0];
    PIN[pos] = codPIN;
    (*i)++;
    return 1;
}


/******************************************************************
* ligarMovel: função para liga um telemóvel existente na rede     *
*                retorna um inteiro: 1 se for possível fazer a    *
*                tarefa 0 se o número de telemóvel não existe e   *
*                2 se o PIN estiver errado
******************************************************************/
int _ligarMovel(char numTelem[], int codPIN) {

    return 1;
}


/******************************************************************
* desligarMovel:  *
******************************************************************/
int _desligarMovel(char numTelem[]) {

    return 1;
}


/******************************************************************
* carregamento:  *
******************************************************************/
int _carregamento(char numTele[], double valorCarregamento) {

       char aux[8];
       int valido=-1;
    char *s;
    int c;


        printf("Digite o numero de telemóvel -->  :");
        s=fgets(aux,8,stdin);

        if (*s == '\n')
               printf("\nERRO: Numero de telemóvel não pode ser vazio\n");

        else if ( (*s != '\n') &&  (s[1] == '1') ) {
                valido=-2;


        }
        else {
                strncpy(c, aux,8);
                if ( validarNumeroMovel(c) ) {
                    valido=1;

                }
                else
                    printf("\nERRO: Numero de telemóvel só deve conter digitos\n");
        }

 printf("Digite o valor de carregamento -->  :");
    scanf("%e",&valorCarregamento);
     if(valorCarregamento==0){
        printf("\nErro! Valor de carregamento nao pode ser zero");
    }
    else if(valorCarregamento!=0){
        printf("\nCarregamento efectuado com sucesso!",valorCarregamento);}
getchar();
    return 1;
}

/******************************************************************
* dalSaldo:  *
******************************************************************/
double _dalSaldo(char numTelem[]) {

    printf ("||Numero de movel: %s\t||saldo:  %.2f$00\t||estado:%d\n", lerMovel);
   printf("ama");
    getchar();

return 1;

}


/******************************************************************
* tmaSaldo:
******************************************************************/
int _tmaSaldo(char telemOrigem[], char numTelemDestino[], double valor) {


getchar();

    return 1;
}

/******************************************************************
* chamada:
******************************************************************/
int _chamada(char numeroTelem[]) {

    int c;
    int valido=-1;
    char aux[8];
    char *s;


        printf("Digite o numero de telemóvel -->  :");
        s=fgets(aux,8,stdin);

        if (*s == '\n')
               printf("\nERRO: Numero de telemóvel não pode ser vazio\n");

        else if ( (*s != '\n') &&  (s[1] == '1') ) {
                valido=-2;


        }
        else {
                strncpy(c, aux,8);
                if ( validarNumeroMovel(c) ) {
                    valido=1;

                }
                else
                    printf("\nERRO: Numero de telemóvel só deve conter digitos\n");
        }

        printf("Chamada a realizar...");
    return 1;
}


/******************************************************************
* sms:
******************************************************************/
int _sms(char numeTelem[], char texto[]) {

    return 1;
}


/******************************************************************
* chamarsos:
******************************************************************/
void _chamarsos() {


}


/******************************************************************
* ajuda:
******************************************************************/
void _ajuda() {

    printf("\nAjuda: Para usar o programa deve usar os seguintes comandos: \n");
    printf("\nregistar --->");
    printf("\nligar");

    printf("\ndesligar");

    printf("\ncarregamento");

    printf("\ndaSaldo");

    printf("\ntmaSaldo");

    printf("\nchamada");

    printf("\nsms");

    printf("\nsos");

    printf("\nshow");

    printf("\nstatus");

    printf("\nterminar\n");

    getchar();

}

/******************************************************************
* show:
******************************************************************/
void _show() {


}


/******************************************************************
* status:
******************************************************************/
void _status(char numTelem[]) {


}

/******************************************************************
* validarNumeroMovel:
******************************************************************/
int validarNumeroMovel(char *numero) {
    int p=0;
    int l = strlen(numero);

    for(p=0; p < l; p++) {
          if ( !isdigit(numero[p]) )
              return 0;
    }
    return 1;
}


/******************************************************************
* lerMovel: *
******************************************************************/
int lerMovel(char *c) {
    int valido=-1;
    char aux[8];
    char *s;

    do {
        printf("Digite o numero de telemóvel -->  :");
        s=fgets(aux,8,stdin);

        if (*s == '\n')
               printf("\nERRO: Numero de telemóvel não pode ser vazio\n");

        else if ( (*s != '\n') &&  (s[1] == '1') ) {
                valido=-2;
                break;

        }
        else {
                strncpy(c, aux,8);
                if ( validarNumeroMovel(c) ) {
                    valido=1;
                    break;
                }
                else
                    printf("\nERRO: Numero de telemóvel só deve conter digitos\n");
        }
        while((c = getchar()) != '\n' && c != EOF) ;

    }while(1);

    return valido;

}


/******************************************************************
* lerPIN:
******************************************************************/
int lerPIN(int *pinLido) {
    char c;
    int aux=0;
    int resp=0;
    int contador=0;

    do {
        contador=0;

        getchar();
        printf("Digite o código PIN do telemóvel -->  :");
        resp=scanf(" %d", &aux);
        if (resp == 1) {
            while(aux != 0) {
                 aux /= 10;             // n = n/10
                 ++contador;
            }
            if (contador == 4) {
                pinLido = &aux;
                break;
            }
            else
                printf("\nERRO: PIN do telemóvel deve ser 4 digitos\n:");

       }
       else if (resp == 0) {
                while((c = getchar()) != '\n' && c != EOF) ;
                printf("\nERRO: PIN do telemóvel deve ser 4 digitos:");
       }

    }while(1);

    return contador;

}

/******************************************************************
* validarPin:
******************************************************************/
int validarPin(char numPin[]) {

    return 1;
}


/******************************************************************
* procurarMovel:
******************************************************************/
int procurarMovel(char numero[]) {
    return 0;
}

 

Share this post


Link to post
HappyHippyHippo

tens de ser mais específico na tua dúvida/dificuldade

alem disso, teres colocado na secção de C teria sido melhor


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.