Vous êtes sur la page 1sur 7

// Prova B1 - Linguagem de Programao // FATEC - MC - 10/10/2012 - JCB/Verso 2012 #include "Video_Locadora.

h" // Funo que pede o codigo do filme que tem que ser entre // MENOR_CODIGO e MAIOR_CODIGO ou zero para cancelar a // transao // Parmetros: // Entrada: int *ptrCodigo - ponteiro para uma inteira do // chamador para receber um cdigo vlido digit ado pelo // operador. // char *ptrTransacao - ponteiro para um string, p assado pelo // chamador indicando qual a transao que est s endo // realizada: "Cadastramento", "Aluguel Fil me" e etc.... // Retorno: bool - true - indica que o operador digitou um cdigo vlid o // false - indica que o operador ca ncelou a transao // (desistiu de rea lizar a transao) bool PedirCodigoFilme(int *ptrCodigo, char *ptrTransacao) { // ****<<??>>****** // ?.1 - Imprimir no video a transao que est sendo realizada // Esta informao um ponteiro de string passado pelo chamador while(*ptrTransacao) cout << *ptrTransacao; // ?.2 - Ficar em loop at que o operador informe o cdigo de um // filme vlido ou digite zero para cancelar do{ cout << "Digite o codigo do filme: "; cin >> *ptrCodigo; if(*ptrCodigo == 0) return false; }while(*ptrCodigo < MENOR_CODIGO || *ptrCodigo > QTDE_FILMES); return true; // ?.3 - Se o operador informou um cdigo vlido copie-o no local // indicado pelo ponteiro informado pelo chamador e // retorne true // ?.4 - Se digitou zero como cdigo do filme, retorne false. //return false; // apenas para no dar erro } // Entry Point do Progrma void main(void) { int i, // indice genrico nCodFilme; // para receber o cdigo d o filme FILME stFilme, // conter os dados de um filme vetFilmes[QTDE_FILMES]; // cadastro de filmes da video locadora char cTransacao[35]; char cNomeAluno[] = "Nome do Aluno",// nome do aluno a ser preenchido cOpcao, // opo do operador

cRaAluno[] = "12345-6", // RA do aluno a ser preenchido cWork[200]; // para formatao de cabealh os SYSTEMTIME stTime; // para buscar data e hora setlocale(LC_ALL, "portuguese_brazil"); // aceita acentuao portuguesa // ****<< 00 >>**** preencher o seu nome e seu RA // Preencher com seu nome o campo cNomeAluno e com seu // RA no campo cRaAluno // Quando for entregar o seu projeto copie o diretrio completo para um // "pendrive" e renomei-o para VideoLocadora_xxxxxxxxxx - ( xxxx) seu nome // ****<< 01 >>**** fazer um loop inicializando o cadastro de filmes // indicando o cdigo (1, 2, 3, ..... QTDE_FILMES) e // FILME_NAO_CADASTRADO // Inicializar o vetor for(i = 0; i < QTDE_FILMES; i++) { vetFilmes[i].cExiste = FILME_NAO_CADASTRADO; } while(true) { // exibir o menu principal GetLocalTime(&stTime); // buscar data e hora do sistema sprintf(cWork, "\tFATEC-MC - Video Locadora %02d/%02d/%04d %02d:%02d\n\ tAluno:%s RA:%s", stTime.wDay, stTime.wMonth, stTime.wYear, stTime.wHour, stTime.wMinute, cNomeAluno, cRaAluno); cout << cWork << endl; // exibir o cabealho do menu cout << CADASTRAR_FILME << " - Cadastrar Filme" << endl; cout << ALUGAR_FILME << " - Alugar Filme" << endl; cout << DEVOLVER_FILME << " - Devolver Filme" << endl; cout << MOSTRAR_FILME << " - Mostrar dados de um filme" << endl; cout << LISTAR_FILMES << " - Listar filmes" << endl; cout << EXCLUIR_FILME << " - Excluir um filme" << endl; cout << SAIR_DO_PROGRAMA << " - Sair do programa" << endl; cout << "\tSelecione: "; cin >> cOpcao; // opo do operador cOpcao = toupper(cOpcao); // converte opo para maiscu la switch(cOpcao) // avaliar a opo d o operador { case CADASTRAR_FILME: // ****<< 02 >>**** // 2.1 - Chamar a funo PedirCodigoFilme informando o endereo // para receber o cdigo do filme e a transao // "Cadastrar Filme". // Analisar o retorno: se false vo ltar ao menu principal // se true ir para o passo seguinte... strcpy(cTransacao,"Cadastrar Filme"); if(!PedirCodigoFilme(&nCodFilme,cTransacao))

break; // 2.2 - Verificar se o filme j est cadastrado. Se estiver // tar ao menu principal... if(vetFilmes[nCodFilme].cExiste == FILME_EXISTE) { cout << "Filme ja cadastrado"; break; } // 2.3 - Pedir os demais dados sendo que o tipo tem que ser // , comdia, etc....) cin.ignore(1,EOF); cout << "Nome do filme: "; cin.getline(stFilme.cNomeFilme,sizeof(stFilme.cN omeFilme),'\n'); cout << "Menu para escolher o tipo de filme" << endl; cout << "A - Aventura" << endl; cout << "C - Comedia" << endl; cout << "R - Romance" << endl; cout << "E - Epico" << endl; cout << "S - Sexo" << endl; cout << "Digite o tipo do filme: " << endl; cin >> cOpcao; switch(cOpcao) { case AVENTURA: stFilme.cTipo = AVENTURA; break; case COMEDIA: stFilme.cTipo = COMEDIA; break; case ROMANCE: stFilme.cTipo = ROMANCE; break; case EPICO: stFilme.cTipo = EPICO; break; case SEXO: stFilme.cTipo = SEXO; break; default: cout << "Opcao errada!" << endl; PAUSA; } cout << "Artista principal: "; cin.getline(stFilme.cArtPrincipal,sizeof(stFilme .cArtPrincipal), '\n'); cout << "Artista coadjuvante: "; cin.getline(stFilme.cArtCoadjuvante,sizeof(stFil me.cArtCoadjuvante), '\n'); // 2.4 - Indicar que o filme agora est cadastrado e no alugado e // voltar ao menu principal um dos vlidos...(Aventura avisar ao operador e vol

stFilme.cAlugado = 'N'; stFilme.cExiste = 'S'; memcpy(&vetFilmes[nCodFilme],&stFilme,sizeof(stF ilme)); break; case ALUGAR_FILME: // ****<< 03 >>**** // 3.1 - Chamar a funo PedirCodigoFilme informando o endereo // a transao // // ltar ao menu principal // seguinte... strcpy(cTransacao,"Alugar Filme"); if(!PedirCodigoFilme(&nCodFilme,cTransacao)) break; // 3.2 - Verificar se o filme j est alugado. Se es tiver // tar ao menu principal... if(vetFilmes[nCodFilme].cAlugado == 'A') { cout << "Filme nao disponivel!"; break; } // 3.3 - Indicar que o filme est alugado e voltar ao menu principal vetFilmes[nCodFilme].cAlugado = 'A'; break; case DEVOLVER_FILME: // ****<< 04 >>**** // 4.1 - Chamar a funo PedirCodigoFilme informando o endereo // a transao // // ltar ao menu principal // seguinte... strcpy(cTransacao,"Devolver Filme"); if(!PedirCodigoFilme(&nCodFilme,cTransacao)) break; // 4.2 - Verificar se o filme est alugado. Se no e stiver // tar ao menu principal... if(vetFilmes[nCodFilme].cAlugado == 'N') { cout << "Filme nao alugado!"; break; } // 4.3 - Indicar que o filme no est alugado e volt ar ao // menu principal vetFilmes[nCodFilme].cAlugado = 'A'; break; avisar ao operador e vol se true ir para o passo "Devolver Filme". Analisar o retorno: se false vo para receber o cdigo do filme e avisar ao operador e vol se true ir para o passo "Alugar Filme". Analisar o retorno: se false vo para receber o cdigo do filme e

case MOSTRAR_FILME: // ****<< 05 >>**** // 5.1 - Chamar a funo PedirCodigoFilme informando o endereo // a transao // // ltar ao menu principal // seguinte... strcpy(cTransacao,"Mostrar Filme"); if(!PedirCodigoFilme(&nCodFilme,cTransacao)) break; // 5.2 - Exibir os dados do filme e aguardar tec la enter do // u principal break; case EXCLUIR_FILME: // ****<< 06 >>**** // 6.1 - Chamar a funo PedirCodigoFilme informando o endereo // a transao // // ltar ao menu principal // seguinte... // 6.2 - Se o filme no estiver cadastrado, avisar ao operador // al. // 6.2 - Exibir os dados do filme e pedir a conf irmao do // , voltar ao menu principal e // o filme // oltar ao menu principal. break; case LISTAR_FILMES: // ****<< 07 >>**** // 7.1 - Perguntar qual o cdigo a iniciar a lista gem ou zero para // r em loop at que seja // u zero para cancelar a // transao de listagem // 7.2 - Perguntar o tipo de filme (Aventura, co mdia .....) // 7.3 - Listar 5 filmes e perguntar ao operador se vai continuar ou // volta break; case SAIR_DO_PROGRAMA: desistir....Se desistir informado um cdigo vlido o desistir da transao...Fica FILME_NAO_CADASTRADO e v caso contrrio indicar que operador. Se no confirmar e voltar ao menu princip se true ir para o passo "Excluir Filme". Analisar o retorno: se false vo para receber o cdigo do filme e operador e voltar ao men se true ir para o passo "Mostrar Filme". Analisar o retorno: se false vo para receber o cdigo do filme e

cout << "Deseja sair realmente! (S ou N): "; cin >> cOpcao; if(cOpcao == 'S' || cOpcao == 's') // sair realmente? return; // sai do programa break; default: cout << "Opo errada!" << endl; PAUSA; } // switch } // while(true) } // main // Declaraes do Programa de Video Locadora #include <iostream> #include <windows.h> using namespace std; // Definies #define PAUSA system("pause") #define LIMPAR_TELA system("cls") #define QTDE_FILMES 3000 #define MENOR_CODIGO 1 #define MAIOR_CODIGO QTDE_FILMES // Menu de Opes do Operador #define CADASTRAR_FILME 'C' #define ALUGAR_FILME 'A' #define DEVOLVER_FILME 'D' #define MOSTRAR_FILME 'M' #define LISTAR_FILMES 'L' #define EXCLUIR_FILME 'E' #define SAIR_DO_PROGRAMA 'S' // Indicaes #define FILME_EXISTE 'S' #define FILME_NAO_CADASTRADO 'N' #define FILME_ALUGADO 'A' #define FILME_NAO_ALUGADO 'N' // Tipos de Filmes #define AVENTURA 'A' #define COMEDIA 'C' #define ROMANCE 'R' #define EPICO 'E' #define SEXO 'S' // Struct de cada filme typedef struct tagFILME { int nCodFilme; // cdigo sequencial (1, 2, 3, ... ...QTDE_FILMES char cExiste, // 'S' - Filme Cadastrado e 'N' - Filme no cadastrado cTipo, // Tipo de Filme: A - Aventura // C - Comdia // R - Romance // E - pico //

S - Sexo cAlugado, no alugado cNomeFilme[51], cArtPrincipal[41], cArtCoadjuvante[41]; } FILME; // Nome do filme // Nome do(a) Artista Principal // Nome do(a) Artista Coadjuvante // 'A' - Alugado e 'N' -

Vous aimerez peut-être aussi