基于javaweb的SSM投票管理系统(java+jsp+ssm+javabean+mysql+tomcat)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

投票管理系统,分为前端和后台管理模块

前端用户可以登录注册、查看投票信息,登录后可以进行投票,也可以查看自己的历史投票记录

后台管理模块管理员登录后可以管理用户信息、管理投票主题和子项、查看投票详情、查看投票图表统计信息等

目前投票方式支持单选只能投一次、单选一天只能投一次、多选只能投一次、多选一天只能投一次等四种方式,投票主题可以设置开始和结束时间,结束后不能再进行投票

070123172502

080123172502

前台

010123172502

020123172502

030123172502

040123172502

050123172502

060123172502

后台

550123162502

560123162502

570123162502

580123162502

000123172502

技术框架

JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL EasyUI jQuery Ajax

基于javaweb的SSM投票管理系统(java+jsp+ssm+javabean+mysql+tomcat)

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) {
// TODO: handle exception
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;




项目链接:
https://javayms.github.io?id=202221452106103ai
https://javayms.pages.dev?id=202221452106103ai