#include <stdio.h>#include <conio2.h>#include <ctype.h>#include <windows.h>#include <time.h>#include "My_Library.c"typedef struct{ int cod, idade, pac, quarto, pol; char nome[20]; float valor; }Tclientes;Tclientes clienteaux, clientenulo; //registros auxiliaresint op, la, qcn, qcs, posicao, ql, l, qt, pos, tecla;FILE *pn, *ps; //ponteiros para os ônibus de Natal e Salvadorchar resp[1], nomelido[80]; //ler a resposta e transforma para maiusculovoid resposta(){ fflush(stdin); gets(resp); resp[0]=toupper(resp[0]);}void testenome(){ int tn, i; tn = strlen(nomelido); if (tn>19) { strncpy(clienteaux.nome,nomelido,19); clienteaux.nome[19]='\0'; } else strcpy(clienteaux.nome,nomelido);}//verifica a quantidade de registros no arquivo de Natalint verquantn(){ int qrn=0; fseek(pn,0, SEEK_SET); fread(&clienteaux, sizeof(Tclientes), 1, pn); while(!feof(pn)) { if (clienteaux.cod != 0) qrn++; fread(&clienteaux, sizeof(Tclientes), 1, pn); } return qrn;} //verifica a quantidade de registros no arquivo de Salvadorint verquants(){ int qrs=0; fseek(ps,0, SEEK_SET); fread(&clienteaux, sizeof(Tclientes), 1, ps); while(!feof(ps)) { if (clienteaux.cod != 0) qrs++; fread(&clienteaux, sizeof(Tclientes), 1, ps); } return qrs; }//Abre o arquivo de Natal e retorna a quantidade de registrosint abre_arquivon(){ int quantregn; if ((pn = fopen("arqnat.dat","r+b"))== NULL) pn = fopen("arqnat.dat","w+b"); // O arquivo de Natal não existe, precisa ser criado e inicializado quantregn = verquantn(); clientenulo.cod =0; clientenulo.idade =0; clientenulo.pac =0; clientenulo.quarto =0; clientenulo.pol =0; strcpy(clientenulo.nome," \0"); return quantregn;}//Abre o arquivo de Salvador e retorna a quantidade de registrosint abre_arquivos(){ int quantregs; if ((ps = fopen("arqsal.dat","r+b"))== NULL) ps = fopen("arqsal.dat","w+b"); // O arquivo de Salvador não existe, precisa ser criado e inicializado quantregs = verquants(); clientenulo.cod =0; clientenulo.idade =0; clientenulo.pac =0; clientenulo.quarto =0; clientenulo.pol =0; strcpy(clientenulo.nome," \0"); return quantregs;}int procura(int codp){ int p; p= 0; fseek(pn,0, SEEK_SET); fread(&clientenulo, sizeof(Tclientes), 1, pn); while ((!feof(pn)) && (clientenulo.cod!=codp)) { fread(&clientenulo, sizeof(Tclientes),1, pn); p++; } if (clientenulo.cod == codp) return p; else p=-1; if (p=-1) {p= 0; fseek(ps,0, SEEK_SET); fread(&clientenulo, sizeof(Tclientes), 1, ps); while ((!feof(ps)) && (clientenulo.cod!=codp)) { fread(&clientenulo, sizeof(Tclientes),1, ps); p++; } if (clientenulo.cod == codp) return p; else return -1; }}// imprime os dados dos clientes de Natal na telavoid mostre(){ moldura2(3,12,78,16,14); vertical(12,16,12,14); vertical(12,16,34,14); vertical(12,16,42,14); vertical(12,16,53,14); vertical(12,16,64,14); gotoxy(5,13); aprintf("Código"); gotoxy(14,13); printf("Nome do Cliente"); gotoxy(36,13); printf("Idade"); gotoxy(44,13); printf("Pacote"); gotoxy(55,13); printf("Quarto"); gotoxy(66,13); printf("Poltrona"); textcolor(YELLOW); gotoxy(5,15); printf("%6d",clienteaux.cod); gotoxy(14,15); printf("%-20s",clienteaux.nome); gotoxy(36,15); printf("%5d",clienteaux.idade); gotoxy(44,15); if (clienteaux.pac==1) printf("Salvador"); else printf("Natal"); gotoxy(55,15); if (clienteaux.quarto==1) printf("Standard"); else printf("Luxo"); gotoxy(66,15); printf("%8d",clienteaux.pol); textcolor(WHITE);}//Compra de pacotes de Natal ou Salvador(Inserção de clientes)void inserir(){ int teste; char numl[10]; do{ tela("Compra de pacote"); gotoxy(7,9); aprintf("Código do cliente...............: "); gotoxy(7,11); printf("Nome do cliente..................: "); gotoxy(7,13); printf("Idade:...........................: "); gotoxy(7,15); printf("Pacote(1-Salvador/2-Natal........: "); gotoxy(7,17); printf("Quarto(1-Standard/2-Luxo.........: "); gotoxy(7,19); printf("Poltrona.........................: "); // leitura e validacao do código do{ limpalinha(43,9); textcolor(YELLOW); gotoxy(43,9); fflush(stdin); gets(numl); teste=1; if (strlen(numl)!=0) { teste=testeint(numl); if (teste==0) clienteaux.cod = atoi(numl); else { mensagem("\aA código é um campo numérico!",LIGHTRED); limpa(); } } } while (teste==1); gotoxy(43,11); fflush(stdin);// leitura e validacao do nome gets(nomelido); testenome();// leitura e validacao da idade do{ limpalinha(43,13); textcolor(YELLOW); gotoxy(43,13); fflush(stdin); gets(numl); teste=1; if (strlen(numl)!=0) { teste=testeint(numl); if (teste==0) clienteaux.idade = atoi(numl); else { mensagem("\aA idade é um campo numérico!",LIGHTRED); limpa(); } } } while (teste==1); //leitura e validacao do pacote do{ limpalinha(43,15); textcolor(YELLOW); gotoxy(43,15); fflush(stdin); gets(numl); teste=1; if (strlen(numl)!=0) { teste=testeint(numl); if (teste==0) { clienteaux.pac = atoi(numl); if ((clienteaux.pac<0) || (clienteaux.pac>2)) { mensagem("\aA opção de pacote é 1 ou 2 - valor fora do limite!",LIGHTRED); limpa(); teste=1; } } else { mensagem("\aO pacote é um campo numérico!",LIGHTRED); limpa(); } } } while (teste==1); //leitura e validacao do quarto do{ limpalinha(43,17); textcolor(YELLOW); gotoxy(43,17); fflush(stdin); gets(numl); teste=1; if (strlen(numl)!=0) { teste=testeint(numl); if (teste==0) { clienteaux.quarto = atoi(numl); if ((clienteaux.quarto<0) || (clienteaux.quarto>2)) { mensagem("\aA opção de quarto é 1 ou 2 - valor fora do limite!",LIGHTRED); limpa(); teste=1; } } else { mensagem("\aO pacote é um campo numérico!",LIGHTRED); limpa(); } } } while (teste==1); //leitura e validacao da poltrona do{ limpalinha(43,19); textcolor(YELLOW); gotoxy(43,19); fflush(stdin); gets(numl); if (teste==0) { clienteaux.pol = atof(numl); if ((clienteaux.pol<0) || (clienteaux.pol>40)) { mensagem("\aA poltrona varia de 0 a 40 - valor fora do limite!",LIGHTRED); limpa(); teste=1; } } else { mensagem("\aA poltrona é um campo numérico!",LIGHTRED); limpa(); } } while (teste==1); fopen(pn); fseek(pn,0,SEEK_END); fwrite(&clienteaux,sizeof(Tclientes),1,pn); fclose(pn); qcn++; fopen(ps); fseek(ps,0,SEEK_END); fwrite(&clienteaux,sizeof(Tclientes),1,ps); qcs++; fclose(ps) mensagem(MSG_INS_OK,CYAN); limpa(); aprintf("Inserir outro cliente(S-sim/N-não)? "); textcolor(YELLOW); resposta(); textcolor(WHITE); }while (resp[0] == 'S');}