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.
- void funcao_imprimir_turmas();//Têm inicio na linha 572.
- 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;
- int alunocod;
- int matticula;
- }functp;
- functp cadastro[50];
- typedef struct { // Estrutura para cadastro de turma.
- char nometurma[15];
- int quant_turma;
- int quantmembros;
- }functp2;
- functp2 turma[15];
- // Variáveis Globais.
- int cont=0;
- int numturma;
- int i=0;
- char decsit[20];
- int turma2[50];
- main(){ // Função principal.
- int opc;
- setlocale(LC_ALL, "Portuguese");
- while (opc !=7){ // 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 - Listagem de turmas.\n");
- printf("7 - Sair.\n");
- scanf("%d", &opc);
- if (opc!=1 && opc != 2 && opc!= 3 && opc != 4 && opc !=5 && opc !=6 && opc !=7){ // Impede que seja digitada uma opção inexistente.
- while (opc!=1 && opc != 2 && opc!= 3 && opc != 4 && opc !=5 && opc !=6 && opc !=7){
- 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 - Ver situação de um aluno.\n");
- printf("6 - Listagem de turmas.\n");
- printf("7 - 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();
- if (opc == 6) // Chama a função 6.
- funcao_imprimir_turmas();
- }
- system("cls"); // limpa a tela.
- printf("\nVocê saiu com sucesso do sistema!\n");
- }
- void funcao_cadastra_turma(){ // Função para cadastrar a turma.
- int d=0;
- 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);
- while (d<numturma){
- 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.
- cont=cont+1;
- d=d+1;
- }
- }
- 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 {
- setbuf (stdin,NULL);
- while (maisumturma!=2){
- printf("MENU CADASTRA ALUNO: \n\n"); // Ofereçe a opção de cadastrar o aluno em mais de uma turma, ou somente em uma.
- printf("1 - Cadastrar Aluno.\n");
- printf("2 - Sair.\n");
- scanf("%d", &maisumturma);
- if (maisumturma ==2)
- system("cls");
- if (maisumturma != 1 && maisumturma != 2){ // Impede que seja digitada uma opção inexistente.
- while (maisumturma != 1 && maisumturma != 2){
- setbuf (stdin,NULL);
- printf("\nOpção não reconhecida, por favor tente novamente.\n\n");
- printf("1 - Cadastrar Aluno.\n");
- printf("2 - Sair.\n");
- scanf("%d", &maisumturma);
- if (maisumturma ==2)
- system("cls");
- }
- }
- if (maisumturma == 1){ // 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].alunocod = numturma;
- turma2[i] = numturma;
- 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);
- if(cadastro[i].frequencia < 0 or cadastro[i].frequencia > 64){
- while (cadastro[i].frequencia <0 or cadastro[i].frequencia >64){
- printf("\nA frequência do aluno não está dentro dos limites permitidos. Tente novamente.\n");
- 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);
- }
- turma[i].quantmembros = turma[i].quantmembros + 1;
- 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) {
- setbuf (stdin,NULL);
- system("cls");
- printf ("\nImprimindo os alunos APROVADOS: \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 == 1){
- printf("\nALUNO: %s // SITUAÇÃO: ", cadastro[j].nome);
- printf("APROVADO.\n\n");
- }
- }
- }
- if (stricmp(decsit,"reprovados") == 0) {
- setbuf (stdin,NULL);
- system("cls");
- 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) {
- setbuf (stdin,NULL);
- system("cls");
- 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, m, esccolha, impdados, g, f=0, h,e,p,v=0;
- 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");
- setbuf (stdin,NULL);
- scanf("%d", &opc3);
- if (opc3 !=1 && opc3!=2 && opc3!=3){
- while(opc3 !=1 && opc3!=2 && opc3!=3){
- setbuf (stdin,NULL);
- printf("\nOpção não encontrada, tente novamente.\n");
- scanf("%d", &opc3);
- }
- }
- system("cls");
- if (opc3==1){
- printf("\nPor favor escolha a turma que deseja imprimir os alunos: \n");
- scanf("%d", &esccolha);
- if (esccolha > (cont-1) or esccolha < 0){ // Impede que seja selecionada uma turma inexistente.
- while(esccolha > (cont-1) or esccolha < 0){
- printf("\nTurma não encontrada, tente novamente.\n");
- scanf("%d", &esccolha);
- }
- }
- printf("\nLISTAGEM - TURMA: %s\n", turma[esccolha].nometurma);
- for (u=0; u<cont; u=u+1){
- if (cadastro[u].alunocod == esccolha){
- printf("\nALUNO: %s / MÉDIA: %.2f / FREQUÊNCIA: %d / MATRÍCULA: %d / SITUAÇÃO: ", cadastro[u].nome, cadastro[u].media, cadastro[u].frequencia, cadastro[u].matricula);
- if (cadastro[u].situacao == 1)
- printf("APROVADO.\n\n");
- else
- printf("REPROVADO.\n\n");
- }
- }
- }
- if (opc3==2){
- printf("\nDe quantos alunos deseja imprimir os dados ?\n");
- scanf("%d", &impdados);
- if (impdados >i){
- while(impdados >i){
- printf("\nVocê não tem essa quantidade de alunos cadastrada, tente novamente.\n");
- scanf("%d", &impdados);
- }
- }
- for (h=0; h<impdados; h=h+1){ // Caso a matrícula não seja encontrada o comando de repetição repete o processo até ser encontrada a matrícula.
- printf("\nPor favor digite o número da matrícula do %d° aluno: \n", h+1);
- scanf("%d", &cadastro[h].matticula);
- while (f==0 && cadastro[h].matticula !=1 ){
- for (g=0; g<i; g=g+1){ //Procura se a matrícula existe em todo o vetor principal.
- if (v==0){
- if (cadastro[g].matricula != cadastro[h].matticula)
- printf("\nProcurando matrícula ...\n");
- }
- if (cadastro[g].matricula == cadastro[h].matticula){
- printf("\nMatrícula encontrada!\n");
- f = f+1;
- v = 1;
- }
- }
- if (f==0){
- setbuf (stdin,NULL);
- printf("\nMatrícula não encontrada. Por favor tente novamente ou digite 1 para sair.\n");
- scanf("%d", &cadastro[h].matticula);
- }
- }
- }
- if (f>0){
- system("cls");
- printf("\nIMPRIMINDO DADOS DOS ALUNOS SELECIONADOS: \n\n");;
- for (e=0; e<impdados; e=e+1){
- p = turma2[e];
- printf("\nALUNO: %s / MÉDIA: %.2f / FREQUÊNCIA: %d / MATRÍCULA: %d / TURMA: %s / SITUAÇÃO: ", cadastro[e].nome, cadastro[e].media, cadastro[e].frequencia, cadastro[e].matricula, strupr(turma[p].nometurma));
- if (cadastro[e].situacao == 1)
- printf("APROVADO.\n\n");
- else
- printf("REPROVADO.\n\n");
- }
- }
- }
- if (opc3 ==3){
- printf("\nLISTAGEM: \n");
- for (k=0; k<i; k=k+1){
- m = turma2[k];
- 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, strupr(turma[m].nometurma));
- if (cadastro[k].situacao == 1)
- printf("APROVADO.\n\n");
- else
- printf("REPROVADO.\n\n");
- setbuf (stdin,NULL);
- }
- }
- }
- }
- void funcao_imprimir_situacao(){ //Permite procurar um aluno pelo número de matrícula.
- int numeromatricu, y, h, g, f=0,p;
- 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){
- system("cls");
- 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);
- if(numeromatricu==1)
- system("cls");
- for (g=0; g<i; g=g+1){
- if (cadastro[g].matricula == numeromatricu){ // Caso a matrícula seja encontrada o f armazena o valor 1 para possibilitar a impressão.
- system("cls");
- printf("\nMatrícula encontrada!\n");
- f = 1;
- }
- }
- }
- }
- if (f==1){ // Com a matricula encontrada e o F=1 agora esse comando vai imprimir os dados do aluno.
- p = turma2[h];
- printf("\nALUNO: %s / MÉDIA: %.2f / FREQUÊNCIA: %d / MATRÍCULA: %d / TURMA: %s / SITUAÇÃO: ", cadastro[h].nome, cadastro[h].media, cadastro[h].frequencia, cadastro[h].matricula, strupr(turma[p].nometurma));
- if (cadastro[h].situacao == 1)
- printf("APROVADO.\n\n");
- else
- printf("REPROVADO.\n\n");
- }
- }
- }
- void funcao_imprimir_turmas(){
- int r;
- if (cont==0){
- system("cls");
- printf("\nVocê não tem turmas cadastradas, primeiro cadastre uma turma.\n\n");
- }
- else{
- system("cls");
- printf("\nLISTAGEM DE TURMAS:\n");
- for (r=0; r<cont; r=r+1){
- printf("\nTURMA N°: %d / NOME DA TURMA: %s / QUANTIDADE DE MEMBROS: %d\n\n\n", r, strupr(turma[r].nometurma), turma[r].quantmembros);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement