Advertisement
FabioFerr

Untitled

May 29th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.38 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <string.h>
  6. #include <conio.h>
  7. #include "header.h"
  8.  
  9. typedef int ITEM_TYPE ;
  10.  
  11.  
  12.  
  13.  
  14. int main() {
  15. AlunoNode* alunos_lista = (AlunoNode*)malloc(sizeof(AlunoNode));
  16. alunos_lista->info = NULL;
  17. alunos_lista->next = NULL;
  18. DisciplinaNode* disc_lista = (DisciplinaNode*)malloc(sizeof(DisciplinaNode));
  19. disc_lista->info = NULL;
  20. disc_lista->next=NULL;
  21. ExameNode* exame_lista = (ExameNode*)malloc(sizeof(ExameNode));
  22. exame_lista->info = NULL;
  23. exame_lista->next=NULL;
  24.  
  25.  
  26. FILE *fich_alunos;
  27. fich_alunos = fopen("Alunos.txt", "r");
  28. FILE *fich_exames;
  29. fich_exames = fopen("Exames.txt", "r");
  30. menu(alunos_lista,exame_lista,disc_lista);
  31.  
  32. }
  33. void menu(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista){
  34. int tru=0;
  35. int resp;
  36. int pos=1;
  37. int c;
  38. while (!tru)
  39. {
  40. system("cls");
  41. printf("--------------------------------------------------------------------------------\n Bem-Vindo\n\n--------------------------------------------------------------------------------\n*Por favor, escolha uma opcao:\n");
  42. switch (pos)
  43. {
  44. case 1:
  45. printf("-->Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n ");
  46. break;
  47. case 2:
  48. printf(" Criar/Modificar dados de um aluno.\n-->Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
  49. break;
  50. case 3:
  51. printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n-->Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
  52. break;
  53. case 4:
  54. printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n-->Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
  55. break;
  56. case 5:
  57. printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n-->Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
  58. break;
  59. case 6:
  60. printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n-->Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
  61. break;
  62. case 7:
  63. printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n-->Verificar se um dado exame tem suficientes salas reservadas.\n Sair.\n");
  64. break;
  65. case 8:
  66. printf(" Criar/Modificar dados de um aluno.\n Criar/Modificar dados de uma disciplina.\n Criar exame e configuracao da sala.\n Apagar exame/s ja realizado/s.\n Listar exames e alunos inscritos.\n Listar exames que um aluno esta inscrito.\n Verificar se um dado exame tem suficientes salas reservadas.\n-->Sair.\n");
  67. break;
  68.  
  69. }
  70. switch((c=getch()))
  71. {
  72. case 72:
  73. pos--;
  74. if (pos<1){pos=8;}
  75. break;
  76. case 80:
  77. pos++;
  78. if (pos>8){pos=1;}
  79. break;
  80. case 13:
  81. printf("\a");
  82. switch(pos)
  83. {
  84. case 1:
  85. system("cls");
  86. printf("Pretende adicionar ou modificar a informacao sobre um aluno?\nPara adicionar escreva (0).\n Para modificar escreva (1).\n Resposta : ");
  87. scanf("%d", &resp);
  88.  
  89. if(resp == 0){
  90. adicionar_aluno(alunos_lista,exame_lista,disc_lista);
  91. }
  92. else {
  93. modificar_aluno(alunos_lista);
  94. }
  95. break;
  96. case 2:
  97. system("cls");
  98. printf("Pretende adicionar ou modificar a informacao sobre uma disciplina?\nPara adicionar escreva (0).\t Para modificar escreva (1).\t Para apagar disciplina escreva(2)\n Resposta : ");
  99. scanf("%d", &resp);
  100. if(resp == 0){
  101. adicionar_disciplina(disc_lista);
  102. }
  103. else if(resp ==1) {
  104. modificar_disciplina(disc_lista,alunos_lista,exame_lista);
  105. }
  106. else if(resp==2) {
  107. apaga_disciplina(disc_lista,alunos_lista,exame_lista);
  108.  
  109. }
  110. break;
  111. case 3:
  112. system("cls");
  113. printf("Pretende Criar um exame ou configurar a sala para um exame?\n Para criar um exame escreva (0).\t Para configurar uma sala escreva(1).");
  114. scanf("%d",&resp);
  115. if(resp==0){
  116. adicionar_exame(disc_lista,exame_lista);
  117. }
  118.  
  119. break;
  120. case 4:
  121. system("cls");
  122. //apaga_exame(exame_lista);
  123.  
  124. break;
  125. case 5:
  126. system("cls");
  127. ///imprime_exame(exame_lista,disc_lista);
  128.  
  129. break;
  130. case 6:
  131. system("cls");
  132. printf("O que pretende imprimir?\nAlunos escreva(0).\t Disciplinas escreva(1).\tExames escreva(2)\n Resposta : ");
  133. scanf("%d", &resp);
  134. if(resp == 0){
  135. imprime_aluno1(alunos_lista);
  136. }
  137. else if(resp ==1) {
  138. imprime_disciplina(disc_lista);
  139. }
  140. else if(resp==2) {
  141. imprime_exames(exame_lista);
  142.  
  143. }
  144. system("cls");
  145.  
  146.  
  147. break;
  148. case 7:
  149. system("cls");
  150. //Verificar_salas();
  151. break;
  152. case 8:
  153. exit(0);
  154. }
  155. break;
  156. }
  157. }
  158. }
  159. AlunoNode* cria_aluno(Aluno* al){
  160.  
  161.  
  162. printf("Nome do Aluno: ");
  163. al->nome = (char*)malloc(30*sizeof(char));
  164. fflush(stdin);
  165. gets(al->nome);
  166.  
  167. printf("Numero do Aluno: ");
  168. scanf("%d",&(al->numero));
  169.  
  170. printf("Curso do Aluno: ");
  171. al->curso = (char*)malloc(30*sizeof(char));
  172. fflush(stdin);
  173. gets(al->curso);
  174.  
  175. printf("Ano do Aluno: ");
  176. scanf("%d",&al->ano);
  177.  
  178. printf("Regime do aluno: ");
  179. al->regime = (char*)malloc(30*sizeof(char));
  180. fflush(stdin);
  181. gets(al->regime);
  182.  
  183. return al ;
  184. }
  185. AlunoNode* adicionar_aluno(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista)
  186. {
  187. Aluno* novo = (Aluno*)malloc(sizeof(Aluno));
  188. novo = cria_aluno(novo);
  189. while(alunos_lista->next!=NULL){
  190. alunos_lista = alunos_lista->next;
  191. }
  192. AlunoNode* prox = (AlunoNode*)malloc(sizeof(AlunoNode));
  193. novo->next = NULL ;
  194. prox->info = novo ;
  195. prox->next = NULL ;
  196. alunos_lista->next = prox ;
  197.  
  198. int resp = 0;
  199. while(resp == 0){
  200. printf("Pretende inscrever o aluno numa disciplina?\n Para adicionar escreva(0)\tCaso contrario escreva (1).");
  201. scanf("%d",&resp);
  202. if(resp==1){
  203. system("cls");
  204. break ;
  205. }
  206. ///inscrever_aluno_disciplina(exame_lista,alunos_lista);
  207.  
  208. }
  209. while(resp == 1){
  210. printf("Pretende inscrever o aluno num exame?\n Para adicionar escreva(1)\tCaso contrario escreva (0).");
  211. scanf("%d",&resp);
  212. if(resp==0){
  213. system("cls");
  214. }
  215. else{
  216. inscrever_aluno(exame_lista,alunos_lista,disc_lista);
  217. }
  218. }
  219. }
  220. DisciplinaNode* cria_disciplina(Disciplina* nova){
  221.  
  222. printf("Nome da Disciplina: ");
  223. nova->nome_disciplina = (char*)malloc(30*sizeof(char));
  224. fflush(stdin);
  225. gets(nova->nome_disciplina);
  226.  
  227. printf("Nome do docente: ");
  228. nova->nome_docente = (char*)malloc(30*sizeof(char));
  229. fflush(stdin);
  230. gets(nova->nome_docente);
  231.  
  232. return nova ;
  233. }
  234. DisciplinaNode* adicionar_disciplina(DisciplinaNode* disc_lista)
  235. {
  236. Disciplina* novo = (Disciplina*)malloc(sizeof(Disciplina));
  237. novo = cria_disciplina(novo);
  238. while(disc_lista->next!= NULL )
  239. {
  240. disc_lista = disc_lista->next ;
  241. }
  242. DisciplinaNode* prox = (DisciplinaNode*)malloc(sizeof(DisciplinaNode));
  243. novo->next = NULL ;
  244. prox->info = novo ;
  245. prox->next = NULL ;
  246. disc_lista->next = prox ;
  247. printf("%s,%s",disc_lista->next->info->nome_disciplina,disc_lista->next->info->nome_docente) ;
  248.  
  249. fflush(stdin);
  250. getchar();
  251. }
  252. ExameNode* cria_exame(Exame* e){
  253.  
  254. printf("Epoca do exame:(n-normal/r-recurso/e-especial ");
  255. e->epoca_exame = (char*)malloc(30*sizeof(char));
  256. fflush(stdin);
  257. gets(e->epoca_exame);
  258.  
  259. printf("Sala: ");
  260. e->sala = (char*)malloc(30*sizeof(char));
  261. fflush(stdin);
  262. gets(e->sala);
  263.  
  264. printf("Duracao: ");
  265. scanf("%d",&e->duracao);
  266.  
  267. printf("Data: (Formato : dd/mm/aaaa)\n");
  268. scanf("%d/%d/%d",&e->dia,&e->mes,&e->ano);
  269.  
  270. printf("Horas : (Formato : hh:mm)\n");
  271. scanf("%d:%d",&e->hora,&e->min);
  272.  
  273. return e ;
  274.  
  275. printf("Epoca do Exame = %s\nDuracao: %ddata (dia/mes/ano): %d/%d/%d \nhoras: %d:%d\n salas:%s ",e->epoca_exame,e->duracao,e->dia,e->mes,e->ano,e->hora,e->min,e->sala);
  276. return e ;
  277. }
  278. DisciplinaNode* adicionar_exame(DisciplinaNode* disc_lista,ExameNode* exame_lista){
  279. printf("Qual a disciplina a qual pretende adicionar um exame?\n Resposta : ");
  280. char a = (char*)malloc(30*sizeof(char));
  281. fflush(stdin);
  282. gets(a);
  283. while(disc_lista!= NULL )
  284. {
  285. if (disc_lista->info->nome_disciplina == a){
  286. break ;
  287. }
  288. disc_lista = disc_lista->next ;
  289. }
  290. DisciplinaNode* prox = (DisciplinaNode*)malloc(sizeof(DisciplinaNode));
  291. Exame* novo = (Exame*)malloc(sizeof(Exame));
  292. novo = cria_exame(novo);
  293.  
  294. novo->next = NULL ;
  295. prox->info = novo ;
  296. prox->next = NULL ;
  297. disc_lista->info->exame_lista = prox ;
  298.  
  299. }
  300. void modificar_aluno(AlunoNode* lista)
  301. {
  302. int opcao = 1,num;
  303.  
  304. printf("Qual o numero do aluno que pretende modificar?\n Resposta : ");
  305. scanf("%d",&num);
  306. lista = lista->next;
  307. printf("Alunos existentes:\n");
  308. while(lista!= NULL){
  309. printf("Alunos existentes:\n");
  310. if(lista->info->nome == num){
  311. printf("iguais") ;
  312. printf("O que deseja modificar? (1 - Nome , 2 - Numerp , 3- Ano, 4- Regime, 5-Curso, 6-terminar modificacoes) ");
  313. scanf("%d",&opcao);
  314. switch(opcao)
  315. {
  316. case 1:
  317. printf("Nome do Aluno: ");
  318. lista->info->nome = (char*)malloc(30*sizeof(char));
  319. fflush(stdin);
  320. gets(lista->info->nome);
  321.  
  322. case 2:
  323. printf("Numero do Aluno: ");
  324. scanf("%d",&lista->info->numero);
  325. case 3:
  326. printf("Ano do Aluno: ");
  327. scanf("%d",&lista->info->ano);
  328. case 4:
  329. printf("Regime do aluno: ");
  330. lista->info->regime = (char*)malloc(30*sizeof(char));
  331. fflush(stdin);
  332. gets(lista->info->regime);
  333. case 5:
  334. printf("Curso do Aluno: ");
  335. lista->info->curso = (char*)malloc(30*sizeof(char));
  336. fflush(stdin);
  337. gets(lista->info->curso);
  338. case 6:
  339. break;
  340. }
  341. break;
  342. }
  343. else {
  344. lista = lista->next ;
  345. }
  346. }
  347. fflush(stdin);
  348. getchar();
  349.  
  350. }
  351. AlunoNode* apaga_aluno(AlunoNode* aluno_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista){
  352. int num ;
  353. AlunoNode* atual = aluno_lista->next;
  354. AlunoNode* ant = aluno_lista;
  355. printf("Qual o numero do aluno que pretende apagar?\n Resposta : ");
  356. scanf("%d",&num);
  357. while(atual != NULL )
  358. {
  359. if(atual->info->numero == num){
  360. break;
  361. }
  362. aluno_lista = atual ;
  363. atual = atual->next ;
  364. }
  365. aluno_lista->next = atual->next;
  366. free(atual);
  367. printf("Aluno Apagado!\n");
  368. getchar();
  369. }
  370. DisciplinaNode* apaga_disciplina(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* disc_lista){
  371. char nome[100] ;
  372. DisciplinaNode* atual=disc_lista->next;
  373. printf("Qual a disciplina que pretende apagar?\n Resposta : ");
  374. scanf("%s",&nome);
  375. while(atual != NULL )
  376. {
  377. if((atual)->info->nome_disciplina == nome){
  378. break;
  379. }
  380.  
  381. atual = (atual)->next ;
  382. }
  383. DisciplinaNode* prox=(atual)->next;
  384. free(atual);
  385. atual->next = prox;
  386. printf("Disciplina Apagada!\n");
  387. getchar();
  388. }
  389. DisciplinaNode* modificar_disciplina(AlunoNode* alunos_lista,ExameNode* exame_lista,DisciplinaNode* atual)
  390. {
  391. int opcao ;
  392. printf("Qual a disciplina que pretende modificar?\n Resposta : ");
  393. char nome = (char*)malloc(30*sizeof(char));
  394. fflush(stdin);
  395. gets(nome);
  396. AlunoNode* prox = atual->next ;
  397. while(prox!= NULL )
  398. {
  399. if(atual->info->nome_disciplina==nome){
  400. printf("O que deseja modificar? (1 - Nome da disciplina , 2 - Nome do docente, 3-terminar modificacoes) ");
  401. scanf("%d",&opcao);
  402. switch(opcao)
  403. {
  404. case 1:
  405. printf("Nome da disciplina: ");
  406. atual->info->nome_disciplina = (char*)malloc(30*sizeof(char));
  407. fflush(stdin);
  408. gets(atual->info->nome_disciplina);
  409.  
  410. case 2:
  411. printf("Nome do docente: ");
  412. atual->info->nome_disciplina = (char*)malloc(30*sizeof(char));
  413. fflush(stdin);
  414. gets(atual->info->nome_disciplina);
  415. case 3:
  416. break;
  417. }
  418. }
  419. else {
  420. atual = prox ;
  421. prox = atual->next ;
  422. }
  423. }
  424. }
  425.  
  426. ExameNode* procura_exame(ExameNode* exame_lista,DisciplinaNode* disc_lista )
  427. {
  428. ExameNode *atual = exame_lista->next ;
  429. printf("Qual é a disciplina?\n Resposta : ");
  430. char d = (char*)malloc(30*sizeof(char));
  431. fflush(stdin);
  432. gets(d);
  433. printf("Qual é a epoca do exame?\n(n-Normal,r-Recurso,e-Especial)\n Resposta: ");
  434. char ep = (char*)malloc(30*sizeof(char));
  435. fflush(stdin);
  436. gets(ep);
  437. int l = 1;
  438. int num;
  439. while(atual->next != NULL )
  440. {
  441. if(atual->info->epoca_exame == ep && disc_lista->info->nome_disciplina == d){
  442. l = 1;
  443. break;
  444. }
  445. printf("a");
  446. atual = atual->next ;
  447. l = 0 ;
  448. }
  449. if(l == 1){
  450. return atual;
  451. } else {
  452. printf("Aluno nao encontrado!");
  453. }
  454. }
  455.  
  456. //funзгo que imprime da lista de ponteiros
  457.  
  458. AlunoNode* procura_aluno(AlunoNode* atual)
  459. {
  460. int l = 1;
  461. int num;
  462. printf("Qual o numero?\n Resposta : ");
  463. scanf("%d",&num);
  464. while(atual->next != NULL )
  465. {
  466. if(atual->info->numero == num){
  467. l = 1;
  468. break;
  469. }
  470. printf("a");
  471. atual = atual->next ;
  472. l = 0 ;
  473. }
  474. if(l == 1){
  475. return atual;
  476. } else {
  477. printf("Aluno nao encontrado!");
  478. }
  479. }
  480.  
  481.  
  482. /*ExameNode* imprime_exame(ExameNode* exame_lista,DisciplinaNode* disc_lista){
  483.  
  484. ExameNode *atual = procura_exame(exame_lista,disc_lista);
  485. printf("a");
  486. printf("Informacoes do exame:\n Disciplina: %s\nEpoca de Exame: %s\nSala: %s\nDuracao: %d\nHora : %d:%d\nData: %d/%d/%d",(atual)->info->disc_lista->info->nome_disciplina,(atual)->info->epoca_exame
  487. ,(atual)->info->sala,(atual)->info->duracao,(atual)->info->hora,(atual)->info->min,(atual)->info->dia,(atual)->info->mes,(atual)->info->ano);
  488. }*/
  489. ExameNode* imprime_alunos_exame(ExameNode* atual){
  490. while(atual->info->alunos_lista->next!=NULL){
  491. printf("Nome = %s\tnumero = %d\n",atual->info->alunos_lista->info->nome,atual->info->alunos_lista->info->numero) ;
  492. atual->info->alunos_lista->next ;
  493. }
  494. }
  495. AlunoNode* imprime_aluno(AlunoNode* aluno_lista){
  496. aluno_lista = procura_aluno(aluno_lista);
  497. printf("c") ;
  498. printf("Informacoes do aluno:\n Nome: %d\nCurso: %s\nAno: %d\nRegime : %s",aluno_lista->info->nome,aluno_lista->info->curso,aluno_lista->info->ano,aluno_lista->info->regime);
  499. getchar();
  500. printf("Exames em que o aluno o inscrito");
  501. /*while(atual->info->exames_lista->next!=NULL){
  502. printf("Disciplina: %s\tEpoca: %s\n",atual->info->exames_lista->info->disc_lista->info->nome_disciplina,atual->info->exames_lista->info->epoca_exame);
  503. }*/
  504. }
  505. ExameNode* inscrever_aluno(ExameNode* exame_lista,AlunoLista aluno_lista,DiscLista disc_lista){
  506. ExameNode *atual1 = exame_lista;
  507. AlunoNode *atual2 = aluno_lista;
  508. ExameNode *exame = procura_exame(exame_lista,disc_lista);
  509. AlunoNode *aluno = procura_aluno(aluno_lista);
  510. ExameNode *curr = exame->info->alunos_lista;
  511. while(curr->next!=NULL){
  512. if(curr->info->alunos_lista->info->numero == aluno->info->numero){
  513. printf("Aluno já inscrito no exame");
  514. break;
  515. }
  516. curr=curr->next;
  517. }
  518. curr->info=aluno;
  519. int opcao = 0;
  520. printf("Pretende adicionar mais alunos(0-Nao 1-Sim) :"); scanf("%d",&opcao) ;
  521. while(opcao == 1){
  522. inscrever_aluno(exame_lista,aluno_lista,disc_lista) ;
  523. }
  524. }
  525. void imprime_aluno1(AlunoNode *lista){
  526. lista = lista->next;
  527. printf("Alunos existentes:\n");
  528. while(lista!= NULL){
  529. printf("%s,%d,%s,%d,%s\n",lista->info->nome,lista->info->numero,lista->info->curso,lista->info->ano,lista->info->regime);
  530. lista = lista->next;
  531. }
  532. fflush(stdin);
  533. getchar();
  534. system("cls");
  535. }
  536. void imprime_disciplina(DisciplinaNode *lista){
  537. lista = lista->next;
  538. printf("Disciplinas existentes:\n");
  539. while(lista!= NULL){
  540. printf("%s,%s",lista->info->nome_disciplina,lista->info->nome_docente);
  541. lista = lista->next;
  542. }
  543. fflush(stdin);
  544. getchar();
  545. system("cls");
  546. }
  547.  
  548. void imprime_exames(ExameNode *lista){
  549. lista = lista->next;
  550. printf("Exames existentes:\n");
  551. while(lista!= NULL){
  552. printf("%s,%s,%d,%d/%d/%d,%d:%d\n",lista->info->epoca_exame,lista->info->sala,lista->info->duracao,lista->info->dia,lista->info->mes,lista->info->ano,lista->info->hora,lista->info->min);
  553. lista = lista->next;
  554. }
  555. fflush(stdin);
  556. getchar();
  557. system("cls");
  558. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement