Gerenciamento de alunos com dados armazenados em arquivo
Publicado por luiz eduardo da rocha oliveira (última atualização em 23/02/2017)
[ Hits: 2.220 ]
Acredito que vá ajudar a entender melhor como se trabalha com arquivos em C. Perdoem qualquer erro pois também sou iniciante na programação.
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <time.h> #include <string.h> /*Projetado por: Luiz Eduardo Da Rocha Oliveira Facol Faculdade Escritor Osman Da Costa Lins Desculpem pelo excesso de comentários rsrsrs*/ //struct typedef struct{ int matricula,sexo,idade,curso,turno; char nome[50]; }Taluno; FILE *aluno; //ponteiro para o arquivo Taluno raluno,saluno; // variaveis usadas para salvar, alterar e remover dados da struct //procedimento para criação e abertura caso não exista o arquivo, se existir abertura. void abrearquivo(){ aluno=fopen("aluno.dat","r+b"); // se o arquivo existir abrir para leitura e escrita. if(aluno==NULL) aluno=fopen("aluno.dat","w+b"); // se o arquivo não existir criar um para leitura e escrita. } void linha(){ int i; printf("\n"); for(i=0;i<80;i++){ printf("_"); } printf("\n"); } //procedimento para limpar a tela void limpar(){ system("cls || clear"); } //procedimento para gerar numeros aleatorios para a matricula int geradorM(){ int m; srand(time(NULL)); m=(rand()%1764008)*10; return m; } void cadastro(){ int op1; do{ linha(); printf("%40s","CADASTRO"); linha(); raluno.matricula=0; raluno.matricula=geradorM(); setlocale(LC_ALL,""); printf("\nInforme o Nome do Aluno: "); fflush(stdin); gets(raluno.nome); printf("\nInforme o sexo do aluno 1-MASC / 2-FEM: "); scanf("%d",&raluno.sexo); printf("\nInforme a idade do aluno: "); scanf("%d",&raluno.idade); printf("\nInforme o curso que o aluno deseja fazer 1-PHP / 2-JAVA / 3-MOBILE: "); scanf("%d",&raluno.curso); printf("\nInforme o turno que o aluno deseja estudar 1-MANHA / 2-NOITE: "); scanf("%d",&raluno.turno); //comandos para salvar os dados em um novo registro fseek(aluno,0,SEEK_END); fwrite(&raluno,sizeof(Taluno),1,aluno); printf("\nAluno cadastrado com sucesso\n"); printf("\n%s foi cadastrado com matricula %d\n",raluno.nome,raluno.matricula); printf("\nDeseja cadastrar outro aluno? 1-SIM / 2-NÃO: "); scanf("%d",&op1); limpar(); }while(op1==1); } //procedimento para busca de um registro no arquivo int busca(int m){ int posicao=0; //comandos para posicionar o ponteiro no inicio do arquivo e ler o arquivo rewind(aluno); fread(&raluno,sizeof(Taluno),1,aluno); while(feof(aluno)==0){ if(raluno.matricula==m) return posicao; else{ fread(&raluno,sizeof(Taluno),1,aluno); posicao++; } } return -1; } void exibir(int m1){ char sexo[15],curso[15],turno[15]; setlocale(LC_ALL,""); if(raluno.sexo==1) strcpy(sexo,"Masculino"); else strcpy(sexo,"Feminino"); if(raluno.curso==1) strcpy(curso,"Php"); else if(raluno.curso==2) strcpy(curso,"Java"); else strcpy(curso,"Mobile"); if(raluno.turno==1) strcpy(turno,"Manhã"); else strcpy(turno,"Noite"); linha(); printf("\n%-5s %d\n","Matricula:",raluno.matricula); printf("\n%-10s %s\n","Nome:",raluno.nome); printf("\n%-10s %d\n","Idade:",raluno.idade); printf("\n%-10s %s\n","Sexo:",sexo); printf("\n%-10s %s\n","Curso:",curso); printf("\n%-10s %s\n","Turno:",turno); linha(); } void remover(){ int op,op1,ma,ma1; do{ linha(); printf("%40s","REMOVER"); linha(); setlocale(LC_ALL,""); printf("\nInforme a matricula do aluno que deseja remover: "); scanf("%d",&ma); ma1=busca(ma); if(ma1==-1) printf("\nAluno não encontrado...\n"); else{ exibir(ma1); printf("\nDeseja realmente Remover este Aluno? 1-SIM /2-NÃO: "); scanf("%d",&op); } if(op==1){ //comandos para remover o registro fseek(aluno,ma1*sizeof(Taluno),SEEK_SET); fwrite(&saluno,sizeof(Taluno),1,aluno); printf("\nAluno Removido com Sucesso...\n"); }else if(ma1!=-1 && op==2) printf("\nRemoção Cancelada com sucesso...\n"); printf("\nDeseja Remover outro Aluno? 1-SIM / 2-NÃO: "); scanf("%d",&op1); limpar(); }while(op1==1); } void listagem(){ char sexo[15],curso[15],turno[15]; setlocale(LC_ALL,""); //comandos para posicionar o ponteiro no inicio e ler o arquivo rewind(aluno); fread(&raluno,sizeof(Taluno),1,aluno); printf("%40s","LISTAGEM"); linha(); printf("Matricula"); printf("%12s","Nome"); printf("%16s","Idade"); printf("%12s","Sexo"); printf("%14s","Curso"); printf("%14s","Turno"); linha(); while(feof(aluno)==0){ if(raluno.matricula!=0){ if(raluno.sexo==1) strcpy(sexo,"Masculino"); else strcpy(sexo,"Feminino"); if(raluno.curso==1) strcpy(curso,"Php"); else if(raluno.curso==2) strcpy(curso,"Java"); else strcpy(curso,"Mobile"); if(raluno.turno==1) strcpy(turno,"Manhã"); else strcpy(turno,"Noite"); printf("%-12d",raluno.matricula); printf("%-22s",raluno.nome); printf("%-10d",raluno.idade); printf("%-14s",sexo); printf("%-14s",curso); printf("%-8s",turno); fread(&raluno,sizeof(Taluno),1,aluno); }else fread(&raluno,sizeof(Taluno),1,aluno); } linha(); printf("\n\nTecle enter para voltar para o menu...\n\n"); getche(); limpar(); } void editar(){ int op,op1,m,m1,op2,op3; do{ linha(); printf("%40s","EDITAR"); linha(); setlocale(LC_ALL,""); printf("\nInforme a Matricula do Aluno Que Deseja Editar: "); scanf("%d",&m); m1=busca(m); if(m1==-1){ printf("\nAluno não encontrado...\n"); }else{ exibir(m1); printf("\nDeseja realmente editar este aluno? 1-SIM / 2-NÃO: "); scanf("%d",&op); } if(op==1){ do{ limpar(); linha(); printf("%40s","EDITAR"); linha(); printf("\n1 - Nome\n"); printf("\n2 - Idade\n"); printf("\n3 - Sexo\n"); printf("\n4 - Curso\n"); printf("\n5 - Turno\n"); printf("\nEscolha a opção que deseja editar: "); scanf("%d",&op1); switch(op1){ case 1:{ limpar(); printf("\nInforme o nome do aluno: "); fflush(stdin); gets(raluno.nome); printf("\nAluno editado com sucesso...\n"); exibir(m1); }break; case 2:{ limpar(); printf("\nInforme a idade do aluno: "); scanf("%d",&raluno.idade); printf("\nAluno editado com sucesso...\n"); exibir(m1); }break; case 3:{ limpar(); printf("\nInforme o sexo do aluno 1-MASC / 2-FEM: "); scanf("%d",&raluno.sexo); printf("\nAluno editado com sucesso...\n"); exibir(m1); }break; case 4:{ limpar(); printf("\nInforme o curso do aluno 1-PHP / 2-JAVA / 3-MOBILE: "); scanf("%d",&raluno.curso); printf("\nAluno editado com sucesso...\n"); exibir(m1); }break; case 5:{ limpar(); printf("\nInforme o turno do aluno 1-MANHÃ / 2-NOITE: "); scanf("%d",&raluno.turno); printf("\nAluno editado com sucesso...\n"); exibir(m1); }break; default:printf("\a\nOpção invalida...\n");break; } //comandos para encontrar o registro e salvar as informações alteradas fseek(aluno,m1*sizeof(Taluno),SEEK_SET); fwrite(&raluno,sizeof(Taluno),1,aluno); printf("\nDeseja editar outra informação do aluno? 1-SIM / 2-NÃO: "); scanf("%d",&op2); }while(op2==1); }else if(m1!=-1 && op==2) printf("\nRemoção cancelada com sucesso...\n"); if((m1==-1) ||(op2==2) || (op==2)){ printf("\nDeseja editar outro aluno? 1-SIM / 2-NÃO: "); scanf("%d",&op3); limpar(); } }while(op3==1); } int main(){ abrearquivo(); int escolha; do{ setlocale(LC_ALL,""); printf("%40s","MENU"); linha(); printf("\n1 - Cadastrar\n"); printf("\n2 - Remover\n"); printf("\n3 - Editar\n"); printf("\n4 - Listagem\n"); printf("\n0 - Sair"); linha(); printf("\nEscolha uma opção: "); scanf("%d",&escolha); limpar(); switch(escolha){ case 1:cadastro();break; case 2:remover();break; case 3:editar();break; case 4:listagem();break; case 0:fclose(aluno);break; default:printf("\a");break; /* \a usado para dar um bip quando o usuario optar por uma opção diferente das oferecidas */ } }while(escolha!=0); return 0; system("pause"); }
ORDENACAO PELO METODO SHELLSORT
Números de caracteres em arquivo
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)