A maior rede de estudos do Brasil

Grátis
154 pág.
Linguagem C/C++ - UNIPAN

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(&reg, 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 (&reg, sizeof (struct pessoa), 1, f); 
 } 
 } 
} 
//------------------------------------------------------------- 
 121
void lista(){ 
 struct pessoa reg; 
 int i, j; 
 
 rewind (f); 
 i = 0; 
 
 while (fread(&reg, 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(&reg, 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(&reg_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 (&reg_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 (&reg, 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