之前做过企业内部用的调查问卷系统,因为每一年的调查内容都有差异,所以每次都要重新修改代码,所以想到了能否用程序做一个自动问卷生成系统.
大体的思路如下:
1>一套基于web的后台问卷生成系统,通过web页面录入具体的调查问卷(问题,答案,单选还是多选,还是文字回答等等),生成的问卷以json的方式ajax提交给后台系统,后台可以利用spring rest的方式接收request,然后将json串存入mango db
2>调查参与者根据收到的url,访问调查问卷系统(后台返回json串,前端负责显示具体的调查页面),参与具体的调查,并提交调查结果,同样也是通过json串向后台发起rest请求,然后后台将json串存入mango db
相关技术:
jquery,javascript,css,html
spring boot, spring restful, spring mvc
mango db
试验性代码如下
1>后台调查问卷生成
survey.html
<html> <head> <title>Create Survey</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="application/javascript" src="js/jquery-3.1.1.min.js"></script> <script type="application/javascript" src="js/survey.js"></script> <link rel="stylesheet" href="css/survey.css" /> </head> <body> <form> <div class="titlebox">Give a title to your survey</div> <div> <textarea name="title" id="title" placeholder="Survey Title" rows="3" cols="40"></textarea> </div> <div> <textarea name="question" id="question" placeholder="Question 1" rows="3" cols="40"></textarea> </div> <div> <div> <input type="text" name="answer" id="answer" placeholder="Answer 1" size="50" /> </div> <div class="autoadd"> <input type="text" name="answer" id="answer" placeholder="Answer 2" size="50" /> </div> </div> </form> <input type="button" id="addquestion" name="addquestion" value="Add Question" /> <input type="button" id="submit" name="submit" value="Create Survey" /> </body> </html>
survey.js
$.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }; function addanswer(){ if(typeof($(this).next().html()) != "undefined") { return; } var answerNo = $(this).parent().find("input").length + 1; var answer = "<div class=\"autoadd\"><input type=\"text\" name=\"answer\" \ id=\"answer\" placeholder=\"Answer " + answerNo + "\" size=\"50\" /></div>"; $(this).after(answer); alert(answer); setautoadd(); } function createsurvey(){ alert($("#title").val()); $("form").each(function(){ $(this).find("#title").val($("#title").val()); var jsonuserinfo = $(this).serializeObject(); alert(jsonuserinfo); alert(JSON.stringify(jsonuserinfo)); doAjax(JSON.stringify(jsonuserinfo)); }); } function setautoadd() { $(".autoadd").bind("paste keypress", addanswer); } function setevent() { $("#submit").click(createsurvey); $("#addquestion").click(function(){ var qNo = $("form").length + 1; alert("qNo:" + qNo); var quan = "<form> \ <div style=\"display:none\"> \ <textarea name=\"title\" id=\"title\" placeholder=\"Survey Title\" rows=\"3\" cols=\"40\"></textarea> \ </div> \ <div> \ <textarea name=\"question\" id=\"question\" placeholder=\"Question " + qNo + "\" rows=\"3\" cols=\"40\"></textarea> \ </div> \ <div> \ <div> \ <input type=\"text\" name=\"answer\" id=\"answer\" placeholder=\"Answer 1\" size=\"50\" /> \ </div> \ <div class=\"autoadd\"> \ <input type=\"text\" name=\"answer\" id=\"answer\" placeholder=\"Answer 2\" size=\"50\" /> \ </div> \ </div> \ </form>"; alert(quan); $("form").last().after(quan); setautoadd(); }); } $(document).ready(function(){ setautoadd(); setevent(); }); function success(data, textStatus, jqXHR){ alert("success" + data); } function doAjax(data){ var url = 'http://localhost:8080/greeting'; alert("data:" + data); $.ajax({ type: 'post', url: url, contentType:'application/json;charset=UTF-8', data: data, success: success, dataType: 'text' }); }
survey.css
body { margin : 50px; background-color : #CDBA96; } div { margin : 5px; } .titlebox { font-weight:bold; }
2>前台调查页面生成
surveysheet.html
<html> <head> <title>Survey Sheet</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="application/javascript" src="js/jquery-3.1.1.min.js"></script> <script type="application/javascript" src="js/surveysheet.js"></script> <link rel="stylesheet" href="css/surveysheet.css" /> </head> <body> <form> <div id="sheet"> </div> </form> <input type="button" id="submit" name="submit" value="Submit Survey" /> </body>
surveysheet.js
function submitsurvey() { } $(document).ready(function(){ $("#submit").click(submitsurvey); alert("ready"); var jsonStr = '[{\ "title" : "survey",\ "question_no" : "1",\ "question" : "which fruit do you like?",\ "answer" : ["apple","orange","banana"],\ "answer_type" : "single"\ },\ {\ "title" : "survey",\ "question_no" : "2",\ "question" : "which color do you like?",\ "answer" : ["yellow","red","green"],\ "answer_type" : "free"\ }]'; alert(jsonStr); var jsonObj = $.parseJSON(jsonStr); //alert(jsonObj); var sheetStr = ''; $.each(jsonObj, function(i,value){ if(i == 0){ sheetStr += "<div>" + value.title + "</div>"; } sheetStr += "<div>" + value.question_no + ". " + value.question + "</div>" $.each(value.answer, function(k,v){ if(value.answer_type == "single"){ sheetStr += "<div><input type=\"radio\" name=\"answer\" value=\"" + k + "\">" + v + "</input></div>"; } else { sheetStr += "<div><input type=\"checkbox\" name=\"answer\" value=\"" + k + "\">" + v + "</input></div>"; } }); }); alert(sheetStr); $("#sheet").html(sheetStr); });
App.java
package prd.survey; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Hello world! * */ @SpringBootApplication public class App { public static void main( String[] args ) { SpringApplication.run(App.class, args); } }
SurveyController.java
package prd.survey; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class SurveyController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping(value="/greeting", method = RequestMethod.POST,consumes = "application/json") public Greeting greeting(@RequestBody String body) { System.out.println("body:" + body); return new Greeting(counter.incrementAndGet(), String.format(template, "John")); } }
Greeting.java
package prd.survey; public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } public String getContent() { return content; } }
页面效果如下:
相关推荐
【问卷系统调查】初入IT行业的开发者们,你们好!今天我们要探讨的是一个与Java开发相关的项目——问卷系统。这个项目对于新手来说是个极好的学习起点...祝你在探索问卷系统调查的过程中收获满满,编程之路越走越宽广!
1. **调研对象**:该报告基于对2,835位参与生成式AI试点或实施的企业和科技领导者进行的调查。 2. **调研结果**:结果显示,尽管企业领导者对生成式AI充满信心并期待其带来的变革,但仍存在关于技术对劳动力和社会...
- 所有成员参与调研方案撰写、问卷设计、实地调查、数据输入与统计、结果分析和报告设计与撰写。 这个调查提纲是全面而系统的,旨在为黑人牙膏提供有关孝感地区大学生市场的真实反馈,以便制定更有效的营销策略,...
- 未来,随着技术的不断进步,大学问卷调研系统将进一步完善,可能集成更多智能化的功能,如自动问卷生成、智能数据分析等。 - 在教育决策、教学质量评估等方面发挥更大作用,助力教育信息化建设。 #### 四、结论...
- **自动生成创意概念**:生成式人工智能通过分析大量的消费者数据,能够自动生成创意概念、广告语和市场调研问卷等,大大提升了创意生成的速度和质量。 - **个性化建议**:通过分析消费者的行为模式,生成式AI能够...
【SPSS统计图分析】在IT领域,尤其是在数据分析和研究中,SPSS(Statistical Package for the Social Sciences)是一款强大的统计分析软件,它提供了丰富的图形生成工具,使得复杂的数据可视化变得简单易懂。...
这个压缩包包含了LimeSurvey的源代码,供开发者研究、学习或部署自己的问卷调查平台。 在深入理解LimeSurvey之前,我们需要了解PHP的基础知识。PHP(Hypertext Preprocessor)是一种广泛使用的服务器端脚本语言,...
总之,掌握Excel的这些技巧,能够帮助我们更有效地分析问卷调查数据,并生成专业的图表报告,使得非技术背景的读者也能轻松理解复杂的数据信息。在实际操作中,不断试验和优化,找到最适合你的数据呈现方式,将有助...
《kaggle社区问卷调查分析》 本次分析主要围绕kaggle社区进行,涉及的数据集是kaggle针对其用户进行的一次问卷调查的结果。通过分析`multipleChoiceResponses.csv`这个CSV文件,我们可以深入理解kaggle用户的基础...
此外,调查问卷的结果表明,人们很难区分舞蹈片段是由该算法生成的还是由人类设计的。这说明该方法生成的机器人舞蹈动作在流畅性、协调性和审美上已经达到了相当高的水平。未来的研究可能会进一步提升机器人舞蹈的...
实验步骤详细规划了从明确问题、确定调研目标,到制定调研提纲、设计问卷、统计调查人数、选择信息服务,直至生成最终报告的全过程。这一系列步骤旨在确保调研的系统性和科学性。 四、实验结果: 实验结果部分可能...
【调查方案设计】\n\n本调查方案旨在深入探究大学生倦怠感的成因、表现及影响,以浙江工商大学在校学生为调查对象,通过问卷调查和访谈的方式收集数据,旨在为学校及相关机构提供策略建议,以改善大学生的学习状态。...
通过问卷调查,我们可以收集到用户对于对话系统的整体满意度、交互体验和对话内容的质量评价等信息。而用户反馈则提供了更加细致和个性化的评估结果,通过分析用户反馈,我们可以了解到用户对于对话系统的优缺点以及...
6. 制定调查方案:这一阶段包括确定一手资料(原始数据)和二手资料(已存在的数据)的来源,设计调研问卷,构建问题框架,以及选择合适的抽样技术和方法。有效方案能确保信息的全面性和准确性。 通过以上知识点的...
在本项目中,我们探索了一个综合性的软件工程课程设计,它利用Django框架和Vue2技术栈来构建一个问卷管理与分发系统。这个系统旨在提供一个高效、灵活且用户友好的平台,用于创建、编辑、分发和收集问卷调查数据。接...
在社会科学中,这通常涉及收集大量数据(如问卷调查的结果),然后运用描述性统计(如平均值、中位数、标准差)和推断性统计(如t检验、卡方检验、回归分析)来探索变量之间的关系和模式。 Stata15作为实证分析工具...
利用信息技术,教师可以采用电子问卷调查、在线测试、学习管理系统(LMS)等方式来收集孩子们的学习反馈,并据此进行课程调整。 8. 家长参与和沟通(Parental Involvement and Communication):在幼儿教育中,家长...
探索性调研通常用于初步了解问题,发现新趋势,或者生成假设。描述性调研则旨在量化和详细描述市场状态,如消费者行为、市场规模等。因果性调研则关注变量之间的关系,试图确定因果关系,例如广告投入对销售额的影响...
中国家庭跟踪调查(CFPS,China Family Panel Studies)是一项全国性的大型社会科学研究项目,旨在长期追踪中国家庭的社会、经济和健康状况。2014年的数据集提供了对中国家庭的深入洞察,涵盖了广泛的变量,包括人口...