154 pág.

Pré-visualização | Página 28 de 35
fone[14]; char endereco[41]; char cidade[26]; char uf[3]; }; //--------------------- Variável Global ----------------------- FILE *f; //------------------ Sub-rotinas e Funções -------------------- void abrir_arquivo(){ f = fopen (“Cadastro.db”, “rb+”); //tenta abrir o arquivo //para leitura/escrita if (f == NULL){ //verifica se conseguiu abrir o arquivo? f = fopen (“Cadastro.db”, “wb+”); //Se não abriu, cria. } } //------------------------------------------------------------- void limpa(){ char resposta; clrscr(); printf (“* * * L I M P A R A R Q U I V O * * *\n”); printf (“Confirma Limpeza do Arquivo (S/N): ”); resposta = toupper(getche()); if (resposta == 'S'){ fclose(f); remove (“Cadastro.db”); 120 abrir_arquivo(); } } //------------------------------------------------------------- void exclui(){ struct pessoa reg; int i; char resposta; clrscr(); printf (“* * * E X C L U S Ã O * * *\n”); printf (“\nDigite o número do registro: ”); scanf (“%d”, &i); fseek (f, i * sizeof(struct pessoa), SEEK_SET); if (fread(®, sizeof(struct pessoa), 1, f) != 1){ printf (“\n\nRegistro inexistente!!! Tecle <Enter>“); fflush(stdout); getch(); } else{ printf (“Nome : %s\n”, reg.nome); printf (“CPF : %s\n”, reg.cpf); printf (“Sexo : %c\n”, reg.sexo); printf (“Fone : %s\n”, reg.fone); printf (“Endereço: %s\n”, reg.endereco); printf (“Cidade : %s\n”, reg.cidade); printf (“Estado : %s\n”, reg.uf); fflush(stdout); printf (“\nConfirma exclusão (S/N): ”); resposta = toupper(getche()); if (resposta == 'S') { strcpy (reg.nome, ““); strcpy (reg.cpf, ““); reg.sexo = '\0'; strcpy (reg.fone, ““); strcpy (reg.endereco, ““); strcpy (reg.cidade, ““); strcpy (reg.uf, ““); fseek (f, -1 * sizeof(struct pessoa), SEEK_CUR); fwrite (®, sizeof (struct pessoa), 1, f); } } } //------------------------------------------------------------- 121 void lista(){ struct pessoa reg; int i, j; rewind (f); i = 0; while (fread(®, sizeof(struct pessoa), 1, f) == 1){ clrscr(); printf (“* * * L I S T A G E M G E R A L * * *\n”); printf (“\nRegistro %d\n\n”, i); printf (“Nome : %s\n”, reg.nome); printf (“CPF : %s\n”, reg.cpf); printf (“Sexo : %c\n”, reg.sexo); printf (“Fone : %s\n”, reg.fone); printf (“Endereço: %s\n”, reg.endereco); printf (“Cidade : %s\n”, reg.cidade); printf (“Estado : %s\n”, reg.uf); printf (“\n\nPressione qualquer tecla!”); fflush(stdout); getch(); i++; } } //------------------------------------------------------------- void consulta(){ struct pessoa reg; int i; clrscr(); printf (“* * * C O N S U L T A * * *\n”); printf (“\nDigite o número do registro: ”); scanf (“%d”, &i); fseek (f, i * sizeof(struct pessoa), SEEK_SET); if (fread(®, sizeof(struct pessoa), 1, f) != 1){ printf (“\n\nRegistro inexistente!!! Tecle <Enter>.”); fflush(stdout); getch(); } else{ printf (“Nome : %s\n”, reg.nome); printf (“CPF : %s\n”, reg.cpf); printf (“Sexo : %c\n”, reg.sexo); printf (“Fone : %s\n”, reg.fone); printf (“Endereço: %s\n”, reg.endereco); printf (“Cidade : %s\n”, reg.cidade); 122 printf (“Estado : %s\n”, reg.uf); fflush(stdout); printf (“\n\nPressione qualquer tecla!”); getch(); } } //------------------------------------------------------------- void altera(){ struct pessoa reg_lido, reg_alt; int i, campo; char temp; clrscr(); printf (“* * * A L T E R A C A O * * *\n”); printf (“\nDigite o número do registro: ”); scanf (“%d”, &i); fseek (f, i * sizeof(struct pessoa), SEEK_SET); if (fread(®_lido, sizeof(struct pessoa), 1, f) != 1){ printf (“Registro inexistente!!! Tecle <Enter>.”); fflush(stdout); getch(); } else{ printf (“Nome : %s\n”, reg_lido.nome); printf (“CPF : %s\n”, reg_lido.cpf); printf (“Sexo : %c\n”, reg_lido.sexo); printf (“Fone : %s\n”, reg_lido.fone); printf (“Endereço: %s\n”, reg_lido.endereco); printf (“Cidade : %s\n”, reg_lido.cidade); printf (“Estado : %s\n”, reg_lido.uf); fflush(stdout); reg_alt = reg_lido; printf (“1 - Nome 2 - CPF 3 - Sexo 4 – Fone ”); printf (“5 - Endereço 6 - Cidade 7 – Estado”); printf (“\n\nQual campo deseja alterar: ”); scanf (“%d”, &campo); temp = getchar(); printf (“\n\n”); switch (campo){ case 1: printf (“Nome: ”); gets(reg_alt.nome); break; case 2: printf (“CPF: ”); 123 gets(reg_alt.cpf); break; case 3: printf (“Sexo: ”); reg_alt.sexo = getche(); break; case 4: printf (“Fone: ”); gets(reg_alt.fone); break; case 5: printf (“Endereço: ”); gets(reg_alt.endereco); break; case 6: printf (“Cidade: ”); gets(reg_alt.cidade); break; case 7: printf (“Estado: ”); gets(reg_alt.uf); } fseek (f, -1 * sizeof(struct pessoa), SEEK_CUR); fwrite (®_alt, sizeof (struct pessoa), 1, f); } } //------------------------------------------------------------- void cadastra(){ struct pessoa reg; clrscr(); printf (“* * * C A D A S T R O * * *\n”); printf (“\nNome : ”); gets(reg.nome); printf (“\nCPF : ”); gets(reg.cpf); printf (“\nSexo : ”); reg.sexo = getche(); printf (“\nFone : ”); gets(reg.fone); printf (“\nEndereço: ”); gets(reg.endereco); printf (“\nCidade : ”); gets(reg.cidade); printf (“\nEstado : ”); gets(reg.uf); 124 fseek (f, 0, SEEK_END); fwrite (®, sizeof(struct pessoa), 1, f); } //------------------------------------------------------------- int menu(){ char opl[2]; int op; do{ clrscr(); fflush(stdout); printf (“* * * M E N U * * *\n\n”); printf (“1 – Cadastrar\n”); printf (“2 – Alterar\n”); printf (“3 – Consultar\n”); printf (“4 - Listar Todos\n”); printf (“5 – Excluir\n”); printf (“6 – Limpar\n”); printf (“7 – Sair\n”); printf (“\nQual sua opcao: ”); opl[0] = getche(); opl[1] = '\0'; op = atoi(opl); if ((op < 1) || (op > 7)){ printf (“\nOpcao inválida !!! Tecle <Enter>.”); op = getche(); } }while ((op < 1) || (op > 7)); return(op); } //------------------------------------------------------------- int main(){ int opcao; abrir_arquivo(); do{ opcao = menu(); switch (opcao){ case 1: cadastra(); break; case 2: altera(); 125 break; case 3: consulta(); break; case 4: lista(); break; case 5: exclui(); break; case 6: limpa(); break; case 7: fclose(f); clrscr(); } }while (opcao != 7); } 126 UNIDADE 9 – INTRODUÇÃO À PROGRAMAÇÃO