Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ===========================================================================
- Programa: PESQUISA.C
- Objetivo: Cadastrar dados sobre pessoas e realizar pesquisas.
- Estrutura de Dados: Arquivo Binário
- ===========================================================================
- */
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct {
- int codigo;
- char nome[50];
- char sexo;
- int idade;
- float altura;
- } Treg_pessoas;
- typedef FILE * Tarq_pessoas;
- void cadastrar(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
- int codigo;
- printf("\nCodigo: ");
- scanf("%i", &codigo);
- arq_pessoas = fopen("pessoas.dat", "ab");
- if (arq_pessoas == NULL){
- arq_pessoas = fopen("pessoas.dat", "wb");
- }
- while (codigo>0){
- reg_pessoas.codigo = codigo;
- do{
- printf("\nNome: ");
- fflush(stdin);
- scanf("%[^\n]",®_pessoas.nome);
- }while (reg_pessoas.nome == "");
- do{
- printf("\nSexo: ");
- fflush(stdin); /*fflush limpa o buffer do teclado (entrada padrao).*/
- scanf("%c", ®_pessoas.sexo);
- }while (reg_pessoas.sexo != 'M' && reg_pessoas.sexo != 'F');
- do{
- printf("\nIdade: ");
- scanf("%i", ®_pessoas.idade);
- }while (reg_pessoas.idade <= 0);
- do{
- printf("\nAltura: ");
- scanf("%f", ®_pessoas.altura);
- }while (reg_pessoas.altura <= 0);
- fwrite(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- printf("\nPara sair digite <-1>");
- printf("\nPara continuar digite o proximo Codigo: ");
- scanf("%i", &codigo);
- }
- fclose(arq_pessoas);
- }
- void pesquisa_codigo(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
- int codigo;
- printf("\nPESQUISA POR CODIGO");
- printf("\n\nDigite o Codigo: ");
- scanf("%i", &codigo);
- arq_pessoas = fopen("pessoas.dat", "rb");
- if (arq_pessoas == NULL){
- printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
- }
- else{
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- while (! feof(arq_pessoas) && reg_pessoas.codigo != codigo){
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- }
- if (! feof(arq_pessoas)){
- printf("\n\nNome: %s", reg_pessoas.nome);
- printf("\nSexo: %c", reg_pessoas.sexo);
- printf("\nIdade: %i", reg_pessoas.idade);
- printf("\nAltura: %.2f", reg_pessoas.altura);
- }
- else{
- printf("\n\nCodigo Nao Encontrado!!!");
- }
- fclose(arq_pessoas);
- }
- printf("\n\n");
- getch();
- }
- void pesquisa_nome(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
- char nome[20];
- printf("\nPESQUISA POR NOME");
- printf("\n\nDigite o Nome: ");
- fflush(stdin);
- scanf("%[^\n]", &nome);
- arq_pessoas = fopen("pessoas.dat", "rb");
- if (arq_pessoas == NULL){
- printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
- }
- else{
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- while (! feof(arq_pessoas) && strcmp(reg_pessoas.nome,nome) != 0){ //Função strcmp compara dois literais. Se iguais retorna o valor 0.
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- }
- if (! feof(arq_pessoas)){
- printf("\n\nCodigo: %i", reg_pessoas.codigo);
- printf("\nSexo: %c", reg_pessoas.sexo);
- printf("\nIdade: %i", reg_pessoas.idade);
- printf("\nAltura: %.2f", reg_pessoas.altura);
- }
- else{
- printf("\n\nNome Nao Encontrado!!!");
- }
- fclose(arq_pessoas);
- }
- printf("\n\n");
- getch();
- }
- void pesquisa_sexo(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
- printf("\nPESQUISA POR SEXO");
- char sexo;
- do{
- printf("\n\nDigite o Sexo (M ou F): ");
- fflush(stdin);
- scanf("%c", &sexo);
- }while (sexo != 'F' && sexo != 'M');
- arq_pessoas = fopen("pessoas.dat", "rb");
- if (arq_pessoas == NULL){
- printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
- }
- else{
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- while (! feof(arq_pessoas))
- {
- if (sexo == reg_pessoas.sexo){
- printf("\n\nCodigo: %i", reg_pessoas.codigo);
- printf("\nNome: %s", reg_pessoas.nome);
- printf("\nIdade: %i", reg_pessoas.idade);
- printf("\nAltura: %.2f", reg_pessoas.altura);
- }
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- }
- fclose(arq_pessoas);
- }
- printf("\n\n");
- getch();
- }
- void relatorio(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
- printf("\nRELATORIO GERAL");
- arq_pessoas = fopen("pessoas.dat", "rb");
- if (arq_pessoas == NULL){
- printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
- }
- else{
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- while (! feof(arq_pessoas))
- {
- printf("\n\nCodigo: %i", reg_pessoas.codigo);
- printf("\nNome: %s", reg_pessoas.nome);
- printf("\nSexo: %c", reg_pessoas.sexo);
- printf("\nIdade: %i", reg_pessoas.idade);
- printf("\nAltura: %.2f", reg_pessoas.altura);
- fread(®_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
- }
- fclose(arq_pessoas);
- }
- printf("\n\n");
- getch();
- }
- void main()
- {
- int codigo, opcao;
- char nome[20];
- char sexo;
- Tarq_pessoas arq_pessoas;
- Treg_pessoas reg_pessoas;
- do
- {
- system("cls");
- printf("\n1 - Cadastrar Pessoas");
- printf("\n2 - Pesquisa por Codigo");
- printf("\n3 - Pesquisa por Nome");
- printf("\n4 - Pesquisa por Sexo");
- printf("\n5 - Relatorio Geral");
- printf("\n0 - Finaliza");
- printf("\n\nOpcao: ");
- scanf("%i", &opcao);
- switch (opcao)
- {
- case 1:
- cadastrar(arq_pessoas, reg_pessoas);
- break;
- case 2:
- pesquisa_codigo(arq_pessoas, reg_pessoas);
- break;
- case 3:
- pesquisa_nome(arq_pessoas, reg_pessoas);
- break;
- case 4:
- pesquisa_sexo(arq_pessoas, reg_pessoas);
- break;
- case 5:
- relatorio(arq_pessoas, reg_pessoas);
- break;
- case 0:
- break;
- default: printf("\n\nOpcao Invalida!!!\n\n");
- getch();
- break;
- }
- }while (opcao != 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement