Advertisement
Guest User

Untitled

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