Tenho um exercicio bem explicadinho sobre cadastros de alunos, notas , diciplinas... Da uma olhada ae talvez ajude para fazer o seu. /* Crie uma estrutura para registro de alunos da escola Alfa. Será necessário
armazenar RM, o nome, o telefone, seu endereço e as notas de cada disciplina.
O endereço é composto pelos campos: rua, numero, bairro, cep, cidade, estado.
O boletim é formado pelo nome da disciplina, as 4 notas bimestrais e mais um
campo para a média final. Desenvolva o programa para alimentar esses dados e
depois mostrar todos os dados cadastrados na tela. Considere um máximo de 100
alunos e 10 disciplinas
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // para usar o getch
#include <ctype.h> // para usar o toupper
#include <string.h> // para usar o strlen
// Declara as estruturas
struct ENDERECO {
char rua[30];
int numero;
char bairro[30];
char cep[8];
char cidade[30];
char estado[2];
};
struct DISCIPLINA {
char materia[20];
float nota1;
float nota2;
float nota3;
float nota4;
float media;
};
struct ALUNO {
int rm;
char nome[30];
char fone[20];
ENDERECO endereco;
DISCIPLINA disciplina[10]; // cada aluno terá até 10 disciplinas
};
// Define a variavel para manipulação, com o maximo de 100 ocorrencias
ALUNO alunos[100];
// Alimentacao dos dados
int main() {
char outra;
int x = 0;
for (x=0; x<100; x++){
// limpa a tela
system ("cls");
// dados do aluno.
fflush(stdin);
printf ("\n Digite o RM: " );
scanf ("%i", &alunos[x].rm);
fflush(stdin);
printf ("\n Digite o Nome do aluno: " );
scanf ("%30[^\n]s", &alunos[x].nome); // limita a 30 caracteres, ignorando brancos.
fflush(stdin);
printf ("\n Digite o Telefone do aluno: " );
scanf ("%20[^\n]s", &alunos[x].fone);
fflush(stdin);
// endereco do aluno.
printf ("\n ---------Endereco do Aluno: %s", alunos[x].nome);
printf ("\n Digite o nome da Rua: " );
scanf ("%30[^\n]s", &alunos[x].endereco.rua);
fflush(stdin);
printf ("Digite o Numero da casa: " );
scanf ("%i", &alunos[x].endereco.numero);
fflush(stdin);
printf ("Digite o nome do Bairro: " );
scanf ("%30[^\n]s", &alunos[x].endereco.bairro);
fflush(stdin);
printf ("Digite o CEP: " );
scanf ("%8[^\n]s", &alunos[x].endereco.cep);
fflush(stdin);
printf ("Digite o nome da Cidade: " );
scanf ("%30[^\n]s", &alunos[x].endereco.cidade);
fflush(stdin);
printf ("Digite o nome da Estado: " );
scanf ("%2[^\n]s", &alunos[x].endereco.estado);
// Disciplinas de Notas do Aluno. São até 10 disciplinas por aluno
printf ("\n------Disciplinas do aluno: %s", alunos[x].nome);
for (int y=0; y<10; y++){
fflush(stdin);
printf ("\nDigite o nome da Disciplina: " );
scanf ("%20[^\n]s", &alunos[x].disciplina[y].materia);
fflush(stdin);
printf ("\nDigite a nota do 1o. bim: " );
scanf ("%f", &alunos[x].disciplina[y].nota1);
fflush(stdin);
printf ("Digite a nota do 2o. bim: " );
scanf ("%f", &alunos[x].disciplina[y].nota2);
fflush(stdin);
printf ("Digite a nota do 3o. bim: " );
scanf ("%f", &alunos[x].disciplina[y].nota3);
fflush(stdin);
printf ("Digite a nota do 4o. bim: " );
scanf ("%f", &alunos[x].disciplina[y].nota4);
// Calcula a media e atribui
alunos[x].disciplina[y].media = (alunos[x].disciplina[y].nota1+
alunos[x].disciplina[y].nota2+
alunos[x].disciplina[y].nota3+
alunos[x].disciplina[y].nota4)/4;
printf("\n Media desse aluno: %.2f : ", alunos[x].disciplina[y].media);
// Mais disciplinas ??
printf ("\nLançar outra disciplina? S/N:" );
outra=getch();
// converte a letra digitada para Maiuscula e compara
if (toupper(outra) != 'S') break;
}
// Mais alunos ??
printf ("\n\n Lançar outro Aluno? S/N: " );
outra=getch();
// converte a letra digitada para Maiuscula e compara
if (toupper(outra) != 'S') break;
}
// Mostrar os dados digitados ??
printf ("\nDeseja Mostrar os dados Digitados ? S/N: " );
outra=getch();
// converte a letra digitada para Maiuscula e compara
if (toupper(outra) != 'S') return 0;
// limpa a tela
system("cls");
// mostra os dados Apenas dos alunos lançados. x contem o ultimo usado.
for (int z=0; z <= x; z++) {
printf("\nDADOS DO ALUNO ---> %s ", alunos[z].nome);
printf("\n\tRM %i", alunos[z].rm);
printf("\n\tFone: %s", alunos[z].fone);
printf("\n\tRua: %s Numero: %i",alunos[z].endereco.rua,alunos[z].endereco.numero);
printf("\n\tBairro: %s Cep: %s Cidade: %s UF: %s", alunos[z].endereco.bairro, alunos[z].endereco.cep,
alunos[z].endereco.cidade, alunos[z].endereco.estado);
printf("\n\t--------DISCIPLINAS/NOTAS ------- ");
for (int zz=0; zz < 10; zz++) {
if (strlen(alunos[z].disciplina[zz].materia) > 0) {
printf ("\n\tDisciplina: %s" , alunos[z].disciplina[zz].materia);
printf ("1bim: %.2f 2bim: %.2f 3bim: %.2f 4bim: %.2f Media Final: %.2f",
alunos[z].disciplina[zz].nota1,alunos[z].disciplina[zz].nota2,
alunos[z].disciplina[zz].nota3,alunos[z].disciplina[zz].nota4,
alunos[z].disciplina[zz].media);
}
}
}
printf ("\n-->fim \n" );
system("pause");
return 0;
};