Ir ao conteúdo
  • Cadastre-se

Diridjow

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

1
  1. Valeu brother vou tentar, caso alguem tenha mais ideias só mandar aqui, abraço.
  2. Boa noite, gostaria de saber se alguém pode me ajudar e ter uma ideia para fazer exclusão de dados (não de todos, somente do qual a pessoa escolher/digitar de acordo com a matrícula), e também um relatório geral de todos os alunos cadastrados no software, estou com dificuldades nestas duas partes pois tudo o que eu fiz deu erro. Segue o algoritmo logo abaixo, obrigado desde já! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #define ARQUIVO "Pessoa.dat" typedef struct { char nome_completo [30]; int matricula; char data_nascimento [11]; char naturalidade [30]; int numero_certidao_nascimento; float peso; char inf_adicionais [70]; // Espaço reservado para o usuário colocar informações além das perguntadas char nome_pai [30]; char nome_mae [30]; } Pessoa; void fechar_programa (); void menu(); int LerString(char *str, int tammax); int NovaPessoa(); int PedeDadosPessoa(Pessoa *pessoa); int GravaNovaPessoa(Pessoa *pessoa); int ConsultarPorID(); int MostraPessoa(Pessoa *pessoa); Pessoa *LeProximaPessoa(FILE *file); int main() { setlocale(LC_ALL, "Portuguese"); menu(); return 0; } void menu() { int opcao; do{ system("cls"); printf ("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf ("||||||||||||||||||||| Software Escolar |||||||||||||||||||||\n"); printf ("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf ("||||||||||||||||||||| Seja Bem-Vindo! |||||||||||||||||||||\n"); printf ("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf ("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf ("||||||| 1) Área de Cadastramento |||||||\n"); printf ("||||||| 2) Consultas Cadastrais |||||||\n"); printf ("||||||| 3) Relatório de Alunos |||||||\n"); printf ("||||||| 4) Exclusão de Dados |||||||\n"); printf ("||||||| 5) Sair |||||||\n"); printf ("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf ("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("\nDigite uma opção: "); scanf("%d", &opcao); system("cls"); switch ( opcao ) { case 1: NovaPessoa(); system ("pause"); break; case 2: ConsultarPorID(); system("pause"); break; case 3: // Falta relatório de alunos break; case 4: // Falta exclusão de dados break; case 5: fechar_programa(); system ("pause"); break; default: printf("Opção inválida! Tente Novamente!\n\n"); system("pause"); break; } } while(opcao != 5); } int NovaPessoa() { Pessoa *pessoa = (Pessoa *) malloc (sizeof (Pessoa)); if(!PedeDadosPessoa(pessoa)) { free(pessoa); return 0; } if(!GravaNovaPessoa(pessoa)) { free(pessoa); return 0; } free(pessoa); return 1; } int PedeDadosPessoa(Pessoa *pessoa) { if(pessoa == NULL) { printf("\nPessoa inválida para pedir dados!\n"); return 0; } printf("Digite nome completo: "); fflush(stdin); gets(pessoa->nome_completo); fflush(stdin); printf("\nDigite número da matrícula: "); fflush(stdin); scanf("%d", &pessoa->matricula); fflush(stdin); printf("\nDigite a data de nascimento: "); fflush(stdin); gets(pessoa->data_nascimento); fflush(stdin); printf("\nDigite a naturalidade: "); fflush(stdin); gets(pessoa->naturalidade); fflush(stdin); printf("\nDigite número da certidão de nascimento: "); fflush(stdin); scanf ("%d", &pessoa->numero_certidao_nascimento); fflush(stdin); printf("\nDigite o peso: "); fflush(stdin); scanf ("%f", &pessoa->peso); fflush(stdin); printf ("\nDigite o nome do pai: "); fflush(stdin); gets(pessoa->nome_pai); fflush(stdin); printf ("\nDigite nome da mãe: "); fflush(stdin); gets(pessoa->nome_mae); fflush(stdin); printf ("\nDigite informações adicionais: "); fflush(stdin); gets(pessoa->inf_adicionais); fflush(stdin); printf ("\n\n\n"); printf ("|||||||||||||||||||||||||||||||||||||||||||||\n"); printf ("|||||| Usuário cadastrado com sucesso! ||||||"); printf ("\n|||||||||||||||||||||||||||||||||||||||||||||"); printf ("\n\n\n"); return 1; } int LerString(char *str, int tammax) { int c, i=0; c = getchar(); while (i==0 || (c != '\n' && c != EOF)) { if(c == '\n' || c == EOF) { if(i >= 0) i--; } else if(i < tammax - 1) { str[i] = c; } c = getchar(); i++; } if(i >= tammax - 1) i = tammax - 1; str[i] = '\0'; fflush(stdin); return i; } int GravaNovaPessoa(Pessoa *pessoa) { FILE *file; file = fopen (ARQUIVO, "a"); if (file == NULL) { printf("\nErro ao abrir o arquivo!\n"); return 0; } if(pessoa == NULL) { printf("\nPessoa inválida!\n"); return 0; } if(fwrite (pessoa, sizeof(Pessoa), 1, file) == 0) printf("Erro ao gravar Pessoa %d !\n", pessoa->matricula); fclose (file); return 1; } int ConsultarPorID() { FILE *file; int matricula; Pessoa *pessoa = NULL; printf("\n\nInforme a matrícula: "); fflush(stdin); scanf("%d", &matricula); fflush(stdin); file = fopen (ARQUIVO, "rb"); if (file == NULL) { printf("\nErro ao abrir o arquivo!\n"); return 0; } while(1) { if(feof(file)) break; pessoa = LeProximaPessoa(file); if(pessoa == NULL || pessoa->matricula == matricula) break; free(pessoa); } if(pessoa != NULL) { printf("\nPessoa encontrada no banco de dados!\n"); MostraPessoa(pessoa); free(pessoa); } else { printf("\nPessoa %d não encontrada no banco de dados!\n", matricula); } fclose(file); return 1; } int MostraPessoa(Pessoa *pessoa) { if(pessoa == NULL) { printf("\nPessoa inválida para mostrar!\n"); return 0; } printf("\nMatrícula: %d\n", pessoa->matricula); printf("Nome completo: %s\n", pessoa->nome_completo); printf("Data de nascimento: %s\n", pessoa->data_nascimento); printf("Naturalidade: %s\n", pessoa->naturalidade); printf("Numero certidão de nascimento: %d\n", pessoa->numero_certidao_nascimento); printf("Peso: %f\n", pessoa->peso); printf("Nome pai: %s\n", pessoa->nome_pai); printf("Nome mãe: %s\n", pessoa->nome_mae); printf("Informação adicional: %s\n", pessoa->inf_adicionais); return 1; } Pessoa *LeProximaPessoa(FILE *file) { Pessoa *pessoa; if (file == NULL) { printf("\nArquivo inválido!\n"); return 0; } pessoa = (Pessoa *) malloc (sizeof (Pessoa)); if(fread(pessoa, sizeof(Pessoa), 1, file) == 0) { printf("Erro ao ler Pessoa !\n"); free(pessoa); pessoa = NULL; } return pessoa; } void fechar_programa () { printf ("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n"); printf("||||| Obrigado por utilizar o software! Fechando ... |||||"); printf ("\n||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n\n"); system("pause"); exit(0); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...