功能强大的问卷考试系统,NAS快速部署!来一场酣畅淋漓的考试!

本篇来介绍一个功能最强大的调查问卷系统和考试系统:卷王。项目开源免费,支持NAS上通过Docker一键部署,

笔者在搭建之后进行体验,的确很强,卷王名不虚传!

无论是题型、问题设置、问题校验、逻辑设置、数据导出等,相比主流商业调查问卷系统,开源卷王都毫不逊色。

开源卷王= 调查问卷系统 + 在线考试系统 + 题库刷题系统 + 投票系统 + 公开查询系统 +成绩单查询系统


此外,卷王还支持如 答案唯一设置、多问卷数据关联、视频题、图片选择题、答题完自定义提示语、答题完自定义跳转链接、考试完根据分数动态显示提示语、公式计算等等,超多功能,等你发现。基于 MIT license,任何人、任何组织、任何行业都可以使用卷王轻松实现 问卷调查、投票、考试、测评、公开查询等场景。



功能概览

支持 20 多种题型,如填空、选择、下拉、级联、矩阵、分页、签名、题组、上传、横向填空等

多种创建问卷方式,Excel 导入问卷、文本导入问卷、在线编辑器编辑问卷

多种问卷设置,支持白名单答卷、公开查询、答卷限制等

数据,支持问卷数据新增、编辑、标记、导出、打印、预览和打包下载附件

报表,支持对问题实时统计分析并以图形(条形图、柱形图、扇形图)、表格的形式展示输出和导出

安装部署简单(最快 1 分钟部署),支持一键 windows 部署、一键 docker 部署、前后端分离部署、单 jar 部署、二级目录部署

响应式布局,所有页面完美适配电脑端和移动端(包含问卷编辑、设置、答卷)

支持多人协作管理问卷

后端支持多种数据库,可支持所有带有 jdbc 驱动的关系型数据库

安全、可靠、稳定、高性能的后端 API 服务

支持完善的 RBAC 权限控制

支持可视化配置问卷跳转和显示逻辑,以及通过公式实现自定义逻辑(卷王的逻辑设置比目前主流商业调查问卷系统强大的多)



部署流程


本文以威联通NAS为例,通过Docker Compose进行部署,其他平台部署基本通用。

首先准备一个文件夹,作为项目的安装目录,我这里命名为surveyking,具体路径为:


/share/Container/surveyking。

打开你所在平台的Docker管理工具,创建新的Docker应用。将以下代码修改后粘贴进框内进行创建。


version: '3.9' # 最新版Docker Compose该行可删除
services:
    surveyking:
        image: surveyking/surveyking
        container_name: surveyking
        volumes:
            - /share/Container/surveyking/files:/app/files  # 文件目录,存储上传的文件,冒号左侧改成自己的,下同
            - /share/Container/surveyking/logs:/app/logs    # 运行日志
            - /share/Container/surveyking/db:/app/db # 数据库文件
        ports:
            - 5090:1991 # 冒号左侧可改
        restart: always

Docker 一键部署使用的是内置的 H2 数据库,相比 MySQL 的好处是无需额外配置或安装数据库,部署更为简单和快速。关于 MySQL 数据库运行,我放在文末,大家需要的自取。


此时,web输入NAS_IP:5090便可成功访问并使用。初始界面如下。

用户名:admin,密码:123456


部分展示


可以创建问卷、在线考试项目,并且支持本地多种格式导入。

新建问卷,可以看到如介绍所说,可添加的项相当丰富,目之所及几乎都可以进行编辑。

问卷设置界面,感觉能满足绝大多数人的需求。创建好的问卷还可以通过链接或二维码的形式进行投放。

更让人惊喜的是他的组织管理系统,细致入微。

设置还提供了一个行业字典方便用户使用,当然我们也可以针对需求创建个性化字典。

反向代理


问卷和考试系统大概率需要用到外网访问,NAS上建议使用Lucky进行反向代理。可以参考往期教程。反代神器,懒人利器!Docker网络工具Lucky部署使用流程记录


MySQL(可选,普通用户不建议)

已经部署MySQL

version: '3.9' # 最新版Docker Compose该行可删除
services:
    surveyking:
        image: surveyking/surveyking
        container_name: surveyking
        volumes:
            - /share/Container/surveyking/files:/app/files  # 文件目录,存储上传的文件,冒号左侧改成自己的,下同
            - /share/Container/surveyking/logs:/app/logs    # 运行日志
        ports:
            - 5090:1991 # 冒号左侧可改
        environment:
            - PROFILE=mysql                       # 使用外部 MySQL 数据库
            - MYSQL_USER=surveyking               # 数据库用户名
            - MYSQL_PASS=surveyking               # 数据库密码
            - DB_URL=jdbc:mysql://172.x.x.x:xxxx/surveyking?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8
        restart: always


172.x.x.x:xxxx,冒号左侧部分替换成你数据库所在服务器的IP,冒号右侧部分替换成数据库服务的端口号。


未部署MySQL


version: '3.9' # 最新版Docker Compose该行可删除
services:
    mysql:
        image: mysql:8.0
        container_name: mysql
        environment:
            - MYSQL_ROOT_PASSWORD=root_password   # MySQL 根用户密码
            - MYSQL_DATABASE=surveyking           # 创建数据库
            - MYSQL_USER=surveyking               # 新建用户
            - MYSQL_PASSWORD=surveyking           # 新建用户密码
        volumes:
            - /share/Container/mysql/data:/var/lib/mysql  # 持久化存储
        ports:
            - 3306:3306 # 默认 MySQL 端口
        restart: always
    surveyking:
        image: surveyking/surveyking
        container_name: surveyking
        volumes:
            - /share/Container/surveyking/files:/app/files  # 文件目录,存储上传的文件,冒号左侧改成自己的,下同
            - /share/Container/surveyking/logs:/app/logs    # 运行日志
        ports:
            - 5090:1991 # 冒号左侧可改
        environment:
            - PROFILE=mysql                                 # 使用外部 MySQL 数据库
            - MYSQL_USER=surveyking                        # 数据库用户名
            - MYSQL_PASS=surveyking                        # 数据库密码
            - DB_URL=jdbc:mysql://172.x.x.x:xxxx/surveyking?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8 
        depends_on:
            - mysql                                         # 确保 MySQL 服务先启动
        restart: always
原文链接:,转发请注明来源!