• 基于Java+SpringBoot+Vue在线问卷调查系统的设计与实现 前后端分离【计算机毕业设计·文档报告·代码讲解·安装调试】


    🍊作者:计算机编程-吉哥
    🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
    🍊心愿:点赞 👍 收藏 ⭐评论 📝
    🍅 文末获取源码联系

    👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
    Java毕业设计项目~热门选题推荐《1000套》

    技术选型

    springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8

    数据库表结构

    10张 

    开发工具

    idea、navicat

    ⭐功能

    【角色】

    管理员、用户

    【前台功能模块】

    • 登录注册
    • 首页
    • 问卷列表
    • 新闻资讯
    • 个人中心
    • 后台管理

    【后台功能模块】

    • 登录
    • 首页
    • 个人中心
    • 管理员管理
    • 用户管理
    • 问卷管理
    • 题目管理
    • 问卷调查管理
    • 新闻资讯管理
    • 基础数据管理
    • 轮播图管理

    🏆项目演示截图

    1、问卷列表

    2、问卷调查

     3、新闻资讯

     4、问卷调查记录

     5、问卷管理

     6、问卷调查管理

     7、题目管理

     8、用户管理

     9、新闻资讯管理

    数据库文件设计

    1. CREATE TABLE `config` (
    2. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    3. `name` varchar(100) NOT NULL COMMENT '配置参数名称',
    4. `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
    5. PRIMARY KEY (`id`)
    6. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='配置文件';
    7. DROP TABLE IF EXISTS `dictionary`;
    8. CREATE TABLE `dictionary` (
    9. `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    10. `dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
    11. `dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
    12. `code_index` tinyint(4) DEFAULT NULL COMMENT '编码',
    13. `index_name` varchar(200) DEFAULT NULL COMMENT '编码名字',
    14. `super_types` int(11) DEFAULT NULL COMMENT '父字段id',
    15. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    16. PRIMARY KEY (`id`)
    17. ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='字典表';
    18. CREATE TABLE `exampaper` (
    19. `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    20. `exampaper_name` varchar(200) NOT NULL COMMENT '问卷名称 Search111',
    21. `exampaper_date` int(11) NOT NULL COMMENT '时长(分钟)',
    22. `exampaper_jieshuyu` varchar(255) DEFAULT NULL COMMENT '结束语',
    23. `exampaper_types` int(11) NOT NULL DEFAULT '0' COMMENT '问卷状态 Search111',
    24. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    25. PRIMARY KEY (`id`)
    26. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='问卷表';
    27. CREATE TABLE `examquestion` (
    28. `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    29. `exampaper_id` int(20) NOT NULL COMMENT '所属问卷id(外键)',
    30. `examquestion_name` varchar(200) NOT NULL COMMENT '试题名称 Search111',
    31. `examquestion_options` longtext COMMENT '选项',
    32. `examquestion_types` int(20) DEFAULT '0' COMMENT '试题类型',
    33. `examquestion_sequence` int(20) DEFAULT '100' COMMENT '试题排序,值越大排越前面',
    34. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    35. PRIMARY KEY (`id`)
    36. ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COMMENT='试题表';
    37. CREATE TABLE `examredetails` (
    38. `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    39. `examredetails_uuid_number` varchar(200) DEFAULT NULL COMMENT '问卷编号',
    40. `yonghu_id` int(20) NOT NULL COMMENT '用户id',
    41. `examquestion_id` int(20) NOT NULL COMMENT '试题id(外键)',
    42. `examredetails_myanswer` varchar(200) DEFAULT NULL COMMENT '用户选项',
    43. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    44. PRIMARY KEY (`id`)
    45. )
    46. CREATE TABLE `news` (
    47. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    48. `news_name` varchar(200) DEFAULT NULL COMMENT '新闻资讯名称 Search111 ',
    49. `news_types` int(11) DEFAULT NULL COMMENT '新闻类型 Search111 ',
    50. `news_photo` varchar(200) DEFAULT NULL COMMENT '新闻资讯图片',
    51. `insert_time` timestamp NULL DEFAULT NULL COMMENT '新闻资讯时间',
    52. `news_content` text COMMENT '新闻资讯详情',
    53. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 show1 nameShow',
    54. PRIMARY KEY (`id`)
    55. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='新闻资讯';
    56. CREATE TABLE `token` (
    57. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    58. `userid` bigint(20) NOT NULL COMMENT '用户id',
    59. `username` varchar(100) NOT NULL COMMENT '用户名',
    60. `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
    61. `role` varchar(100) DEFAULT NULL COMMENT '角色',
    62. `token` varchar(200) NOT NULL COMMENT '密码',
    63. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
    64. `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
    65. PRIMARY KEY (`id`)
    66. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='token表';
    67. CREATE TABLE `users` (
    68. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    69. `username` varchar(100) NOT NULL COMMENT '用户名',
    70. `password` varchar(100) NOT NULL COMMENT '密码',
    71. `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
    72. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
    73. PRIMARY KEY (`id`)
    74. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';
    75. CREATE TABLE `yonghu` (
    76. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    77. `username` varchar(200) DEFAULT NULL COMMENT '账户',
    78. `password` varchar(200) DEFAULT NULL COMMENT '密码',
    79. `yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户姓名 Search111',
    80. `sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',
    81. `yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '身份证号',
    82. `yonghu_phone` varchar(200) DEFAULT NULL COMMENT '手机号',
    83. `yonghu_photo` varchar(200) DEFAULT NULL COMMENT '照片',
    84. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 ',
    85. PRIMARY KEY (`id`)
    86. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户';

    核心代码 

    1. package com.interceptor;
    2. import java.io.IOException;
    3. import java.io.PrintWriter;
    4. import java.util.HashMap;
    5. import java.util.Map;
    6. import com.alibaba.fastjson.JSONObject;
    7. import javax.servlet.http.HttpServletRequest;
    8. import javax.servlet.http.HttpServletResponse;
    9. import org.apache.commons.lang3.StringUtils;
    10. import org.springframework.beans.factory.annotation.Autowired;
    11. import org.springframework.stereotype.Component;
    12. import org.springframework.web.method.HandlerMethod;
    13. import org.springframework.web.servlet.HandlerInterceptor;
    14. import com.annotation.IgnoreAuth;
    15. import com.entity.EIException;
    16. import com.entity.TokenEntity;
    17. import com.service.TokenService;
    18. import com.utils.R;
    19. /**
    20. * 权限(Token)验证 计算机编程-吉哥
    21. */
    22. @Component
    23. public class AuthorizationInterceptor implements HandlerInterceptor {
    24. public static final String LOGIN_TOKEN_KEY = "Token";
    25. @Autowired
    26. private TokenService tokenService;
    27. @Override
    28. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    29. String servletPath = request.getServletPath();
    30. if("/dictionary/page".equals(request.getServletPath()) || "/file/upload".equals(request.getServletPath()) || "/yonghu/register".equals(request.getServletPath()) ){//请求路径是字典表或者文件上传 直接放行
    31. return true;
    32. }
    33. //支持跨域请求
    34. response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    35. response.setHeader("Access-Control-Max-Age", "3600");
    36. response.setHeader("Access-Control-Allow-Credentials", "true");
    37. response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
    38. response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
    39. IgnoreAuth annotation;
    40. if (handler instanceof HandlerMethod) {
    41. annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
    42. } else {
    43. return true;
    44. }
    45. //从header中获取token
    46. String token = request.getHeader(LOGIN_TOKEN_KEY);
    47. /**
    48. * 不需要验证权限的方法直接放过
    49. */
    50. if(annotation!=null) {
    51. return true;
    52. }
    53. TokenEntity tokenEntity = null;
    54. if(StringUtils.isNotBlank(token)) {
    55. tokenEntity = tokenService.getTokenEntity(token);
    56. }
    57. if(tokenEntity != null) {
    58. request.getSession().setAttribute("userId", tokenEntity.getUserid());
    59. request.getSession().setAttribute("role", tokenEntity.getRole());
    60. request.getSession().setAttribute("tableName", tokenEntity.getTablename());
    61. request.getSession().setAttribute("username", tokenEntity.getUsername());
    62. return true;
    63. }
    64. PrintWriter writer = null;
    65. response.setCharacterEncoding("UTF-8");
    66. response.setContentType("application/json; charset=utf-8");
    67. try {
    68. writer = response.getWriter();
    69. writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
    70. } finally {
    71. if(writer != null){
    72. writer.close();
    73. }
    74. }
    75. // throw new EIException("请先登录", 401);
    76. return false;
    77. }
    78. }

    参考文档

    更多项目推荐:计算机毕业设计项目

    如果大家有任何疑虑,请在下方咨询或评论

  • 相关阅读:
    [HDLBits] Exams/review2015 count1k
    vue解决报错Unable to preventDefault inside passive event listener invocation.
    NAT技术---网络地址转换
    About 9.11 This Week
    2022年最新最详细在IDEA中配置Tomcat(含有详细图解过程)、建立使用IEDA建立一个Web项目的案例
    1899. 合并若干三元组以形成目标三元组-c语言-贪心算法+标记数组
    AIGC玩转卡通化技术实践
    Android Studio学习7——常用控件view
    Java中常见锁的分类及概念分析
    博弈论——动态博弈
  • 原文地址:https://blog.csdn.net/weixin_51966461/article/details/133745230