Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Simular um telemóvel

$
0
0
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; }

Viewing all articles
Browse latest Browse all 11336

Trending Articles