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>
- //O número de turmas não deve ultrapassar 10
- //O número de alunos, de cada turma, não deve ultrapassar 50
- typedef struct{ //dados aluno
- char nome[50];
- int matricula;
- float notas[6];
- float media;
- int frequencia;
- char situacao[15];
- int situacao1;
- } aluno;
- typedef struct{ //armazena as turmas
- char materia[20];
- aluno alunos[51];
- int existe;
- } turma;
- void criarTurma(turma turmas[],int *cont);
- void cadastroAluno(turma turmas[],int *cont);
- void cadastroNotas(turma turmas[],int *cont);
- void imprimirDados(turma turmas[],int *cont);
- void imprimirLista(turma turmas[],int *cont);
- void imprimirSituacao(turma turmas[],int *cont);
- int main(){
- setlocale(LC_ALL, "Portuguese");
- turma turmas[11];
- char opc[10];
- int op, m, cont=2000;
- for(m=0; m<11; m++){
- turmas[m].existe = 0;
- turmas[m].alunos[m].matricula = 0;
- }
- do{
- system("cls");
- puts("Gerenciador de Notas.\n");
- puts("Selecione uma opção:");
- puts("1 - Criar Turma");
- puts("2 - Cadastrar Aluno");
- puts("3 - Cadastrar Notas e Frequência");
- puts("4 - Imprimir Dados de Alunos");
- puts("5 - Imprimir a Situação Geral");
- puts("6 - Imprimir a Situação de um Aluno Específico");
- puts("7 - Sair");
- fflush(stdin);
- fgets(opc,9,stdin);
- op = atoi(opc);
- if(op!=0){ //todo esse processo com atoi e if serve pra impedir o user de colocar idiotice no programa
- switch(op){
- case 1: criarTurma(&turmas[0], &cont); break;
- case 2: cadastroAluno(&turmas[0], &cont); break;
- case 3: cadastroNotas(&turmas[0], &cont); break;
- case 4: imprimirDados(&turmas[0], &cont); break;
- case 5: imprimirLista(&turmas[0], &cont); break;
- case 6: imprimirSituacao(&turmas[0], &cont); break;
- case 7: puts("Até a próxima!"); break;
- default: puts("Inválido. Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL"); break;
- }
- }
- else{
- puts("Entrada inválida.Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL");
- }
- }while(op!=7);
- return 0;
- }
- //essa função serve para a criação das diferentes turmas
- void criarTurma(turma turmas[],int *cont){
- system("cls");
- int sel,m;
- char op,sele[10];
- puts("Escolha um espaço para a matéria: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0){
- if(turmas[sel].existe==0){
- do{
- puts("Digite o nome da matéria:");
- fflush(stdin);
- fgets(turmas[sel].materia,20,stdin);
- if(turmas[sel].materia[0] == '\n'||turmas[sel].materia[0] == '\0'){
- puts("Nome vazio.");
- }
- else{
- turmas[sel].materia[strcspn(turmas[sel].materia, "\n")] = '\0';
- printf("A turma %s tem número %d e foi cadastrada com sucesso.\n", turmas[sel].materia, sel);
- turmas[sel].existe = sel;
- m=1;
- }
- }while(m!=1);
- }
- else{
- puts("Essa turma já existe. Deseja substituí-la? (sim/não)");
- fflush(stdin);
- scanf("%c", &op);
- if(op=='s'){
- do{
- puts("Digite o nome da matéria:");
- fflush(stdin);
- fgets(turmas[sel].materia,20,stdin);
- if(turmas[sel].materia[0] == '\n'||turmas[sel].materia[0] == '\0'){
- puts("Nome vazio.");
- }
- else{
- turmas[sel].materia[strcspn(turmas[sel].materia, "\n")] = '\0';
- printf("A turma %s tem número %d e foi cadastrada com sucesso.\n", turmas[sel].materia, sel);
- turmas[sel].existe = sel;
- m=1;
- }
- }while(m!=1);
- }
- }
- }
- else{
- puts("O número digitado é inválido.\n");
- }
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- return;
- }
- //essa função serve pra cadastrar os diferentes alunos em cada turma
- void cadastroAluno(turma turmas[],int *cont){
- system("cls");
- int sel,sel2,sel3,cont2=1,m=0;
- char sele[10],sele2[10],sele3[10];
- puts("Escolha uma das matérias cadastradas: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0){
- if(turmas[sel].existe!=0){
- printf("Você selecionou %s!\n", turmas[sel].materia);
- puts("Quantos alunos você deseja cadastrar?");
- fflush(stdin);
- scanf("%s", sele3);
- sel3 = atoi(sele3);
- if(sel3<=50&&sel3!=0){
- do{
- puts("Escolha uma vaga na turma para o novo aluno: (1-50)");
- fflush(stdin);
- scanf("%s", sele2);
- sel2 = atoi(sele2);
- if(sel2<=50&&sel2!=0){
- if(turmas[sel].alunos[sel2].matricula==0){
- do{
- printf("Você escolheu a posição %d.\nDigite o nome do aluno:", sel2);
- fflush(stdin);
- fgets(turmas[sel].alunos[sel2].nome,50,stdin);
- if(turmas[sel].alunos[sel2].nome[0] == '\n'||turmas[sel].alunos[sel2].nome[0] == '\0'){
- puts("Nome vazio.\n\n");
- m=0;
- }
- else{
- turmas[sel].alunos[sel2].nome[strcspn(turmas[sel].alunos[sel2].nome, "\n")] = '\0';
- printf("A matrícula do aluno %s é %d.\n\n", turmas[sel].alunos[sel2].nome, sel2);
- turmas[sel].alunos[sel2].matricula = sel2;
- cont2++;
- m=1;
- }
- }while(m!=1);
- }
- else{
- puts("Essa vaga está preenchida. Tente novamente.\n");
- }
- }
- else{
- puts("Número inválido.\n\n");
- }
- } while(cont2<=sel3);
- }
- else{
- puts("Esse quantidade é inválida.");
- }
- }
- else{
- puts("Essa turma não foi cadastrada.\n");
- }
- }
- else{
- puts("O número digitado é inválido.\n");
- }
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- return;
- }
- //essa função serve para cadastrar notas e a frequência dos alunos
- void cadastroNotas(turma turmas[],int *cont){
- system("cls");
- int sel, sel2,i;
- char sele[10], sele2[10];
- puts("Escolha uma das matérias cadastradas: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0){
- puts("Digite o número matrícula do aluno desejado.");
- fflush(stdin);
- scanf("%s", sele2);
- sel2 = atoi(sele2);
- if(sel2 != 0){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].matricula == sel2){
- puts("Digite a nota da prova 1: (0-30)");
- scanf("%f", &turmas[sel].alunos[i].notas[1]);
- puts("Digite a nota da prova 2: (0-50)");
- scanf("%f", &turmas[sel].alunos[i].notas[2]);
- puts("Digite a nota do exercício 1: (0-5)");
- scanf("%f", &turmas[sel].alunos[i].notas[3]);
- puts("Digite a nota do exercício 2: (0-5)");
- scanf("%f", &turmas[sel].alunos[i].notas[4]);
- puts("Digite a nota do trabalho final: (0-10)");
- scanf("%f", &turmas[sel].alunos[i].notas[5]);
- puts("Digite a frequência do aluno: (aulas comparecidas)");
- scanf("%d", &turmas[sel].alunos[i].frequencia);
- turmas[sel].alunos[i].media = (turmas[sel].alunos[i].notas[1]+turmas[sel].alunos[i].notas[2]+turmas[sel].alunos[i].notas[3]+turmas[sel].alunos[i].notas[4]+turmas[sel].alunos[i].notas[5]);
- if(turmas[sel].alunos[i].media >=70&&turmas[sel].alunos[i].frequencia>=40){
- turmas[sel].alunos[i].situacao1 = 1;
- strcpy(turmas[sel].alunos[i].situacao,"Aprovado");
- }
- if(turmas[sel].alunos[i].media < 70|| turmas[sel].alunos[i].frequencia < 40){
- turmas[sel].alunos[i].situacao1 = 0;
- strcpy(turmas[sel].alunos[i].situacao,"Reprovado");
- }
- }
- }
- }
- else{
- puts("Esse aluno não está cadastrado.");
- }
- }
- else{
- puts("Essa matéria não foi cadastrada.");
- }
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- return;
- }
- //imprime os dados e um ou mais alunos
- void imprimirDados(turma turmas[],int *cont){
- system("cls");
- int sel, sel2,i;
- char sele[10], sele2[10];
- puts("Escolha uma das matérias cadastradas: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0){
- puts("Digite o número matrícula do aluno desejado ou digite '100' para exibir todos.");
- fflush(stdin);
- scanf("%s", sele2);
- sel2 = atoi(sele2);
- if(sel2 == 100){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].matricula != 0){
- printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
- printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
- printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
- printf("Média:%f\n", turmas[sel].alunos[i].media);
- printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
- printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
- }
- }
- }
- if(sel2 != 100){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].matricula != 0&& turmas[sel].alunos[i].matricula == sel2){
- printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
- printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
- printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
- printf("Média:%f\n", turmas[sel].alunos[i].media);
- printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
- printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
- }
- }
- }
- else{
- puts("Esse aluno não foi cadastrado.");
- }
- }
- else{
- puts("Essa matéria não foi cadastrada.");
- }
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- return;
- }
- //imprime apenas a situação dos alunos
- void imprimirLista(turma turmas[],int *cont){
- system("cls");
- int op,i,sel;
- char opc[10],sele[10];
- do{
- system("cls");
- puts("Lista de Alunos:");
- puts("1 - Aprovados");
- puts("2 - Reprovados");
- puts("3 - Todos");
- puts("4 - Retornar");
- fflush(stdin);
- fgets(opc,9,stdin);
- op = atoi(opc);
- if(op!=0){ //todo esse processo com atoi e if serve pra impedir o user de colocar idiotice no programa
- switch(op){
- case 1:{
- puts("Selecione a turma: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0&&turmas[sel].existe!=0){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].situacao1 == 1&&turmas[sel].alunos[i].matricula!=0){
- puts(turmas[sel].alunos[i].nome);
- puts("");
- }
- }
- op=4;
- }
- else{
- puts("Essa matéria não foi cadastrada.");
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- }
- } ; break;
- case 2:{
- puts("Selecione a turma: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0&&turmas[sel].existe!=0){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].situacao1 == 0&&turmas[sel].alunos[i].matricula!=0){
- puts(turmas[sel].alunos[i].nome);
- puts("");
- }
- }
- op=4;
- }
- else{
- puts("Essa matéria não foi cadastrada.");
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- }
- } ; break;
- case 3:{
- puts("Selecione a turma: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0&&turmas[sel].existe!=0){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].matricula!=0){
- puts(turmas[sel].alunos[i].nome);
- puts(turmas[sel].alunos[i].situacao);
- puts("");
- }
- }
- op=4;
- }
- else{
- puts("Essa matéria não foi cadastrada.");
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- }
- } ; break;
- case 4: puts("Retornando."); break;
- default: puts("Inválido. Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL"); break;
- }
- }
- else{
- puts("Entrada inválida.Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL");
- }
- }while(op!=4);
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- return;
- }
- //essa função imprimi os dados de apenas 1 aluno
- void imprimirSituacao(turma turmas[],int *cont){
- system("cls");
- int sel, sel2,i,z;
- char sele[10], sele2[10];
- puts("Escolha uma das matérias cadastradas: (1-10)");
- fflush(stdin);
- scanf("%s", sele);
- sel = atoi(sele);
- if(sel<=10&&sel!=0){
- puts("Digite o número matrícula ou o nome do aluno desejado.");
- fflush(stdin);
- scanf("%s", sele2);
- sel2 = atoi(sele2);
- if(sel2 != 0){
- for(i=0;i<=50;i++){
- if(turmas[sel].alunos[i].matricula == sel2){
- printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
- printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
- printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
- printf("Média:%f\n", turmas[sel].alunos[i].media);
- printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
- printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
- }
- }
- }
- else{
- for(i=0;i<=50;i++){
- z=strcmp(sele2,turmas[sel].alunos[i].nome);
- if(z == 0){
- printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
- printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
- printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
- printf("Média:%f\n", turmas[sel].alunos[i].media);
- printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
- printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
- }
- }
- if(z != 0&&sel2 != 0){
- puts("Aluno não cadastrado.");
- }
- }
- }
- else{
- puts("Essa matéria não foi cadastrada.");
- }
- puts("Pressione qualquer tecla para retornar ao menu.");
- system("pause>>NULL");
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement