Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #include <conio.h>
  6.  
  7.  
  8. // Protótipos:
  9.  
  10. void funcao_cadastra_turma(); //Têm inicio na linha 109.
  11. void funcao_cadastra_aluno(); //Têm inicio na linha 132.
  12. void funcao_imprimir_lista(); //Têm inicio na linha 344.
  13. void funcao_imprimir_dados(); //Têm inicio na linha 393.
  14. void funcao_imprimir_situacao(); //Têm inicio na linha 441.
  15. void funcao_imprimir_turmas();//Têm inicio na linha 572.
  16.  
  17.  
  18.  
  19. typedef struct { // Estrutura para cadastro de alunos.
  20. char nome[31];
  21. int matricula;
  22. float notas;
  23. float media;
  24. int frequencia;
  25. float prova1;
  26. float prova2;
  27. float trab1;
  28. float exer1;
  29. float exer2;
  30. int situacao;
  31. int alunocod;
  32. int matticula;
  33. }functp;
  34.  
  35. functp cadastro[50];
  36.  
  37. typedef struct { // Estrutura para cadastro de turma.
  38. char nometurma[15];
  39. int quant_turma;
  40. int quantmembros;
  41. }functp2;
  42.  
  43. functp2 turma[15];
  44.  
  45. // Variáveis Globais.
  46.  
  47. int cont=0;
  48. int numturma;
  49. int i=0;
  50. char decsit[20];
  51. int turma2[50];
  52.  
  53.  
  54.  
  55.  
  56. main(){ // Função principal.
  57.  
  58. int opc;
  59.  
  60. setlocale(LC_ALL, "Portuguese");
  61.  
  62. while (opc !=7){ // Menu principal.
  63. setbuf (stdin,NULL);
  64. printf("***********************************************************************\n");
  65. printf(" UMA ESCOLINHA MUITCHO LOUCA\n");
  66. printf("***********************************************************************\n");
  67.  
  68. printf("\nPor favor escolha uma opção.\n\n");
  69. printf("1 - Cadastrar turma.\n");
  70. printf("2 - Cadastrar aluno.\n");
  71. printf("3 - Ver situação de um Aluno: APROVADO / REPROVADO OU TODOS.\n");
  72. printf("4 - Ver listagem da situação de todos os alunos.\n");
  73. printf("5 - Ver situação de um aluno.\n");
  74. printf("6 - Listagem de turmas.\n");
  75. printf("7 - Sair.\n");
  76. scanf("%d", &opc);
  77.  
  78. if (opc!=1 && opc != 2 && opc!= 3 && opc != 4 && opc !=5 && opc !=6 && opc !=7){ // Impede que seja digitada uma opção inexistente.
  79. while (opc!=1 && opc != 2 && opc!= 3 && opc != 4 && opc !=5 && opc !=6 && opc !=7){
  80. setbuf (stdin,NULL);
  81. printf("\nOpção não reconhecida, por favor tente novamente.\n");
  82. printf("\nPor favor escolha uma opção.\n\n");
  83.  
  84. printf("1 - Cadastrar turma.\n");
  85. printf("2 - Cadastrar aluno.\n");
  86. printf("3 - Ver situação de um Aluno: APROVADO / REPROVADO OU TODOS.\n");
  87. printf("4 - Ver listagem da situação de todos os alunos.\n");
  88. printf("5 - Ver situação de um aluno.\n");
  89. printf("6 - Listagem de turmas.\n");
  90. printf("7 - Sair.\n");
  91. scanf("%d", &opc);
  92. }
  93. }
  94.  
  95.  
  96.  
  97. if (opc == 1) // Chama a função 1.
  98. funcao_cadastra_turma();
  99.  
  100. if (opc == 2) // Chama a função 2.
  101. funcao_cadastra_aluno();
  102.  
  103. if (opc == 3) // Chama a função 3.
  104. funcao_imprimir_lista();
  105.  
  106. if (opc == 4) // Chama a função 4.
  107. funcao_imprimir_dados();
  108.  
  109. if (opc == 5) // Chama a função 5.
  110. funcao_imprimir_situacao();
  111.  
  112. if (opc == 6) // Chama a função 6.
  113. funcao_imprimir_turmas();
  114.  
  115.  
  116. }
  117.  
  118. system("cls"); // limpa a tela.
  119. printf("\nVocê saiu com sucesso do sistema!\n");
  120.  
  121. }
  122.  
  123. void funcao_cadastra_turma(){ // Função para cadastrar a turma.
  124.  
  125. int d=0;
  126.  
  127. setbuf (stdin,NULL);
  128. printf ("Digite quantas turmas deseja cadastrar: \n");
  129. scanf ("%d", &numturma);
  130. if (numturma <=0 || numturma > 10){ // Impede que seja cadastrado uma quantidade nula ou maior que a permitida de turmas.
  131. printf("\nVocê não pode cadastrar uma quantidade de turmas igual a 0 ou maior que 10. Tente novamente.\n");
  132. funcao_cadastra_turma();
  133. }
  134.  
  135. setbuf (stdin,NULL);
  136.  
  137. while (d<numturma){
  138. printf ("\nDigite o nome da %d° turma.\n", cont+1);
  139. setbuf (stdin,NULL); // Limpa o buffer da string, possibilitando ser digitadas palavras com espaços em branco.
  140. scanf("%[^\n]s", turma[cont].nometurma);
  141.  
  142. system("cls");
  143. printf("\n\nTurma %s cadastrada com sucesso!\n\n", turma[cont].nometurma); // Confirma que a turma foi cadastrada.
  144. cont=cont+1;
  145. d=d+1;
  146. }
  147.  
  148. }
  149.  
  150. void funcao_cadastra_aluno(){ // Função para cadastrar o aluno.
  151.  
  152.  
  153.  
  154. int numturma, numturma2[10], maisumturma, quantturmas, t;
  155.  
  156. if (cont == 0){ // Impede que um aluno seja cadastrado em uma turma inexistente.
  157. system("cls"); // limpa a tela.
  158. printf("\n\nAntes de cadastrar um aluno, primeiro você precisa cadastrar uma turma.\n\n");
  159. }
  160. else {
  161.  
  162. setbuf (stdin,NULL);
  163.  
  164. while (maisumturma!=2){
  165.  
  166. printf("MENU CADASTRA ALUNO: \n\n"); // Ofereçe a opção de cadastrar o aluno em mais de uma turma, ou somente em uma.
  167.  
  168. printf("1 - Cadastrar Aluno.\n");
  169. printf("2 - Sair.\n");
  170.  
  171. scanf("%d", &maisumturma);
  172. if (maisumturma ==2)
  173. system("cls");
  174.  
  175. if (maisumturma != 1 && maisumturma != 2){ // Impede que seja digitada uma opção inexistente.
  176. while (maisumturma != 1 && maisumturma != 2){
  177. setbuf (stdin,NULL);
  178. printf("\nOpção não reconhecida, por favor tente novamente.\n\n");
  179. printf("1 - Cadastrar Aluno.\n");
  180. printf("2 - Sair.\n");
  181. scanf("%d", &maisumturma);
  182. if (maisumturma ==2)
  183. system("cls");
  184. }
  185. }
  186.  
  187.  
  188. if (maisumturma == 1){ // Seleciona a opção 2.
  189. printf("Digite o número da turma que deseja cadastrar o aluno: \n");
  190. scanf("%d", &numturma);
  191. if (numturma > (cont-1) or numturma < 0){ // Impede que seja selecionada uma turma inexistente.
  192. while(numturma > (cont-1) or numturma < 0){
  193. printf("\nTurma não encontrada, tente novamente.\n");
  194. scanf("%d", &numturma);
  195. }
  196. }
  197. printf("\nVocê selecionou a turma %s.\n\n", turma[numturma].nometurma); // Confirma a turma selecionada.
  198.  
  199. cadastro[i].alunocod = numturma;
  200.  
  201. turma2[i] = numturma;
  202. setbuf (stdin,NULL);
  203. printf("Por favor digite o nome do aluno que deseja cadastrar na turma %s: \n", turma[numturma].nometurma);
  204. scanf("%[^\n]s", &cadastro[i].nome);
  205.  
  206.  
  207.  
  208. printf("Digite a nota da prova 1: \n"); // Cadastra a nota da prova 1, na opção2.
  209. scanf("%f", &cadastro[i].prova1);
  210. if (cadastro[i].prova1 < 0 or cadastro[i].prova1 > 30){
  211. while (cadastro[i].prova1 < 0 or cadastro[i].prova1 > 30){
  212. printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
  213. scanf("%f", &cadastro[i].prova1);
  214. }
  215. }
  216. printf("Digite a nota da prova 2: \n"); // Cadastra a nota da prova 2 na opção2.
  217. scanf("%f", &cadastro[i].prova2);
  218. if (cadastro[i].prova2 < 0 or cadastro[i].prova2 > 50){
  219. while (cadastro[i].prova2 < 0 or cadastro[i].prova2 > 50){
  220. printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
  221. scanf("%f", &cadastro[i].prova2);
  222. }
  223. }
  224. printf("Digite a nota do Trabalho 1: \n"); // Cadastra a nota do trabalho 1 na opção2.
  225. scanf("%f", &cadastro[i].trab1);
  226. if (cadastro[i].trab1 < 0 or cadastro[i].trab1 >10){
  227. while (cadastro[i].trab1 < 0 or cadastro[i].trab1 >10){
  228. printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
  229. scanf("%f", &cadastro[i].trab1);
  230. }
  231. }
  232. printf("Digite a nota do Exercício 1: \n"); // Cadastra a nota da exercicio 1 na opção2.
  233. scanf("%f", &cadastro[i].exer1);
  234. if (cadastro[i].exer1 < 0 or cadastro[i].exer1 >5){
  235. while (cadastro[i].exer1 < 0 or cadastro[i].exer1 >5){
  236. printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
  237. scanf("%f", &cadastro[i].exer1);
  238. }
  239. }
  240. printf("Digite a nota do Exercício 2: \n"); // Cadastra a nota da exercicio 2 na opção2.
  241. scanf("%f", &cadastro[i].exer2);
  242. if (cadastro[i].exer2 < 0 or cadastro[i].exer2 >5){
  243. while (cadastro[i].exer2 < 0 or cadastro[i].exer2 >5){
  244. printf("A nota excedeu os limites permitidos, por favor tente novamente. \n");
  245. scanf("%f", &cadastro[i].exer2);
  246. }
  247. }
  248.  
  249. cadastro[i].media = (cadastro[i].prova1 + cadastro[i].prova2 + cadastro[i].trab1 + cadastro[i].exer1 + cadastro[i].exer2); // Calcula a media do aluno.
  250.  
  251. printf("Agora digite por favor a frequência do aluno %s: \n", cadastro[i].nome);
  252. scanf("%d", &cadastro[i].frequencia);
  253. if(cadastro[i].frequencia < 0 or cadastro[i].frequencia > 64){
  254. while (cadastro[i].frequencia <0 or cadastro[i].frequencia >64){
  255. printf("\nA frequência do aluno não está dentro dos limites permitidos. Tente novamente.\n");
  256. scanf("%d", &cadastro[i].frequencia);
  257.  
  258. }
  259. }
  260.  
  261. cadastro[i].matricula = 10*12*(i+1); // Gera um número de matrícula aleatório.
  262.  
  263.  
  264. if (cadastro[i].media >= 70 && cadastro[i].frequencia >= 40){
  265. system("cls");
  266. 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);
  267. cadastro[i].situacao = 1;
  268. printf("\nO aluno %s foi APROVADO.\n\n", cadastro[i].nome);
  269.  
  270. }
  271.  
  272. if (cadastro[i].media < 70 or cadastro[i].frequencia < 40){
  273. system("cls");
  274. 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);
  275. cadastro[i].situacao = 0;
  276. printf("\nO aluno %s foi REPROVADO.\n\n", cadastro[i].nome);
  277. }
  278.  
  279.  
  280. turma[i].quantmembros = turma[i].quantmembros + 1;
  281. i=i+1; // Incrementa +1 no vetor principal.
  282. }
  283. }
  284. }
  285. }
  286.  
  287. void funcao_imprimir_lista(){ // Função para listagem dos alunos.
  288.  
  289. int j;
  290.  
  291. if (i == 0){
  292. system("cls"); // limpa a tela.
  293. printf("\nVocê não tem alunos cadastrados. \n\n");
  294. }
  295.  
  296. else {
  297.  
  298. printf ("\nDeseja imprimir os alunos APROVADOS, REPROVADOS, ou TODOS? \n");
  299.  
  300. scanf ("%s", &decsit);
  301.  
  302. if (stricmp(decsit,"aprovados") == 0) {
  303. setbuf (stdin,NULL);
  304. system("cls");
  305. printf ("\nImprimindo os alunos APROVADOS: \n\n");
  306. for (j=0; j<i; j=j+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
  307. if (cadastro[j].situacao == 1){
  308. printf("\nALUNO: %s // SITUAÇÃO: ", cadastro[j].nome);
  309. printf("APROVADO.\n\n");
  310. }
  311. }
  312. }
  313.  
  314. if (stricmp(decsit,"reprovados") == 0) {
  315. setbuf (stdin,NULL);
  316. system("cls");
  317. printf ("\nImprimindo os alunos REPROVADOS: \n\n");
  318. for (j=0; j<i; j=j+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
  319. if (cadastro[j].situacao == 0){
  320. printf("\nALUNO: %s // SITUAÇÃO: ", cadastro[j].nome);
  321. printf("REPROVADO.\n\n");
  322. }
  323. }
  324. }
  325.  
  326. if (stricmp(decsit,"todos") == 0) {
  327. setbuf (stdin,NULL);
  328. system("cls");
  329. printf ("\nImprimindo todos os alunos: \n");
  330. for (j=0; j<i; j=j+1){ // Imprimi todos os alunos de todoas as turmas, aprovados e reprovados.
  331. printf("\nALUNO: %s / SITUAÇÃO: ", cadastro[j].nome);
  332. if (cadastro[j].situacao == 1)
  333. printf("APROVADO.\n\n");
  334. else
  335. printf("REPROVADO.\n\n");
  336. }
  337.  
  338. }
  339.  
  340. if ((stricmp(decsit,"aprovados") == 1) or (stricmp(decsit,"reprovados") == 1) or (stricmp(decsit,"todos") ==1) ){
  341. printf ("\nUse o teclado corretamente, opção não encontrada 02.\n\n");
  342. funcao_imprimir_lista();
  343. }
  344.  
  345. }
  346. }
  347.  
  348. void funcao_imprimir_dados(){
  349.  
  350.  
  351.  
  352. int k, opc3, u, opcturma, m, esccolha, impdados, g, f=0, h,e,p,v=0;
  353.  
  354. if (i == 0){
  355. system("cls"); // limpa a tela.
  356. printf("\n\nVocê não tem alunos cadastrados. \n\n");
  357. }
  358.  
  359.  
  360. else{
  361. printf("\nPor favor escolha uma opção: \n");
  362. printf("1 - Imprimir alunos de acordo com a turma.\n");
  363. printf("2 - Imprimir dados de alunos escolhidos.\n");
  364. printf("3 - Imprimir dados de todos os alunos.\n");
  365. setbuf (stdin,NULL);
  366. scanf("%d", &opc3);
  367. if (opc3 !=1 && opc3!=2 && opc3!=3){
  368. while(opc3 !=1 && opc3!=2 && opc3!=3){
  369. setbuf (stdin,NULL);
  370. printf("\nOpção não encontrada, tente novamente.\n");
  371. scanf("%d", &opc3);
  372. }
  373. }
  374.  
  375. system("cls");
  376.  
  377. if (opc3==1){
  378. printf("\nPor favor escolha a turma que deseja imprimir os alunos: \n");
  379. scanf("%d", &esccolha);
  380. if (esccolha > (cont-1) or esccolha < 0){ // Impede que seja selecionada uma turma inexistente.
  381. while(esccolha > (cont-1) or esccolha < 0){
  382. printf("\nTurma não encontrada, tente novamente.\n");
  383. scanf("%d", &esccolha);
  384. }
  385. }
  386.  
  387. printf("\nLISTAGEM - TURMA: %s\n", turma[esccolha].nometurma);
  388. for (u=0; u<cont; u=u+1){
  389. if (cadastro[u].alunocod == esccolha){
  390. 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);
  391. if (cadastro[u].situacao == 1)
  392. printf("APROVADO.\n\n");
  393. else
  394. printf("REPROVADO.\n\n");
  395.  
  396. }
  397. }
  398. }
  399.  
  400. if (opc3==2){
  401. printf("\nDe quantos alunos deseja imprimir os dados ?\n");
  402. scanf("%d", &impdados);
  403. if (impdados >i){
  404. while(impdados >i){
  405. printf("\nVocê não tem essa quantidade de alunos cadastrada, tente novamente.\n");
  406. scanf("%d", &impdados);
  407. }
  408.  
  409. }
  410.  
  411. 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.
  412. printf("\nPor favor digite o número da matrícula do %d° aluno: \n", h+1);
  413. scanf("%d", &cadastro[h].matticula);
  414.  
  415.  
  416. while (f==0 && cadastro[h].matticula !=1 ){
  417.  
  418. for (g=0; g<i; g=g+1){ //Procura se a matrícula existe em todo o vetor principal.
  419. if (v==0){
  420. if (cadastro[g].matricula != cadastro[h].matticula)
  421. printf("\nProcurando matrícula ...\n");
  422. }
  423.  
  424. if (cadastro[g].matricula == cadastro[h].matticula){
  425. printf("\nMatrícula encontrada!\n");
  426. f = f+1;
  427. v = 1;
  428. }
  429.  
  430. }
  431. if (f==0){
  432. setbuf (stdin,NULL);
  433. printf("\nMatrícula não encontrada. Por favor tente novamente ou digite 1 para sair.\n");
  434. scanf("%d", &cadastro[h].matticula);
  435. }
  436.  
  437.  
  438.  
  439.  
  440. }
  441.  
  442. }
  443.  
  444. if (f>0){
  445. system("cls");
  446. printf("\nIMPRIMINDO DADOS DOS ALUNOS SELECIONADOS: \n\n");;
  447. for (e=0; e<impdados; e=e+1){
  448. p = turma2[e];
  449. 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));
  450.  
  451. if (cadastro[e].situacao == 1)
  452. printf("APROVADO.\n\n");
  453. else
  454. printf("REPROVADO.\n\n");
  455. }
  456. }
  457. }
  458.  
  459.  
  460.  
  461. if (opc3 ==3){
  462. printf("\nLISTAGEM: \n");
  463. for (k=0; k<i; k=k+1){
  464. m = turma2[k];
  465. 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));
  466.  
  467. if (cadastro[k].situacao == 1)
  468. printf("APROVADO.\n\n");
  469. else
  470. printf("REPROVADO.\n\n");
  471.  
  472. setbuf (stdin,NULL);
  473. }
  474. }
  475. }
  476. }
  477.  
  478.  
  479. void funcao_imprimir_situacao(){ //Permite procurar um aluno pelo número de matrícula.
  480.  
  481. int numeromatricu, y, h, g, f=0,p;
  482.  
  483. if (i == 0){ // Evitar procurar uma matrícula sem ter alunos cadastrados.
  484. system("cls"); // limpa a tela.
  485. printf("\n\nVocê não tem alunos cadastrados. \n\n");
  486. }
  487. else{
  488.  
  489. printf("\nPor favor digite o número de mátricula do aluno: \n");
  490. scanf("%d", &numeromatricu);
  491.  
  492. for (g=0; g<i; g=g+1){ //Procura se a matrícula existe em todo o vetor principal.
  493. if (cadastro[g].matricula == numeromatricu){
  494. system("cls");
  495. printf("\nMatrícula encontrada!\n");
  496. f = 1;
  497. }
  498.  
  499. }
  500.  
  501. if (f==1){
  502.  
  503. for (y=0; y<i; y++){ // Caso a matrícula exista o h armazena a posição do vetor principal para exibir os dados.
  504. if (cadastro[y].matricula == numeromatricu)
  505. h = y;
  506. }
  507.  
  508.  
  509. }
  510. else {
  511.  
  512.  
  513. 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.
  514. printf("\nMatrícula não encontrada. Por favor tente novamente ou digite 1 para sair.\n");
  515.  
  516.  
  517. printf("\nPor favor digite o número de mátricula do aluno: \n");
  518. scanf("%d", &numeromatricu);
  519. if(numeromatricu==1)
  520. system("cls");
  521. for (g=0; g<i; g=g+1){
  522.  
  523. if (cadastro[g].matricula == numeromatricu){ // Caso a matrícula seja encontrada o f armazena o valor 1 para possibilitar a impressão.
  524. system("cls");
  525. printf("\nMatrícula encontrada!\n");
  526. f = 1;
  527. }
  528. }
  529. }
  530. }
  531.  
  532. if (f==1){ // Com a matricula encontrada e o F=1 agora esse comando vai imprimir os dados do aluno.
  533.  
  534. p = turma2[h];
  535. 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));
  536.  
  537. if (cadastro[h].situacao == 1)
  538. printf("APROVADO.\n\n");
  539. else
  540. printf("REPROVADO.\n\n");
  541.  
  542. }
  543. }
  544.  
  545.  
  546. }
  547.  
  548. void funcao_imprimir_turmas(){
  549.  
  550. int r;
  551.  
  552. if (cont==0){
  553. system("cls");
  554. printf("\nVocê não tem turmas cadastradas, primeiro cadastre uma turma.\n\n");
  555. }
  556.  
  557. else{
  558. system("cls");
  559. printf("\nLISTAGEM DE TURMAS:\n");
  560. for (r=0; r<cont; r=r+1){
  561. printf("\nTURMA N°: %d / NOME DA TURMA: %s / QUANTIDADE DE MEMBROS: %d\n\n\n", r, strupr(turma[r].nometurma), turma[r].quantmembros);
  562. }
  563.  
  564.  
  565. }
  566. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement