jsp+servlet搭建在线投票问卷系统
jsp+servlet搭建在线投票问卷系统
点赞再看,养成习惯
程序帮QQ:1022287044
开发环境准备
- jdk1.8
- tomcat8
- mysql5.7
- intellij IDEA
系统采用技术
- jsp+ servlet mvc三层架构模式
- jdbc
- jQuery+ajax
- ECharts 4.3.0
项目介绍
用户端
用户端可以查看问卷列表并参与问卷调查
查看个人参与的调查报告以及整个问卷情况
管理端
问卷的新增和维护
用户信息维护
项目设计
运行效果
注册
登录
添加问卷
问卷投票列表
投票详情
用户列表
数据库表
代码结构截图,
关键代码:
- 添加问卷:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {String questionTitle = request.getParameter("questionTitle"); //问卷标题String qId = request.getParameter("qId"); //问卷idInteger ops =Integer.valueOf(request.getParameter("ops"));//具体几组String doType=request.getParameter("doType"); //操作类型User user=(User)request.getSession().getAttribute(User.SESSIONNAME);SubjectService subjectService=new SubjectServiceImpl();List<Subject> subjects=new ArrayList<>(); //问题列表Question question=new Question();question.setTitle(questionTitle);if("add".equalsIgnoreCase(doType)){ //如果修改添加idif(null!=user){//用户对象不为空,保存值question.setUserId(user.getId());}}else{question.setId(Integer.valueOf(qId));}String title="";for(int i=0;i<ops;i++){int number = Integer.parseInt(request.getParameter("number"+i));String[] os = request.getParameterValues("options"+i);String[] osIds = request.getParameterValues("optionsIds"+i);//选项idtitle=request.getParameter("title"+i);//问题标题String titleId=request.getParameter("titleId"+i);//问题idSubject subject = new Subject();subject.setOrderId(i);subject.setTitle(title);subject.setNumber(number);if(null!=titleId&&!"".equalsIgnoreCase(titleId)){//设置问题idsubject.setId(Integer.valueOf(titleId));}for(int i1=0;i1<os.length;i1++){Option op = new Option();op.setContent(os[i1]);if("modify".equalsIgnoreCase(doType)){ //如果修改添加idop.setId(Integer.valueOf(osIds[i1]));}subject.getOptions().add(op);}try {long startTime=new Date().getTime();subject.setStartTime(startTime);subject.setEndTime(startTime+1*24*60*60*1000);subject.setMaster(user);subjects.add(subject);} catch (ReTryException e) {HttpSession session = request.getSession();session.setAttribute("subject", subject);session.setAttribute("message", e.getMessage());response.sendRedirect(request.getContextPath() + "/m/add");} catch (Exception ex) {throw new RuntimeException(ex);}}try{if("add".equalsIgnoreCase(doType)){//添加subjectService.add(question,subjects);}else{//修改subjectService.modify(question,subjects);}}catch (Exception e){e.printStackTrace();}if(null!=user&&user.getRole().equalsIgnoreCase("user")){response.sendRedirect(request.getContextPath() + "/list?action=myRelease");//用户查看自己的发布}else{response.sendRedirect(request.getContextPath() + "/list?action=index");}}
- 修改问卷信息
public void doGet(HttpServletRequest request, HttpServletResponse response) {int id = Integer.parseInt(request.getParameter("id"));try {SubjectService subjectService = new SubjectServiceImpl();QuestionService questionService = new QuestionServiceImpl();SubjectQueryModel subjectQueryModel=new SubjectQueryModel();subjectQueryModel.setQuestionId(id);List<Subject> subject = subjectService.getSubjects(subjectQueryModel);//问题列表subjectQueryModel.setQuestionId(id);Question question=questionService.getQuestion(id);request.setAttribute("subjects", subject);request.setAttribute("ops", subject.size());//多少组request.setAttribute("question", question);request.getRequestDispatcher("/WEB-INF/pages/modify.jsp").forward(request, response);} catch (Exception e) { throw new RuntimeException(e);}}
- 问卷投票
public void doGet(HttpServletRequest request, HttpServletResponse response) {try{PrintWriter printWriter = response.getWriter();int subjectId=Integer.parseInt(request.getParameter("subjectId"));String id = request.getParameter("options");String[] ids = id.split(",");if(null==ids){ //未选中任何一项答案printWriter.println(0);return;}else{User user= (User)request.getSession().getAttribute(User.SESSIONNAME);//如果登录用户,判断是否已经投过票if(null!=user){RecordQueryModel recordQueryModel=new RecordQueryModel();recordQueryModel.getUser().setId(user.getId());recordQueryModel.getSubject().setId(subjectId);List<Record> list=recordService.getVotes(recordQueryModel);if(list.size()>0){ //当前用户已经投过票printWriter.println(2);return;}}List<Record> records = new ArrayList<>();for(int i=0;i<ids.length;i++){Record record = new Record();record.getSubject().setId(subjectId);record.getOption().setId(Integer.parseInt(ids[i]));if(null!=user){record.getUser().setId(user.getId());}records.add(record);}try {recordService.vote(records); //保存问卷信息printWriter.println(1);//参与成功return;} catch (ReTryException e) {e.printStackTrace();printWriter.println(3);//参与成功return;}catch(Exception ex){ex.printStackTrace();throw new RuntimeException(ex);}}} catch (Exception e){e.printStackTrace();}}
根据jdbc直连技术,编写数据库操作工具类,方便存储数据,代码如下:
public class DBUtils {String url = null; //连接地址String username = null; //数据库名String password = null; //数据库密码String driverClass = null; //连接驱动private static DBUtils db = new DBUtils();/**构建数据库连接参数*/private DBUtils() {try {url = "jdbc:mysql://localhost:3306/shopCartDb?useUnicode=true&characterEncoding=utf8";username = "root";password = "root123";driverClass = "com.mysql.jdbc.Driver";Class.forName(driverClass);} catch (Exception e) {e.printStackTrace();}}/**构建数据库连接对象*/public Connection getConnection(){Connection conn = null;try {conn = DriverManager.getConnection(url, username, password);} catch (Exception e) {e.printStackTrace();}return conn;}public static DBUtils getInstance(){return db;}
}
- 投票可视化代码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();try {int subjectId=Integer.parseInt(request.getParameter("subjectId")); //题目RecordService recordService=new RecordServiceImpl();List<Record> list=recordService.geyVotes(subjectId);if(list.size()>0){session.setAttribute("list", list);session.setAttribute("stitle", list.get(0).getSubject().getTitle());List<String> opDatas=new ArrayList<>();Map<String,Integer> map=new HashMap<>();for(Record r:list){if(null!=r.getOption()){if(!opDatas.contains(r.getOption().getContent())){opDatas.add(r.getOption().getContent());map.put(r.getOption().getContent(),0);}map.put(r.getOption().getContent(),map.get(r.getOption().getContent())+1);}}String opData="";for(String o:opDatas){opData=opData+"'"+o+"',";}if(opData.length()>0){opData=opData.substring(0,opData.length()-1);}session.setAttribute("opData", opData); //选项String datavn="";for (String key : map.keySet()) {datavn=datavn+"{ value: "+map.get(key)+", name: '"+key+"' },";}if(datavn.length()>0){datavn=datavn.substring(0,datavn.length()-1);}session.setAttribute("datavn", datavn);request.getRequestDispatcher("/WEB-INF/pages/view.jsp").forward(request, response);return;}else{request.setAttribute("exception","暂无问卷结果!");request.getRequestDispatcher("/WEB-INF/pages/500.jsp").forward(request, response);return;}} catch (ReTryException e) {request.getSession().setAttribute("message", e.getMessage());response.sendRedirect(request.getContextPath()+"/m/view");}catch(Exception ex){ex.printStackTrace();}}
时序图
- mvc流程图
- 问卷操作时序图
- 用户注册登录时序图
原地址认准程序帮:https://blog.csdn.net/code_200/article/details/111478690
项目源代码:https://download.csdn.net/download/code_200/14040567
jsp+servlet搭建在线投票问卷系统相关推荐
- 在线答疑系统源码java_java+jsp+servlet+mysql在线教学答疑系统
需求分析 基于java+jsp+servlet+mysql技术, 实现一个在线教学答疑系统, 学生可以通过该网站提出问题留言,教师登录后可以进行答疑, 系统管理员可以对答疑系统进行管理 运行环境 ja ...
- JSP+Servlet java在线投票系统
JSP+Servlet 在线投票系统关于开发环境 1. jdk1.6 2. myeclipse10 3. tomcat6 4. mysql utf-8 使用技术 1. ssh 框架 2. log使用的 ...
- JSP实现在线调查问卷系统
项目编号:BS-PT-014 开发技术: jsp/servlet 前端技术:jquery+layui 开发工具:IDEA/Eclipse 数据库:MYSQL5 功能介绍: 在线调查问卷系统:实现了 ...
- 使用Javaweb实现在线调查问卷系统
作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家 Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 项目编号:BS-PT-014 开发技术: jsp/servl ...
- 基于JSP的在线调查问卷系统
<基于JSP的在线调查问卷系统>该项目采用技术:jsp +servlet +mysql+jdbc+css+js等相关技术,项目含有源码.课设报告.配套开发软件.软件安装教程.项目发布教程等 ...
- 计算机毕业设计、实战项目之 [课设文档]基于JSP的在线调查问卷系统[包运行成功]
<基于JSP的在线调查问卷系统>该项目采用技术:jsp +servlet +mysql+jdbc+css+js等相关技术,项目含有源码.课设报告.配套开发软件.软件安装教程.项目发布教程等 ...
- 基于javaweb+JSP+Servlet学生在线选课系统(管理员、教师、学生)
基于javaweb+JSP+Servlet学生在线选课系统(管理员.教师.学生) 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练 ...
- javaweb基于JSP+Servlet开发在线个人理财系统+论文 课程设计 大作业源码
基于JSP+Servlet开发在线个人理财系统+论文(大作业/毕业设计) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+SQLServer数据库 运行效果图 ...
- java在线商城系统源码jsp+servlet+mysql实现的在线商城系统源码
今天给大家演示一款由jsp servlet MySQL实现的在线商城系统,本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...
最新文章
- Udacity机器人软件工程师课程笔记(四)-样本搜索和找回-基于漫游者号模拟器-决策树
- Python中将两个列表(list)数据zip起来
- 智源社区AI周刊·第二期:过去一周AI领域的新鲜事
- STL常用的排序算法
- 【F12一下,看看页面里的第一行】——说说浏览器兼容性模式
- maven错误解决:编码GBK的不可映射字符
- [Vue warn]: Unknown custom element: <Top> - did you register the component correctly?
- 排序算法(四)--谢尔排序(缩小增量排序)
- Android TextView设置多样式文本,跑马灯以及霓虹灯效果
- OpenCV waitKey 无法正常捕捉方向键(上下左右),总结和解决方案,可以用waitKeyEx...
- 一个人学习3D视觉太痛苦了怎么办?
- 经济学家德鲁克的三个故事
- 三阶魔方还原简单七步公式
- 你距离哈佛学霸到底有多远?实力证明,真正的学霸精神不是智商,而是。。。
- 快速重命名文件夹,教你怎样在每个文件夹名中添加符号
- Python爬虫实例(2)-用BeautifulSoup爬取一个网页上的多张照片(以百度贴吧为例)
- SCI论文从入门到精通
- IntelliJ IDEA 快捷键及模板Templates设置
- 蓝桥杯嵌入式-第九届省赛-电子定时器
- Thinkphp 操作提示 ThinkPHP 3.2.0 { Fast Simple OOP PHP Framework } -- [ WE CAN DO IT JUST THINK ]