Você está na página 1de 11

#include #include #include #include teres #include teres

<stdio.h> <stdlib.h> <windows.h> <string.h> <conio2.h>

//biblioteca de funes de entrada e sada //biblioteca de funes de sistema //biblioteca de funes de manipulaes de carac //biblioteca de funes de manipulaes de carac //definio do tamanho do vetor candidato //definio do tamanho do vetor wlwitores //definio do tamanho das strings

#define CAND 5 #define ELEI 5 #define CARACTERES 100 /* Estrutura para Candidatos */ typedef struct candidato{ int numero_candidato; int data_nascimento_candidato; char nome_candidato[CARACTERES]; char partido[CARACTERES]; char cidade_candidato[CARACTERES]; char estado_candidato[CARACTERES]; char cargo[CARACTERES]; };

//declarao //declarao //declarao //declarao //declarao //declarao //declarao

de de de de de de de

variveis variveis variveis variveis variveis variveis variveis

inteiras inteiras caracteres caracteres caracteres caracteres caracteres

candidato can[CAND]; //vetor de candidatos int cont = 0; //inicializando o contador int voto; /* Estrutura para Eleitores */ typedef struct eleitor{ int numero_eleitor; int data_nascimento_eleitor; char nome_eleitor[CARACTERES]; char cidade_eleitor[CARACTERES]; char estado_eleitor[CARACTERES]; }; eleitor ele[ELEI]; //vetor de eleitores int conte = 0; //inicializando o contador FILE *arq; //declaracao de uma varivel ponteiro para a estrutura FILE FILE *arq1; //declaracao de uma varivel ponteiro para a estrutura FILE /* Chamando as funes */ void criar(); void carregar(); void salvar(); char menu(); void cadastrar_candidato(); void cadastrar_eleitor(); int pesquisar_candidato(); int pesquisar_eleitor(); void listar_candidato(); void listar_eleitor(); void editar_candidato(); void editar_eleitor(); int excluir_candidato(); int excluir_eleitor(); int votacao();

int imprimir_resultado(); void submenuCadastrar(); void submenuPesquisar(); void submenuListar(); void submenuEditar(); void submenuExcluir(); void submenuVotacao(); /* Programa Principal */ int main(){ textbackground(BLUE); textcolor(YELLOW); criar(); //can[1].numero_candidato = 12345; //salvar(); /* arq = fopen("arq_candidatos.txt","wb+"); //Abre um arquivo texto abre arqui vo tanto para leitura quanto par gravao em modo binrio. if (arq == NULL){ //Caso o arquivo no exista ele se r criado. arq = fopen("arq_candidatos.txt","rb+"); //Abre um arquivo texto para gr avao. Se j existe, o contedo anterior ser destrudo. } fseek(arq,0,2); //fazer procuras e acessos aleatrios no arquivo; 0 - incio do arquivo; 2 - fim do arquivo; while(!feof(arq)){ fread(&can[cont],sizeof(can),1,arq); cont++; } arq1 = fopen("arq_eleitores.txt","rb+"); //Abre um arquivo texto abre arqui vo tanto para leitura quanto par gravao em modo binrio. if (arq1 == NULL){ //Caso o arquivo no exista ele s er criado. arq1 = fopen("arq_eleitores.txt","wb+"); //Abre um arquivo texto para gr avao. Se j existe, o contedo anterior ser destrudo. } fseek(arq1,0,2); //fazer procuras e acessos aleatrios no arquivo; 0 - incio do arquivo; 2 - fim do arquivo; while(!feof(arq1)){ fread(&ele[conte],sizeof(ele),1,arq1); conte++; }*/ carregar(); //printf("\n\n%d\n\n", can[1].numero_candidato); //getch(); char opcao; do{ opcao = menu(); switch(opcao){ case '1': submenuCadastrar(); break; case '2': submenuPesquisar(); break; case '3': submenuListar(); break; case '4': submenuEditar(); break; case '5': submenuExcluir(); break; case '6': submenuVotacao(); break; } }while(opcao != '0'); salvar();

rewind(arq); //salvar os dados no arquivo fclose(arq); //fechar o arquivo fseek(arq1,0,0); fclose(arq1); return 0; } /* Funo para criar arquivo */ void criar(){ arq = fopen("arq_candidatos.txt", "wb+"); fclose(arq); } /* Funo para carregar arquivo */ void carregar(){ arq = fopen("arq_candidatos.txt", "rb+"); fread(can, sizeof(candidato), 5, arq); } /* Funo para salvar em arquivo */ void salvar(){ arq = fopen("arq_candidatos.txt", "rb+"); fwrite(can, sizeof(candidato), 5, arq); } /* Funo Menu Principal */ char menu(){ char opcao = '1'; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU PRINCIPAL ************"); gotoxy(10, 5); printf("[ 1 ] Cadastrar"); gotoxy(10, 7); printf("[ 2 ] Pesquisar"); gotoxy(10, 9); printf("[ 3 ] Listar"); gotoxy(10, 11); printf("[ 4 ] Editar"); gotoxy(10, 13); printf("[ 5 ] Excluir"); gotoxy(10, 15); printf("[ 6 ] Iniciar Eleicao"); gotoxy(10, 17); printf("[ 0 ] Encerrar o Programa"); gotoxy(10, 19); printf("[ ? ] Digite a Opcao Desejada"); gotoxy(12, 19); opcao = getche(); return opcao; } /* Funo para cadastrar candidatos */ void cadastrar_candidato(candidato * can, int * cont, int cand){ int dia, mes, ano; clrscr(); printf("Urna Eletronica - Cadastramento Candidato\n\n"); do{ if(*cont < cand){ //printf("Digite o numero do candidato: "); //scanf("%d",&can[*cont].numero_candidato); can[*cont].numero_candidato = *cont;

printf("Digite o nome do candidato: "); fgets(can[*cont].nome_candidato,CARACTERES,stdin); printf("Digite o partido do candidato: "); fgets(can[*cont].partido,CARACTERES,stdin); printf("Digite o cargo que o candidato concorre: "); fgets(can[*cont].cargo,CARACTERES,stdin); printf("Digite a data de nascimento do candidato no formato DDMMAA: "); scanf("%d",&can[*cont].data_nascimento_candidato); printf("Digite a cidade do candidato: "); scanf("\n"); fgets(can[*cont].cidade_candidato,CARACTERES,stdin); printf("Digite o estado do candidato: "); fgets(can[*cont].estado_candidato,CARACTERES,stdin); fwrite(can,sizeof(candidato),50,arq); (*cont)++; }else{ printf("Limite maximo de cadastro atingido\n"); system("pause"); } }while(can[*cont].numero_candidato < 0); system("pause"); // system("notepad arq_candidatos.txt"); } /* Funo para cadastrar eleitores */ void cadastrar_eleitor(eleitor * ele, int * conte, int elei){ clrscr(); printf("Urna Eletronica - Cadastramento Eleitor\n\n"); do{ (*conte)++; if(*conte < elei){ //printf("Digite o numero do titulo de eleitor: "); //scanf("%d",&ele[*cont].numero_eleitor); ele[*conte].numero_eleitor = *conte; printf("Digite o nome do eleitor: "); scanf("\n"); fgets(ele[*conte].nome_eleitor,CARACTERES,stdin); printf("Digite a data de nascimento do eleitor no formato DDMMAA: ") ; scanf("%d",&ele[*conte].data_nascimento_eleitor); printf("Digite a cidade do eleitor: "); scanf("\n"); fgets(ele[*conte].cidade_eleitor,CARACTERES,stdin); printf("Digite o estado do eleitor: "); fgets(ele[*conte].estado_eleitor,CARACTERES,stdin); fwrite(&ele[*conte],sizeof(eleitor),1,arq1); (*conte)++; }else{ printf("Limite maximo de cadastro de eleitores atingidos!\n"); system("pause"); } }while(ele[*conte].numero_eleitor < 0); //fclose(arq); //Aps terminarmos todas as leituras e gravaes no arquivo deve mos fech-lo. system("pause"); // system("notepad arq_eleitores.txt"); }

/* Funo para pesquisar candidatos */ int pesquisar_candidato(candidato * can, int *cont, int cand){ int achou = -1, posicao = 0; char candidato; clrscr(); //arq = fopen("arq_candidatos.txt", "rb"); printf("Urna Eletronica - Editar Candidato\n\n"); printf("\nDigite o nome do candidato: "); scanf("%s \n",candidato); rewind(arq); /*while((!feof(arq))&&(achou==-1)){ fread(candidato, sizeof(candidato), 1, arq); if(!feof(arq)){ if(strcmp(candidato, can[*cont].nome_candidato)==0){ if(can[*cont].numero_candidato == '0'){ posicao=-2; } achou = 1; }else{ posicao++; } }else{ posicao = -1; } } if(achou == -1){ posicao = -1; } fclose(arq); return(posicao);*/ } /* Funo para pesquisar eleitores */ int pesquisar_eleitor(eleitor * ele, int *conte, int elei){ int i, pos; clrscr(); printf("Urna Eletronica - Cadastramento Eleitor\n\n"); if(*conte < elei){ for(i = 0; i < ele[*conte].numero_eleitor; i++){ /*pos = pesquisar_eleitor(eleitor * ele, int *conte, int elei); if(pos==-1){ printf("\nEleitor inexistente no arquivo!"); getch(); }else if(pos==-2){ printf("\nEleitor inexistente no arquivo!"); getch(); }else{ //carregar("rb+"); //fseek(arq1,pos*sizeof(eleitor)); //fread(&conte, sizeof(struct registro), 1, arq1); printf("\nNome do Eleitor :"); fgets(ele[*conte].nome_eleitor,CARACTERES,stdin); printf("\nNumero do Ttulo :"); printf("\nData de Nascimento:"); scanf("%d",&ele[*conte].data_nascimento_eleitor); printf("\nCidade :"); printf("\nEstado :"); getch();

}*/ } }else{ printf("Final da lista atingida!\n"); system("pause"); } } /* Funo para listar candidatos */ void listar_candidato(candidato * can, int cont, int cand){ int i,dia,mes,ano; clrscr(); printf("Urna Eletronica - Listar Candidatos\n\n"); for (i = 0; i < cont; i++){ printf("Numero de Registro : %02d\n",can[i].numero_candidato); printf("Nome do Candidato : %s",can[i].nome_candidato); printf("Partido do Candidato: %s\n",can[i].partido); printf("Cargo do Candidato : %s\n",can[i].cargo); //printf("Data de Nascimento : %d\n",can[i].data_nascimento_candidato); dia = can[i].data_nascimento_candidato/10000; mes = (can[i].data_nascimento_candidato%10000)/100; ano = (can[i].data_nascimento_candidato%10000)%100; printf("Data de Nascimento : %02d/%02d/%02d",dia,mes,ano); printf("Cidade do Candidato : %s\n",can[i].cidade_candidato); printf("Estado do Candidato : %s\n\n",can[i].estado_candidato); } system("pause"); } /* Funo para listar eleitores */ void listar_eleitor(eleitor * ele, int cont, int elei){ int i,dia,mes,ano; clrscr(); printf("Urna Eletronica - Listar Eleitor\n\n"); i = 0; while(fread(&ele,sizeof(ele),1,arq)){ printf("Numero do Titulo : %02d",i); printf("Nome do Eleitor : %s",ele[i].nome_eleitor); dia = ele[i].data_nascimento_eleitor/10000; mes = (ele[i].data_nascimento_eleitor%10000)/100; ano = (ele[i].data_nascimento_eleitor%10000)%100; printf("Data de Nascimento: %02d/%02d/%02d",dia,mes,ano); printf("Cidade do Eleitor : %s",ele[i].cidade_eleitor); printf("Estado do Eleitor : %s\n",ele[i].estado_eleitor); //fread(arq,"%d %s %02d/%02d/%02d %s %s",&ele[i].numero_eleitor,&ele[i]. nome_eleitor,dia,mes,ano,ele[i].cidade_eleitor,&ele[i].estado_eleitor); } system("pause"); fclose(arq); } /* Funo para editar candidatos */ void editar_candidato(candidato * can, int cont, int cand){ clrscr(); printf("Urna Eletronica - Editar Candidato\n\n"); if (cont < cand){

(cont)++; }else{ printf("Final da lista atingida\n"); system("pause"); } } /* Funo para editar eleitores */ void editar_eleitor(eleitor * ele, int conte, int elei){ int pos; clrscr(); printf("Urna Eletronica - Cadastramento Eleitor\n\n"); if(cont < elei){ //pos = pesquisar_eleitor(); if(pos==-1){ printf("\nEleitor inexistente no arquivo!"); getch(); }else if(pos==-2){ printf("\nEleitor inexistente no arquivo!!"); getch(); }else{ //arq = fopen("arq_eleitores.txt", "rb+");; //fseek(arq1,pos*sizeof(eleitor),SEEK_SET); //fread(&ele[conte].numero_eleitor, sizeof(eleitor), 1, arq1); printf("\nDeseja alterar o seguinte registro..."); printf("\nNome: %s",ele[conte].nome_eleitor); printf("\nNumero:%s",ele[conte].numero_eleitor); getch(); printf("\nDigite as informacoes corretas:"); printf("\nNumero:"); scanf("%d",&ele[conte].numero_eleitor); printf("\nNome:"); gets(ele[conte].nome_eleitor); printf("\nData Nascimento:"); scanf("%d",&ele[conte].data_nascimento_eleitor); printf("\nCidade:"); gets(ele[conte].cidade_eleitor); printf("\nEstado:"); gets(ele[conte].estado_eleitor); //reg.status='1'; //fseek(arq1,pos*sizeof(eleitor),SEEK_SET); if(fwrite(&ele[conte].numero_eleitor, sizeof(eleitor),1, arq1)!=1) { printf("\nErro na gravacao..."); }else{ printf("\nRegravacao feita com sucesso..."); getch(); } } }else{ printf("Final da lista atingida\n"); } fclose(arq1); } /* Funo para excluir candidatos */ int excluir_candidato(candidato *can, int cont, int cand){ int i,j,num,confirmar;

clrscr(); printf("Urna Eletronica - Excluir Candidato\n\n"); printf("\nDigite o numero do candidato cassado: "); scanf("%d",&num); for(i = 0; i < can[cont].numero_candidato; i++){ if(num == can[i].numero_candidato){ printf ("\nTem certeza que deseja excluir o candidato: "); printf ("%d ? 1 para sim, 0 para no.\n",num); scanf ("%d",&confirmar); if(confirmar){ printf ("\nCandidato excluido das eleies!\n"); for(j = i+1; j < can[i].numero_candidato; j++){ can[i] = can[i+1]; } (can[i].numero_candidato)--; }else{ //excluir_candidato(candidato,cont,cand); } } } return 0; system("pause"); } /* Funo para excluir eleitores */ void excluir_eleitor(eleitor * ele, int cont, int elei){ clrscr(); printf("Urna Eletronica - Cadastramento Eleitor\n\n"); if(cont < elei){ }else{ printf("Final da lista atingida\n"); system("pause"); } } /* Funo para iniciar votao */ int votacao(candidato *can, int cont, int cand, eleitor *ele, int elei){ int confirmar, voto, pos; clrscr(); printf("Urna Eletronica - Iniciar Votacao\n\n"); printf ("\nMENU DE VOTACAO: \n"); printf ("\n\n -1 PARA VOTAR EM BRANCO. \n"); printf ("\nNumero do seu candidato: "); scanf ("%d",&voto); //pos = pesquisar_candidato(can, int cont, int elei, int voto); if(voto == -1){ printf ("\nVoto em Branco\n"); return 1; } if(pos == -1){ printf ("\nVoto anulado\n"); return 1; } //listar_candidato(candidato[pos]); printf("\n\nConfirma ? 1 para Sim e 0 para Nao.\n\n"); scanf("%d",&confirmar); //Beep(1000,1500); //faz um som com uma frequenca de 1000 Hertz e com te

mpo d 1500 milisegundos de duraao. if(confirmar){ //candidato[pos].voto++; return 0; }else{ //votacao(candidato); } return voto; system("pause"); } /* Funo para imprimir resultado das eleies */ int imprimir_resultado(candidato *can, int cont, int cand, int voto){ int i; clrscr(); printf("\nUrna Eletronica - Resultado por Candidato\n"); printf ("\nRESULTADO DAS ELEICOES POR CANDIDATOS\n"); for(i = 0; i < can[cont].numero_candidato; i++){ // printf("\nNumero: %d Candidato: %s, Votacao: %d votos",*can[i].n umero_candidato,can[*cont].nome_candidato, voto); } printf ("\n"); } /* Funo submenu cadastrar */ void submenuCadastrar(){ char opcao; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU CADASTRAR ************"); gotoxy(10, 5); printf("[ 1 ] Cadastrar Candidato"); gotoxy(10, 7); printf("[ 2 ] Cadastrar Eleitor"); gotoxy(10, 9); printf("[ 3 ] Voltar ao Menu Principal"); gotoxy(10, 11); printf("[ ? ] Digite a Opcao Desejada"); do{ gotoxy(12, 11); opcao = getche(); if(opcao >= '1' && opcao <= '3'){ switch(opcao){ case '1': cadastrar_candidato(can, &cont, CAND); break; case '2': cadastrar_eleitor(ele, &cont, ELEI); break; } } }while(opcao < '1' opcao > '3'); } /* Funo submenu pesquisar */ void submenuPesquisar(){ char opcao; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU PESQUISAR ************"); gotoxy(10, 5); printf("[ 1 ] Pesquisar Candidato"); gotoxy(10, 7); printf("[ 2 ] Pesquisar Eleitor"); gotoxy(10, 9); printf("[ 3 ] Voltar ao Menu Principal"); gotoxy(10, 11); printf("[ ? ] Digite a Opcao Desejada");

do{ gotoxy(12, 11); opcao = getche(); if(opcao >= '1' && opcao <= '3'){ switch(opcao){ case '1': pesquisar_candidato(can, &cont, CAND); break; case '2': pesquisar_eleitor(ele, &cont, ELEI); break; } } }while(opcao < '1' opcao > '3'); } /* Funo submenu listar */ void submenuListar(){ char opcao; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU LISTAR ************"); gotoxy(10, 5); printf("[ 1 ] Listar Candidato"); gotoxy(10, 7); printf("[ 2 ] Listar Eleitor"); gotoxy(10, 9); printf("[ 3 ] Voltar ao Menu Principal"); gotoxy(10, 11); printf("[ ? ] Digite a Opcao Desejada"); do{ gotoxy(12, 11); opcao = getche(); if(opcao >= '1' && opcao <= '3'){ switch(opcao){ case '1': listar_candidato(can, cont, CAND); break; case '2': listar_eleitor(ele, cont, ELEI); break; } } }while(opcao < '1' opcao > '3'); } /* Funo submenu editar */ void submenuEditar(){ char opcao; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU EDITAR ************"); gotoxy(10, 5); printf("[ 1 ] Editar Candidato"); gotoxy(10, 7); printf("[ 2 ] Editar Eleitor"); gotoxy(10, 9); printf("[ 3 ] Voltar ao Menu Principal"); gotoxy(10, 11); printf("[ ? ] Digite a Opcao Desejada"); do{ gotoxy(12, 11); opcao = getche(); if(opcao >= '1' && opcao <= '3'){ switch(opcao){ case '1': editar_candidato(can, cont, CAND); break; case '2': editar_eleitor(ele, cont, ELEI); break; } } }while(opcao < '1' opcao > '3'); } /* Funo submenu excluir */

void submenuExcluir(){ char opcao; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU EXCLUIR ************"); gotoxy(10, 5); printf("[ 1 ] Excluir Candidato"); gotoxy(10, 7); printf("[ 2 ] Excluir Eleitor"); gotoxy(10, 9); printf("[ 3 ] Voltar ao Menu Principal"); gotoxy(10, 11); printf("[ ? ] Digite a Opcao Desejada"); do{ gotoxy(12, 11); opcao = getche(); if(opcao >= '1' && opcao <= '3'){ switch(opcao){ case '1': excluir_candidato(can, cont, CAND); break; case '2': excluir_eleitor(ele, cont, ELEI); break; } } }while(opcao < '1' opcao > '3'); } /* Funo submenu votao */ void submenuVotacao(){ char opcao; clrscr(); gotoxy(10, 1); printf("******* ELEICOES MUNICIPAIS 2012 ********"); gotoxy(10, 2); printf("** ELEICOES PARA PREFEITO E VEREADORES **"); gotoxy(10, 3); printf("************* MENU ELEICOES ************"); gotoxy(10, 5); printf("[ 1 ] Iniciar Votacao"); gotoxy(10, 7); printf("[ 2 ] Imprimir Resultado"); gotoxy(10, 9); printf("[ 3 ] Voltar ao Menu Principal"); gotoxy(10, 11); printf("[ ? ] Digite a Opcao Desejada"); do{ gotoxy(12, 11); opcao = getche(); if(opcao >= '1' && opcao < '3'){ switch(opcao){ case '1': votacao(can, cont, CAND, ele, ELEI); break; case '2': imprimir_resultado(can, cont, CAND, voto); } } }while(opcao < '1' opcao > '3'); }