Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 60
- /* No de ligacao */
- struct no {
- struct no * prox;
- struct no * ant;
- void * dados;
- };
- typedef struct no NO;
- typedef NO * PNO;
- typedef NO ** PPNO;
- /* DATA */
- struct data {
- int dia;
- int mes;
- int ano;
- };
- typedef struct data DATA;
- // ------------------------------------------------------------------
- // GLOBAIS //
- int idCategorias = 0;
- int idCandidatos = 0;
- int idVotantes = 0;
- int idPremios = 0;
- int idVotos = 0;
- FILE *fpWriterCategorias;
- FILE *fpWriterCandidatos;
- FILE *fpWriterVotantes;
- FILE *fpWriterPremios;
- FILE *fpWriterVotos;
- // ------- //
- /* CATEGORIAS */
- struct categoria {
- int ID;
- char identificacao[MAX];
- char designacao[MAX];
- int nrCandidatosMax; // QUANDO OS CANDIDATOS ATUAIS > CANDIDATOS MAXIMOS ---> Impossivel criar mais candidatos // Feito
- int nrCandidatosAtual; // FALTA AQUI INCREMENTAR O NUMERO DE CANDIDATOS ATUAL // Feito
- };
- typedef struct categoria CATEGORIA;
- typedef CATEGORIA * PCATEGORIA;
- /* CANDIDATOS */
- struct candidato {
- int ID;
- char nome[MAX];
- char identficacaoCategoria[MAX];
- int nrVotos; // Counter para o numero de votos para cada candidato
- };
- typedef struct candidato CANDIDATO;
- typedef CANDIDATO * PCANDIDATO;
- /* VOTANTES */
- struct votante {
- int ID;
- char nome[MAX];
- char contacto[MAX]
- };
- typedef struct votante VOTANTE;
- typedef VOTANTE * PVOTANTE;
- /* PREMIO */
- struct premio {
- int ID;
- char nome[MAX];
- char tipo[MAX];
- char patrocinadorPrincipal[MAX];
- char identificacaoCategoria[MAX];
- };
- typedef struct premio PREMIO;
- typedef PREMIO * PPREMIO;
- /* VOTOS */
- struct voto {
- int ID;
- char identificacaoVotante[MAX];
- char identificacaoCategoria[MAX];
- char identificacaoCandidato[MAX];
- DATA data;
- };
- typedef struct voto VOTO;
- typedef VOTO * PVOTO;
- // -------------------------------------------------------------------- //
- // GENERICAS //
- void inserir(PPNO cabeca, void * dados){
- PNO novo;
- novo = (PNO)malloc(sizeof(NO));
- if(*cabeca) (*cabeca)->ant = novo;
- novo->prox = *cabeca;
- novo->ant = NULL;
- *cabeca = novo;
- novo->dados = dados;
- }
- void imprime(PNO cabeca, void (*imprimeDados)()){
- PNO ptr;
- for(ptr = cabeca; ptr; ptr=ptr->prox){
- (*imprimeDados)(ptr->dados);
- }
- }
- int remover(PPNO cabeca, int (*compara)(), void* valor) {
- PNO ptr;
- for(ptr=*cabeca; ptr; ptr=ptr->prox)
- if((*compara)(ptr->dados, valor)){
- if(ptr->ant) ptr->ant->prox = ptr->prox;
- else *cabeca = ptr->prox;
- if(ptr->prox) ptr->prox->ant = ptr->ant;
- free(ptr->dados);
- free(ptr);
- return 1;
- }
- return 0;
- }
- void* pesquisa(PNO cabeca, int (*compara)(), void* valor) {
- PNO ptr;
- for(ptr=cabeca; ptr; ptr=ptr->prox)
- if((*compara)(ptr->dados, valor))
- return ptr->dados;
- return NULL;
- }
- // ------ //
- // ESCREVE //
- void escreveCategoria(PCATEGORIA p){
- fprintf(fpWriterCategorias,"%d %s %s %d %d\n",p->ID, p->identificacao, p->designacao, p->nrCandidatosMax, p->nrCandidatosAtual);
- }
- void escreveCandidato(PCANDIDATO p){
- fprintf(fpWriterCandidatos, "%d %s %s %d\n", p->ID, p->nome, p->identficacaoCategoria, p->nrVotos);
- }
- void escreveVotante(PVOTANTE p){
- fprintf(fpWriterVotantes, "%d %s %s\n", p->ID, p->nome, p->contacto);
- }
- void escrevePremio(PPREMIO p){
- fprintf(fpWriterPremios, "%d %s %s %s %s\n", p->ID, p->nome, p->tipo, p->identificacaoCategoria, p->patrocinadorPrincipal);
- }
- void escreveVoto(PVOTO p){
- 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);
- }
- // -------- //
- // IMPRIME //
- void imprimeCategoria(PCATEGORIA p){
- 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);
- }
- void imprimeCandidato(PCANDIDATO p){
- printf("ID: %d | Nome: %s | Categoria: %s | Votos: %d\n", p->ID, p->nome, p->identficacaoCategoria, p->nrVotos);
- }
- void imprimeVotante(PVOTANTE p){
- printf("ID: %d | Nome: %s | Contacto: %s\n", p->ID, p->nome, p->contacto);
- }
- void imprimePremio(PPREMIO p){
- printf("ID: %d | Nome: %s | Tipo: %s | Categoria: %s | Patrocinador Principal: %s\n", p->ID, p->nome, p->tipo, p->identificacaoCategoria, p->patrocinadorPrincipal);
- }
- void imprimeVoto(PVOTO p){
- 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);
- }
- // -------- //
- // COMPARAR //
- int cmpIdentfCategoria(PCATEGORIA a, char* identificacao) {
- return strcmp(a->identificacao, identificacao) == 0;
- }
- int cmpIDCategoria(PCATEGORIA a, int* num){
- return a->ID == *num;
- }
- int cmpNomeCandidato(PCANDIDATO a, char* nome){
- return strcmp(a->nome, nome) == 0;
- }
- int cmpIDCandidato(PCANDIDATO a, int* num){
- return a->ID == *num;
- }
- int cmpNomeVotante(PVOTANTE a, char* nome){
- return strcmp(a->nome, nome) == 0;
- }
- int cmpContactoVotante(PVOTANTE a, char* contacto){
- return strcmp(a->contacto, contacto) == 0;
- }
- int cmpIDVotante(PVOTANTE a, int* num){
- return a->ID == *num;
- }
- int cmpNomePremio(PPREMIO a, char* nome){
- return strcmp(a->nome, nome) == 0;
- }
- int cmpIDPremio(PPREMIO a, int* num){
- return a->ID == *num;
- }
- int cmpIDVoto(PVOTO a , int* num){
- return a->ID == *num;
- }
- // -------- //
- // ------ //
- PCATEGORIA criaCategoria(){
- PCATEGORIA novo;
- novo = (PCATEGORIA)malloc(sizeof(CATEGORIA));
- printf("Identificacao: ");
- scanf("%s", &novo->identificacao);
- // Apaga o resto da linha
- scanf("%*[^\n]"); scanf("%*c");
- printf("Desigancao: ");
- fflush (stdout);
- fgets(novo->designacao, MAX, stdin);
- // Elimina '\n' no fim da string
- novo->designacao[strlen(novo->designacao)-1] = '\0';
- printf("Numero de Candidatos Maximo: ");
- scanf("%d", &novo->nrCandidatosMax);
- scanf("%*[^\n]"); scanf("%*c");
- novo->nrCandidatosAtual = 0;
- novo->ID = idCategorias;
- idCategorias++;
- return novo;
- }
- PCANDIDATO criaCandidato(PNO categorias){
- PCANDIDATO novo;
- char identificacao[MAX];
- PCATEGORIA ptrCategorias;
- novo = (PCANDIDATO)malloc(sizeof(CANDIDATO));
- printf("Categoria: ");
- fgets(identificacao, MAX, stdin);
- identificacao[strlen(identificacao)-1] = '\0';
- ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &identificacao);
- if(ptrCategorias){
- if(ptrCategorias->nrCandidatosAtual < ptrCategorias->nrCandidatosMax){
- strcpy(&novo->identficacaoCategoria, identificacao);
- printf("Nome: ");
- scanf("%s", &novo->nome); // ERRO!!! ESTA A CRIAR UM CANDIDATO QUANDO NAO EXISTE NENHUMA CATEGORIA COM A IDENTIFICACAO ESCRITA
- scanf("%*[^\n]"); scanf("%*c");
- novo->nrVotos = 0;
- ptrCategorias->nrCandidatosAtual++;
- novo->ID = idCandidatos;
- idCandidatos++;
- }
- else{
- printf("\nNao e possivel criar mais candidatos, pois foi atingido o numero maximo de candidatos para esta categoria!\n");
- }
- }
- else{
- printf("\nCategoria inexiste, por favor escolha uma categoria válida!\n");
- }
- return novo;
- }
- PVOTANTE criaVotante(){
- PVOTANTE novo;
- novo = (PVOTANTE)malloc(sizeof(VOTANTE));
- printf("Nome: ");
- scanf("%s", &novo->nome);
- scanf("%*[^\n]"); scanf("%*c");
- printf("Contacto: ");
- fflush(stdout);
- fgets(novo->contacto, MAX, stdin);
- novo->contacto[strlen(novo->contacto)-1] = '\0';
- novo->ID = idVotantes;
- idVotantes++;
- return novo;
- }
- PPREMIO criaPremio(PNO categorias){
- PPREMIO novo;
- char identificacao[MAX];
- PCATEGORIA ptrCategorias;
- novo = (PPREMIO)malloc(sizeof(PREMIO));
- printf("Categoria: ");
- fgets(identificacao, MAX, stdin);
- identificacao[strlen(identificacao)-1] = '\0';
- ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &identificacao);
- if(ptrCategorias){
- strcpy(&novo->identificacaoCategoria, identificacao);
- printf("Nome: ");
- scanf("%s", &novo->nome);
- scanf("%*[^\n]"); scanf("%*c");
- printf("Tipo: ");
- scanf("%s", &novo->tipo);
- scanf("%*[^\n]"); scanf("%*c");
- printf("Patrocinador Principal: ");
- fflush(stdout);
- fgets(novo->patrocinadorPrincipal, MAX, stdin);
- novo->patrocinadorPrincipal[strlen(novo->patrocinadorPrincipal)-1] = '\0';
- novo->ID = idPremios;
- idPremios++;
- }
- else{
- printf("\nCategoria inexistente\n");
- }
- return novo;
- }
- PVOTO criaVoto(PNO votantes, PNO categorias, PNO candidatos){
- PVOTO novo;
- novo = (PVOTO)malloc(sizeof(VOTO));
- PVOTANTE ptrVotantes;
- char votante[MAX];
- PCATEGORIA ptrCategorias;
- char categoria[MAX];
- PCANDIDATO ptrCandidatos;
- char candidato[MAX];
- printf("Nome do Votante: ");
- scanf("%s", votante);
- scanf("%*[^\n]"); scanf("%*c");
- ptrVotantes = pesquisa(votantes, cmpNomeVotante, &votante);
- if(ptrVotantes){
- printf("Nome da Categoria: ");
- scanf("%s", categoria);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &categoria);
- if(ptrCategorias){
- printf("Nome do Candidato: ");
- scanf("%s", candidato);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &candidato);
- if(ptrCandidatos != NULL){
- if(strcmp(ptrCandidatos->identficacaoCategoria, ptrCategorias->identificacao) == 0){
- printf("Data:(DD-MM-AA) ");
- scanf("%d-%d-%d", &novo->data.dia, &novo->data.mes, &novo->data.ano);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(&novo->identificacaoVotante, votante);
- strcpy(&novo->identificacaoCategoria, categoria);
- strcpy(&novo->identificacaoCandidato, candidato);
- novo->ID = idVotos;
- idVotos++;
- ptrCandidatos->nrVotos++;
- }
- else{
- printf("\nNao existe nenhum candidato com esse nome ou nenhum candidato esta associado a essa categoria!\n");
- }
- }else{
- printf("Nao existe nenhum candidato com esse nome!\n");
- }
- }else{
- printf("\nNao existe nenhuma categoria com esse nome!\n");
- }
- }
- else{
- printf("\nNao existe nenhum votante com esse nome!\n");
- }
- return novo;
- }
- // ------ //
- int main(){
- PNO categorias = NULL;
- PCATEGORIA ptrCategorias;
- PNO candidatos = NULL;
- PCANDIDATO ptrCandidatos;
- PNO votantes = NULL;
- PVOTANTE ptrVotantes;
- PNO premios = NULL;
- PPREMIO ptrPremios;
- PNO votos = NULL;
- PVOTO ptrVotos;
- FILE *fpReaderCategorias;
- FILE *fpReaderCandidatos;
- FILE *fpReaderVotantes;
- FILE *fpReaderPremios;
- FILE *fpReaderVotos;
- fpReaderCategorias = fopen("Categorias.txt", "r");
- fpReaderCandidatos = fopen("Candidatos.txt", "r");
- fpReaderVotantes = fopen("Votantes.txt", "r");
- fpReaderPremios = fopen("Premios.txt", "r");
- fpReaderVotos = fopen("Votos.txt", "r");
- if(fpReaderCategorias != NULL){
- int id, nrCandMax, nrCandAtu;
- char identficacao[MAX], designacao[MAX];
- while(!feof(fpReaderCategorias))
- {
- fscanf(fpReaderCategorias, "%d %s %s %d %d\n", &id, identficacao, designacao, &nrCandMax, &nrCandAtu);
- PCATEGORIA novo;
- novo = (PCATEGORIA)malloc(sizeof(CATEGORIA));
- novo->ID = id;
- strcpy(novo->identificacao, identficacao);
- strcpy(novo->designacao, designacao);
- novo->nrCandidatosMax = nrCandMax;
- novo->nrCandidatosAtual = nrCandAtu;
- inserir(&categorias, novo);
- }
- fclose(fpReaderCategorias);
- }
- else{
- printf("Erro ao tentar abrir o ficheiro Categorias.txt!\n\n");
- }
- printf("Ficheiro Categorias.txt lido Corretamente!\n");
- if(fpReaderCandidatos != NULL){
- int id, nrVotos;
- char identificacao[MAX], nome[MAX];
- while(!feof(fpReaderCandidatos))
- {
- fscanf(fpReaderCandidatos, "%d %s %s %d \n", &id, identificacao, nome, &nrVotos);
- PCANDIDATO novo;
- novo = (PCANDIDATO)malloc(sizeof(CANDIDATO));
- novo->ID = id;
- strcpy(novo->identficacaoCategoria, identificacao);
- strcpy(novo->nome, nome);
- novo->nrVotos = nrVotos;
- inserir(&candidatos, novo);
- }
- fclose(fpReaderCandidatos);
- }
- else{
- printf("Erro ao tentar abrir o ficheiro Candidatos.txt!\n\n");
- }
- printf("Ficheiro Candidatos.txt lido Corretamente!\n");
- if(fpReaderVotantes != NULL){
- int id;
- char nome[MAX], contacto[MAX];
- while(!feof(fpReaderVotantes))
- {
- fscanf(fpReaderVotantes, "%d %s %s\n", &id, nome, contacto);
- PVOTANTE novo;
- novo = (PVOTANTE)malloc(sizeof(VOTANTE));
- novo->ID = id;
- strcpy(novo->nome, nome);
- strcpy(novo->contacto, contacto);
- inserir(&votantes, novo);
- }
- fclose(fpReaderVotantes);
- }
- else{
- printf("Erro ao tentar abrir o ficheiro Votantes.txt!\n\n");
- }
- printf("Ficheiro Votantes.txt lido Corretamente!\n");
- if(fpReaderPremios != NULL){
- int id;
- char nome[MAX], tipo[MAX], patroPrinc[MAX], identificacaoCategoria[MAX];
- while(!feof(fpReaderPremios))
- {
- fscanf(fpReaderPremios, "%d %s %s %s %s\n", &id, nome, tipo, identificacaoCategoria, patroPrinc);
- PPREMIO novo;
- novo = (PPREMIO)malloc(sizeof(PREMIO));
- novo->ID = id;
- strcpy(novo->nome, nome);
- strcpy(novo->tipo, tipo);
- strcpy(novo->identificacaoCategoria, identificacaoCategoria);
- strcpy(novo->patrocinadorPrincipal, patroPrinc);
- inserir(&premios, novo);
- }
- fclose(fpReaderPremios);
- }
- else{
- printf("Erro ao tentar abrir o ficheiro Premios.txt!\n\n");
- }
- printf("Ficheiro Premios.txt lido Corretamente!\n");
- if(fpReaderVotos != NULL){
- int id;
- char identificacaoVotante[MAX], identificacaoCategoria[MAX], identificacaoCandidato[MAX];
- DATA data;
- while(!feof(fpReaderVotos))
- {
- fscanf(fpReaderVotos, "%d %s %s %s %d-%d-%d\n", &id, identificacaoVotante, identificacaoCategoria, identificacaoCandidato, &data.dia, &data.mes, &data.ano);
- PVOTO novo;
- novo = (PVOTO)malloc(sizeof(VOTO));
- novo->ID = id;
- strcpy(novo->identificacaoVotante, identificacaoVotante);
- strcpy(novo->identificacaoCategoria, identificacaoCategoria);
- strcpy(novo->identificacaoCandidato, identificacaoCandidato);
- novo->data.dia = data.dia;
- novo->data.mes = data.mes;
- novo->data.ano = data.ano;
- inserir(&votos, novo);
- }
- fclose(fpReaderVotos);
- }
- else{
- printf("Erro ao tentar abrir o ficheiro Votos.txt!\n\n");
- }
- printf("Ficheiro Votos.txt lido Corretamente!\n");
- int opcao;
- int sub_opcao;
- int num, n;
- char nome[MAX];
- char contacto[MAX];
- char identificacao[MAX];
- char designacao[MAX];
- do{
- printf("\nMENU PRINCIPAL\n");
- printf("\n1 - Inserir");
- printf("\n2 - Listar");
- printf("\n3 - Apagar");
- printf("\n4 - Pesquisar");
- printf("\n5 - Alterar");
- printf("\n6 - Guardar Informacao");
- printf("\n0 - Sair\n");
- printf("\nInsira a opcao: ");
- opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(opcao) {
- case '1':
- do{
- printf("\nMENU INSERIR\n");
- printf("\n1 - Inserir Categoria");
- printf("\n2 - Inserir Candidato");
- printf("\n3 - Inserir Votante");
- printf("\n4 - Inserir Premio");
- printf("\n5 - Inserir Voto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- ptrCategorias = criaCategoria();
- inserir(&categorias, ptrCategorias);
- break;
- case '2':
- ptrCandidatos = criaCandidato(categorias);
- inserir(&candidatos, ptrCandidatos);
- break;
- case '3':
- ptrVotantes = criaVotante();
- inserir(&votantes, ptrVotantes);
- break;
- case '4':
- ptrPremios = criaPremio(categorias);
- inserir(&premios, ptrPremios);
- break;
- case '5':
- ptrVotos = criaVoto(votantes, categorias, candidatos);
- inserir(&votos, ptrVotos);
- break;
- }
- } while(sub_opcao != '0'); //DO INSERIR
- break;
- case '2':
- do{
- printf("\nMENU LISTAR\n");
- printf("\n1 - Listar Categoria");
- printf("\n2 - Listar Candidato");
- printf("\n3 - Listar Votante");
- printf("\n4 - Listar Premio");
- printf("\n5 - Listar Voto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- imprime(categorias, imprimeCategoria);
- break;
- case '2':
- imprime(candidatos, imprimeCandidato);
- break;
- case '3':
- imprime(votantes, imprimeVotante);
- break;
- case '4':
- imprime(premios, imprimePremio);
- break;
- case '5':
- imprime(votos, imprimeVoto);
- }
- }while(sub_opcao != '0'); //DO IMPRIME
- break;
- case '3':
- do{
- printf("\nMENU APAGAR\n");
- printf("\n1 - Apagar Categoria");
- printf("\n2 - Apagar Candidato");
- printf("\n3 - Apagar Votante");
- printf("\n4 - Apagar Premio");
- printf("\n5 - Apagar Voto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- do{
- printf("\nApagar Categoria por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Identificacao");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- n = remover(&categorias, cmpIDCategoria, &num);
- if(n) printf("\nCategoria removida\n");
- else printf("\nCategoria inexistente\n");
- break;
- case '2':
- printf("Identificacao: ");
- fgets(identificacao, MAX, stdin);
- identificacao[strlen(identificacao)-1] = '\0';
- n = remover(&categorias, cmpIdentfCategoria, identificacao);
- if(n) printf("\nCategoria removida\n");
- else printf("\nCategoria inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '2':
- do{
- printf("\nApagar Candidato por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- n = remover(&candidatos, cmpIDCandidato, &num);
- if(n) printf("\Candidato removido\n");
- else printf("\Candidato inexistente\n");
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- n = remover(&candidatos, cmpNomeCandidato, nome);
- if(n) printf("\Candidato removido\n");
- else printf("\Candidato inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '3':
- do{
- printf("\nApagar Votante por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- n = remover(&votantes, cmpIDVotante, &num);
- if(n) printf("\Votante removida\n");
- else printf("\Votante inexistente\n");
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- n = remover(&votantes, cmpNomeVotante, nome);
- if(n) printf("\Votante removido\n");
- else printf("\Votante inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '4':
- do{
- printf("\nApagar Premio por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- n = remover(&premios, cmpIDPremio, &num);
- if(n) printf("\Premio removida\n");
- else printf("\Premio inexistente\n");
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- n = remover(&premios, cmpNomePremio, nome);
- if(n) printf("\Premio removido\n");
- else printf("\Premio inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '5':
- do{
- printf("\nApagar Voto por ...\n");
- printf("\n1 - ID");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- n = remover(&votos,cmpIDVoto , &num);
- if(n){
- /*ptrVotos = pesquisa(votos, cmpIDVoto, &num); // TAMOS AQUI A TENTAR REMOVER VOTO (ERRO)
- ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &ptrVotos->identificacaoCandidato);
- ptrCandidatos->nrVotos--;
- printf("\Voto removido\n");*/
- }else{
- printf("\Voto inexistente\n");
- }
- break;
- }
- }while(sub_opcao != '0');
- break;
- }
- }while(sub_opcao != '0'); //DO APAGAR
- break;
- case '4':
- do{
- printf("\nMENU PESQUISAR\n");
- printf("\n1 - Pesquisar Categoria");
- printf("\n2 - Pesquisar Candidato");
- printf("\n3 - Pesquisar Votante");
- printf("\n4 - Pesquisar Premio");
- printf("\n5 - Pesquisar Voto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- do{
- printf("\nPesquisar Categoria por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Identificacao");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCategorias = pesquisa(categorias, cmpIDCategoria, &num);
- if(ptrCategorias) imprimeCategoria(ptrCategorias);
- else printf("\nCategoria inexistente\n");
- break;
- case '2':
- printf("Identificacao: ");
- fgets(identificacao, MAX, stdin);
- identificacao[strlen(identificacao)-1] = '\0';
- ptrCategorias = pesquisa(categorias, cmpIdentfCategoria, &identificacao);
- if(ptrCategorias) imprimeCategoria(ptrCategorias);
- else printf("\nCategoria inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '2':
- do{
- printf("\nPesquisar Candidatos por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCandidatos = pesquisa(candidatos, cmpIDCandidato, &num);
- if(ptrCandidatos) imprimeCandidato(ptrCandidatos);
- else printf("\Candidato inexistente\n");
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &nome);
- if(ptrCandidatos) imprimeCandidato(ptrCandidatos);
- else printf("\Candidato inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '3':
- do{
- printf("\nPesquisar Votantes por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrVotantes = pesquisa(votantes, cmpIDVotante, &num);
- if(ptrVotantes) imprimeVotante(ptrVotantes);
- else printf("\Votante inexistente\n");
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrVotantes = pesquisa(votantes, cmpNomeVotante, &nome);
- if(ptrVotantes) imprimeVotante(ptrVotantes);
- else printf("\Votante inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '4':
- do{
- printf("\nPesquisar Premios por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrPremios = pesquisa(premios, cmpIDPremio, &num);
- if(ptrPremios) imprimePremio(ptrPremios);
- else printf("\Premio inexistente\n");
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrPremios = pesquisa(premios, cmpNomePremio, &nome);
- if(ptrPremios) imprimePremio(ptrPremios);
- else printf("\Premio inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '5':
- do{
- printf("\nPesquisar Voto por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrVotos = pesquisa(votos, cmpIDVoto, &num);
- if(ptrVotos) imprimeVoto(ptrVotos);
- else printf("\Voto inexistente\n");
- break;
- }
- }while(sub_opcao != '0');
- break;
- }
- } while (sub_opcao != '0'); // DO PESQUISAR
- break;
- case '5':
- do{
- printf("\nMENU ALTERAR\n");
- printf("\n1 - Alterar Categoria");
- printf("\n2 - Alterar Candidato");
- printf("\n3 - Alterar Votante");
- printf("\n4 - Alterar Premio");
- printf("\n5 - Alterar Voto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- do{
- printf("\nPesquisar Categoria por ...\n");
- printf("\n1 - ID");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCategorias = pesquisa(categorias, cmpIDCategoria, &num);
- if(ptrCategorias){
- imprimeCategoria(ptrCategorias);
- printf("\nAlterar ...");
- printf("\n1 - Identificacao");
- printf("\n2 - Designacao");
- printf("\n3 - Numero de Candidatos Maximo");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Nova Identificacao: ");
- scanf("%s", identificacao);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrCategorias->identificacao, identificacao);
- break;
- case '2':
- printf("Nova Designacao: ");
- scanf("%s", designacao);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrCategorias->designacao, designacao);
- break;
- case '3':
- printf("Novo Numero de Candidatos Maximo: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCategorias->nrCandidatosMax = num;
- break;
- }
- }else{
- printf("Categoria Inexistente");
- }
- }
- }while(sub_opcao != '0');
- break;
- case '2':
- do{
- printf("\nPesquisar Candidato por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrCandidatos = pesquisa(candidatos, cmpIDCandidato, &num);
- if(ptrCandidatos){
- imprimeCandidato(ptrCandidatos);
- printf("\nAlterar ... ");
- printf("\n1 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrCandidatos->nome, nome);
- break;
- }
- }
- else{
- printf("Candidato Inexistente");
- }
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrCandidatos = pesquisa(candidatos, cmpNomeCandidato, &nome);
- if(ptrCandidatos){
- imprimeCandidato(ptrCandidatos);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrCandidatos->nome, nome);
- break;
- }
- }
- else{
- printf("Candidato Inexistente");
- }
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '3': // Alterar Votante
- do{
- printf("\nPesquisar Votante por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrVotantes = pesquisa(votantes, cmpIDVotante, &num);
- if(ptrVotantes){
- imprimeVotante(ptrVotantes);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n2 - Contacto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->nome, nome);
- break;
- case '2':
- printf("Novo Contacto: ");
- scanf("%s", contacto);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->contacto, contacto);
- break;
- }
- }else{
- printf("Votante Inexistente");
- }
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrVotantes = pesquisa(votantes, cmpNomeVotante, &nome);
- if(ptrVotantes){
- imprimeCandidato(ptrVotantes);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n2 - Contacto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->nome, nome);
- break;
- case '2':
- printf("Novo Contacto: ");
- scanf("%s", contacto);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->contacto, contacto);
- break;
- }
- }else{
- printf("Votante Inexistente");
- }
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '4': // Alterar premio
- do{
- printf("\nPesquisar Premio por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrPremios = pesquisa(premios, cmpIDPremio, &num);
- if(ptrPremios){
- imprimePremio(ptrPremios);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n2 - Tipo");
- printf("\n3 - Patrocinador Principal");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrPremios->nome, nome);
- break;
- case '2':
- printf("Novo Tipo: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrPremios->tipo, nome);
- break;
- case '3':
- printf("Novo Patrocinador Principal: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrPremios->patrocinadorPrincipal, nome);
- break;
- }
- }else{
- printf("Votante Inexistente");
- }
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrPremios = pesquisa(premios, cmpNomePremio, &nome);
- if(ptrVotantes){
- imprimePremio(ptrPremios);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n2 - Contacto");
- printf("\n3 - Patrocinador Principal");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrPremios->nome, nome);
- break;
- case '2':
- printf("Novo Tipo: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrPremios->tipo, nome);
- break;
- case '3':
- printf("Novo Patrocinador Principal: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrPremios->patrocinadorPrincipal, nome);
- break;
- }
- }else{
- printf("Votante Inexistente");
- }
- break;
- }
- }while(sub_opcao != '0');
- break;
- case '5': // Alterar Voto
- do{
- printf("\nPesquisar Voto por ...\n");
- printf("\n1 - ID");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrVotos = pesquisa(votos, cmpIDVoto, &num);
- if(ptrVotos){
- imprimeVoto(ptrVotos);
- printf("Alterar ...");
- printf("\n1 - Votante");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- // --------------------- //
- do{
- printf("\nPesquisar Votante por ...\n");
- printf("\n1 - ID");
- printf("\n2 - Nome");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("ID: ");
- scanf("%d", &num);
- scanf("%*[^\n]"); scanf("%*c");
- ptrVotantes = pesquisa(votantes, cmpIDVotante, &num);
- if(ptrVotantes){
- imprimeVotante(ptrVotantes);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n2 - Contacto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->nome, nome);
- break;
- case '2':
- printf("Novo Contacto: ");
- scanf("%s", contacto);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->contacto, contacto);
- break;
- }
- }else{
- printf("Votante Inexistente");
- }
- break;
- case '2':
- printf("Nome: ");
- fgets(nome, MAX, stdin);
- nome[strlen(nome)-1] = '\0';
- ptrVotantes = pesquisa(votantes, cmpNomeVotante, &nome);
- if(ptrVotantes){
- imprimeCandidato(ptrVotantes);
- printf("\nAlterar ...");
- printf("\n1 - Nome");
- printf("\n2 - Contacto");
- printf("\n0 - Voltar\n");
- printf("\nInsira a opcao: ");
- sub_opcao = getchar();
- scanf("%*[^\n]"); scanf("%*c");
- switch(sub_opcao){
- case '1':
- printf("Novo Nome: ");
- scanf("%s", nome);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->nome, nome);
- break;
- case '2':
- printf("Novo Contacto: ");
- scanf("%s", contacto);
- scanf("%*[^\n]"); scanf("%*c");
- strcpy(ptrVotantes->contacto, contacto);
- break;
- }
- }else{
- printf("Votante Inexistente");
- }
- break;
- }
- }while(sub_opcao != '0');
- // --------------------- //
- break;
- }
- }else{
- printf("Voto Inexistente");
- }
- }
- } while(sub_opcao != '0');
- }
- }while(sub_opcao != '0'); // DO ALTERAR
- break;
- case '6': // Guardar informacao no ficheiro!
- fpWriterCategorias = fopen("Categorias.txt", "w");
- fpWriterCandidatos = fopen("Candidatos.txt", "w");
- fpWriterVotantes = fopen("Votantes.txt", "w");
- fpWriterPremios = fopen("Premios.txt", "w");
- fpWriterVotos = fopen("Votos.txt", "w");
- imprime(categorias, escreveCategoria);
- imprime(candidatos, escreveCandidato);
- imprime(votantes, escreveVotante);
- imprime(premios, escrevePremio);
- imprime(votos, escreveVoto);
- fclose(fpWriterCategorias);
- fclose(fpWriterCandidatos);
- fclose(fpWriterVotantes);
- fclose(fpWriterPremios);
- fclose(fpWriterVotos);
- break;
- } // CASE PRINCIPAL
- } while (opcao != '0'); // DO PRINCIPAL
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement