#include <conio2.h>#include <windows.h>#include <time.h>#include <conio.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <ctype.h>//definicões das mensagens de êxito e erro:#define MSG_INS_OK "Cliente inserido com sucesso! Tecle enter..."#define MSG_REM_OK "Cliente removido com sucesso! Tecle enter..."#define MSG_REM_CAN "\aRemoção cancelada! Tecle enter..."#define MSG_OP_ERRO "\aOpção inválida! Tecle enter..."#define MSG_COD_REP "\aEste código já existe! Tecle enter..."#define MSG_COD_INE "\aCódigo de cliente inexistente! Tecle enter..."#define MSG_CONS_nomeoucod "\aCliente não encontrado! Tecle enter..."#define MSG_Trans_CAN "\aTransferência cancelada! Tecle enter..."#define MSG_POL_Ocup "\aEsta poltrona já está ocupada! Tecle enter..."//imprimir um texto com acentovoid aprintf(char texto[80]){ char text[80]; CharToOem(texto,text); printf("%s",text);} // centraliza o texto em uma linhavoid centraliza(char texto[80], int linha){ int tam, c; tam =strlen(texto); c = (80-tam)/2; gotoxy(c,linha); aprintf(texto);} //cria uma moldura na tela void moldura(){ int j, al; //linha 1 gotoxy(1,1); for(j=1;j<=80;j++) printf("%c",205); //linha 2 gotoxy(1,4); for(j=1;j<=80;j++) printf("%c",205); //linha 3 gotoxy(1,22); for(j=1;j<=80;j++) printf("%c",205); //linha 4 gotoxy(1,24); for(j=1;j<=80;j++) printf("%c",205); //linha vertical esquerda e direita for (j=2; j<=23; j++) { gotoxy(1,j); printf("%c",186); gotoxy(80,j); printf("%c",186); } //cantoneira 1 - cima-esquerda gotoxy(1,1); printf("%c",201); //cantoneira 2 - cima-direita gotoxy(80,1); printf("%c",187); //cantoneira 3 - baixo-esquerda gotoxy(1,24); printf("%c",200); //cantoneira 4 - baixo-direita gotoxy(80,24); printf("%c",188); //cantoneira 5 - linha 4-esquerda gotoxy(1,4); printf("%c",204); //cantoneira 6 - linha 4-direita gotoxy(80,4); printf("%c",185); //cantoneira 7 - linha 22-esquerda gotoxy(1,22); printf("%c",204); //cantoneira 8 - linha 22-direita gotoxy(80,22); printf("%c",185);}//passa linha vertical numa tabela com duas divisoes// li -> linha onde inicia o traco vertical// lf -> linha onde finaliza o traco vertical// c -> coluna onde a linha vertical sera desenhada// divisoria -> linha onde passa a segunda linha void vertical(int li, int lf, int c, int divisoria){ int j; gotoxy(c,li); printf("%c",203); for (j=li+1; j<=lf; j++) { gotoxy(c, j); printf("%c",186); } gotoxy(c,lf); printf("%c",202); gotoxy(c,divisoria); printf("%c",206);}//monta moldura com duas divisoes// xin -> coluna onde inicia a moldura, yin -> linha onde inicia a moldura// xfim -> coluna onde finaliza a moldura, yfim -> linha onde finaliza a moldura // linhadiv -> linha que divide a moldura void moldura2(int xin, int yin, int xfim, int yfim, int linhadiv){ int j, al; gotoxy(xin,yin); printf("%c",201); for(j=xin+1;j<xfim;j++) printf("%c",205); printf("%c",187); al=yfim-yin; for (j=1; j<=al; j++) { gotoxy(xin, yin+j); printf("%c",186); gotoxy(xfim, yin+j); printf("%c",186); } gotoxy(xin,yfim); printf("%c",200); for(j=xin+1;j<xfim;j++) printf("%c",205); printf("%c",188); gotoxy(xin,linhadiv); printf("%c",204); for(j=xin+1;j<xfim;j++) printf("%c",205); gotoxy(xfim,linhadiv); printf("%c",185);}//desenha a telavoid tela(char acao[80]){ textcolor(WHITE); clrscr(); moldura(); gotoxy(29,2); printf("Boa Viagem Turismo"); centraliza(acao, 3);}//limpa a linha 23, esta eh a linha de comunicacao do programa com o usuariovoid limpa(){ gotoxy(2,23); clreol(); gotoxy(80,23); textcolor(WHITE); printf("%c",186); gotoxy(3,23); }//limpa a qualquer linha, comecando de uma determinada colunavoid limpalinha(int c, int l){ gotoxy(c,l); clreol(); gotoxy(80,l); textcolor(WHITE); printf("%c",186);}//limpa a tabela apresentada na consulta, alteracao e remocaovoid limpamostre(){ int i; gotoxy(28,9); clreol(); gotoxy(80,9); printf("%c",186); for (i=12;i<=16;i++) { gotoxy(2,i); clreol(); gotoxy(80,i); printf("%c",186); }}//escreve uma mensagem na tela, na linha 23, com a cor desejadavoid mensagem(char m[80], int cor){ limpa(); textcolor(cor); aprintf(m); textcolor(WHITE); getche();}//funcao que coloca data e hora no programavoid dh(){ time_t ltime = time(NULL); struct tm *hoje;// hoje = localtime(<ime); gotoxy(69,5); printf("%02d/%02d/%4d\n",hoje->tm_mday,hoje->tm_mon+1,hoje->tm_year+1900); gotoxy(74,6); printf("%02d:%02d\n",hoje->tm_hour,hoje->tm_min);}//monta a tela de menuvoid menu(){ textbackground(BLACK); textcolor(WHITE); clrscr(); tela("Controle de pacotes"); dh(); gotoxy(7,6); aprintf("Opções:"); gotoxy(13,7); printf("1 - Compra de pacote"); gotoxy(13,9); aprintf("2 - Desistência de pacote"); gotoxy(13,11); aprintf("3 - Mudança de pacote"); gotoxy(13,13); aprintf("4 - Consultar cliente por código"); gotoxy(13,15); printf("5 - Consultar cliente por nome"); gotoxy(13,17); aprintf("6 - Calcular preço de pacote"); gotoxy(13,19); aprintf("7 - Listagem de ocupação do ônibus"); gotoxy(13,21); printf("0 - Sair do Programa"); gotoxy(3,23); aprintf("Informe a opção desejada: "); gotoxy(29,23);}//funcao para verificar se foi digitado um numero inteiro// retorna um se der erro e zero se okint testeint(char numint[10]){ int t, v, i; t= strlen(numint); v=0; for(i=0;i<t;i++) { if ((i==0) && (numint[0] == '-')) v=0; else { if (isdigit(numint[i])==0) { v=1; break; } } } return v;}