前言
随着互联网的快速发展,人们对于在线服务的需求越来越高,这促使了各种在线调查系统的蓬勃发展。其中,在线问卷调查系统因其操作简便、数据统计快速、受访者覆盖范围广等特点,逐渐成为一种主流的调查方式。传统的问卷调查方式由于时间和地点的限制,难以收集到足够的数据,而在线问卷调查系统则可以随时随地进行调查,大大提高了数据收集的效率。
一、项目介绍
开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven
二、功能介绍
一、系统背景与意义
随着互联网的快速发展,人们对于在线服务的需求越来越高,这促使了各种在线调查系统的蓬勃发展。其中,在线问卷调查系统因其操作简便、数据统计快速、受访者覆盖范围广等特点,逐渐成为一种主流的调查方式。传统的问卷调查方式由于时间和地点的限制,难以收集到足够的数据,而在线问卷调查系统则可以随时随地进行调查,大大提高了数据收集的效率。
二、系统架构与技术栈
1.
后端架构:
2.
1.开发语言:Java
2.框架:Spring Boot
1.Spring Boot简化了Spring应用的初始搭建以及开发过程,通过“约定优于配置”的原则,提供了一种快速启动和运行Spring应用程序的方法。
2.无需大量的XML配置,便可以快速启动内嵌的Tomcat、Jetty或Undertow服务器,并且能够自动配置Spring以及第三方库。
3.持久层框架:MyBatis或MyBatis Plus
1.MyBatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
2.MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,简化开发、提高效率。
4.数据库:MySQL等关系型数据库
1.用于存储系统数据,如问卷信息、用户信息、提交记录等。
5.构建工具:Maven或Gradle
1.用于管理项目的依赖、构建和打包。
3.
前端架构:
4.
1.技术栈:HTML、CSS、JavaScript、Vue.js等
1.HTML用于构建页面的基本结构。
2.CSS用于美化页面和布局。
3.JavaScript用于实现页面的交互功能。
4.Vue.js是一个用于构建用户界面的渐进式JavaScript框架,可以方便地实现前后端数据的交互和页面的动态渲染。
三、系统功能
1.
用户注册与登录:
2.
2.系统支持用户的注册和登录功能,用户可以通过填写相关信息完成注册,并通过登录功能进入系统。
3.
问卷管理:
4.
3.用户(包括普通用户和管理员)可以创建、编辑和删除问卷。
4.支持多种类型的题目,如选择题、填空题、判断题等。
5.可以设置问卷的发布时间、截止时间等属性。
5.
问卷调查:
6.
6.用户可以参与已经发布的问卷调查,填写问卷并提交。
7.系统支持多种填写方式,如单选、多选、填空等。
7.
数据统计与分析:
8.
1.系统可以对提交的问卷数据进行统计和分析,生成各种图表和报告。
2.支持按题目、按用户、按时间等多种维度的统计和分析。
9.
用户管理:
10.
1.管理员可以管理系统的用户信息,包括查看用户详情、编辑用户信息、删除用户等。
11.
权限管理:
12.
1.系统支持细粒度的权限管理,可以为不同的用户角色分配不同的权限。
2.如管理员可以管理所有问卷和用户信息,而普通用户只能参与问卷调查和查看自己的问卷数据。
四、系统优势与特点
1.界面友好:系统界面简洁明了,易于操作。
2.功能丰富:系统提供了完整的问卷调查功能,包括问卷创建、编辑、发布、填写、提交和数据统计等。
3.数据安全:系统采用关系型数据库存储数据,保证了数据的完整性和一致性。同时,系统还提供了权限管理功能,确保了数据的安全性。
4.可扩展性:系统采用前后端分离架构,方便后续的功能扩展和升级。同时,Spring Boot框架也提供了良好的扩展性支持。
综上所述,Spring Boot网上问卷调查系统是一个功能强大、易于使用的在线问卷调查平台。它借助Spring Boot框架和前端技术的优势,实现了高效的问卷调查和数据统计功能。无论是个人还是企业,都可以利用该系统来进行问卷调查和数据收集工作。
三、核心代码
部分代码:
package com.example.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.Caiwu;
import com.example.exception.CustomException;
import com.example.service.CaiwuService;
import com.example.utils.MapWrapperUtils;
import com.example.utils.jwt.JwtUtil;
import com.example.vo.CaiwuVo;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/caiwu")
public class CaiwuController {
@Resource
private CaiwuService caiwuService;
@PostMapping
public Result<Caiwu> add(@RequestBody CaiwuVo caiwu) {
caiwuService.add(caiwu);
return Result.success(caiwu);
}
@PostMapping("/deleteList")
public Result<Caiwu> deleteList(@RequestBody CaiwuVo caiwu) {
caiwuService.deleteList(caiwu.getList());
return Result.success();
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
caiwuService.delete(id);
return Result.success();
}
@PutMapping
public Result update(@RequestBody CaiwuVo caiwu) {
caiwuService.update(caiwu);
return Result.success();
}
@GetMapping("/{id}")
public Result<Caiwu> detail(@PathVariable Integer id) {
Caiwu caiwu = caiwuService.findById(id);
return Result.success(caiwu);
}
@GetMapping
public Result<List<Caiwu>> all() {
return Result.success(caiwuService.list());
}
@PostMapping("/page")
public Result<CaiwuVo> page(@RequestBody CaiwuVo caiwuVo) {
return Result.success(caiwuService.findPage(caiwuVo));
}
@PostMapping("/login")
public Result login(@RequestBody Caiwu caiwu, HttpServletRequest request) {
if (StrUtil.isBlank(caiwu.getZhanghao()) || StrUtil.isBlank(caiwu.getMima())) {
throw new CustomException(ResultCode.PARAM_LOST_ERROR);
}
Caiwu login = caiwuService.login(caiwu);
// if(!login.getStatus()){
// return Result.error("1001","状态限制,无法登录系统");
// }
if(login != null) {
HashMap hashMap = new HashMap();
hashMap.put("user", login);
Map<String, Object> map = MapWrapperUtils.builder(MapWrapperUtils.KEY_USER_ID,caiwu.getId());
String token = JwtUtil.creatToken(map);
hashMap.put("token", token);
return Result.success(hashMap);
}else {
return Result.error();
}
}
@PutMapping("/updatePassword")
public Result updatePassword(@RequestBody Caiwu info, HttpServletRequest request) {
Caiwu caiwu = caiwuService.findById(info.getId());
String oldPassword = SecureUtil.md5(info.getMima());
if (!oldPassword.equals(caiwu.getMima())) {
return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
}
info.setMima(SecureUtil.md5(info.getNewPassword()));
Caiwu caiwu1 = new Caiwu();
BeanUtils.copyProperties(info, caiwu1);
caiwuService.update(caiwu1);
return Result.success();
}
}
四、效果图