Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <locale.h>
- #include <conio.h>
- // Protótipos:
- void funcao_cadastra_turma(); //Têm inicio na linha 109
- void funcao_cadastra_aluno(); //Têm inicio na linha 132
- void funcao_imprimir_lista(); //Têm inicio na linha 344
- void funcao_imprimir_dados(); //Têm inicio na linha 393
- void funcao_imprimir_situacao(); //Têm inicio na linha 441
- typedef struct { // Estrutura para cadastro de alunos.
- char nome[31];
- int matricula;
- float notas;
- float media;
- int frequencia;
- float prova1;
- float prova2;
- float trab1;
- float exer1;
- float exer2;
- int situacao;
- char turma[10];
- }functp;
- functp cadastro[50];
- typedef struct { // Estrutura para cadastro de turma.
- char nometurma[10];
- int quant_turma;
- }functp2;
- functp2 turma[10];
- // Variáveis Globais.
- int cont=0;
- int numturma;
- int i=0;
- char decsit[20];
- main(){ // Função principal.
- int opc;
- setlocale(LC_ALL, "Portuguese");
- while (opc !=6){ // Menu principal.
- setbuf (stdin,NULL);
- printf("***********************************************************************\n");
- printf(" UMA ESCOLINHA MUITCHO LOUCA\n");
- printf("***********************************************************************\n");
- printf("\nPor favor escolha uma opção.\n\n");
- printf("1 - Cadastrar turma.\n");
- printf("2 - Cadastrar aluno.\n");
- printf("3 - Ver situação de um Aluno APROVADO / REPROVADO OU TODOS.\n");
- printf("4 - Ver listagem da situação de todos os alunos.\n");
- printf("5 - Ver situação de um aluno.\n");
- printf("6 - Sair.\n");
- scanf("%d", &opc);
- if (opc!=1 && opc != 2 && opc!= 3 && opc != 4 && opc !=5 && opc !=6){ // Impede que seja digitada uma opção inexistente.
- while (opc!=1 && opc != 2 && opc!= 3 && opc != 4 && opc !=5 && opc !=6){
- setbuf (stdin,NULL);
- printf("\nOpção não reconhecida, por favor tente novamente.\n");
- printf("\nPor favor escolha uma opção.\n\n");
- printf("1 - Cadastrar turma.\n");
- printf("2 - Cadastrar aluno.\n");
- printf("3 - Ver situação de um Aluno APROVADO / REPROVADO OU TODOS.\n");
- printf("4 - Ver listagem da situação de todos os alunos.\n");
- printf("5 - Sair.\n");
- scanf("%d", &opc);
- }
- }
- if (opc == 1) // Chama a função 1.
- funcao_cadastra_turma();
- if (opc == 2) // Chama a função 2.
- funcao_cadastra_aluno();
- if (opc == 3) // Chama a função 3.
- funcao_imprimir_lista();
- if (opc == 4) // Chama a função 4.
- funcao_imprimir_dados();
- if (opc == 5) // Chama a função 5.
- funcao_imprimir_situacao();
- }
- system("cls"); // limpa a tela.
- printf("\nVocê saiu com sucesso do sistema!\n");
- }
- void funcao_cadastra_turma(){ // Função para cadastrar a turma.
- setbuf (stdin,NULL);
- printf ("Digite quantas turmas deseja cadastrar: \n");
- scanf ("%d", &numturma);
- if (numturma <=0 || numturma > 10){ // Impede que seja cadastrado uma quantidade nula ou maior que a permitida de turmas.
- printf("\nVocê não pode cadastrar uma quantidade de turmas igual a 0 ou maior que 10. Tente novamente.\n");
- funcao_cadastra_turma();
- }
- setbuf (stdin,NULL);
- for (cont=0; cont<numturma; cont++){
- printf ("\nDigite o nome da %d° turma.\n", cont+1);
- setbuf (stdin,NULL); // Limpa o buffer da string, possibilitando ser digitadas palavras com espaços em branco.
- scanf("%[^\n]s", turma[cont].nometurma);
- system("cls");
- printf("\n\nTurma %s cadastrada com sucesso!\n\n", turma[cont].nometurma); // Confirma que a turma foi cadastrada.
- }
- }
- void funcao_cadastra_aluno(){ // Função para cadastrar o aluno.
- int numturma, numturma2[10], maisumturma, quantturmas, t;
- if (cont == 0){ // Impede que um aluno seja cadastrado em uma turma inexistente.
- system("cls"); // limpa a tela.
- printf("\n\nAntes de cadastrar um aluno, primeiro você precisa cadastrar uma turma.\n\n");
- }
- else {
- printf("Deseja cadastrar o aluno em mais de uma turma?\n"); // Ofereçe a opção de cadastrar o aluno em mais de uma turma, ou somente em uma.
- printf("1 - Sim.\n");
- printf("2 - Não.\n");
- scanf("%d", &maisumturma);
- if (maisumturma != 1 && maisumturma != 2){ // Impede que seja digitada uma opção inexistente.
- while (maisumturma != 1 && maisumturma != 2){
- printf("Opção não reconhecida, por favor tente novamente.\n");
- printf("1 - Sim.");
- printf("2 - Não.");
- scanf("%d", &maisumturma);
- }
- }
- if (maisumturma == 1){ // Seleciona a opção 1.
- printf("\nDigite quantas turmas deseja cadastrar o aluno: \n");
- scanf("%d", &quantturmas);
- if (quantturmas > 10 or quantturmas <0){ // Impede que a quantidade de turmas cadastradas seja irregular.
- while (quantturmas > 10 or quantturmas <0)
- printf("\nA quantidade de turmas digitadas excedeu o limite ou é igual a 0. Tente novamente.\n");
- scanf("%d", &quantturmas);
- if (quantturmas > cont or numturma < 0){
- while(quantturmas > cont or numturma < 0){
- printf("\nTurma não encontrada, tente novamente.\n");
- scanf("%d", &numturma);
- }
- }
- }
- for (t=0; t<quantturmas; t++){
- printf("Digite o número da %d° turma que deseja cadastrar o aluno: \n", t+1);
- scanf("%d", &numturma2[t]);
- if (numturma > (cont-1) or numturma < 0){ // Impede que seja selecionada uma turma inexistente.
- while(numturma > (cont-1) or numturma < 0){
- printf("\nTurma não encontrada, tente novamente.\n");
- scanf("%d", &numturma2[t]);
- }
- }
- }
- setbuf (stdin,NULL);
- printf("Por favor digite o nome do aluno que deseja cadastrar nessas turmas: \n");
- scanf("%[^\n]s", &cadastro[i].nome);
- printf("Digite a nota da prova 1: \n"); // Cadastra a nota da prova 1.
- scanf("%f", &cadastro[i].prova1);
- if (cadastro[i].prova1 < 0 or cadastro[i].prova1 >30){ // Impede que seja digitado uma nota maior/menor que os limites estabelecidos.
- while (cadastro[i].prova1 < 0 or cadastro[i].prova1 >30){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].prova1);
- }
- }
- printf("Digite a nota da prova 2: \n"); // Cadastra a nota da prova 2.
- scanf("%f", &cadastro[i].prova2);
- if (cadastro[i].prova2 < 0 or cadastro[i].prova2 >50){ // Impede que seja digitado uma nota maior/menor que os limites estabelecidos.
- while (cadastro[i].prova2 < 0 or cadastro[i].prova2 >50){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].prova2);
- }
- }
- printf("Digite a nota do Trabalho 1: \n"); // Cadastra a nota do trabalho 1.
- scanf("%f", &cadastro[i].trab1);
- if (cadastro[i].trab1 < 0 or cadastro[i].trab1 >10){ // Impede que seja digitado uma nota maior/menor que os limites estabelecidos.
- while (cadastro[i].trab1 < 0 or cadastro[i].trab1 >10){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].trab1);
- }
- }
- printf("Digite a nota do Exercício 1: \n"); // Cadastra a nota da exercicio 1.
- scanf("%f", &cadastro[i].exer1);
- if (cadastro[i].exer1 < 0 or cadastro[i].exer1 >5){ // Impede que seja digitado uma nota maior/menor que os limites estabelecidos.
- while (cadastro[i].exer1 < 0 or cadastro[i].exer1 >5){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].exer1);
- }
- }
- printf("Digite a nota do Exercício 2: \n"); // Cadastra a nota da exercicio 2.
- scanf("%f", &cadastro[i].exer2);
- if (cadastro[i].exer2 < 0 or cadastro[i].exer2 >5){ // Impede que seja digitado uma nota maior/menor que os limites estabelecidos.
- while (cadastro[i].exer2 < 0 or cadastro[i].exer2 >5){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].exer2);
- }
- }
- cadastro[i].media = (cadastro[i].prova1 + cadastro[i].prova2 + cadastro[i].trab1 + cadastro[i].exer1 + cadastro[i].exer2); // Calcula a media do aluno.
- printf("Agora digite por favor a frequência do aluno %s: \n", cadastro[i].nome);
- scanf("%d", &cadastro[i].frequencia);
- cadastro[i].matricula = 10*12*(i+1); // Gera um número de matrícula aleatório.
- if (cadastro[i].media >= 70 && cadastro[i].frequencia >= 40){
- system("cls");
- printf("\nO aluno %s foi cadastrado com média de %.2f, frequência: %d e número de matrícula: %d.\n\n", cadastro[i].nome, cadastro[i].media, cadastro[i].frequencia, cadastro[i].matricula);
- printf("\nO aluno %s foi APROVADO.\n\n", cadastro[i].nome);
- }
- if (cadastro[i].media < 70 or cadastro[i].frequencia < 40){
- system("cls");
- printf("\nO aluno %s foi cadastrado com média de %.2f, frequência: %d e número de matrícula: %d.\n\n", cadastro[i].nome, cadastro[i].media, cadastro[i].frequencia, cadastro[i].matricula);
- printf("\nO aluno %s foi REPROVADO.\n\n", cadastro[i].nome);
- }
- i=i+1; // Incrementa +1 no vetor principal.
- }
- if (maisumturma == 2){ // Seleciona a opção 2.
- printf("Digite o número da turma que deseja cadastrar o aluno: \n");
- scanf("%d", &numturma);
- if (numturma > (cont-1) or numturma < 0){ // Impede que seja selecionada uma turma inexistente.
- while(numturma > (cont-1) or numturma < 0){
- printf("\nTurma não encontrada, tente novamente.\n");
- scanf("%d", &numturma);
- }
- }
- printf("\nVocê selecionou a turma %s.\n\n", turma[numturma].nometurma); // Confirma a turma selecionada.
- cadastro[i].turma = turma[numturma].nometurma;
- setbuf (stdin,NULL);
- printf("Por favor digite o nome do aluno que deseja cadastrar na turma %s: \n", turma[numturma].nometurma);
- scanf("%[^\n]s", &cadastro[i].nome);
- printf("Digite a nota da prova 1: \n"); // Cadastra a nota da prova 1, na opção2.
- scanf("%f", &cadastro[i].prova1);
- if (cadastro[i].prova1 < 0 or cadastro[i].prova1 > 30){
- while (cadastro[i].prova1 < 0 or cadastro[i].prova1 > 30){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].prova1);
- }
- }
- printf("Digite a nota da prova 2: \n"); // Cadastra a nota da prova 2 na opção2.
- scanf("%f", &cadastro[i].prova2);
- if (cadastro[i].prova2 < 0 or cadastro[i].prova2 > 50){
- while (cadastro[i].prova2 < 0 or cadastro[i].prova2 > 50){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].prova2);
- }
- }
- printf("Digite a nota do Trabalho 1: \n"); // Cadastra a nota do trabalho 1 na opção2.
- scanf("%f", &cadastro[i].trab1);
- if (cadastro[i].trab1 < 0 or cadastro[i].trab1 >10){
- while (cadastro[i].trab1 < 0 or cadastro[i].trab1 >10){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].trab1);
- }
- }
- printf("Digite a nota do Exercício 1: \n"); // Cadastra a nota da exercicio 1 na opção2.
- scanf("%f", &cadastro[i].exer1);
- if (cadastro[i].exer1 < 0 or cadastro[i].exer1 >5){
- while (cadastro[i].exer1 < 0 or cadastro[i].exer1 >5){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].exer1);
- }
- }
- printf("Digite a nota do Exercício 2: \n"); // Cadastra a nota da exercicio 2 na opção2.
- scanf("%f", &cadastro[i].exer2);
- if (cadastro[i].exer2 < 0 or cadastro[i].exer2 >5){
- while (cadastro[i].exer2 < 0 or cadastro[i].exer2 >5){
- printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
- scanf("%f", &cadastro[i].exer2);
- }
- }
- cadastro[i].media = (cadastro[i].prova1 + cadastro[i].prova2 + cadastro[i].trab1 + cadastro[i].exer1 + cadastro[i].exer2); // Calcula a media do aluno.
- printf("Agora digite por favor a frequência do aluno %s: \n", cadastro[i].nome);
- scanf("%d", &cadastro[i].frequencia);
- cadastro[i].matricula = 10*12*(i+1); // Gera um número de matrícula aleatório.
- if (cadastro[i].media >= 70 && cadastro[i].frequencia >= 40){
- system("cls");
- printf("\nO aluno %s foi cadastrado com média de %.2f, frequência: %d e número de matrícula: %d.\n\n", cadastro[i].nome, cadastro[i].media, cadastro[i].frequencia, cadastro[i].matricula);
- cadastro[i].situacao = 1;
- printf("\nO aluno %s foi APROVADO.\n\n", cadastro[i].nome);
- }
- if (cadastro[i].media < 70 or cadastro[i].frequencia < 40){
- system("cls");
- printf("\nO aluno %s foi cadastrado com média de %.2f, frequência: %d e número de matrícula: %d.\n\n", cadastro[i].nome, cadastro[i].media, cadastro[i].frequencia, cadastro[i].matricula);
- cadastro[i].situacao = 0;
- printf("\nO aluno %s foi REPROVADO.\n\n", cadastro[i].nome);
- }
- i=i+1; // Incrementa +1 no vetor principal.
- }
- }
- }
- void funcao_imprimir_lista(){ // Função para listagem dos alunos.
- int j;
- if (i == 0){
- system("cls"); // limpa a tela.
- printf("\nVocê não tem alunos cadastrados. \n\n");
- }
- else {
- printf ("\nDeseja imprimir os alunos APROVADOS, REPROVADOS, ou TODOS? \n");
- scanf ("%s", &decsit);
- if (stricmp(decsit,"aprovados") == 0) {
- printf ("\nImprimindo os alunos APROVADOS: \n");
- for (j=0; j<i; j=j+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
- printf("\nALUNO: %s // SITUAÇÃO: ", cadastro[j].nome);
- if (cadastro[j].situacao == 1)
- printf("APROVADO.\n\n");
- }
- }
- if (stricmp(decsit,"reprovados") == 0) {
- printf ("\nImprimindo os alunos REPROVADOS: \n\n");
- for (j=0; j<i; j=j+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
- if (cadastro[j].situacao == 0){
- printf("\nALUNO: %s // SITUAÇÃO: ", cadastro[j].nome);
- printf("REPROVADO.\n\n");
- }
- }
- }
- if (stricmp(decsit,"todos") == 0) {
- printf ("\nImprimindo todos os alunos: \n");
- for (j=0; j<i; j=j+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
- printf("\nALUNO: %s / SITUAÇÃO: ", cadastro[j].nome);
- if (cadastro[j].situacao == 1)
- printf("APROVADO.\n\n");
- else
- printf("REPROVADO.\n\n");
- }
- }
- if ((stricmp(decsit,"aprovados") == 1) or (stricmp(decsit,"reprovados") == 1) or (stricmp(decsit,"todos") ==1) ){
- printf ("\nUse o teclado corretamente, opção não encontrada 02.\n\n");
- funcao_imprimir_lista();
- }
- }
- }
- void funcao_imprimir_dados(){
- int k, opc3, u, opcturma;
- if (i == 0){
- system("cls"); // limpa a tela.
- printf("\n\nVocê não tem alunos cadastrados. \n\n");
- }
- else{
- printf("\nPor favor escolha uma opção: \n");
- printf("1 - Imprimir alunos de acordo com a turma.\n");
- printf("2 - Imprimir dados de alunos escolhidos.\n");
- printf("3 - Imprimir dados de todos os alunos.\n");
- scanf("%d", &opc3);
- system("cls");
- printf("\nLISTAGEM: \n");
- if (opc3 == 1){
- printf("\nPor favor escolha a turma: \n");
- for (u=0; u<cont; u=u+1){
- printf("\nTURMA: %d - NOME: %s\n\n",u, turma[u].nometurma);
- scanf("%d", &opcturma);
- }
- }
- if (opc3 ==3){
- for (k=0; k<i; k=k+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
- printf("\nALUNO: %s / MÉDIA: %.2f / FREQUÊNCIA: %d / MATRÍCULA: %d / TURMA: %s / SITUAÇÃO: ", cadastro[k].nome, cadastro[k].media, cadastro[k].frequencia, cadastro[k].matricula, cadastro[k].turma);
- if (cadastro[k].situacao == 1)
- printf("APROVADO.");
- else
- printf("REPROVADO.");
- }
- }
- }
- }
- void funcao_imprimir_situacao(){ //Permite procurar um aluno pelo número de matrícula.
- int numeromatricu, y, h, g, f=0;
- if (i == 0){ // Evitar procurar uma matrícula sem ter alunos cadastrados.
- system("cls"); // limpa a tela.
- printf("\n\nVocê não tem alunos cadastrados. \n\n");
- }
- else{
- printf("\nPor favor digite o número de mátricula do aluno: \n");
- scanf("%d", &numeromatricu);
- for (g=0; g<i; g=g+1){ //Procura se a matrícula existe em todo o vetor principal.
- if (cadastro[g].matricula != numeromatricu)
- printf("\nProcurando matrícula ...\n");
- else
- if (cadastro[g].matricula == numeromatricu){
- printf("\nMatrícula encontrada!\n");
- f = 1;
- }
- }
- if (f==1){
- for (y=0; y<i; y++){ // Caso a matrícula exista o h armazena a posição do vetor principal para exibir os dados.
- if (cadastro[y].matricula == numeromatricu)
- h = y;
- }
- }
- else {
- while (f==0 && numeromatricu!=1){ // Caso a matrícula não seja encontrada o comando de repetição repete o processo até ser encontrada a matrícula.
- printf("\nMatrícula não encontrada. Por favor tente novamente ou digite 1 para sair.\n");
- printf("\nPor favor digite o número de mátricula do aluno: \n");
- scanf("%d", &numeromatricu);
- for (g=0; g<i; g=g+1){
- if (cadastro[g].matricula != numeromatricu)
- printf("\nProcurando matrícula ...\n");
- else
- if (cadastro[g].matricula == numeromatricu){ // Caso a matrícula seja encontrada o f armazena o valor 1 para possibilitar a impressão.
- printf("\nMatrícula encontrada!\n");
- f = 1;
- }
- }
- }
- system("cls");
- printf("\nVocê saiu do sistema de procura por matrícula.\n\n");
- }
- if (f==1){ // Com a matricula encontrada e o F=1 agora esse comando vai imprimir os dados do aluno.
- printf("\nALUNO: %s / MÉDIA: %.2f / FREQUÊNCIA: %d / MATRÍCULA: %d / SITUAÇÃO: ", cadastro[h].nome, cadastro[h].media, cadastro[h].frequencia, cadastro[h].matricula);
- if (cadastro[h].situacao == 1)
- printf("APROVADO.\n\n");
- else
- printf("REPROVADO.\n\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement