Primeiro você tem que avaliar as variáveis:
Perfil do respondente, questionário, perguntas, possíveis respostas
Crie as tabelas:
respondente (id, nome, sexo, idade, cidade, estado, estado civil, escolaridade… //e outras variáveis que interessem nas estatísticas)
questionario (id, descricao, data inicio, data fim, nro_questoes)
questoes (id,sequencia, questionario_id, pergunta)
alternativas (id, sequencia, questoes_id, descricao resposta)
respostas (id, respondente_id, questoes_id, alternativas_id, data_hora)
questionario_respondente(respondente_id,questionario_id, data_hora_inicio, data_hor_final) <-- só é gerado quando o respondente responder todas a questões.
Segundo: Crie os formulários para o registro das respostas.
app_controle_1 (Registra os dados do respondente e chama a proxima app)
app_controle_2 (Mostra um texto com orientações ao questionário e a ação do botão chama a próxima app)
app_controle_3 (Verifica se tem alguma resposta já efetuada, se não exibe a pergunta e um radio com as alternativas e chama a app_controle_3 com o último id respondndido) ao tiver esse parâmetro carrega a próxima questão, e assim por diante ate a última, quando for a última após a ação do botão chama a app_consulta_1)
app_consulta_1 ( mostra todas as questões com suas repostas, se alguma não foi respondida, realçar com um link para ir nessa questão e responde-la, outro parâmetro deve ser passado para app_controle_3 para não avançar nas questões e retornar a consulta.
app_controle_4 (finalização)
Terceiro: deixe para pensar nos relatórios e gráficos por último.
Nunca fiz sistema para isso, mas acredito que seja algo parecido com o que sugeri.