Controle - Enquete JSP

Bom Dia !

Galera preciso de uma super ajuda "orientação", de como fazer com que o mesmo usuario não vote.
Abaixo segue meu codigo da enquete.

Ja pesquisei ja tentei, mas o detalhe é que eu não estou conseguindo fazer.

o usuario que acabou de voltar, não poderá votar novamente.

HTML

html&gt
<head>

<title>pesquisa </title>
</head>

<body bgcolor="#000000" text="#FFFFFF">
<h1>Pesquisa</h1>
<form name=“form_pesquisa” action=“enquete2.jsp” method=“POST”>
Informe seu nome:
<input name=“eNome” size=“20”>

<h4> Qual a aula que voce mais detesta na faculdade:</h4>
<select name=“aulas”>
<option value=“0”>WEB</option>
<option value=“1”>ALGORITMOS</option>
<option value=“2”>JAVA</option>
<option value=“3”>ESTATISTICA</option>
<option value=“4”>ADMINISTRAÇÃO</option>

</select>

<center><input type=“submit” value=“Enviar resposta”></center>
</form>

</body>
</html>

JSP

<%@page contentType=“text/html” import=“java.io.*”%>
<html>
<head>
<title>jsp page</title>
</head>
<body bgcolor="#000000" text="#FFFFFF" vlink="#003399">
<%
int opc[]=new int[5];
String nomOpc[]={“WEB”,“ALGORITMOS”,“JAVA”,“ESTATISTICA”,“ADMINISTRAÇÃO”};
String nomCor[]={“marrom”,“azul”,“purpura”,“ouro”,“verde”};
int total=1;
String nomArq=“resultado.txt”;
//le o arquivo
File arq= new File(nomArq);
if(arq.exists()){
BufferedReader br= new BufferedReader(new FileReader(nomArq));
String lin;
int i=0;
while((lin=br.readLine())!=null){
opc[i]=Integer.parseInt(lin);
total+= opc[i];
i++;
}
br.close();
}else{//arq vazio
for(int i=0;i<opc.length;i++)
opc[i]=0;
}
int indice=Integer.parseInt(request.getParameter(“aulas”));
opc[indice]+=1;
//monta o grafico
for (int i = 0; i < opc.length; i++) {
out.println("<img src=‘image\" + nomCor[i] + ".gif’ width = " + ((100 * opc[i])/total) + “heigth=10>”
// “<img src = ‘’ width=” + (100 - (100 * opc[i] / total )) + " heigth=10>");
);
out.println(nomOpc[i] + " - " + opc[i] + " Votos. <br>");
}
//regrava o arquivo
PrintWriter saida= new PrintWriter(new FileWriter(nomArq));
for(int i=0;i<opc.length;i++)
saida.println(opc[i]);
saida.close();

%>
clique aqui para voltar
a pagina principal.
</body>
</html>

se vc nao tem controle d login e senha entao a unica maneira eh fazer o controle atraves do ip!

Tenho uma senha e login, mas ela é padrão.

Tipo

login felix
senha felix

E como assim controle de ip ?

Isso e somente um trabalho , e isso e um controle local.

Olha as alterações que eu fiz tentando fazer o que eu quero.

Mas ainda estou tendo problemas.

%@page contentType=“text/html” import=“java.io.*”%>

jsp page <%

int opc[]=new int[5];
String nomOpc[]={“WEB”,“ALGORITMOS”,“JAVA”,“ESTATISTICA”,“ADMINISTRAÇÃO”};
String nomCor[]={“marrom”,“azul”,“purpura”,“ouro”,“verde”};
int total=1;
String nomArq=“C:\temp\resultado.txt”;
//le o arquivo
File arq= new File(nomArq);
if(arq.exists()){
BufferedReader br= new BufferedReader(new FileReader(nomArq));
String lin;
int i=0;
while((lin=br.readLine())!=null){
opc[i]=Integer.parseInt(lin);
total+= opc[i];
i++;
}
br.close();
}else{//arq vazio
for(int i=0;i<opc.length;i++)
opc[i]=0;
}

int jaVotou=0;
String aluno = request.getParameter(“eNome”);
//Cria arquivo voto.txt e verifica se existe ou seja se já votou
String nomArq1=“C:\temp\quemVotou.txt”;
File arq1= new File(nomArq1);
if(arq1.exists()){

BufferedReader br1= new BufferedReader(new FileReader(nomArq1));
String lin1;
int i1=0;

while((lin1=br1.readLine())!=null){
    out.println("Linha:" + lin1);
    out.println("Aluno:" + aluno);
    if (aluno.equalsIgnoreCase(lin1)){
        jaVotou=1;
        out.println("Entrou no if");
    }
    i1++;
}
br1.close();

}else{//arq vazio

jaVotou=0;

}
out.println(“Já votou ?” + jaVotou);
out.println(“Já votou teste?” + (jaVotou==1));
if (jaVotou == 1){
%>


Você já votou

<%} else { %>


Você não votou
<%}

//regrava o arquivo de votação
PrintWriter saida= new PrintWriter(new FileWriter(nomArq));
for(int i=0;i<opc.length;i++)
saida.println(opc[i]);
saida.close();

//Grava arquivo de voto
PrintWriter saida1= new PrintWriter(new FileWriter(nomArq1));
saida1.println(aluno);
saida1.close();

int indice=Integer.parseInt(request.getParameter(“aulas”));
if (jaVotou==0) opc[indice]+=1;

//monta o grafico
for (int i = 0; i < opc.length; i++) {
out.println("<img src=‘image\" + nomCor[i] + ".gif’ width = " + ((100 * opc[i])/total) + “heigth=10>”
// “”);
);
out.println(nomOpc[i] + " - " + opc[i] + " Votos.
");
}

%>

clique aqui   para voltar
a pagina principal.

Alguém conseguiu me entender ?

Eu faria assim:

Criaria uma tabela no banco, com o titulo da enquete e um id.
Outra pra gravar as perguntas da tua enquete, todas com chaveadas com o id da enquete criada.

Depois, tu pode criar uma tabela armazenando ids dos teus usuários que votaram em determinada enquete.
Quando teu usuário for votar, antes de computar o voto, consulta as tabelas do teu banco, procurando pelo id do usuário e o id da dita enquete, pra ver se já não votou… :wink:

Simples… e deve ter uma maneira mais simples de fazer ainda, não tive tempo de pensar.

Mas a idéia é essa, entendeu?

[quote=zirocool]Eu faria assim:

Criaria uma tabela no banco, com o titulo da enquete e um id.
Outra pra gravar as perguntas da tua enquete, todas com chaveadas com o id da enquete criada.

Depois, tu pode criar uma tabela armazenando ids dos teus usuários que votaram em determinada enquete.
Quando teu usuário for votar, antes de computar o voto, consulta as tabelas do teu banco, procurando pelo id do usuário e o id da dita enquete, pra ver se já não votou… :wink:

Simples… e deve ter uma maneira mais simples de fazer ainda, não tive tempo de pensar.

Mas a idéia é essa, entendeu?[/quote]

Pior que isso e muito complexo, para meu nivel de entendimento java, não pode dar um exemplo atraves de codigo ?