Posted by : Gustavo Reis terça-feira, 14 de julho de 2015

Bom tarde Galera,

Resolvi dispinibilizar na web meu trabalho final de Grau 2 da faculdade, consiste em um programa simples de cadastro em linguagem C, com manipulação de arquivos, ou seja os arquivos funcionam como um banco de dados.

Qualquer dúvida comente aqui!



 Segue código:

/*
    Name: Cadastro de Alunos com Arquivos
    Author: Gustavo Reis
    Date: 02/07/15 13:36
    Description: Trabalho desenvolvido para disciplina de Labortorio de Porgramação,
    professor Eder Correa, manipulação de arquivos.
*/

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>

typedef struct aluno{
  int matricula;
  int idade;
  char nome[50];
  char endereco[100];
 
}t_aluno;

void cadastrar_aluno(){
   
t_aluno A; //aluno
FILE * arquivo;
int mat;
   
    //inicio do cadastro
   
    //abre o arquivo para verificar se existe matricula
    arquivo=fopen("alunos.dat","rb");
     if(arquivo ==NULL){
        printf("ERRO - Arquivo vazio!\n");
        }else{
            fflush(stdin);
            printf("Informe a matricula do aluno: ");
            scanf("%d", &mat);
            fread(&A,sizeof(A),1,arquivo);
              while(!feof(arquivo))
            {
                if(A.matricula==mat)
                {
                    printf("\n\t------------------------");
                    printf("\n\t| Aluno ja cadastrado! |");
                    printf("\n\t------------------------\n\n");
                    fclose(arquivo);
                    return;
                }  
                fread(&A,sizeof(A),1,arquivo);
            }
            fclose(arquivo);
                                       
     }   
         //copia variavel mat para A.matricula, para depois ser gravada no arquivo
         A.matricula=mat;
       
        fflush(stdin);
        printf("Informe o nome do aluno: ");
        gets(&A.nome);//
        fflush(stdin);
        printf("Informe a idade do aluno: ");
        scanf("%d", &A.idade);    //
        fflush(stdin);
        printf("Informe o endereco do aluno: ");
        gets(&A.endereco);//
        fflush(stdin);
       
        //abre arquivo para escrever
        arquivo=fopen("alunos.dat", "ab");
        if (arquivo == NULL) {
             arquivo = fopen("alunos.dat", "wb");    
             if (arquivo == NULL) {
                  printf("Erro abrindo arquivo");
                  getch();
                  exit(0);
             }
        }
        fwrite(&A, sizeof(A), 1,arquivo);
        fclose(arquivo);
       
}

void listar_alunos(){
   
    t_aluno A;//aluno
    FILE *arquivo;
   
     arquivo=fopen("alunos.dat","rb");
     if(arquivo ==NULL)
     {
          printf("Erro ao abrir o arquivo");
          getch();
          exit(0);
     }else{
           fread(&A, sizeof(A), 1, arquivo);
               printf("\n\t--------------------");
            printf("\n\t| Lista de Alunos: |");
            printf("\n\t--------------------\n\n");
           while(!feof(arquivo))
           {
            printf("Matricula: %d \n", A.matricula);
            printf("Nome: %s \n", A.nome);
            printf("Idade: %d \n", A.idade);
            printf("Endereco: %s \n", A.endereco);
            printf("--------------------------------\n");
            fread(&A, sizeof(A),1,arquivo);                             
           }
           fclose(arquivo);
     }
}

void buscar_aluno(){

    t_aluno A; //aluno
    FILE * arquivo;
    int mat;
   
    //abre o arquivo para verificar se existe matricula
    arquivo=fopen("alunos.dat","rb");
     if(arquivo ==NULL){
        printf("Erro ao abrir o arquivo");
        }else{
            printf("Informe a matricula do aluno: ");
            scanf("%d", &mat);
            fread(&A,sizeof(A),1,arquivo);
              while(!feof(arquivo))
            {
                if(A.matricula==mat)
                {
                    printf("\n\t---------------------");
                    printf("\n\t| Aluno encontrado! |");
                    printf("\n\t---------------------\n\n");
                    printf("Matricula: %d \n", A.matricula);
                    printf("Nome: %s \n", A.nome);
                    printf("Idade: %d \n", A.idade);
                    printf("Endereco: %s \n", A.endereco);
                    printf("--------------------------------\n");
                    fclose(arquivo);
                    return;
                }  
                fread(&A,sizeof(A),1,arquivo);
            }
            fclose(arquivo);
            printf("\n\t-------------------------");
            printf("\n\t| Aluno nao encontrado! |");
            printf("\n\t-------------------------\n\n");                           
     }   
   
}

void editar_aluno(){
   
    t_aluno A; //aluno
    FILE * arquivo;
    char escolha;
    //variaveis auxiliares
    int matTemp, idadeTemp;
    char nomeTemp[50], endeTemp[100];
   
    //abre o arquivo para verificar se existe matricula
    arquivo=fopen("alunos.dat","rb+");
     if(arquivo ==NULL){
        printf("Erro ao abrir o arquivo");
        }else{
            printf("Informe a matricula do aluno: ");
            scanf("%d", &matTemp);
            fread(&A,sizeof(A),1,arquivo);
              while(!feof(arquivo))
            {
                if(A.matricula==matTemp)
                {
                    printf("\n\t---------------------");
                    printf("\n\t| Aluno Encontrado! |");
                    printf("\n\t---------------------\n\n");
                    printf("Matricula: %d \n", A.matricula);
                    printf("Nome: %s \n", A.nome);
                    printf("Idade: %d \n", A.idade);
                    printf("Endereco: %s \n", A.endereco);
                    printf("--------------------------------\n");
                   
                    //PAREI AQUI
                        fflush(stdin);
                         printf("Informe o NOVO nome do aluno: ");
                        gets(&nomeTemp);//
                        fflush(stdin);
                        printf("Informe a NOVA idade do aluno: ");
                        scanf("%d", &idadeTemp);    //
                        fflush(stdin);
                        printf("Informe o NOVO endereco do aluno: ");
                        gets(&endeTemp);//
                        fflush(stdin);
                       
                        printf("\n\tVoce deseja alterar os dados da MATRICULA %d ?? \n\n", matTemp);
                        printf("\tNome: %s para %s \n", A.nome, nomeTemp);
                        printf("\tIdade: %d para %d \n", A.idade, idadeTemp);
                        printf("\tEndereco: %s para %s \n\n", A.endereco, endeTemp);
                       
                        printf("\tVOCE DESEJA CONFIRMA A ALTERACAO? (S=SIM - N=NAO) -> ");
                        scanf("%c",&escolha);
                        if(escolha =='S'|| escolha =='s'){
                           
                                //faz as alteracoes
                                //strcpy para substituir strings
                               
                                //A.nome = nomeTemp;
                                strcpy(A.nome,nomeTemp);
                                A.idade = idadeTemp;
                                //A.endereco = endeTemp;
                                strcpy(A.endereco,endeTemp);
                                 fseek(arquivo,-sizeof(A),1);             
                                 fwrite(&A, sizeof(A), 1,arquivo);
                               
                               
                                printf("\n\t-----------------------");
                                printf("\n\t| Operacao concluida! |");
                                printf("\n\t-----------------------\n\n");
                                fclose(arquivo);
                                return;
                        }else
                            printf("\n\t-----------------------");
                            printf("\n\t| Operacao cancelada! |");
                            printf("\n\t-----------------------\n\n");
                            fclose(arquivo);
                            return;
                }  
                fread(&A,sizeof(A),1,arquivo);
            }
            fclose(arquivo);
            printf("\n\t-------------------------");
            printf("\n\t| Aluno nao encontrado! |");
            printf("\n\t-------------------------\n\n");                           
     }   
       
}

void strcpy( char *s, char *t) {
   int i;
   for (i = 0; t[i] != '\0'; ++i)
      s[i] = t[i];
   s[i] = '\0';
}

int menu (){
    int opt;
        printf("\n\t## MENU CADASTRO COM ARQUIVO ##\n\n");
         printf("\t1-Cadastrar aluno\n");
        printf("\t2-Procurar por matricula\n");
        printf("\t3-Listar todos alunos cadastrados\n");
        printf("\t4-Editar dados do aluno\n");
        printf("\t0-para sair\n\n## ##\n->");
    scanf("%d",&opt);
    return opt;
}

void main(){
system("COLOR F0");
    t_aluno alunos[20];
    int opt;

    do{
        opt=menu();
    switch (opt){
        case 1:
            cadastrar_aluno();
            system("pause");
            system("cls");
        break;
        case 2:
            buscar_aluno();
            system("pause");
            system("cls");
        break;
        case 3:
            listar_alunos();
            system("pause");
            system("cls");
            break;
        case 4:
            editar_aluno();
            system("pause");
            system("cls");
            break;
           
        case 0:
            printf("SAIR!\n");
            return 0;
        default:
            printf("Opcao invalida!!!!!\n");
            system("pause");
            system("cls");
            break;
    }
    }while(1);


}




Deixe seu recado

Deixe seu comentário.

Inscreva-se

Contato

Nome

E-mail *

Mensagem *

Tecnologia do Blogger.

- Copyright © oGustavoReis - Desenvolvimento de Blogs - Powered by Blogger - Designed by Gustavo Reis