Ir ao conteúdo
  • Cadastre-se

Criação de um arquivo binário com o usuário digitando o caminho depois cadastrar


kika123

Posts recomendados

Olá pessoal, gostaria de pedir ajuda a vocês, sou iniciante nessa área e por isso queria uma ajuda de alguém para conseguir fazer um algoritmo , Preciso de ajuda para criar um arquivo binário (.dat) , que gerencie dados sobre alunos através de arquivos.(nome,curso e media no caso).(criar,cadasrto e lista)
*Criação de um arquivo
A aplicação deverá solicitar ao usuário o caminho completo + nome do arquivo a ser criado e validar
se as informações permitem a criação do arquivo e, se não permitir, manter a solicitação das
informações, até que o arquivo seja criado corretamente.
*Cadastro de aluno
O usuário deverá digitar as informações do aluno e o mesmo deverá ser salvo no arquivo que foi
criado.
* Listagem de todos os alunos
Listar nome, curso e média global de todos os alunos cadastrados no arquivo

 

Considere as seguintes informações sobre um aluno:
 nome (alfanumérico de até 30 caracteres)
 curso (alfanumérico de até 30 caracteres)
 média global (float)

tentei criar mas acho que so a parte de ciar arquivo deu certo

 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

FILE *arq=NULL;

struct aluno{
	char nome[30];
	char curso[30];
	float media;
     // variaveis do tipo registro
};

//função criar aqruivo
void criarArquivo(){
	char local [50];
	
	
	do{
	   system("cls");
     	cout<<"Digite o caminho do novo arquivo: ";
    	cin>>local;
	arq=fopen (local, "w+b");	
	
    if (arq==NULL){
        cout<<("\n O camiho não existe: ");
   }
else {
     	cout<<"\n Arquivo criado com sucesso.";
	
     }

       } while (arq=NULL);
         system ("pause");
 
    }
        
//função Aluno

void addElementos(FILE *arq){
   
     int tam;
     char local [50];
    aluno a; 
  
    
    printf("Digite a Quantidade de Aluno que Deseja Cadastrar: ");
    scanf("%d", &tam);
    (struct aluno*) malloc(tam*sizeof(struct aluno));//Loca memória para a estrutura 

	    cout<<"Digite o caminho onde se econtra arquivo: ";
    	cin>>local;
    	arq = fopen(local,"ab"); 
	 if (arq==NULL){
        cout<<("\n O camiho não existe: ");
   }
else {
     	cout<<"\n Arquivo criado com sucesso.";
     	
    system("CLS");
     }
     printf("\n----------------------------------------------------------\n\n");
     for(int i=0; i<tam; i++){
        fflush(stdin);   
        printf("Digite o Nome do Aluno: ");
        gets(a.nome);
        printf("Digite a curso ");
        gets(a.curso);
        
        printf("Digite a Media: ");
        scanf("%f",&a.media);
        fwrite(&a,sizeof(struct aluno),1,arq);   
     }  
     
     fclose(arq);
      system("PAUSE");
 
}
     
void imprimir(FILE *arq){
	
	int tam;
     char local [50];
     
     
	
	 aluno a; 
	
	
	 cout<<"Digite o caminho onde se econtra arquivo: ";
    	cin>>local;
    	arq = fopen(local,"ab"); 
	 if (arq==NULL){
        cout<<("\n O camiho não existe: ");
   }
else {
     	cout<<"\n Arquivo criado com sucesso.";
	
		system("cls");
}
	 printf("\n\nNome = %s", a.nome);
     printf("\nAluno = %s ", a.curso);
     printf("\nmedia =  %f", a.media);
     putchar('\n'); // avança uma linha
    
  
  fclose(arq);
      system("PAUSE");

}

int main(int argc, char** argv) {
	int esc;
	do{
		system("cls");
		cout<<"O que voce deseja fazer?\n\n";
		cout<<"\t(1) Criar Arquivo\n";
		cout<<"\t(2) Cadastrar Aluno\n";
		cout<<"\t(3) Listar Aluno\n";
		cout<<"\t(4) LIstar auno acima da media\n";
		cout<<"\t(5) Buscar aluno\n";
		cout<<"\t(5) Sar\n";
		cin>>esc;
		
		switch(esc){
			case 1: criarArquivo ();break;
			case 2: addElementos (arq);break;
			case 3: imprimir (arq);break;
		
		
		}
	}while(esc<=6);
	return 0;
		system("pause");
}

gostaria da colaboração de vocês! 

Link para o comentário
Compartilhar em outros sites

Nesse caso, você errou na função para criar o arquivo.

 

Use a referência do site da Microsoft, onde há a função mais apropriada para Windows.

 

Se o banco de dados for grande, o fopen() não é nada recomendado.

 

Se não for um trabalho de curso ou faculdade, recomendo ler sobre o sistema de banco de dados SQLite

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...