——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
投票管理系统,分为前端和后台管理模块
前端用户可以登录注册、查看投票信息,登录后可以进行投票,也可以查看自己的历史投票记录
后台管理模块管理员登录后可以管理用户信息、管理投票主题和子项、查看投票详情、查看投票图表统计信息等
目前投票方式支持单选只能投一次、单选一天只能投一次、多选只能投一次、多选一天只能投一次等四种方式,投票主题可以设置开始和结束时间,结束后不能再进行投票


前台






后台





技术框架
JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL EasyUI jQuery Ajax
基于javaweb的SSM投票管理系统(java+jsp+ssm+javabean+mysql+tomcat)
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| @RequestMapping(value="/registe",method=RequestMethod.GET) public ModelAndView registe(ModelAndView model){ model.setViewName("home/register"); return model; }
@RequestMapping(value="/change_pwd",method=RequestMethod.GET) public ModelAndView changePassword(Long id,ModelAndView model){ model.addObject("user", userService.findUserById(id)); model.setViewName("home/change_pwd"); return model; }
@RequestMapping(value="/login_out",method=RequestMethod.GET) public String loginOut(HttpServletRequest request){ request.getSession().setAttribute("user", null); return "redirect:/"; }
@RequestMapping(value="/login",method=RequestMethod.POST) @ResponseBody public Map<String,String> loginAct(@RequestParam(value="username", required=true) String username, @RequestParam(value="password", required=true) String password, HttpServletRequest request){ Map<String,String> ret = new HashMap<String,String>(); if(StringUtils.isEmpty(username)){ ret.put("type", "error"); ret.put("msg", "用户名不能为空!"); return ret; } if(StringUtils.isEmpty(password)){ ret.put("type", "error"); ret.put("msg", "密码不能为空!"); return ret; } User user = userService.findUserByName(username); if(user == null){ ret.put("type", "error");
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| if(user == null){ model.setViewName("home/login"); return model; } queryMap.put("name", "%%"); queryMap.put("startIndex", 0); queryMap.put("pageSize", 9999); List<Subject> subjectList = subjectService.findByRelation(queryMap); queryMap.put("userId", user.getId()); List<Vote> voteList = voteService.findList(queryMap); List<Subject> ret = new ArrayList<Subject>(); DecimalFormat df = new DecimalFormat("0.00"); for(Subject s:subjectList){ for(Vote v:voteList){ if(s.getId() == v.getSubjectId()){ s.getVotedList().add(v); if(!ret.contains(s)) ret.add(s); for(SubjectItem si:s.getSubjectItems()){ String format = df.format((float)si.getVoteNumber()/s.getVoteNumber()*100); si.setPer(Float.valueOf(format)); if(v.getSubjectItemId() == si.getId()){ si.setFlag("true"); } } } } } model.addObject("voteList", ret); model.setViewName("home/vote_history_list"); model.addObject("singleType", "SINGLE"); model.addObject("muilteType", "MUILTE"); model.addObject("nowTime", System.currentTimeMillis()); return model; }
@RequestMapping(value="/add_vote",method=RequestMethod.POST) @ResponseBody public Map<String, String> addVote( @RequestParam(name="subjectId",required=true) Long subjectId, @RequestParam(name="subjectItemIds",required=true) String subjectItemIds, HttpServletRequest request ){ Map<String, String> ret = new HashMap<String, String>();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| @RequestMapping(value="/login",method=RequestMethod.GET) public ModelAndView login(ModelAndView model){ model.setViewName("system/login"); return model; }
@RequestMapping(value="/login_out",method=RequestMethod.GET) public String loginOut(HttpServletRequest request){ request.getSession().setAttribute("manager", null); return "redirect:login"; }
@RequestMapping(value="/login",method=RequestMethod.POST) @ResponseBody public Map<String,String> loginAct(@RequestParam(value="username", required=true) String username, @RequestParam(value="password", required=true) String password, @RequestParam(value="vcode", required=true) String vcode, HttpServletRequest request){ Map<String,String> ret = new HashMap<String,String>(); if(StringUtils.isEmpty(username)){ ret.put("type", "error"); ret.put("msg", "用户名不能为空!"); return ret; } if(StringUtils.isEmpty(password)){ ret.put("type", "error"); ret.put("msg", "密码不能为空!"); return ret; } if(StringUtils.isEmpty(vcode)){ ret.put("type", "error"); ret.put("msg", "验证码不能为空!"); return ret; } Object attribute = request.getSession().getAttribute("loginCapcha"); if(attribute == null){ ret.put("type", "error"); ret.put("msg", "长时间未操作,请刷新页面!"); return ret; } if(!vcode.toUpperCase().equals(attribute.toString().toUpperCase())){ ret.put("type", "error"); ret.put("msg", "验证码错误!"); return ret; } Manager manager = managerService.findByName(username); if(manager == null){ ret.put("type", "error"); ret.put("msg", "不存在该用户!"); return ret; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| DecimalFormat df = new DecimalFormat("0.00"); for(Subject s:subjectList){ for(Vote v:voteList){ if(s.getId() == v.getSubjectId()){ s.getVotedList().add(v); if(!ret.contains(s)) ret.add(s); for(SubjectItem si:s.getSubjectItems()){ String format = df.format((float)si.getVoteNumber()/s.getVoteNumber()*100); si.setPer(Float.valueOf(format)); if(v.getSubjectItemId() == si.getId()){ si.setFlag("true"); } } } } } model.addObject("voteList", ret); model.setViewName("home/vote_history_list"); model.addObject("singleType", "SINGLE"); model.addObject("muilteType", "MUILTE"); model.addObject("nowTime", System.currentTimeMillis()); return model; }
@RequestMapping(value="/add_vote",method=RequestMethod.POST) @ResponseBody public Map<String, String> addVote( @RequestParam(name="subjectId",required=true) Long subjectId, @RequestParam(name="subjectItemIds",required=true) String subjectItemIds, HttpServletRequest request ){ Map<String, String> ret = new HashMap<String, String>(); User user = (User)request.getSession().getAttribute("user"); if(user == null){ ret.put("type", "error"); ret.put("msg", "请先登录再投票!"); return ret; } Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("userId", user.getId());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| @Autowired private SubjectItemService subjectItemService; @Autowired private VoteService voteService;
@RequestMapping(value="/list",method=RequestMethod.GET) public ModelAndView index(ModelAndView model){ Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("name", "%%"); queryMap.put("startIndex", 0); queryMap.put("pageSize", 30); List<Subject> subjectList = subjectService.findByName(queryMap); List<String> subjectNameList = new ArrayList<String>(); List<Integer> voteNumberList = new ArrayList<Integer>(); for(Subject subject:subjectList){ subjectNameList.add(subject.getName()); voteNumberList.add(subject.getVoteNumber()); } model.addObject("subjectNameList", JSONArray.fromObject(subjectNameList)); model.addObject("voteNumberList", JSONArray.fromObject(voteNumberList)); model.setViewName("admin/vote_stats/list"); return model; }
@RequestMapping(value="/get_subject_stats",method=RequestMethod.POST) @ResponseBody public Map<String,Object> list( @RequestParam(value="subjectName", required=false,defaultValue="") String subjectName ){ Map<String,Object> queryMap = new HashMap<String,Object>(); Map<String,Object> ret = new HashMap<String,Object>(); queryMap.put("name", "%" + subjectName + "%"); queryMap.put("startIndex", 0); queryMap.put("pageSize", 99); List<Subject> findByRelation = subjectService.findByRelation(queryMap); if(findByRelation == null || findByRelation.size() == 0){ ret.put("type", "error"); ret.put("msg", "未找到符合的投票主题!"); return ret; } Subject subject = findByRelation.get(0); List<String> subjectNameList = new ArrayList<String>(); List<Integer> voteNumberList = new ArrayList<Integer>(); for(SubjectItem subjectItem:subject.getSubjectItems()){ subjectNameList.add(subjectItem.getTitle()); voteNumberList.add(subjectItem.getVoteNumber()); } ret.put("type", "success"); ret.put("name", subject.getName());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| try { if(subjectService.delete("(" + id + ")") <= 0){ ret.put("type", "error"); ret.put("msg", "删除失败!"); return ret; } } catch (Exception e) { e.printStackTrace(); ret.put("type", "error"); ret.put("msg", "改主题下存在投票信息,无法删除,请先去删除投票选项!"); return ret; } ret.put("type", "success"); return ret; } @RequestMapping(value="/get_list",method=RequestMethod.GET) @ResponseBody public Map<String,Object> list(@RequestParam(value="name", required=false,defaultValue="") String name, Page page ){ Map<String,Object> queryMap = new HashMap<String,Object>(); queryMap.put("name", "%" + name + "%"); queryMap.put("startIndex", page.getOffset()); queryMap.put("pageSize", page.getRows()); List<Subject> findByName = subjectService.findByName(queryMap); Map<String,Object> ret = new HashMap<String,Object>(); ret.put("total", subjectService.getTotalByName(queryMap)); ret.put("rows", findByName); return ret; } } package com.demo.controller.admin;
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=202221452106103ai
https://javayms.pages.dev?id=202221452106103ai