Skip to content

本文介绍了一个B/S结构下微信小程序的在线问卷调查系统,其后台可在主流浏览器上进行操作,前台采用微信小程序。它使用集成框架Spring+Sring MVC+MyBatis,存储数据库选用关系型数据库MySql,缓存数据库采用非关系型数据库Redis,服务器选用Apache Tomcat和Nginx相结合的方式。它的代码部分主要开发工具为IntelliJ IDEA和微信开发者工具。以图表的方式实现对问卷结果的数据分析。代码部分实现了前端问卷调查系统和后端管理系统的分离。采用Redis数据库做高速缓存提高访问效率。利用FFmpeg将MP4视频转为m3u8格式实现在线播放视频。

failgoddess/Goddess-Questionnaire

Repository files navigation

Goddess-Questionnaire女神问卷

各位大神若有项目问题可直接加我 微信:18733123202(失败女神)

女神问卷演示视频(问卷部分):https://v.youku.com/v_show/id_XNDI3Mjc5MzExMg==.html?spm=a2h3j.8428770.3416059.1

女神问卷全部视频演示:https://v.youku.com/v_show/id_XNDI3Mjc5Njg2MA==.html?spm=a2h3j.8428770.3416059.1

本文介绍了一个B/S结构下微信小程序的在线问卷调查系统,其后台可在主流浏览器上进行操作,前台采用微信小程序。它使用集成框架Spring+Sring MVC+MyBatis,存储数据库选用关系型数据库MySql,缓存数据库采用非关系型数据库Redis,服务器选用Apache Tomcat和Nginx相结合的方式。它的代码部分主要开发工具为IntelliJ IDEA和微信开发者工具。以图表的方式实现对问卷结果的数据分析。代码部分实现了前端问卷调查系统和后端管理系统的分离。采用Redis数据库做高速缓存提高访问效率。利用FFmpeg将MP4视频转为m3u8格式实现在线播放视频。 需求分析 为实现本系统目标,系统应具有前台页面和后台页面两大部分。后台需要具备管理和维护系统、用户权限分配管理功能的管理员称之为超级管理员,由超级管理员创建并指定权限的管理管理员称为活动管理员。前台需要实现发起问卷、发起投票、数据分析、答卷和投票的功能,前台用户均采用微信用户信息,用户在发起问卷、发起投票、数据分析时被称为活动发起者,在投票或答卷是被称为被调查者。 后台用户分为活动管理员和超级管理员两种角色。超级管理员拥有后端的全部权限负责维护和管理系统,超级管理员有角色管理的权限可以管理其他管理员。活动管理员负责处理违规被举报的活动,活动管理员的权限由超级管理员指定和分配。 超级管理员功能需求 (1)后台权限控制 管理后台用户,管理后台角色,可为用户分配多种角色,每个角色可以拥有多个菜单权限,一个菜单可以被多个角色使用。 (2)系统设置 具备对系统名称的管理,系统服务邮箱的配置,系统介绍视频的编辑。 (3)前台权限管理 配置前台用户的访问权限,管理前台角色。

前台用户分为调查活动发起者和活动被调查者。活动发起者发布和管理个人的调查问卷和投票、被调查者参与投票问卷活动发表评论。 活动管理员功能需求 (1)投票管理、问卷管理: 实现管理员对用户发起的问卷调查的控制,处理用户投诉举报。

被调查者功能需求 (1)活动大厅 展示公开的投票活动,展示公开的问卷活动以供用户投票作答。 (2)个人中心 设置投票浏览历史、问卷浏览历史、我参与的投票、我参与的问卷。 (3)问卷部分 问卷作答页面。 (4)投票部分 查询投票详情、为候选项进行拉票评论、投票页面。 (5)综合部分 用户权限不足时跳转到未授权界面,提供分享界面和活动海报便于用户在多渠道宣传、观看问卷调查系统的介绍视频 。 活动发起者功能需求。 (1)个人中心 设置我发起的投票、我发起的问卷。 (2)问卷部分 复制问卷模板、提供草稿保存、添加问卷、管理问卷题目、问卷预览、编辑问卷、暂停问卷、统计问卷、查询问卷详情、通过图表的形式查看问卷数据分析、提供自动发送问卷统计结果的选择。 (3)投票部分 添加投票、提供草稿保存、管理投票候选项、报名成为候选项、编辑投票、暂停投票、统计投票、通过图表的形式查看问卷数据分析、投票页面。 系统性能需求 (1)安全性需求:数据库数据定时备份、不同用户访问权限控制、密码加密、使用Https协议提供数据传输的安全,使用恰当的安全策略在满足基本信息安全的情况下,最大程度上提高用户舒适度,做到预防Ddos攻击和防止sql注入式攻击。 (2)稳定性需求:系统本身具备可移植能力适应多种环境,满足Windows 或Linux两种系统,提供并发处理措施配置服务器集群,常用的不经常变化的数据放入缓存数据库提高访问效率 非功能性的需求 用户界面友好美观,提供丰富的提示提高交互性,方便使用,可操作性强,页面加载跳转等提供加载动画,常见异常错误界面美化。 本系统中考虑到用户群体的广泛性,其使用的设备有很大差异:设备操作系统差异,主要要兼容IOS、Android两大平台、屏幕尺寸差异,要实现移动端的响应式布局。

核心技术 技术名称 说明 Apache Shiro 用于做权限控制的轻量级框架,在本系统中采用基于url和基于标签的控制方式[13] MyBatis 是一款持久层框架,用于操作数据库 Spring MVC 属SpringFrameWor的子产品,将Web层进行职责分层帮助开发者敏捷开发。 Spring 开源的实现IOC容器和AOP的耦合性轻量级框架[14] Apache POI 操作Microsoft Office文件的开源库,用于为excel文件的生成和读取等操作 Quartz 由java编写的开源作业调度框架,Wx微信服务子系统以每1.5小时频率向微信请求accessToken Common Email 是对java自带的mail模块的封装,轻松的实现不同类型邮件发送,为用户发送报表[15] Apache Log4j 一个强有力的日志操作包,用于系统日志的记录 Google zxing 谷歌发布的用来识别多种格式条形码的开源项目 FFmpeg 用来操作音频、视频的开源计算机程序,用于将上传后的MP4视频转化为m3u8格式 JQuery 是一个 JavaScript 库,封装了大量js原生代码方便开发者使用 Layer 一个基于JQuery的弹出层插件,可自定义页面,提示消息,对话框 Ajaxfileupload 是异步文件上传插件,项目已停止维护,为兼容JQuery版本在项目用有修改部分源码 JQuery Validate 一款文本数据验证的插件,方便在前端校验数据减少服务器负荷 Ztree 是一款轻量级的树结构框架,用于按钮菜单树的操作和实现树型显示数据 H-ui 轻量级前端框架,简单免费,兼容性好,用于做后台管理页面的布局设计 ECharts 百度推出的一款数据分析与数据可视化插件,用于数据分析和报表 BMap 百度地图推出的小程序端的地图插件,用于定位用户信息,分析用户特征

问卷添加页面以选项卡效果呈现。页面分为活动内容、问卷设置、题目项三部分。利用上一步下一步按钮进行切换,每次下一步被触发时将会触发隐藏任务保存草稿,当用户中途退出程序后再次进入时询问用户是否使用草稿。 (1)活动部分包括设置问卷封面(必须上传)、问卷名称(1到20个字之间)、问卷介绍(不能为空)、问卷图片介绍(任意张) (2)问卷设置部分包括设置主题颜色(默认#000000)的弹出式拾色器、问卷开始时间和结束时间、设置地区和IP限制的开关、省市区三级联动选择器(默认北京市-北京-东城区)、数字按钮组的同IP微信用户数量(默认为1)、提供是否公开是否可以评论是否显示主办方的开关,主办方名称(在开启显示主办方的开关时不能为空),主办方电话(在开启显示主办方的开关时必须为手机号) (3)题目项部分包括设置是否试卷类型的开关(默认为关)、添加题目的按钮(试卷模式下只能添加单选题和多选题)、点击可选中某题目将显示该题的编辑复制上移下移删除按钮、提供预览功能为方便用户操作、发布问卷后清除草稿询问用户是否跳转到问卷答题页面是则跳转否则后退回个人中心。

问卷提供单选题、多选题、填空题、简答题、评分题、定位题、位置题、文件题、图片题九种题型可供用户选择进而设计具有强大功能的问卷。 (1)单选题界面提供题目图片的上传、选项图片的上传、可以选择被调查者是否必须作答、单选题选项数量不能低于2个、在选择问卷模式为试卷后必须设置其中一个为正确答案。 (2)多选题提供题目选项的图片上传、选择是否必须作答、选项数量不能低于两个、在选择问卷模式为试卷后必须至少设置其中两个为正确答案。 (3)填空题可上传题目图片、设置是否必须作答、可在手机号、邮箱、二代身份证号等选择一种验证方式限制被调查者输入信息。

(4)简答题提供题目的图片上传、选择是否必答、选择显示时多行文本的行数。 (5)评分题可设置题目图片、在2-10之间选择设置最高分、选择被调查者是否必须作答。 (6)定位题、位置题、文件题、图片题这四种题型默认为必答题。 投票的添加部分与问卷的添加页面雷同,不再赘述。投票详情页面部分主要包括详情页面、活动详情页面、候选选投票页面、选项报名页面、候选项管理页面。 详情页面需要根据发起者设置是否开启评论进而选择是否显示评论点赞部分,候选项显示主要有根据选手号显示和根据排行榜显示,排行榜显示时前三名分别采用金银铜三个icon其余选手则为排名名次。根据投票类型的不同,选手号列表显示效果不同,文字类投票会采用文字瀑布流的形式显示,图片和图文类型均采用图片显示。 在完成问卷活动结束后对数据分析处理是一个重要的功能。本系统提供五种类型的图表:仪表盘用于时间进度图显示活动进度、折线图根据活动时间长短显示各时段用户答卷数分布、饼状图用于对单选题的选择数量分析、柱状图显示多选题个选项的选择率、地图用于定位用户具体位置。 后台管理利用Shiro框架采用Url加标签级的权限控制方式利用Redis数据库做用户权限的高速缓存,用户全部权限存储Redis中有效期为10分钟,Key的生成规则如下:"session_"+LoginType.ADMIN.toString()+""+us.getUserName()+""+us.getUserPassword()。LoginType.ADMIN.toString()为用户的登录类型、us.getUserName()为用户名称、us.getUserPassword()为用户密码。当用户权限不足或session过期时自动跳转到登录页面,当Key权限过期时自动加载刷新当前用户的权限放入Redis缓存。登录后跳转到后台主页默认加载欢迎页面。 本系统按钮资源、角色、用户之间为多对多对多关系两两之间采用关联表进行关联。可任意创建角色分配资源也可以创建用户分配角色超级管理员角色拥有全部权限。 本系统填空题验证通过正则表达式实现共有:非空、手机、邮箱、姓名、身份证、日期、含零整数、非零整数、QQ九种。超级管理员可以后期对验证方式进行管理。

About

本文介绍了一个B/S结构下微信小程序的在线问卷调查系统,其后台可在主流浏览器上进行操作,前台采用微信小程序。它使用集成框架Spring+Sring MVC+MyBatis,存储数据库选用关系型数据库MySql,缓存数据库采用非关系型数据库Redis,服务器选用Apache Tomcat和Nginx相结合的方式。它的代码部分主要开发工具为IntelliJ IDEA和微信开发者工具。以图表的方式实现对问卷结果的数据分析。代码部分实现了前端问卷调查系统和后端管理系统的分离。采用Redis数据库做高速缓存提高访问效率。利用FFmpeg将MP4视频转为m3u8格式实现在线播放视频。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published