Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal!
Preciso fazer um trabalho da facul e é o seguinte:
Implementar um programa para auxiliar no fechamento das notas do semestre
Sabendo que o usuário deve entrar com a quantidade de disciplina, o numero
de avaliações por disciplina e o peso das mesmas quando for o caso.
O programa deve armazenar o código do aluno, nome, periodo, disciplinas e a média
em cada uma delas.
Apresente as seguintes opções:
1-Cadastrar Aluno
2-Cadastrar Disciplina
3-Lançar Notas
4-Consulta Aluno
obs: Armazena os dados em 2 arquivos um para disciplinas e outro para alunos.
Utilize 2 tipos de ED para pesquisar, listas encadeada dinamica e arvore binária
de busca
Estou usando lista encadeada para isnerir os dados.Uma de minhas duvida é na struct, como irei cadastrar o campo disciplina dentro da struct aluno, sendo que irei cadastrar as disciplinas e depois os alunos? A funcao de leitura no arquivo nao esta funcionando. Segue o codigo:
#include <stdio.h>
#include <stdlib.h>
typedef struct aluno // estrutura da ficha de aluno
{
int codigo;
char nome[30];
char periodo[30];
struct disciplina* disciplina;
float media;
struct aluno* prox;
}tAluno;
typedef struct disciplina // estrutura de ficha para disciplina
{
int codigo;
char nomeDisciplina[30];
int numProva;
struct disciplina* prox;
}tDisciplina;
/*
**************** Escopo de funções *************************/
int menu();
void cadAluno(tAluno** p, tAluno** u);
void cadDisciplina(tDisciplina** p, tDisciplina** u);
void salvaDisciplina(tDisciplina* p);
void leDisciplina(tDisciplina* p);
/* **************************************************************/
int main()
{
tAluno* p; tAluno* u;
p = NULL; u = NULL;
tDisciplina *p1; tDisciplina *u1;
p1 = NULL; u1 = NULL;
int opcao;
do
{
opcao = menu();
switch(opcao)
{
case 1:
printf("\n\nCadastro de Alunos\n\n");
cadAluno(&p,&u);
break;
case 2:
printf("\n\nCadastro de Disciplinas\n\n");
cadDisciplina(&p1,&u1);
salvaDisciplina(p1);
break;
case 3:
printf("\n\nLancamento de Notas\n\n");
// falta implementar, mas estou usando como teste para ler o arquivo, posteriormente irei fazer uma busca e mostrar os dados em uma arvore binaria.
leDisciplina(p1);
break;
case 4:
printf("\n\nConsulta de Alunos\n\n");
break;
default:
printf("\n\nNenhuma opcao selecionada\n\n");
break;
}
}
while(opcao!= 4);
system ( "Pause" );
return 0;
}
int menu()
{
int opcao;
printf("::::::::::::::::: SysMedia Ver.beta1.0 ::::::::::::::::::::::");
printf("\n\n\nMenu Principal\n\n");
printf("\n 1 - Cadastrar Alunos");
printf("\n 2 - Cadastrar Disciplinas ");
printf("\n 3 - Lancar Notas");
printf("\n 4 - Consultar Aluno");
printf("\n\n\nEscolha sua opcao:");
scanf("%d",&opcao);
return opcao;
}
void cadAluno(tAluno p, tAluno u)
{
tAluno* novo;
novo = (tAluno*)malloc(sizeof(tAluno));
printf("Codigo:");
scanf("%d",&novo->codigo);
fflush(stdin);
printf("Nome:");
scanf("%s", novo->nome);
fflush(stdin);
printf("Periodo:");
scanf("%s", novo->periodo);
fflush(stdin);
printf("Disciplina:");
scanf("%s", novo->disciplina->nomeDisciplina); // preciso puxar a disciplina cadastrada
fflush(stdin);
printf("Media:");
scanf("%f", &novo->media);
novo->prox = NULL;
if(*u == NULL)
{
*p = novo;
*u = novo;
}
else
{
(*u)->prox = novo;
*u = novo;
}
}
void cadDisciplina(tDisciplina p, tDisciplina u)
{
tDisciplina* nova; FILE* arq;
nova = (tDisciplina*)malloc(sizeof(tDisciplina));
printf("Codigo:");
scanf("%d",&nova->codigo);
fflush(stdin);
printf("Nome da Disciplina:");
scanf("%s", nova->nomeDisciplina);
fflush(stdin);
printf("Quantidade de Provas:");
scanf("%d", &nova->numProva);
nova->prox = NULL;
if(*u == NULL)
{
*p = nova;
*u = nova;
}
else
{
(*u)->prox = nova;
*u = nova;
}
}
void salvaDisciplina(tDisciplina* p)
{
FILE* arq;
arq = fopen("disciplinas.jma","wb");
fwrite(&p,sizeof(tDisciplina),1,arq);
fclose(arq);
}
/*
********** teste para leitura no arquivo *********************
*/
void leDisciplina(tDisciplina* p)
{
FILE* arq;
arq = fopen("disciplinas.jma","rb");
if(arq == NULL)
{
printf("nao abriu");
}
fseek(p,0,SEEK_SET);
fread(&p, sizeof(tDisciplina),1,arq);
printf("\ncodigo: %d", p->codigo);
printf("\nnome Disciplina: %s", p->nomeDisciplina);
printf("\nQtde de Provas: %d", p->numProva);
fclose(arq);
}Carregando comentários...