问卷调查系统的设计与实现(源码)【字数:5435】

问卷调查在很多年前就流行了,只不过当时是采用打印纸的方式进行问卷调查,然后让调查的对象进行填写,这些年,传统问卷调查已经被网络问卷调查索取代。原始纸张问卷调查暴露出了浪费物资,召集调查对象等缺点和不足。现在只需要一个网页链接,即可完成问卷调查。本文对于问卷调查创建以及回答问卷的操作流程和需求做了详细的系统分析,采用前后端分离,使用Java编程语言,Spring MVC框架,采用MySQL数据库来存储问卷,整个项目采用Restful风格的接口。本课题主要介绍了问卷调查系统的开发背景,系统的设计与实现。
Key words :SpringMVC;Questionnaire survey;Restful 目 录
一、引言 1
(一)开发背景 1
(二)选题意义 1
(三)设计目标 1
(四)开发软件 1
1.MySQL数据库 1
2.redis 2
3.node.js 2
二、系统分析与设计 3
(一)系统功能需求 3
(二) 系统功能模块图 3
(三)原型设计 4
(四) 数据库设计 5
1.实体ER图 5
2.数据库的需求分析 7
三、系统设计与实现 9
(一)登录和注册 9
1.登录 9
2. 注册账户 10
(二) 问卷模块设计 11
1.创建问卷 11
2. 问卷列表 11
3. 预览问卷 12
4. 问卷分析 13
5. 数据可视化统计分析 13
四、系统测试 14
(一)测试环境 15
(二) 测试用例 15
总结 17
致谢 18
参考文献 19
一、引言
(一)开发背景
传统的问卷调查是白纸黑字,人为的设计好问卷后印刷,然后展开调查,如果在问卷过程中发现有需要添加的内容,还需要再重新打印添加,这样会浪费很多时间和纸张。
而网络问卷调查就不同, *好棒文|www.hbsrm.com +Q: #351916072# 
它可以快速的编辑,进行定制化。之前用传统的问卷调查效率很低,质量也不好,现在用了网络问卷调查后,一天做一百多的问卷调查已经是一件非常容易的事情了。
(二)选题意义
问卷调查的种类方向有很多,由于是高校学生,所以难免会有一些问卷调查是与相关的,睡眠质量、兴趣爱好、教师评分等等。问卷调查的结果也是能反应一些问题的,可以对综合评分进行分析从而得出结论,例如学校用其对教师满意度进行评分,也能够促进对教师工作的评判与监督。
(三)设计目标
问卷调查系统要求制定多元化问卷。主要的设计目标包括创建问卷,回答问卷,问卷数据分析等等。可以发布多个问卷调查同时进行回答,每一个用户都可以回答,当时多个用户回答后会有评分,对其做可视化分析。
(四)开发软件
1.MySQL数据库
本次课题选用MySQL数据库,MySQL是目前市面上主流的关系型数据库,其拥有众多优点。光日志文件就有6种,日志文件会记录MySQL运行期间发生的变化;当数据库遭到意外的损坏,可以通过日志文件查看报错原因。并且日志还可以帮恢复数据。默认情况下错误日志是开启的其无法被关闭,它可以记录服务器运行过程中的错误信息。查询日志也叫通用日志,记录了MySQL执行的所有命令,不管语句的语法是否正确,都会被记录下来。正因为如此,并发操作很大的场景下,会导致磁盘IO非常大,性能降低,一般只有正式环境下才开启查询日志。查询日志有助于分析问题,对于密集执行的select语句可以将其做缓存。慢查询日志主要记录的是比较慢的DML语句,只要是超过了指定时间,都可以称为"慢查询",默认情况下是不开启的,需要手动开启。事务日志分重做日志redo log和回滚日志undo log,innodb通过force log at commit机制实现了事务的持久性,在提交事务时,将事务日志写到磁盘上的redo log 文件和undo log文件中进行持久化。所以可以理解成在数据库世界中,数据从来都不重要,只要有了日志,就有了一切。二进制日志(bin log)日志主要记录表结构(DDL)的变化,binlog日志可以做恢复、复制、审计。除此之外,binlog日志为了保证与redo log的一致性,mysql事务采用两阶段提交协议。如果mysql系统发生崩溃,事务的状态为prepared和commit两种,如果是prepared状态,要进行提交还是回滚,要参考binlog日志:如果事务在binlog中存在,则将其提交,如果不存在则将其回滚。这样可以保证数据在主库和从库中的一致性。
2.redis
除了上面所讲的mysql数据库以外,本次课题还用了非关系型数据库Redis,多机器数据库实现。Redis的多机实现主要有3种,主从复制,集群,哨兵。Redis的主从复制就是让一台redis服务去复制另一台redis服务的数据,当写操作导致主服务器数据变化时会自动将数据同步给从数据库。从数据库一般是只读权限,并且接受主数据库同步过来的数据。一个从数据库只能拥有一个主数据库,一个主数据库可以拥有多个从数据库。但是redis主从复制会带来问题:当主数据库宕机,需要手动执行slaveof no one 将从数据库提升为主数据库。如果要实现自动,就要采用哨兵模式。
3.node.js
提到node,或许写过web前端的同学都知道它,可以理解成它就是一个js运行的环境。它是非阻塞异步io的语言,而且还是单线程的(这样就是有一个好处:操作系统不需要去创建线程,销毁线程。减少了开销)。它的底层是C++实现的,有一半都是用队列构建,使用事件驱动来完成任务调度,用一个线程完成多任务的使命,实现图如下11所示。

图11 node事件驱动
二、系统分析与设计
(一)系统功能需求
问卷调查系统是基于互联网的web应用。目的是为了替代传统问卷调查,达到定制化的效果,提高问卷回答的效率,主要功能如下:

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/rjgc/186.html

好棒文