Advertisement
Guest User

Untitled

a guest
Jun 26th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 68.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 60
  5.  
  6. /* No de ligacao */
  7. struct no {
  8. struct no * prox;
  9. struct no * ant;
  10. void * dados;
  11. };
  12. typedef struct no NO;
  13. typedef NO * PNO;
  14. typedef NO ** PPNO;
  15.  
  16. /* DATA */
  17.  
  18. struct data {
  19. int dia;
  20. int mes;
  21. int ano;
  22. };
  23. typedef struct data DATA;
  24.  
  25. // ------------------------------------------------------------------
  26.  
  27. // GLOBAIS //
  28.  
  29. int idCategorias = 0;
  30. int idCandidatos = 0;
  31. int idVotantes = 0;
  32. int idPremios = 0;
  33. int idVotos = 0;
  34.  
  35. FILE *fpWriterCategorias;
  36. FILE *fpWriterCandidatos;
  37. FILE *fpWriterVotantes;
  38. FILE *fpWriterPremios;
  39. FILE *fpWriterVotos;
  40.  
  41. // ------- //
  42.  
  43.  
  44. /* CATEGORIAS */
  45. struct categoria {
  46. int ID;
  47. char identificacao[MAX];
  48. char designacao[MAX];
  49. int nrCandidatosMax; // QUANDO OS CANDIDATOS ATUAIS > CANDIDATOS MAXIMOS ---> Impossivel criar mais candidatos // Feito
  50. int nrCandidatosAtual; // FALTA AQUI INCREMENTAR O NUMERO DE CANDIDATOS ATUAL // Feito
  51. };
  52. typedef struct categoria CATEGORIA;
  53. typedef CATEGORIA * PCATEGORIA;
  54.  
  55. /* CANDIDATOS */
  56. struct candidato {
  57. int ID;
  58. char nome[MAX];
  59. char identficacaoCategoria[MAX];
  60. int nrVotos; // Counter para o numero de votos para cada candidato
  61. };
  62. typedef struct candidato CANDIDATO;
  63. typedef CANDIDATO * PCANDIDATO;
  64.  
  65. /* VOTANTES */
  66. struct votante {
  67. int ID;
  68. char nome[MAX];
  69. char contacto[MAX]
  70. };
  71. typedef struct votante VOTANTE;
  72. typedef VOTANTE * PVOTANTE;
  73.  
  74. /* PREMIO */
  75. struct premio {
  76. int ID;
  77. char nome[MAX];
  78. char tipo[MAX];
  79. char patrocinadorPrincipal[MAX];
  80. char identificacaoCategoria[MAX];
  81. };
  82. typedef struct premio PREMIO;
  83. typedef PREMIO * PPREMIO;
  84.  
  85. /* VOTOS */
  86. struct voto {
  87. int ID;
  88. char identificacaoVotante[MAX];
  89. char identificacaoCategoria[MAX];
  90. char identificacaoCandidato[MAX];
  91. DATA data;
  92. };
  93. typedef struct voto VOTO;
  94. typedef VOTO * PVOTO;
  95.  
  96.  
  97. // -------------------------------------------------------------------- //
  98.  
  99. // GENERICAS //
  100.  
  101. void inserir(PPNO cabeca, void * dados){
  102. PNO novo;
  103. novo = (PNO)malloc(sizeof(NO));
  104. if(*cabeca) (*cabeca)->ant = novo;
  105. novo->prox = *cabeca;
  106. novo->ant = NULL;
  107. *cabeca = novo;
  108. novo->dados = dados;
  109. }
  110.  
  111. void imprime(PNO cabeca, void (*imprimeDados)()){
  112. PNO ptr;
  113. for(ptr = cabeca; ptr; ptr=ptr->prox){
  114. (*imprimeDados)(ptr->dados);
  115. }
  116. }
  117.  
  118. int remover(PPNO cabeca, int (*compara)(), void* valor) {
  119. PNO ptr;
  120. for(ptr=*cabeca; ptr; ptr=ptr->prox)
  121. if((*compara)(ptr->dados, valor)){
  122. if(ptr->ant) ptr->ant->prox = ptr->prox;
  123. else *cabeca = ptr->prox;
  124. if(ptr->prox) ptr->prox->ant = ptr->ant;
  125. free(ptr->dados);
  126. free(ptr);
  127. return 1;
  128. }
  129. return 0;
  130. }
  131.  
  132. void* pesquisa(PNO cabeca, int (*compara)(), void* valor) {
  133. PNO ptr;
  134. for(ptr=cabeca; ptr; ptr=ptr->prox)
  135. if((*compara)(ptr->dados, valor))
  136. return ptr->dados;
  137. return NULL;
  138. }
  139.  
  140. // ------ //
  141.  
  142. // ESCREVE //
  143. void escreveCategoria(PCATEGORIA p){
  144. fprintf(fpWriterCategorias,"%d %s %s %d %d\n",p->ID, p->identificacao, p->designacao, p->nrCandidatosMax, p->nrCandidatosAtual);
  145. }
  146.  
  147. void escreveCandidato(PCANDIDATO p){
  148. fprintf(fpWriterCandidatos, "%d %s %s %d\n", p->ID, p->nome, p->identficacaoCategoria, p->nrVotos);
  149. }
  150.  
  151. void escreveVotante(PVOTANTE p){
  152. fprintf(fpWriterVotantes, "%d %s %s\n", p->ID, p->nome, p->contacto);
  153. }
  154.  
  155. void escrevePremio(PPREMIO p){
  156. fprintf(fpWriterPremios, "%d %s %s %s %s\n", p->ID, p->nome, p->tipo, p->identificacaoCategoria, p->patrocinadorPrincipal);
  157. }
  158.  
  159. void escreveVoto(PVOTO p){
  160. fprintf(fpWriterVotos, "%d %s %s %s %d-%d-%d\n", p->ID, p->identificacaoVotante, p->identificacaoCategoria, p->identificacaoCandidato, p->data.dia, p->data.mes, p->data.ano);
  161. }
  162. // -------- //
  163.  
  164. // IMPRIME //
  165.  
  166. void imprimeCategoria(PCATEGORIA p){
  167. printf("ID: %d | Identificacao: %s | Designacao: %s | Numero Candidatos Maximo: %d | Numero Candidatos Atual: %d\n",p->ID, p->identificacao, p->designacao, p->nrCandidatosMax, p->nrCandidatosAtual);
  168. }
  169.  
  170. void imprimeCandidato(PCANDIDATO p){
  171. printf("ID: %d | Nome: %s | Categoria: %s | Votos: %d\n", p->ID, p->nome, p->identficacaoCategoria, p->nrVotos);
  172. }
  173.  
  174. void imprimeVotante(PVOTANTE p){
  175. printf("ID: %d | Nome: %s | Contacto: %s\n", p->ID, p->nome, p->contacto);
  176. }
  177.  
  178. void imprimePremio(PPREMIO p){
  179. printf("ID: %d | Nome: %s | Tipo: %s | Categoria: %s | Patrocinador Principal: %s\n", p->ID, p->nome, p->tipo, p->identificacaoCategoria, p->patrocinadorPrincipal);
  180. }
  181.  
  182. void imprimeVoto(PVOTO p){
  183. printf("ID: %d | Votante: %s | Categoria: %s | Candidato: %s | Data:%d-%d-%d\n", p->ID, p->identificacaoVotante, p->identificacaoCategoria, p->identificacaoCandidato, p->data.dia, p->data.mes, p->data.ano);
  184. }
  185. // -------- //
  186.  
  187. // COMPARAR //
  188.  
  189. int cmpIdentfCategoria(PCATEGORIA a, char* identificacao) {
  190. return strcmp(a->identificacao, identificacao) == 0;
  191. }
  192.  
  193. int cmpIDCategoria(PCATEGORIA a, int* num){
  194. return a->ID == *num;
  195. }
  196.  
  197. int cmpNomeCandidato(PCANDIDATO a, char* nome){
  198. return strcmp(a->nome, nome) == 0;
  199. }
  200. int cmpIDCandidato(PCANDIDATO a, int* num){
  201. return a->ID == *num;
  202. }
  203.  
  204. int cmpNomeVotante(PVOTANTE a, char* nome){
  205. return strcmp(a->nome, nome) == 0;
  206. }
  207.  
  208. int cmpContactoVotante(PVOTANTE a, char* contacto){
  209. return strcmp(a->contacto, contacto) == 0;
  210. }
  211.  
  212. int cmpIDVotante(PVOTANTE a, int* num){
  213. return a->ID == *num;
  214. }
  215.  
  216. int cmpNomePremio(PPREMIO a, char* nome){
  217. return strcmp(a->nome, nome) == 0;
  218. }
  219.  
  220. int cmpIDPremio(PPREMIO a, int* num){
  221. return a->ID == *num;
  222. }
  223.  
  224. int cmpIDVoto(PVOTO a , int* num){
  225. return a->ID == *num;
  226. }
  227.  
  228. // -------- //
  229.  
  230.  
  231. // ------ //
  232.  
  233. PCATEGORIA criaCategoria(){
  234. PCATEGORIA novo;
  235. novo = (PCATEGORIA)malloc(sizeof(CATEGORIA));
  236. printf("Identificacao: ");
  237. scanf("%s", &novo->identificacao);
  238. // Apaga o resto da linha
  239. scanf("%*[^\n]"); scanf("%*c");
  240. printf("Desigancao: ");
  241. fflush (stdout);
  242. fgets(novo->designacao, MAX, stdin);
  243. // Elimina '\n' no fim da string
  244. novo->designacao[strlen(novo->designacao)-1] = '\0';
  245. printf("Numero de Candidatos Maximo: ");
  246. scanf("%d", &novo->nrCandidatosMax);
  247. scanf("%*[^\n]"); scanf("%*c");
  248. novo->nrCandidatosAtual = 0;
  249. novo->ID = idCategorias;
  250. idCategorias++;
  251. return novo;
  252. }
  253.  
  254. PCANDIDATO criaCandidato(PNO categorias){
  255. PCANDIDATO novo;
  256.  
  257. char identificacao[MAX];
  258. PCATEGORIA ptrCategorias;
  259.  
  260. novo = (PCANDIDATO)malloc(sizeof(CANDIDATO));
  261.  
  262. printf("Categoria: ");
  263. fgets(identificacao, MAX, stdin);
  264. identificacao[strlen(identificacao)-1] = '\0';
  265. ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &identificacao);
  266.  
  267. if(ptrCategorias){
  268. if(ptrCategorias->nrCandidatosAtual < ptrCategorias->nrCandidatosMax){
  269. strcpy(&novo->identficacaoCategoria, identificacao);
  270. printf("Nome: ");
  271. scanf("%s", &novo->nome); // ERRO!!! ESTA A CRIAR UM CANDIDATO QUANDO NAO EXISTE NENHUMA CATEGORIA COM A IDENTIFICACAO ESCRITA
  272. scanf("%*[^\n]"); scanf("%*c");
  273. novo->nrVotos = 0;
  274. ptrCategorias->nrCandidatosAtual++;
  275. novo->ID = idCandidatos;
  276. idCandidatos++;
  277. }
  278. else{
  279. printf("\nNao e possivel criar mais candidatos, pois foi atingido o numero maximo de candidatos para esta categoria!\n");
  280. }
  281. }
  282. else{
  283. printf("\nCategoria inexiste, por favor escolha uma categoria válida!\n");
  284. }
  285.  
  286. return novo;
  287. }
  288.  
  289. PVOTANTE criaVotante(){
  290. PVOTANTE novo;
  291. novo = (PVOTANTE)malloc(sizeof(VOTANTE));
  292. printf("Nome: ");
  293. scanf("%s", &novo->nome);
  294. scanf("%*[^\n]"); scanf("%*c");
  295. printf("Contacto: ");
  296. fflush(stdout);
  297. fgets(novo->contacto, MAX, stdin);
  298. novo->contacto[strlen(novo->contacto)-1] = '\0';
  299. novo->ID = idVotantes;
  300. idVotantes++;
  301. return novo;
  302. }
  303.  
  304. PPREMIO criaPremio(PNO categorias){
  305. PPREMIO novo;
  306. char identificacao[MAX];
  307. PCATEGORIA ptrCategorias;
  308.  
  309. novo = (PPREMIO)malloc(sizeof(PREMIO));
  310.  
  311. printf("Categoria: ");
  312. fgets(identificacao, MAX, stdin);
  313. identificacao[strlen(identificacao)-1] = '\0';
  314. ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &identificacao);
  315. if(ptrCategorias){
  316. strcpy(&novo->identificacaoCategoria, identificacao);
  317. printf("Nome: ");
  318. scanf("%s", &novo->nome);
  319. scanf("%*[^\n]"); scanf("%*c");
  320. printf("Tipo: ");
  321. scanf("%s", &novo->tipo);
  322. scanf("%*[^\n]"); scanf("%*c");
  323. printf("Patrocinador Principal: ");
  324. fflush(stdout);
  325. fgets(novo->patrocinadorPrincipal, MAX, stdin);
  326. novo->patrocinadorPrincipal[strlen(novo->patrocinadorPrincipal)-1] = '\0';
  327. novo->ID = idPremios;
  328. idPremios++;
  329. }
  330. else{
  331. printf("\nCategoria inexistente\n");
  332. }
  333. return novo;
  334. }
  335.  
  336. PVOTO criaVoto(PNO votantes, PNO categorias, PNO candidatos){
  337. PVOTO novo;
  338. novo = (PVOTO)malloc(sizeof(VOTO));
  339.  
  340. PVOTANTE ptrVotantes;
  341. char votante[MAX];
  342.  
  343. PCATEGORIA ptrCategorias;
  344. char categoria[MAX];
  345.  
  346. PCANDIDATO ptrCandidatos;
  347. char candidato[MAX];
  348.  
  349. printf("Nome do Votante: ");
  350. scanf("%s", votante);
  351. scanf("%*[^\n]"); scanf("%*c");
  352. ptrVotantes = pesquisa(votantes, cmpNomeVotante, &votante);
  353. if(ptrVotantes){
  354. printf("Nome da Categoria: ");
  355. scanf("%s", categoria);
  356. scanf("%*[^\n]"); scanf("%*c");
  357. ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &categoria);
  358. if(ptrCategorias){
  359. printf("Nome do Candidato: ");
  360. scanf("%s", candidato);
  361. scanf("%*[^\n]"); scanf("%*c");
  362. ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &candidato);
  363. if(ptrCandidatos != NULL){
  364. if(strcmp(ptrCandidatos->identficacaoCategoria, ptrCategorias->identificacao) == 0){
  365. printf("Data:(DD-MM-AA) ");
  366. scanf("%d-%d-%d", &novo->data.dia, &novo->data.mes, &novo->data.ano);
  367. scanf("%*[^\n]"); scanf("%*c");
  368. strcpy(&novo->identificacaoVotante, votante);
  369. strcpy(&novo->identificacaoCategoria, categoria);
  370. strcpy(&novo->identificacaoCandidato, candidato);
  371. novo->ID = idVotos;
  372. idVotos++;
  373. ptrCandidatos->nrVotos++;
  374. }
  375. else{
  376. printf("\nNao existe nenhum candidato com esse nome ou nenhum candidato esta associado a essa categoria!\n");
  377. }
  378. }else{
  379. printf("Nao existe nenhum candidato com esse nome!\n");
  380. }
  381. }else{
  382. printf("\nNao existe nenhuma categoria com esse nome!\n");
  383. }
  384. }
  385. else{
  386. printf("\nNao existe nenhum votante com esse nome!\n");
  387. }
  388.  
  389. return novo;
  390. }
  391.  
  392.  
  393. // ------ //
  394.  
  395.  
  396. int main(){
  397. PNO categorias = NULL;
  398. PCATEGORIA ptrCategorias;
  399.  
  400. PNO candidatos = NULL;
  401. PCANDIDATO ptrCandidatos;
  402.  
  403. PNO votantes = NULL;
  404. PVOTANTE ptrVotantes;
  405.  
  406. PNO premios = NULL;
  407. PPREMIO ptrPremios;
  408.  
  409. PNO votos = NULL;
  410. PVOTO ptrVotos;
  411.  
  412. FILE *fpReaderCategorias;
  413. FILE *fpReaderCandidatos;
  414. FILE *fpReaderVotantes;
  415. FILE *fpReaderPremios;
  416. FILE *fpReaderVotos;
  417.  
  418. fpReaderCategorias = fopen("Categorias.txt", "r");
  419. fpReaderCandidatos = fopen("Candidatos.txt", "r");
  420. fpReaderVotantes = fopen("Votantes.txt", "r");
  421. fpReaderPremios = fopen("Premios.txt", "r");
  422. fpReaderVotos = fopen("Votos.txt", "r");
  423.  
  424. if(fpReaderCategorias != NULL){
  425. int id, nrCandMax, nrCandAtu;
  426. char identficacao[MAX], designacao[MAX];
  427.  
  428. while(!feof(fpReaderCategorias))
  429. {
  430. fscanf(fpReaderCategorias, "%d %s %s %d %d\n", &id, identficacao, designacao, &nrCandMax, &nrCandAtu);
  431.  
  432. PCATEGORIA novo;
  433. novo = (PCATEGORIA)malloc(sizeof(CATEGORIA));
  434.  
  435. novo->ID = id;
  436. strcpy(novo->identificacao, identficacao);
  437. strcpy(novo->designacao, designacao);
  438. novo->nrCandidatosMax = nrCandMax;
  439. novo->nrCandidatosAtual = nrCandAtu;
  440.  
  441. inserir(&categorias, novo);
  442. }
  443. fclose(fpReaderCategorias);
  444. }
  445. else{
  446. printf("Erro ao tentar abrir o ficheiro Categorias.txt!\n\n");
  447. }
  448.  
  449. printf("Ficheiro Categorias.txt lido Corretamente!\n");
  450.  
  451. if(fpReaderCandidatos != NULL){
  452. int id, nrVotos;
  453. char identificacao[MAX], nome[MAX];
  454.  
  455. while(!feof(fpReaderCandidatos))
  456. {
  457. fscanf(fpReaderCandidatos, "%d %s %s %d \n", &id, identificacao, nome, &nrVotos);
  458.  
  459. PCANDIDATO novo;
  460. novo = (PCANDIDATO)malloc(sizeof(CANDIDATO));
  461.  
  462. novo->ID = id;
  463. strcpy(novo->identficacaoCategoria, identificacao);
  464. strcpy(novo->nome, nome);
  465. novo->nrVotos = nrVotos;
  466.  
  467. inserir(&candidatos, novo);
  468. }
  469. fclose(fpReaderCandidatos);
  470. }
  471. else{
  472. printf("Erro ao tentar abrir o ficheiro Candidatos.txt!\n\n");
  473. }
  474.  
  475. printf("Ficheiro Candidatos.txt lido Corretamente!\n");
  476.  
  477. if(fpReaderVotantes != NULL){
  478. int id;
  479. char nome[MAX], contacto[MAX];
  480.  
  481. while(!feof(fpReaderVotantes))
  482. {
  483. fscanf(fpReaderVotantes, "%d %s %s\n", &id, nome, contacto);
  484.  
  485. PVOTANTE novo;
  486. novo = (PVOTANTE)malloc(sizeof(VOTANTE));
  487.  
  488. novo->ID = id;
  489. strcpy(novo->nome, nome);
  490. strcpy(novo->contacto, contacto);
  491.  
  492. inserir(&votantes, novo);
  493. }
  494. fclose(fpReaderVotantes);
  495. }
  496. else{
  497. printf("Erro ao tentar abrir o ficheiro Votantes.txt!\n\n");
  498. }
  499.  
  500. printf("Ficheiro Votantes.txt lido Corretamente!\n");
  501.  
  502. if(fpReaderPremios != NULL){
  503. int id;
  504. char nome[MAX], tipo[MAX], patroPrinc[MAX], identificacaoCategoria[MAX];
  505.  
  506. while(!feof(fpReaderPremios))
  507. {
  508. fscanf(fpReaderPremios, "%d %s %s %s %s\n", &id, nome, tipo, identificacaoCategoria, patroPrinc);
  509.  
  510. PPREMIO novo;
  511. novo = (PPREMIO)malloc(sizeof(PREMIO));
  512.  
  513. novo->ID = id;
  514. strcpy(novo->nome, nome);
  515. strcpy(novo->tipo, tipo);
  516. strcpy(novo->identificacaoCategoria, identificacaoCategoria);
  517. strcpy(novo->patrocinadorPrincipal, patroPrinc);
  518.  
  519. inserir(&premios, novo);
  520. }
  521. fclose(fpReaderPremios);
  522. }
  523. else{
  524. printf("Erro ao tentar abrir o ficheiro Premios.txt!\n\n");
  525. }
  526.  
  527. printf("Ficheiro Premios.txt lido Corretamente!\n");
  528.  
  529. if(fpReaderVotos != NULL){
  530. int id;
  531. char identificacaoVotante[MAX], identificacaoCategoria[MAX], identificacaoCandidato[MAX];
  532. DATA data;
  533.  
  534. while(!feof(fpReaderVotos))
  535. {
  536. fscanf(fpReaderVotos, "%d %s %s %s %d-%d-%d\n", &id, identificacaoVotante, identificacaoCategoria, identificacaoCandidato, &data.dia, &data.mes, &data.ano);
  537.  
  538. PVOTO novo;
  539. novo = (PVOTO)malloc(sizeof(VOTO));
  540.  
  541. novo->ID = id;
  542. strcpy(novo->identificacaoVotante, identificacaoVotante);
  543. strcpy(novo->identificacaoCategoria, identificacaoCategoria);
  544. strcpy(novo->identificacaoCandidato, identificacaoCandidato);
  545. novo->data.dia = data.dia;
  546. novo->data.mes = data.mes;
  547. novo->data.ano = data.ano;
  548.  
  549. inserir(&votos, novo);
  550. }
  551. fclose(fpReaderVotos);
  552. }
  553. else{
  554. printf("Erro ao tentar abrir o ficheiro Votos.txt!\n\n");
  555. }
  556.  
  557. printf("Ficheiro Votos.txt lido Corretamente!\n");
  558.  
  559. int opcao;
  560. int sub_opcao;
  561. int num, n;
  562. char nome[MAX];
  563. char contacto[MAX];
  564. char identificacao[MAX];
  565. char designacao[MAX];
  566.  
  567. do{
  568. printf("\nMENU PRINCIPAL\n");
  569. printf("\n1 - Inserir");
  570. printf("\n2 - Listar");
  571. printf("\n3 - Apagar");
  572. printf("\n4 - Pesquisar");
  573. printf("\n5 - Alterar");
  574. printf("\n6 - Guardar Informacao");
  575. printf("\n0 - Sair\n");
  576. printf("\nInsira a opcao: ");
  577. opcao = getchar();
  578. scanf("%*[^\n]"); scanf("%*c");
  579.  
  580. switch(opcao) {
  581. case '1':
  582. do{
  583. printf("\nMENU INSERIR\n");
  584. printf("\n1 - Inserir Categoria");
  585. printf("\n2 - Inserir Candidato");
  586. printf("\n3 - Inserir Votante");
  587. printf("\n4 - Inserir Premio");
  588. printf("\n5 - Inserir Voto");
  589. printf("\n0 - Voltar\n");
  590. printf("\nInsira a opcao: ");
  591. sub_opcao = getchar();
  592. scanf("%*[^\n]"); scanf("%*c");
  593.  
  594. switch(sub_opcao){
  595. case '1':
  596. ptrCategorias = criaCategoria();
  597. inserir(&categorias, ptrCategorias);
  598. break;
  599. case '2':
  600. ptrCandidatos = criaCandidato(categorias);
  601. inserir(&candidatos, ptrCandidatos);
  602. break;
  603. case '3':
  604. ptrVotantes = criaVotante();
  605. inserir(&votantes, ptrVotantes);
  606. break;
  607. case '4':
  608. ptrPremios = criaPremio(categorias);
  609. inserir(&premios, ptrPremios);
  610. break;
  611. case '5':
  612. ptrVotos = criaVoto(votantes, categorias, candidatos);
  613. inserir(&votos, ptrVotos);
  614. break;
  615. }
  616.  
  617. } while(sub_opcao != '0'); //DO INSERIR
  618. break;
  619.  
  620. case '2':
  621. do{
  622. printf("\nMENU LISTAR\n");
  623. printf("\n1 - Listar Categoria");
  624. printf("\n2 - Listar Candidato");
  625. printf("\n3 - Listar Votante");
  626. printf("\n4 - Listar Premio");
  627. printf("\n5 - Listar Voto");
  628. printf("\n0 - Voltar\n");
  629. printf("\nInsira a opcao: ");
  630. sub_opcao = getchar();
  631. scanf("%*[^\n]"); scanf("%*c");
  632.  
  633. switch(sub_opcao){
  634. case '1':
  635. imprime(categorias, imprimeCategoria);
  636. break;
  637. case '2':
  638. imprime(candidatos, imprimeCandidato);
  639. break;
  640. case '3':
  641. imprime(votantes, imprimeVotante);
  642. break;
  643. case '4':
  644. imprime(premios, imprimePremio);
  645. break;
  646. case '5':
  647. imprime(votos, imprimeVoto);
  648. }
  649.  
  650. }while(sub_opcao != '0'); //DO IMPRIME
  651. break;
  652.  
  653. case '3':
  654. do{
  655. printf("\nMENU APAGAR\n");
  656. printf("\n1 - Apagar Categoria");
  657. printf("\n2 - Apagar Candidato");
  658. printf("\n3 - Apagar Votante");
  659. printf("\n4 - Apagar Premio");
  660. printf("\n5 - Apagar Voto");
  661. printf("\n0 - Voltar\n");
  662. printf("\nInsira a opcao: ");
  663. sub_opcao = getchar();
  664. scanf("%*[^\n]"); scanf("%*c");
  665.  
  666. switch(sub_opcao){
  667. case '1':
  668. do{
  669. printf("\nApagar Categoria por ...\n");
  670. printf("\n1 - ID");
  671. printf("\n2 - Identificacao");
  672. printf("\n0 - Voltar\n");
  673. printf("\nInsira a opcao: ");
  674. sub_opcao = getchar();
  675. scanf("%*[^\n]"); scanf("%*c");
  676.  
  677. switch(sub_opcao){
  678.  
  679. case '1':
  680. printf("ID: ");
  681. scanf("%d", &num);
  682. scanf("%*[^\n]"); scanf("%*c");
  683. n = remover(&categorias, cmpIDCategoria, &num);
  684. if(n) printf("\nCategoria removida\n");
  685. else printf("\nCategoria inexistente\n");
  686. break;
  687.  
  688. case '2':
  689. printf("Identificacao: ");
  690. fgets(identificacao, MAX, stdin);
  691. identificacao[strlen(identificacao)-1] = '\0';
  692. n = remover(&categorias, cmpIdentfCategoria, identificacao);
  693. if(n) printf("\nCategoria removida\n");
  694. else printf("\nCategoria inexistente\n");
  695. break;
  696. }
  697.  
  698. }while(sub_opcao != '0');
  699. break;
  700.  
  701. case '2':
  702. do{
  703. printf("\nApagar Candidato por ...\n");
  704. printf("\n1 - ID");
  705. printf("\n2 - Nome");
  706. printf("\n0 - Voltar\n");
  707. printf("\nInsira a opcao: ");
  708. sub_opcao = getchar();
  709. scanf("%*[^\n]"); scanf("%*c");
  710.  
  711. switch(sub_opcao){
  712.  
  713. case '1':
  714. printf("ID: ");
  715. scanf("%d", &num);
  716. scanf("%*[^\n]"); scanf("%*c");
  717. n = remover(&candidatos, cmpIDCandidato, &num);
  718. if(n) printf("\Candidato removido\n");
  719. else printf("\Candidato inexistente\n");
  720. break;
  721.  
  722. case '2':
  723. printf("Nome: ");
  724. fgets(nome, MAX, stdin);
  725. nome[strlen(nome)-1] = '\0';
  726. n = remover(&candidatos, cmpNomeCandidato, nome);
  727. if(n) printf("\Candidato removido\n");
  728. else printf("\Candidato inexistente\n");
  729. break;
  730. }
  731.  
  732. }while(sub_opcao != '0');
  733. break;
  734.  
  735. case '3':
  736. do{
  737. printf("\nApagar Votante por ...\n");
  738. printf("\n1 - ID");
  739. printf("\n2 - Nome");
  740. printf("\n0 - Voltar\n");
  741. printf("\nInsira a opcao: ");
  742. sub_opcao = getchar();
  743. scanf("%*[^\n]"); scanf("%*c");
  744.  
  745. switch(sub_opcao){
  746.  
  747. case '1':
  748. printf("ID: ");
  749. scanf("%d", &num);
  750. scanf("%*[^\n]"); scanf("%*c");
  751. n = remover(&votantes, cmpIDVotante, &num);
  752. if(n) printf("\Votante removida\n");
  753. else printf("\Votante inexistente\n");
  754. break;
  755.  
  756. case '2':
  757. printf("Nome: ");
  758. fgets(nome, MAX, stdin);
  759. nome[strlen(nome)-1] = '\0';
  760. n = remover(&votantes, cmpNomeVotante, nome);
  761. if(n) printf("\Votante removido\n");
  762. else printf("\Votante inexistente\n");
  763. break;
  764. }
  765.  
  766. }while(sub_opcao != '0');
  767. break;
  768.  
  769. case '4':
  770. do{
  771. printf("\nApagar Premio por ...\n");
  772. printf("\n1 - ID");
  773. printf("\n2 - Nome");
  774. printf("\n0 - Voltar\n");
  775. printf("\nInsira a opcao: ");
  776. sub_opcao = getchar();
  777. scanf("%*[^\n]"); scanf("%*c");
  778.  
  779. switch(sub_opcao){
  780.  
  781. case '1':
  782. printf("ID: ");
  783. scanf("%d", &num);
  784. scanf("%*[^\n]"); scanf("%*c");
  785. n = remover(&premios, cmpIDPremio, &num);
  786. if(n) printf("\Premio removida\n");
  787. else printf("\Premio inexistente\n");
  788. break;
  789.  
  790. case '2':
  791. printf("Nome: ");
  792. fgets(nome, MAX, stdin);
  793. nome[strlen(nome)-1] = '\0';
  794. n = remover(&premios, cmpNomePremio, nome);
  795. if(n) printf("\Premio removido\n");
  796. else printf("\Premio inexistente\n");
  797. break;
  798. }
  799.  
  800. }while(sub_opcao != '0');
  801.  
  802. break;
  803.  
  804. case '5':
  805. do{
  806. printf("\nApagar Voto por ...\n");
  807. printf("\n1 - ID");
  808. printf("\n0 - Voltar\n");
  809. printf("\nInsira a opcao: ");
  810. sub_opcao = getchar();
  811. scanf("%*[^\n]"); scanf("%*c");
  812.  
  813. switch(sub_opcao){
  814.  
  815. case '1':
  816. printf("ID: ");
  817. scanf("%d", &num);
  818. scanf("%*[^\n]"); scanf("%*c");
  819. n = remover(&votos,cmpIDVoto , &num);
  820. if(n){
  821. /*ptrVotos = pesquisa(votos, cmpIDVoto, &num); // TAMOS AQUI A TENTAR REMOVER VOTO (ERRO)
  822. ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &ptrVotos->identificacaoCandidato);
  823. ptrCandidatos->nrVotos--;
  824. printf("\Voto removido\n");*/
  825. }else{
  826. printf("\Voto inexistente\n");
  827. }
  828. break;
  829. }
  830.  
  831. }while(sub_opcao != '0');
  832.  
  833. break;
  834. }
  835.  
  836. }while(sub_opcao != '0'); //DO APAGAR
  837. break;
  838.  
  839. case '4':
  840. do{
  841. printf("\nMENU PESQUISAR\n");
  842. printf("\n1 - Pesquisar Categoria");
  843. printf("\n2 - Pesquisar Candidato");
  844. printf("\n3 - Pesquisar Votante");
  845. printf("\n4 - Pesquisar Premio");
  846. printf("\n5 - Pesquisar Voto");
  847. printf("\n0 - Voltar\n");
  848. printf("\nInsira a opcao: ");
  849. sub_opcao = getchar();
  850. scanf("%*[^\n]"); scanf("%*c");
  851.  
  852. switch(sub_opcao){
  853. case '1':
  854. do{
  855. printf("\nPesquisar Categoria por ...\n");
  856. printf("\n1 - ID");
  857. printf("\n2 - Identificacao");
  858. printf("\n0 - Voltar\n");
  859. printf("\nInsira a opcao: ");
  860. sub_opcao = getchar();
  861. scanf("%*[^\n]"); scanf("%*c");
  862.  
  863. switch(sub_opcao){
  864.  
  865. case '1':
  866. printf("ID: ");
  867. scanf("%d", &num);
  868. scanf("%*[^\n]"); scanf("%*c");
  869. ptrCategorias = pesquisa(categorias, cmpIDCategoria, &num);
  870. if(ptrCategorias) imprimeCategoria(ptrCategorias);
  871. else printf("\nCategoria inexistente\n");
  872. break;
  873.  
  874. case '2':
  875. printf("Identificacao: ");
  876. fgets(identificacao, MAX, stdin);
  877. identificacao[strlen(identificacao)-1] = '\0';
  878. ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &identificacao);
  879. if(ptrCategorias) imprimeCategoria(ptrCategorias);
  880. else printf("\nCategoria inexistente\n");
  881. break;
  882. }
  883.  
  884. }while(sub_opcao != '0');
  885.  
  886. break;
  887.  
  888. case '2':
  889. do{
  890. printf("\nPesquisar Candidatos por ...\n");
  891. printf("\n1 - ID");
  892. printf("\n2 - Nome");
  893. printf("\n0 - Voltar\n");
  894. printf("\nInsira a opcao: ");
  895. sub_opcao = getchar();
  896. scanf("%*[^\n]"); scanf("%*c");
  897.  
  898. switch(sub_opcao){
  899.  
  900. case '1':
  901. printf("ID: ");
  902. scanf("%d", &num);
  903. scanf("%*[^\n]"); scanf("%*c");
  904. ptrCandidatos = pesquisa(candidatos, cmpIDCandidato, &num);
  905. if(ptrCandidatos) imprimeCandidato(ptrCandidatos);
  906. else printf("\Candidato inexistente\n");
  907. break;
  908.  
  909. case '2':
  910. printf("Nome: ");
  911. fgets(nome, MAX, stdin);
  912. nome[strlen(nome)-1] = '\0';
  913. ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &nome);
  914. if(ptrCandidatos) imprimeCandidato(ptrCandidatos);
  915. else printf("\Candidato inexistente\n");
  916. break;
  917. }
  918.  
  919. }while(sub_opcao != '0');
  920.  
  921. break;
  922.  
  923. case '3':
  924. do{
  925. printf("\nPesquisar Votantes por ...\n");
  926. printf("\n1 - ID");
  927. printf("\n2 - Nome");
  928. printf("\n0 - Voltar\n");
  929. printf("\nInsira a opcao: ");
  930. sub_opcao = getchar();
  931. scanf("%*[^\n]"); scanf("%*c");
  932.  
  933. switch(sub_opcao){
  934.  
  935. case '1':
  936. printf("ID: ");
  937. scanf("%d", &num);
  938. scanf("%*[^\n]"); scanf("%*c");
  939. ptrVotantes = pesquisa(votantes, cmpIDVotante, &num);
  940. if(ptrVotantes) imprimeVotante(ptrVotantes);
  941. else printf("\Votante inexistente\n");
  942. break;
  943.  
  944. case '2':
  945. printf("Nome: ");
  946. fgets(nome, MAX, stdin);
  947. nome[strlen(nome)-1] = '\0';
  948. ptrVotantes = pesquisa(votantes, cmpNomeVotante, &nome);
  949. if(ptrVotantes) imprimeVotante(ptrVotantes);
  950. else printf("\Votante inexistente\n");
  951. break;
  952. }
  953.  
  954. }while(sub_opcao != '0');
  955.  
  956. break;
  957.  
  958. case '4':
  959. do{
  960. printf("\nPesquisar Premios por ...\n");
  961. printf("\n1 - ID");
  962. printf("\n2 - Nome");
  963. printf("\n0 - Voltar\n");
  964. printf("\nInsira a opcao: ");
  965. sub_opcao = getchar();
  966. scanf("%*[^\n]"); scanf("%*c");
  967.  
  968. switch(sub_opcao){
  969.  
  970. case '1':
  971. printf("ID: ");
  972. scanf("%d", &num);
  973. scanf("%*[^\n]"); scanf("%*c");
  974. ptrPremios = pesquisa(premios, cmpIDPremio, &num);
  975. if(ptrPremios) imprimePremio(ptrPremios);
  976. else printf("\Premio inexistente\n");
  977. break;
  978.  
  979. case '2':
  980. printf("Nome: ");
  981. fgets(nome, MAX, stdin);
  982. nome[strlen(nome)-1] = '\0';
  983. ptrPremios = pesquisa(premios, cmpNomePremio, &nome);
  984. if(ptrPremios) imprimePremio(ptrPremios);
  985. else printf("\Premio inexistente\n");
  986. break;
  987. }
  988.  
  989. }while(sub_opcao != '0');
  990.  
  991. break;
  992.  
  993. case '5':
  994. do{
  995. printf("\nPesquisar Voto por ...\n");
  996. printf("\n1 - ID");
  997. printf("\n2 - Nome");
  998. printf("\n0 - Voltar\n");
  999. printf("\nInsira a opcao: ");
  1000. sub_opcao = getchar();
  1001. scanf("%*[^\n]"); scanf("%*c");
  1002.  
  1003. switch(sub_opcao){
  1004.  
  1005. case '1':
  1006. printf("ID: ");
  1007. scanf("%d", &num);
  1008. scanf("%*[^\n]"); scanf("%*c");
  1009. ptrVotos = pesquisa(votos, cmpIDVoto, &num);
  1010. if(ptrVotos) imprimeVoto(ptrVotos);
  1011. else printf("\Voto inexistente\n");
  1012. break;
  1013. }
  1014.  
  1015. }while(sub_opcao != '0');
  1016.  
  1017. break;
  1018.  
  1019. }
  1020.  
  1021. } while (sub_opcao != '0'); // DO PESQUISAR
  1022. break;
  1023.  
  1024. case '5':
  1025. do{
  1026. printf("\nMENU ALTERAR\n");
  1027. printf("\n1 - Alterar Categoria");
  1028. printf("\n2 - Alterar Candidato");
  1029. printf("\n3 - Alterar Votante");
  1030. printf("\n4 - Alterar Premio");
  1031. printf("\n5 - Alterar Voto");
  1032. printf("\n0 - Voltar\n");
  1033. printf("\nInsira a opcao: ");
  1034. sub_opcao = getchar();
  1035. scanf("%*[^\n]"); scanf("%*c");
  1036.  
  1037. switch(sub_opcao){
  1038. case '1':
  1039. do{
  1040. printf("\nPesquisar Categoria por ...\n");
  1041. printf("\n1 - ID");
  1042. printf("\n0 - Voltar\n");
  1043. printf("\nInsira a opcao: ");
  1044. sub_opcao = getchar();
  1045. scanf("%*[^\n]"); scanf("%*c");
  1046.  
  1047. switch(sub_opcao){
  1048. case '1':
  1049. printf("ID: ");
  1050. scanf("%d", &num);
  1051. scanf("%*[^\n]"); scanf("%*c");
  1052. ptrCategorias = pesquisa(categorias, cmpIDCategoria, &num);
  1053.  
  1054. if(ptrCategorias){
  1055. imprimeCategoria(ptrCategorias);
  1056. printf("\nAlterar ...");
  1057. printf("\n1 - Identificacao");
  1058. printf("\n2 - Designacao");
  1059. printf("\n3 - Numero de Candidatos Maximo");
  1060. printf("\n0 - Voltar\n");
  1061. printf("\nInsira a opcao: ");
  1062. sub_opcao = getchar();
  1063. scanf("%*[^\n]"); scanf("%*c");
  1064.  
  1065. switch(sub_opcao){
  1066. case '1':
  1067. printf("Nova Identificacao: ");
  1068. scanf("%s", identificacao);
  1069. scanf("%*[^\n]"); scanf("%*c");
  1070. strcpy(ptrCategorias->identificacao, identificacao);
  1071. break;
  1072.  
  1073. case '2':
  1074. printf("Nova Designacao: ");
  1075. scanf("%s", designacao);
  1076. scanf("%*[^\n]"); scanf("%*c");
  1077. strcpy(ptrCategorias->designacao, designacao);
  1078. break;
  1079.  
  1080. case '3':
  1081. printf("Novo Numero de Candidatos Maximo: ");
  1082. scanf("%d", &num);
  1083. scanf("%*[^\n]"); scanf("%*c");
  1084. ptrCategorias->nrCandidatosMax = num;
  1085. break;
  1086. }
  1087.  
  1088. }else{
  1089. printf("Categoria Inexistente");
  1090. }
  1091. }
  1092. }while(sub_opcao != '0');
  1093. break;
  1094.  
  1095. case '2':
  1096. do{
  1097. printf("\nPesquisar Candidato por ...\n");
  1098. printf("\n1 - ID");
  1099. printf("\n2 - Nome");
  1100. printf("\n0 - Voltar\n");
  1101. printf("\nInsira a opcao: ");
  1102. sub_opcao = getchar();
  1103. scanf("%*[^\n]"); scanf("%*c");
  1104.  
  1105. switch(sub_opcao){
  1106. case '1':
  1107. printf("ID: ");
  1108. scanf("%d", &num);
  1109. scanf("%*[^\n]"); scanf("%*c");
  1110. ptrCandidatos = pesquisa(candidatos, cmpIDCandidato, &num);
  1111.  
  1112. if(ptrCandidatos){
  1113. imprimeCandidato(ptrCandidatos);
  1114. printf("\nAlterar ... ");
  1115. printf("\n1 - Nome");
  1116. printf("\n0 - Voltar\n");
  1117. printf("\nInsira a opcao: ");
  1118. sub_opcao = getchar();
  1119. scanf("%*[^\n]"); scanf("%*c");
  1120.  
  1121. switch(sub_opcao){
  1122. case '1':
  1123. printf("Novo Nome: ");
  1124. scanf("%s", nome);
  1125. scanf("%*[^\n]"); scanf("%*c");
  1126. strcpy(ptrCandidatos->nome, nome);
  1127. break;
  1128. }
  1129.  
  1130. }
  1131. else{
  1132. printf("Candidato Inexistente");
  1133. }
  1134. break;
  1135.  
  1136. case '2':
  1137. printf("Nome: ");
  1138. fgets(nome, MAX, stdin);
  1139. nome[strlen(nome)-1] = '\0';
  1140. ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &nome);
  1141.  
  1142. if(ptrCandidatos){
  1143. imprimeCandidato(ptrCandidatos);
  1144. printf("\nAlterar ...");
  1145. printf("\n1 - Nome");
  1146. printf("\n0 - Voltar\n");
  1147. printf("\nInsira a opcao: ");
  1148. sub_opcao = getchar();
  1149. scanf("%*[^\n]"); scanf("%*c");
  1150.  
  1151. switch(sub_opcao){
  1152. case '1':
  1153. printf("Novo Nome: ");
  1154. scanf("%s", nome);
  1155. scanf("%*[^\n]"); scanf("%*c");
  1156. strcpy(ptrCandidatos->nome, nome);
  1157. break;
  1158. }
  1159. }
  1160. else{
  1161. printf("Candidato Inexistente");
  1162. }
  1163. break;
  1164. }
  1165. }while(sub_opcao != '0');
  1166.  
  1167. break;
  1168. case '3': // Alterar Votante
  1169. do{
  1170. printf("\nPesquisar Votante por ...\n");
  1171. printf("\n1 - ID");
  1172. printf("\n2 - Nome");
  1173. printf("\n0 - Voltar\n");
  1174. printf("\nInsira a opcao: ");
  1175. sub_opcao = getchar();
  1176. scanf("%*[^\n]"); scanf("%*c");
  1177.  
  1178. switch(sub_opcao){
  1179. case '1':
  1180. printf("ID: ");
  1181. scanf("%d", &num);
  1182. scanf("%*[^\n]"); scanf("%*c");
  1183. ptrVotantes = pesquisa(votantes, cmpIDVotante, &num);
  1184.  
  1185. if(ptrVotantes){
  1186. imprimeVotante(ptrVotantes);
  1187. printf("\nAlterar ...");
  1188. printf("\n1 - Nome");
  1189. printf("\n2 - Contacto");
  1190. printf("\n0 - Voltar\n");
  1191. printf("\nInsira a opcao: ");
  1192. sub_opcao = getchar();
  1193. scanf("%*[^\n]"); scanf("%*c");
  1194.  
  1195. switch(sub_opcao){
  1196. case '1':
  1197. printf("Novo Nome: ");
  1198. scanf("%s", nome);
  1199. scanf("%*[^\n]"); scanf("%*c");
  1200. strcpy(ptrVotantes->nome, nome);
  1201. break;
  1202.  
  1203. case '2':
  1204. printf("Novo Contacto: ");
  1205. scanf("%s", contacto);
  1206. scanf("%*[^\n]"); scanf("%*c");
  1207. strcpy(ptrVotantes->contacto, contacto);
  1208. break;
  1209. }
  1210.  
  1211. }else{
  1212. printf("Votante Inexistente");
  1213. }
  1214. break;
  1215.  
  1216. case '2':
  1217. printf("Nome: ");
  1218. fgets(nome, MAX, stdin);
  1219. nome[strlen(nome)-1] = '\0';
  1220. ptrVotantes = pesquisa(votantes, cmpNomeVotante, &nome);
  1221.  
  1222. if(ptrVotantes){
  1223. imprimeCandidato(ptrVotantes);
  1224. printf("\nAlterar ...");
  1225. printf("\n1 - Nome");
  1226. printf("\n2 - Contacto");
  1227. printf("\n0 - Voltar\n");
  1228. printf("\nInsira a opcao: ");
  1229. sub_opcao = getchar();
  1230. scanf("%*[^\n]"); scanf("%*c");
  1231.  
  1232. switch(sub_opcao){
  1233. case '1':
  1234. printf("Novo Nome: ");
  1235. scanf("%s", nome);
  1236. scanf("%*[^\n]"); scanf("%*c");
  1237. strcpy(ptrVotantes->nome, nome);
  1238. break;
  1239.  
  1240. case '2':
  1241. printf("Novo Contacto: ");
  1242. scanf("%s", contacto);
  1243. scanf("%*[^\n]"); scanf("%*c");
  1244. strcpy(ptrVotantes->contacto, contacto);
  1245. break;
  1246. }
  1247.  
  1248. }else{
  1249. printf("Votante Inexistente");
  1250. }
  1251. break;
  1252. }
  1253. }while(sub_opcao != '0');
  1254. break;
  1255.  
  1256. case '4': // Alterar premio
  1257. do{
  1258. printf("\nPesquisar Premio por ...\n");
  1259. printf("\n1 - ID");
  1260. printf("\n2 - Nome");
  1261. printf("\n0 - Voltar\n");
  1262. printf("\nInsira a opcao: ");
  1263. sub_opcao = getchar();
  1264. scanf("%*[^\n]"); scanf("%*c");
  1265.  
  1266. switch(sub_opcao){
  1267. case '1':
  1268. printf("ID: ");
  1269. scanf("%d", &num);
  1270. scanf("%*[^\n]"); scanf("%*c");
  1271. ptrPremios = pesquisa(premios, cmpIDPremio, &num);
  1272.  
  1273. if(ptrPremios){
  1274. imprimePremio(ptrPremios);
  1275. printf("\nAlterar ...");
  1276. printf("\n1 - Nome");
  1277. printf("\n2 - Tipo");
  1278. printf("\n3 - Patrocinador Principal");
  1279. printf("\n0 - Voltar\n");
  1280. printf("\nInsira a opcao: ");
  1281. sub_opcao = getchar();
  1282. scanf("%*[^\n]"); scanf("%*c");
  1283.  
  1284. switch(sub_opcao){
  1285. case '1':
  1286. printf("Novo Nome: ");
  1287. scanf("%s", nome);
  1288. scanf("%*[^\n]"); scanf("%*c");
  1289. strcpy(ptrPremios->nome, nome);
  1290. break;
  1291.  
  1292. case '2':
  1293. printf("Novo Tipo: ");
  1294. scanf("%s", nome);
  1295. scanf("%*[^\n]"); scanf("%*c");
  1296. strcpy(ptrPremios->tipo, nome);
  1297. break;
  1298.  
  1299. case '3':
  1300. printf("Novo Patrocinador Principal: ");
  1301. scanf("%s", nome);
  1302. scanf("%*[^\n]"); scanf("%*c");
  1303. strcpy(ptrPremios->patrocinadorPrincipal, nome);
  1304. break;
  1305. }
  1306.  
  1307. }else{
  1308. printf("Votante Inexistente");
  1309. }
  1310. break;
  1311.  
  1312. case '2':
  1313. printf("Nome: ");
  1314. fgets(nome, MAX, stdin);
  1315. nome[strlen(nome)-1] = '\0';
  1316. ptrPremios = pesquisa(premios, cmpNomePremio, &nome);
  1317.  
  1318. if(ptrVotantes){
  1319. imprimePremio(ptrPremios);
  1320. printf("\nAlterar ...");
  1321. printf("\n1 - Nome");
  1322. printf("\n2 - Contacto");
  1323. printf("\n3 - Patrocinador Principal");
  1324. printf("\n0 - Voltar\n");
  1325. printf("\nInsira a opcao: ");
  1326. sub_opcao = getchar();
  1327. scanf("%*[^\n]"); scanf("%*c");
  1328.  
  1329. switch(sub_opcao){
  1330. case '1':
  1331. printf("Novo Nome: ");
  1332. scanf("%s", nome);
  1333. scanf("%*[^\n]"); scanf("%*c");
  1334. strcpy(ptrPremios->nome, nome);
  1335. break;
  1336.  
  1337. case '2':
  1338. printf("Novo Tipo: ");
  1339. scanf("%s", nome);
  1340. scanf("%*[^\n]"); scanf("%*c");
  1341. strcpy(ptrPremios->tipo, nome);
  1342. break;
  1343.  
  1344. case '3':
  1345. printf("Novo Patrocinador Principal: ");
  1346. scanf("%s", nome);
  1347. scanf("%*[^\n]"); scanf("%*c");
  1348. strcpy(ptrPremios->patrocinadorPrincipal, nome);
  1349. break;
  1350. }
  1351.  
  1352. }else{
  1353. printf("Votante Inexistente");
  1354. }
  1355. break;
  1356. }
  1357.  
  1358. }while(sub_opcao != '0');
  1359. break;
  1360.  
  1361. case '5': // Alterar Voto
  1362. do{
  1363. printf("\nPesquisar Voto por ...\n");
  1364. printf("\n1 - ID");
  1365. printf("\n0 - Voltar\n");
  1366. printf("\nInsira a opcao: ");
  1367. sub_opcao = getchar();
  1368. scanf("%*[^\n]"); scanf("%*c");
  1369.  
  1370. switch(sub_opcao){
  1371. case '1':
  1372. printf("ID: ");
  1373. scanf("%d", &num);
  1374. scanf("%*[^\n]"); scanf("%*c");
  1375. ptrVotos = pesquisa(votos, cmpIDVoto, &num);
  1376.  
  1377. if(ptrVotos){
  1378. imprimeVoto(ptrVotos);
  1379. printf("Alterar ...");
  1380. printf("\n1 - Votante");
  1381. printf("\nInsira a opcao: ");
  1382. sub_opcao = getchar();
  1383. scanf("%*[^\n]"); scanf("%*c");
  1384.  
  1385. switch(sub_opcao){
  1386. case '1':
  1387. // --------------------- //
  1388. do{
  1389. printf("\nPesquisar Votante por ...\n");
  1390. printf("\n1 - ID");
  1391. printf("\n2 - Nome");
  1392. printf("\n0 - Voltar\n");
  1393. printf("\nInsira a opcao: ");
  1394. sub_opcao = getchar();
  1395. scanf("%*[^\n]"); scanf("%*c");
  1396.  
  1397. switch(sub_opcao){
  1398. case '1':
  1399. printf("ID: ");
  1400. scanf("%d", &num);
  1401. scanf("%*[^\n]"); scanf("%*c");
  1402. ptrVotantes = pesquisa(votantes, cmpIDVotante, &num);
  1403.  
  1404. if(ptrVotantes){
  1405. imprimeVotante(ptrVotantes);
  1406. printf("\nAlterar ...");
  1407. printf("\n1 - Nome");
  1408. printf("\n2 - Contacto");
  1409. printf("\n0 - Voltar\n");
  1410. printf("\nInsira a opcao: ");
  1411. sub_opcao = getchar();
  1412. scanf("%*[^\n]"); scanf("%*c");
  1413.  
  1414. switch(sub_opcao){
  1415. case '1':
  1416. printf("Novo Nome: ");
  1417. scanf("%s", nome);
  1418. scanf("%*[^\n]"); scanf("%*c");
  1419. strcpy(ptrVotantes->nome, nome);
  1420. break;
  1421.  
  1422. case '2':
  1423. printf("Novo Contacto: ");
  1424. scanf("%s", contacto);
  1425. scanf("%*[^\n]"); scanf("%*c");
  1426. strcpy(ptrVotantes->contacto, contacto);
  1427. break;
  1428. }
  1429.  
  1430. }else{
  1431. printf("Votante Inexistente");
  1432. }
  1433. break;
  1434.  
  1435. case '2':
  1436. printf("Nome: ");
  1437. fgets(nome, MAX, stdin);
  1438. nome[strlen(nome)-1] = '\0';
  1439. ptrVotantes = pesquisa(votantes, cmpNomeVotante, &nome);
  1440.  
  1441. if(ptrVotantes){
  1442. imprimeCandidato(ptrVotantes);
  1443. printf("\nAlterar ...");
  1444. printf("\n1 - Nome");
  1445. printf("\n2 - Contacto");
  1446. printf("\n0 - Voltar\n");
  1447. printf("\nInsira a opcao: ");
  1448. sub_opcao = getchar();
  1449. scanf("%*[^\n]"); scanf("%*c");
  1450.  
  1451. switch(sub_opcao){
  1452. case '1':
  1453. printf("Novo Nome: ");
  1454. scanf("%s", nome);
  1455. scanf("%*[^\n]"); scanf("%*c");
  1456. strcpy(ptrVotantes->nome, nome);
  1457. break;
  1458.  
  1459. case '2':
  1460. printf("Novo Contacto: ");
  1461. scanf("%s", contacto);
  1462. scanf("%*[^\n]"); scanf("%*c");
  1463. strcpy(ptrVotantes->contacto, contacto);
  1464. break;
  1465. }
  1466.  
  1467. }else{
  1468. printf("Votante Inexistente");
  1469. }
  1470. break;
  1471. }
  1472. }while(sub_opcao != '0');
  1473. // --------------------- //
  1474. break;
  1475. }
  1476. }else{
  1477. printf("Voto Inexistente");
  1478. }
  1479. }
  1480. } while(sub_opcao != '0');
  1481. }
  1482.  
  1483. }while(sub_opcao != '0'); // DO ALTERAR
  1484. break;
  1485.  
  1486. case '6': // Guardar informacao no ficheiro!
  1487. fpWriterCategorias = fopen("Categorias.txt", "w");
  1488. fpWriterCandidatos = fopen("Candidatos.txt", "w");
  1489. fpWriterVotantes = fopen("Votantes.txt", "w");
  1490. fpWriterPremios = fopen("Premios.txt", "w");
  1491. fpWriterVotos = fopen("Votos.txt", "w");
  1492.  
  1493. imprime(categorias, escreveCategoria);
  1494. imprime(candidatos, escreveCandidato);
  1495. imprime(votantes, escreveVotante);
  1496. imprime(premios, escrevePremio);
  1497. imprime(votos, escreveVoto);
  1498.  
  1499. fclose(fpWriterCategorias);
  1500. fclose(fpWriterCandidatos);
  1501. fclose(fpWriterVotantes);
  1502. fclose(fpWriterPremios);
  1503. fclose(fpWriterVotos);
  1504. break;
  1505.  
  1506. } // CASE PRINCIPAL
  1507.  
  1508. } while (opcao != '0'); // DO PRINCIPAL
  1509. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement