Todos devem estar familiarizados com pesquisas online. Uma pergunta e várias respostas são fornecidas para os usuários preencherem e, em seguida, os resultados são salvos no banco de dados, as estatísticas são realizadas automaticamente e, finalmente, um gráfico estatístico é fornecido. Nesta edição, siga-me e faça um sistema de pesquisa online.
1. Design funcional:
Um sistema tão simples precisa ser projetado funcionalmente? Algumas pessoas podem achar isso estranho, mas dito isso, não importa que tipo de sistema seja, se você fizer primeiro o design funcional, sempre poderá ter uma compreensão mais clara do sistema. Vamos dar uma olhada no que as pesquisas online podem fazer. A função básica já mencionada acima é dar uma pergunta e várias respostas, depois fazer estatísticas e finalmente dar um gráfico. Com base nisso, podemos considerar adicionar um período de tempo (período de validade) a uma pesquisa. Durante esse período, a pesquisa será válida. Após esse período, a pesquisa terminará automaticamente. Além disso, podemos especificar que um usuário só pode enviar respostas uma vez por vez. Se quiser ser mais restritivo, você pode especificar que um IP só pode enviar uma resposta uma vez. No entanto, isso só pode permitir que uma pessoa em um cibercafé envie. Para as perguntas da pesquisa, algumas podem ser perguntas de escolha única e outras podem ser perguntas de múltipla escolha. Por fim, vamos falar sobre o gráfico estatístico No gráfico estatístico devem ser mostradas as respostas, o número de eleitores para cada resposta e a proporção de votos para cada resposta. Geralmente basta usar um diagrama horizontal, que é mais fácil de implementar. Claro, se quiser mudar para um diagrama vertical, você também pode fazer.
Agora com base no acima exposto, as funções da pesquisa online são resumidas da seguinte forma:
1. Os dados são salvos na base de dados ACCESS 2000
2. Cada usuário pode votar uma vez por visita
3. As estatísticas de cada pesquisa são fornecidas e exibidas com; gráficos estatísticos
4. Cada Cada pesquisa tem uma data de validade e termina automaticamente após o vencimento. Somente os resultados das pesquisas concluídas podem ser visualizados.
5. Os administradores podem adicionar pesquisas e modificar as respostas das pesquisas (adicionar, modificar, excluir, modificar o tipo).
6. Para pesquisas encerradas, os administradores só podem excluir a pesquisa, mas não podem modificar as respostas.
7. Existe apenas um administrador (usuário único)
2. Design do banco de dados
Agora vamos projetar o banco de dados De acordo com os requisitos funcionais, deve haver pelo menos três tabelas, uma é a tabela do administrador, a segunda é a tabela de pesquisa e a segunda é a tabela de pesquisa. a terceira é a tabela de resultados da pesquisa. O nome do arquivo do banco de dados é survey.mdb e pode ser alterado para .asp. Nesse caso, faça as modificações correspondentes no programa ASP.
Tabela 1. Nome da tabela da tabela do administrador: gerenciar
-------------------------------------------------- ---------------
Descrição do comprimento do tipo de campo
-------------------------------------------------- ---------------
numeração automática manager_id - não usada aqui, será expandida no futuro
manage_username Texto 15 Nome de usuário do administrador
manage_password Texto 15 Senha do administrador
-------------------------------------------------- ---------------
Após criar a tabela de gerenciamento, adicione um novo registro e preencha seu nome de usuário e senha de administrador. Aqui você preenche a
tabela xmxoxo 2. Nome da tabela de pesquisa: pesquisa.
-------------------------------------------------- ---------------
Descrição do comprimento do tipo de campo
-------------------------------------------------- ---------------
numeração automática survey_id - incremental, chave primária, indexada, sem duplicação
pesquisa_question texto 255 pergunta da pesquisa
survey_type se - tipo, não: escolha única sim: escolha múltipla
data_stime da pesquisa - data longa, hora de início
data_etime da pesquisa - data longa, hora de término
-------------------------------------------------- ---------------
Tabela 3. Formulário final da pesquisa Nome da tabela: survey_vote
------------------------- ------ ----------------------------------------
Descrição do comprimento do tipo de campo
-------------------------------------------------- ---------------
vote_no numeração automática - crescente, chave primária, indexada e sem duplicação
vote_id inteiro longo - indexado e repetido, casa decimal 0
vote_answer Texto 100 respostas da pesquisa
vote_count long - número de votos
-------------------------------------------------- ---------------
Entre eles, a tabela survey_vote e o campo id da tabela de pesquisa têm um relacionamento muitos para um. Não é necessário estabelecer essa relação, mas estabelecer uma relação tornará as ideias mais claras.
3.Não há muitas funções usadas aqui para
incluir arquivos
. Elas são usadas principalmente para operar o banco de dados. Se você quiser evitar HTML e outros códigos ao inserir, basta usar server.htmlencode para processá-lo, então não há necessidade de um. função especialpara lidar. Podemos continuar a usar os arquivos incluídos no artigo anterior da série "Aprenda comigo" "Aprenda comigo a fazer um menu em árvore".
Arquivo de função compartilhada, nome do arquivo: inc.asp
<%
''************************************************ *******************
''Função ASP de banco de dados comum
''************************************************ *******************
''Constantes de banco de dados
databasename="survey.mdb" ''Nome do banco de dados, se você alterar o nome, basta modificá-lo aqui
''************************************************ *******************
''Abra o banco de dados
sub opendb(conectar)
definir connect=server.CreateObject("ADODB.connection")
connect.ConnectionString="DRIVER={Driver Microsoft Access (*.mdb)}; DBQ=" &_
server.MapPath(nome do banco de dados)
conectar.Abrir strconn
final sub
''************************************************ *******************
''Fechar banco de dados
sub fechadob (conectar)
conectar.fechar
definir conectar = nada
final sub
''************************************************ *******************
''Abra uma única mesa para leitura
sub opentable(conectar,nometb,myrs)
definir myrs=server.createobject("ADODB.recordset")
rssql = "selecione * de " & tbname
myrs.open rssql,conectar,1,1
final sub
''************************************************ *******************
''Fecha a tabela temporária
subarmário(rs)
rs.fechar
definir rs = nada
final sub
''************************************************ *******************
'' Consultar banco de dados
sub tabela de pesquisa (conectar, sql, rs)
definir rs=server.createobject("ADODB.recordset")
rs.open sql,conectar,1,1
final do sub
''********************************************* *********************
''Consulte e altere o banco de dados
sub alterável(conectar,sql,rs)
definir rs=server.createobject("ADODB.recordset")
rs.open sql,conectar,1,3
final do sub
''********************************************* *********************
''Exibir informações para depuração
Sub w (mensagem)
resposta.write mensagem
final do sub
''********************************************* *********************
''Interrupção do programa para depuração
subusuáriostop()
resposta.fim
final sub
%>
4. Design do documento
De acordo com o pensamento tradicional, sempre projetamos pesquisas on-line em três partes. A primeira é exibir o questionário; a segunda é exibir os resultados estatísticos da pesquisa; Em aplicações práticas, descobriremos que o questionário é frequentemente exibido em uma determinada página da web e os resultados geralmente são exibidos em uma janela pop-up. O gerenciamento de back-end é direcionado por meio de outro link ou formulário de login. Para utilizar a pesquisa online de forma mais conveniente, escrevemos a parte de exibição do questionário como um script JS, para que a página web que precisa exibir o questionário possa chamá-lo livremente referenciando o script. Ok, vamos dar uma olhada no design do arquivo
1. Inc.asp inclui o arquivo. Biblioteca de funções principal
2, surveycode.asp exibe o programa de questionário. Use um script na página principal da web para chamá-lo.
3. Programa de lista de questionários survey.asp. Lista o status de todas as investigações.
4. survey_vote.asp é um programa que exibe resultados estatísticos de pesquisas. Traga parâmetros para representar as questões sob investigação.
5. Programa de gerenciamento survey_manage.asp.
Aqui, pulamos o design da página, porque não estamos falando de design de estilo, portanto, em relação ao estilo, layout, CSS, etc. da página da web, crie você mesmo.
5. Fluxo de arquivo:
primeiro anote o fluxo principal do programa, o que pode facilitar a modificação, expansão e transplante no futuro. O que é mais importante aqui é quais sub-rotinas escrever no programa e como organizá-las.
1. surveycode.asp exibe o formulário de pesquisa
<%
''Obtenha o parâmetro querystring, id representa o número da pesquisa
''Determinar a exatidão dos parâmetros
''Determine se a investigação está dentro do período de validade.
''Leia a pergunta da pesquisa, digite
''Produza respostas da pesquisa e gere formulário de pesquisa
''Fechar banco de dados e tabelas
%>
2. survey.asp exibe todos os status da pesquisa
<%
''Leia o banco de dados
%>
<html>
''Mostrar todos os status da pesquisa e adicionar links
</html>
3. survey_vote.asp exibe resultados estatísticos.
Existem duas funções aqui, uma é exibir sem envio e a outra é realizar estatísticas após enviar a resposta e, em seguida, exibir o resultado. Se não houver parâmetros, é a primeira forma. Também pode ser feito em dois arquivos.
<%
'' Obtenha parâmetros. id representa o número da pesquisa. Todos os dados vêm do formulário.
''Determine se existem parâmetros, em caso afirmativo, execute as estatísticas primeiro
'' Caso contrário, será exibido diretamente.
''Sub-rotina estatística
%>
<html>
''Exibir sub-rotina
</html>
4. programa de gerenciamento survey_manage.asp.
A parte de gestão é mais complexa e precisa implementar mais funções. Vamos primeiro listar as funções de gerenciamento:
1) Login de administrador. O gerenciamento só pode ser feito após o login
. 2) Efetue logout. Saia com segurança quando terminar de gerenciar.
A gestão de pesquisas inclui:
3) Adicionar uma pesquisa. Adicione também respostas à pesquisa
. 4) Modifique uma pesquisa. Modificar conteúdo, hora, tipo, conteúdo das respostas da pesquisa, adicionar, excluir
5) Excluir uma pesquisa. Uma pesquisa em andamento não pode ser excluída.
Projete seu processo para essas funções
<%
'' Obtenha parâmetros. Ação representa ação, correspondendo às funções acima.
'' Redirecionar para a sub-rotina correspondente de acordo com a ação
''Sub-rotina de login
''Saia da sub-rotina de login
''Execute a sub-rotina de adição de perguntas da pesquisa
''Execute a sub-rotina de adição de respostas da pesquisa
''Execute a sub-rotina de pesquisa modificada para modificar as perguntas e respostas juntas
''Execute a sub-rotina de exclusão da pergunta da pesquisa
''Execute a sub-rotina de exclusão de resposta da pesquisa
<html>
<%
'' Determine se você está logado, caso contrário, exiba o formulário de login.
''Exibir o formulário correspondente com base na ação
''Mostrar todas as sub-rotinas de pesquisa
''Mostra uma única sub-rotina de pesquisa. Perguntas e respostas são exibidas juntas
''Mostra a sub-rotina de investigação adicionada.
''Mostrar formulário de login
%>
</html>
6. Escrita do código
Após a conclusão do design do processo, a escrita do código será mais organizada. Vamos começar de forma simples. Antes de escrever o código, precisamos inserir alguns registros no banco de dados para teste. Primeiro adicione uma pergunta da pesquisa, várias respostas da pesquisa e insira manualmente algumas informações estatísticas.
Vamos primeiro escrever surveycode.asp para exibir o formulário de pesquisa. Este arquivo precisa ser chamado em outras páginas, então o escrevemos de uma forma mista de JS e VBS. Ao chamar, você pode colocá-lo em um formulário e usar a seguinte instrução:
<SCRIPT Language="JavaScript" SRC="surveycode.asp?id=1"></SCRIPT>
Siga o processo acima, antes de exibir o formulário, primeiro determinar se a investigação existe e está em andamento. Além disso, um parâmetro oculto deve ser enviado no formulário para representar o número da pergunta (id) da pesquisa. Quando a resposta for enviada, o número da resposta vote_no
nome do arquivo surveycode.asp
<!--#include file="inc. asp" -->
<%
id=request.querystring("id")
if id<>"" então ''se houver parâmetros
opendb meu '' conectar ao banco de dados
sql="select * from survey where survey_id="& id ''instrução de consulta
searchtable my,sql,rs '' Consultar banco de dados
se não for rs.eof então ''Se houver esse registro de investigação
question=rs("survey_question") ''Leia a pergunta
surveytype=rs("survey_type") ''Lê o tipo de resposta
stime=rs("survey_stime") ''Lê a hora de início
etime=rs("survey_etime") ''Lê o horário de término
armário rs ''Fechar mesa
se stime<now() e etime>now() então ''se a investigação estiver em andamento
''Produza o formulário de pesquisa abaixo
''Primeiro imprima o formulário e as perguntas e, em seguida, envie o formulário para survey_vote.asp
%>
document.write("<form action=''survey_vote.asp'' target=''_blank'' method=''post''>");
document.write("<table border=''1'' cellpadding=''2'' cellpacing=0'' bordercolorligh=''#000000''");
document.write(" bordercolordark=''#ffffff'' width=''100%'' align=''center''><tbody>");
document.write("<tr><td colspan=''2'' align=''center''><b><%=server.htmlencode(question)%></b></td></tr >");
<%
sql="select vote_no,vote_answer from survey_vote where vote_id="&id ''SQL para consultar a resposta
searchtable my,sql,rs ''Executar consulta
se não for rs.eof então ''Se houver uma resposta, produza-a
para i=1 para rs.recordcount
%>
document.write("<tr><td align=''right''><input name=''res'' type=''");
<%
se surveytype então '' Julgue o tipo, exiba seleção única ou seleção múltipla
%>
document.write("caixa de seleção");
<%else%>
document.write("rádio");
<%end if ''A frase a seguir exibe o texto da resposta e o valor enviado (vote_no)%>
document.write("'' value=<%=rs("vote_no")%>></td><td><%=rs("vote_answer")%></td></tr>");
<%
rs.movnext
próximo
''As frases a seguir geram um parâmetro oculto e passam o número da pergunta (id)
'' e use uma função JS para definir o link após clicar para visualizar
%>
document.write("<tr><td colspan=''2'' align=''center''><input type=''hidden'' name=''id'' value=''<%=id% >''>");
document.write("<input type=''submit'' class=button value=''vote''> ");
document.write("<input type=button class=button value=''View'' onclick=''jump(<%=id%>)''>");
document.write("</td></tr></tbody></table></form>");
função salto(id){
window.open("survey_vote.asp?id="+id,"pesquisa")
}
<%
terminar se
terminar se
terminar se
armários
fechadob meu
terminar se
%>
Após a conclusão do surveycode.asp, determinamos os seguintes pontos na implementação:
1. Em survey_vote.asp, se o parâmetro id da querystring tiver um valor, o resultado é visualizado
2. Em survey_vote.asp, se o parâmetro do formulário; Se o id tiver um valor, as estatísticas devem ser realizadas primeiro;
3. Em survey_vote.asp, o parâmetro res do formulário enviado é o número de resposta vote_no
7. Resultados estatísticos
Primeiro, concluiremos a exibição dos resultados estatísticos survey_vote, que é o mais; intimamente relacionado aos arquivos surveycode.asp .asp. No final do artigo anterior, explicamos alguns parâmetros determinados em surveycode.asp.
Resultados estatísticos survey_vote.asp
<!--#include file="inc.asp" -->
<html>
<cabeça>
<title>Estatísticas da pesquisa</title>
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<corpo>
<%
''Na frase anterior, primeiro adicione o arquivo de inclusão e faça referência à função.
id=request.querystring("id") ''Obter id do parâmetro querystring
opendb meu '' conectar ao banco de dados
if id="" then ''Se não, você não está olhando o resultado diretamente.
id=request.form("id") ''Obter id do parâmetro do formulário
if id<>"" then ''Se houver um valor, ele deve ser contado primeiro
surveycount() ''Chama a sub-rotina estatística
terminar se
terminar se
se id<>"" então
disp_survey() ''Não importa qual seja, o resultado será exibido no final
terminar se
closedb meu ''Fechar banco de dados
''-----Sub-rotina estatística-----
contagem de subpesquisa()
if session("survey_ok")="" then ''Se você ainda não votou
no=request.form("res") ''Obter o número da resposta
se não<>"" então
''Defina instruções SQL para aumentar o número de respostas enviadas em 1
sql="atualizar pesquisa_vote definir vote_count=vote_count+1 onde vote_no= in ("& no &")"
meu.execute sql
terminar se
sessão("pesquisa_ok")="ok"
terminar se
final sub
''------------------
''---Exibir sub-rotina de resultado---
sub disp_survey()
''Defina instruções SQL para obter perguntas da pesquisa
sql="selecione pesquisa_pergunta da pesquisa onde pesquisa_id=" & id
searchtable my,sql,rs ''Executar consulta
question=rs("survey_question") ''Salve a pergunta em questão
armário rs ''Fechar mesa
''Defina a instrução SQL e obtenha o número total de respostas
sql="selecione sum(vote_count) como total de survey_vote onde vote_id="& id
tabela de pesquisa meu,sql,rs
total=rs("total")
closetable rs ''close table
'' define a instrução SQL e obtém todas as partes do texto da resposta e números de voto
sql="selecione vote_answer,vote_count de survey_vote onde vote_id=" & id
searchtable my,sql,rs ''Executar consulta
''O seguinte usa tabelas para gerar tabelas estatísticas
%>
<table width="500" border="1" align="center" cellpadding="2" cellpacing="0"
bordercolorligh="#000000" bordercolordark="#ffffff">
<tr>
<td colspan="4" align="center"><b>Estatísticas da pesquisa</b></td>
</tr>
<tr>
<td colspan="4"><b>Pergunta da pesquisa: <%=question%></b></td>
</tr>
<tr>
<td width="150" align="center" height="20">Resposta</td>
<td width="150" align="center" height="20">Participação eleitoral</td>
<td width="100" align="center" height="20">Proporção</td>
<td width="100" align="center" height="20">Número de votos</td>
</tr>
<%do enquanto não rs.eof
se total=0 então
percent=0 ''Se ninguém votar, a porcentagem é 0
outro
percent=int(rs("vote_count")/total*10000)/100 ''Calcular porcentagem
terminar se
%>
<tr>
<td width="150" align="center"><%=rs("vote_answer")%></td>
<td largura="150" alinhar="esquerda">
<table border="0" width="<%=percent%>" bgcolor="#CCCC00" height="10">
<tr>
<td></td>
</tr>
</tabela>
</td>
<td width="100" align="center"><%=percent%>%</td>
<td width="100" align="center"><%=rs("vote_count")%></td>
</tr>
<%
rs.movnext
laço
%>
<tr>
<td colspan="4"> Há <%=total%> votos em <%=now()%>
<a href="javascript:window.close()">Fechar janela</a>
</td>
</tr>
</tabela>
<%
armário rs ''Fechar mesa
final sub
''------------------
%>
</body>
</html>
No processo de exibição do voto, usamos a variável de sessão survey_ok para indicar se o voto foi emitido. Além disso, essas estatísticas de exibição referem-se a arquivos CSS para controlar o estilo da tabela. Você mesmo pode adicioná-las de acordo com seus próprios requisitos.
8. Liste o status de todas as pesquisas
Agora vamos completar o survey.asp. Sua principal tarefa é listar o status de todas as pesquisas, incluindo:
1. Perguntas da pesquisa, vinculadas à página do formulário de votação (escritas diretamente nesta página)
; A hora de início do inquérito;
3. A hora de fim do inquérito;
4.O
estado
do inquérito: não iniciado, em curso, terminado;
escolha ou múltipla escolha;
7. Forneça também um link para visualizar os resultados da votação
de acordo com esses requisitos, basta consultar a tabela correspondente. Algumas instruções, como obter o número total de votos, as instruções SQL foram escritas em survey_vote. asp acima.
Liste o status de todas as pesquisas survey.asp
<!--#include file="inc.asp" -->
<html>
<cabeça>
<title>Lista de pesquisas on-line</title>
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<corpo>
<%
id=request.querystring("id") ''Obter parâmetros
if id<>"" then ''Se houver parâmetros, exiba este formulário de pesquisa
resposta.write "<SCRIPT Language=''JavaScript'' SRC=''surveycode.asp?id="&id&"''></SCRIPT>"
else '' Caso contrário, chame a sub-rotina para exibir o status
disstat()
end if
''-----Exibir sub-rotina de status----
subdisstat()
opendb meu '' conectar ao banco de dados
opentable my,"survey",rs ''Abra a tabela diretamente
''O seguinte usa uma tabela para exibir cada registro
''Mostrar o cabeçalho primeiro
%>
<table width="760" border="1" cellpacing="0" cellpadding="2"
alinhar="centro" bordercolorligh="#000000" bordercolordark="#ffffff">
<tr>
<td colspan="8" align="center"><b>Lista de pesquisas on-line</b></td>
</tr>
<tr>
<td width="50" align="center" height="20">Número</td>
<td width="200" align="center" height="20">Perguntas da pesquisa</td>
<td width="50" align="center" height="20">Tipo</td>
<td width="140" align="center" height="20">Hora de início</td>
<td width="140" align="center" height="20">Hora de término</td>
<td width="50" align="center" height="20">Status</td>
<td width="80" align="center" height="20">Número de votos emitidos</td>
<td width="50" align="center" height="20">Visualizar</td>
</tr>
<%
''Produza cada registro abaixo
faça enquanto não rs.eof
''Leia cada campo primeiro
id=rs("id_da pesquisa")
pergunta=rs("pergunta_pesquisa")
''Tipo de leitura
se rs("tipo_pesquisa") então
stype="Seleção múltipla"
outro
stype="escolha única"
terminar se
stime=rs("tempo_pesquisa")
etime=rs("pesquisa_etime")
''Status de julgamento
se agora()<tempo então
stat = "não iniciado"
outro
se agora<ehora então
estado = "em andamento"
outro
status = "Terminado"
terminar se
end if
''Defina a instrução SQL e obtenha o número total de respostas
sql="selecione sum(vote_count) como total de survey_vote onde vote_id="& id
tabela de pesquisa my,sql,tmprs ''consulta
total=tmprs("total")
closeable tmprs ''Fechar tabela
'' Produza um registro abaixo
%>
<tr>
<td align="center" height="20"><%=id%></td>
<td altura="20">
<a href="survey.asp?id=<%=id%>"><%=question%></a>
</td>
<td align="center" height="20"><%=stype%></td>
<td align="center" height="20"><%=stime%></td>
<td align="center" height="20"><%=etime%></td>
<td align="center" height="20"><%=stat%></td>
<td align="center" height="20"><%=total%></td>
<td alinhar="centro" altura="20">
<a href="survey_vote.asp?id=<%=id%>" target="_blank">Visualizar</a>
</td>
</tr>
<%
rs.movenext ''Mover para o próximo item, loop
laço
%>
</tabela>
<%
armário rs ''Fechar mesa
closedb meu ''Fechar o banco de dados
final sub
''----------------------
%>
</body>
</html>
9. Gerenciamento de backend
Na página de gerenciamento de backend survey_manage.asp, já listamos as funções de gerenciamento que deseja alcançar. O processo de gerenciamento consiste em primeiro exibir todas as investigações que ainda não foram iniciadas, você pode modificá-las ou excluí-las para as investigações que já foram encerradas, você pode excluí-las, mas não pode modificá-las para as investigações em andamento; tempo. Use uma ação de parâmetro para representar a ação, o significado é o seguinte:
1. Sem parâmetros. Indica a primeira vez para entrar, exibir o formulário de login
2, login significa executar o login
3, logout significa executar o logout
4, showaddquestion significa exibir uma pesquisa adicional
5, showsurvey significa exibir uma pesquisa
6, doaddsurvey significa executar a adição de uma pesquisa
7, doaddanswer significa executar Adicionar uma resposta
8. dodelsurvey significa excluir uma pesquisa
9. dodelanswer significa excluir uma resposta
10. domodify significa modificar uma pesquisa e responder