0
点赞
收藏
分享

微信扫一扫

基于javaweb+SSM投票管理系统

钟罗敏 2022-03-31 阅读 50

开发工具:eclipse/idea/myeclipse/sts等均可配置运行

适用

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

	    			<td>结束时间:</td>
	    			<td><input id="add_end_time" style="width: 200px; height: 30px;" class="easyui-datetimebox" type="text" name="endTime"  data-options="required:true, missingMessage:'不能为空'" /></td>
	    		</tr>
	    		<tr>
	    			<td>主题介绍:</td>
	    			<td>
	    				<textarea id="info" name="info" style="width: 260px; height: 160px;" class="" ></textarea>
	    			</td>
	    		</tr>
	    	</table>
	    </form>
	</div>
	
	<!-- 编辑窗口 -->
	<div id="editDialog" style="padding: 10px">  
    	<form id="editForm" method="post">
    	<input type="hidden" id="edit-id" name="id">
	    	<table cellpadding="8" >
	    		<tr>
	    			<td>主题名称:</td>
	    			<td><input id="edit_name" style="width: 200px; height: 30px;" class="easyui-textbox" type="text" name="name"  data-options="required:true, missingMessage:'不能为空'" /></td>
	    		</tr>
	    		<tr>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe670;</i>
			<div class="name">购物车</div>
			<div class="code">&amp;#xe670;</div>
			<div class="fontclass">.Hui-iconfont-cart2-selected</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe672;</i>
			<div class="name">购物车满</div>
			<div class="code">&amp;#xe672;</div>
			<div class="fontclass">.Hui-iconfont-cart2-man</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe673;</i>
			<div class="name">购物车空</div>
			<div class="code">&amp;#xe673;</div>
			<div class="fontclass">.Hui-iconfont-card2-kong</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe6b8;</i>
			<div class="name">购物车-选中</div>
			<div class="code">&amp;#xe6b8;</div>
			<div class="fontclass">.Hui-iconfont-cart-selected</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe6b9;</i>
			<div class="name">购物车</div>
			<div class="code">&amp;#xe6b9;</div>
			vote.setCreateTime(new Date(System.currentTimeMillis()));
			if(voteService.add(vote) <= 0){
				ret.put("type", "error");
				ret.put("msg", "投票失败!");
				return ret;
			}
			if(subjectItemService.addOneVote(subjectItemId) <= 0){
				ret.put("type", "error");
				ret.put("msg", "投票子项修改失败!");
				return ret;
			}
			if(subjectService.addOneVote(subjectId) <= 0){
				ret.put("type", "error");
	}
	
	@RequestMapping(value="/reset_pwd",method=RequestMethod.POST)
	@ResponseBody
	public String resetPwd(String newPwd,Long id){
		User user = userService.findUserById(id);
		if(user == null)return "no";
		if(StringUtils.isEmpty(newPwd))return "no";
		user.setPassword(newPwd);
		if(userService.changePwd(user) <= 0)return "no";
			ret.put("msg", "添加失败!");
			return ret;
		}
		ret.put("type", "success");
		return ret;
	}
	
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Map<String,Object> edit(SubjectItem subjectItem){
			<div class="name">节日</div>
			<div class="code">&amp;#xe655;</div>
			<div class="fontclass">.Hui-iconfont-jieri</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe675;</i>
			<div class="name">排序</div>
			<div class="code">&amp;#xe675;</div>
			<div class="fontclass">.Hui-iconfont-paixu</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe624;</i>
			<div class="name">匿名</div>
		        {field:'status',title:'状态',width:150,formatter: function(value,row,index){
		        	switch(value){
		        		case 1:{
		        			return '正常';
		        		}
		        		case 0:{
		        			return '禁用';
		        		}
		        		default:{
		        			return '未知';
		        		}
	        		}
 		        }},
 		        {field:'createTime',title:'创建时间',width:150,formatter: function(value,row,index){
 		        	return formatterDate(value);
 		        }},
	 		]], 
	        toolbar: "#toolbar"
	    }); 
	<body>
		<h3>编辑器演示</h3>
		<ol>
			<li><a href="default.html" target="_blank">default.html</a> (默认模式)</li>
			<li><a href="simple.html" target="_blank">simple.html</a> (简单模式)</li>
			<li><a href="dynamic-load.html" target="_blank">dynamic-load.html</a> (异步加载)</li>
			<li><a href="multi-language.html" target="_blank">multi-language.html</a> (多语言)</li>
			<li><a href="readonly.html" target="_blank">readonly.html</a> (只读模式)</li>
			<li><a href="newline.html" target="_blank">newline.html</a> (回车换行设置)</li>
			<li><a href="word-count.html" target="_blank">word-count.html</a> (统计字数)</li>
			<li><a href="filter-mode.html" target="_blank">filter-mode.html</a> (关闭HTML过滤)</li>
			<li><a href="url-type.html" target="_blank">url-type.html</a> (URL设置)</li>
			<li><a href="paste-type.html" target="_blank">paste-type.html</a> (粘贴设置)</li>
			<li><a href="auto-height.html" target="_blank">auto-height.html</a> (自动调整高度)</li>
			<li><a href="custom-theme.html" target="_blank">custom-theme.html</a> (自定义风格)</li>
			<li><a href="qqstyle.html" target="_blank">qqstyle.html</a> (自定义风格 仿QQ邮箱)</li>
			<li><a href="custom-plugin.html" target="_blank">custom-plugin.html</a> (自定义插件)</li>
		</ol>
		<h3>使用其它类库</h3>
			String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
			hash.put("is_dir", false);
			hash.put("has_file", false);
			hash.put("filesize", file.length());
			hash.put("is_photo", Arrays.<String>asList(fileTypes).contains(fileExt));
			hash.put("filetype", fileExt);
		}
		hash.put("filename", fileName);
		hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
		fileList.add(hash);
	}
}
		<li> <i class="icon Hui-iconfont">&#xe6bb;</i>
			<div class="name">礼物</div>
			<div class="code">&amp;#xe6bb;</div>
			<div class="fontclass">.Hui-iconfont-liwu</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe6b6;</i>
			<div class="name">优惠券</div>
			<div class="code">&amp;#xe6b6;</div>
			<div class="fontclass">.Hui-iconfont-youhuiquan</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe6b7;</i>
			<div class="name">红包</div>
			<div class="code">&amp;#xe6b7;</div>
			<div class="fontclass">.Hui-iconfont-hongbao</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe6ca;</i>
			<div class="name">优惠券</div>
			<div class="code">&amp;#xe6ca;</div>
			<div class="fontclass">.Hui-iconfont-hongbao2</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe63a;</i>
			<div class="name">资金</div>
			<div class="code">&amp;#xe63a;</div>
			<div class="fontclass">.Hui-iconfont-money</div>
    						overlay : true,
    						ok : true,
    						onClosed : function() {
    							//location.reload();
    						}
    					});
    					
    					$this.children("span.btn-txt").text("您已投票");
    					$this.attr('voted','true');
    					$this.css({background:'#e6e6e6',color:'black'});
    					var label = caption.find("label.vote-label");
    					var total = parseInt(caption.find("span.total-span").text());
    					caption.find("span.total-span").text(total);
    					label.each(function(i,e){
    						var voteNum = $(e).attr('data-val');
    						$(e).children("span.item-title").text($(e).children("span.item-title").text() + '(' + voteNum + '):');
    						$(e).children("input.vote-item").remove();
    						var per = parseFloat(voteNum)/parseFloat(total) * 100;
    						$(e).children("span.item-per").css({width:per + "%",background:"#FFA500"});
					self.hideMenu();
				}
				self.clickToolbar(name, function() {
					var menu = self.createMenu({
						name : name,
						width : 150
					});
					menu.addItem({
						title : '红底白字',
						click : function() {
							click('red');
						}
					});
					menu.addItem({
						title : '绿底白字',
						click : function() {
							click('green');
						}
					});
					menu.addItem({
	    	collapsible: false,
	    	minimizable: false,
	    	maximizable: false,
	    	draggable: true,
	    	closed: true,
	    	buttons: [
	    		{
					text:'添加',
					plain: true,
					iconCls:'icon-add',
					handler:function(){
						var validate = $("#addForm").form("validate");
						if(!validate){
							$.messager.alert("消息提醒","请检查你输入的数据!","warning");
							return;
						} else{
							//var gradeid = $("#add_gradeList").combobox("getValue");
							$.ajax({
								type: "post",
								url: "add",
								data: $("#addForm").serialize(),
								dataType:"json",
		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());
		ret.put("subjectNameList", subjectNameList);
		ret.put("voteNumberList", voteNumberList);
		return ret;
	}
	
}
	  //修改按钮监听事件
	  	$("#edit-btn").click(function(){
	  		var selectRow = $("#dataList").datagrid("getSelected");
	    	//console.log(selectRow);
        	if(selectRow == null){
            	$.messager.alert("消息提醒", "请选择数据进行修改!", "warning");
            	return;
            }
        	$("#editDialog").dialog("open");
	  	});
	  
	  //设置编辑班级窗口
	    $("#editDialog").dialog({
	    	title: "编辑主题",
	    	width: 500,
	    	height: 500,
	    	iconCls: "icon-add",
	    	modal: true,
	    	collapsible: false,
	    	minimizable: false,
	    	maximizable: false,
			
		}
		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
			){
	</body>
</html>
<!doctype html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Custom Plugin Examples</title>
		<style>
			form {
				margin: 0;
			}
			textarea {
				display: block;
			}
			.ke-icon-example1 {
				background-image: url(../themes/default/default.gif);
				background-position: 0px -672px;
				width: 16px;
				height: 16px;
			}
			.ke-icon-example2 {
				background-image: url(../themes/default/default.gif);
	private VoteService voteService;
	
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public ModelAndView index(ModelAndView model){
		model.setViewName("admin/vote/list");
		return model;
	}
	
	@RequestMapping(value="/get_list",method=RequestMethod.GET)
	@ResponseBody
	public Map<String,Object> list(@RequestParam(value="username", required=false,defaultValue="") String username,
			@RequestParam(value="subjectName", required=false,defaultValue="") String subjectName,
			@RequestParam(value="subjectItemTitle", required=false,defaultValue="") String subjectItemTitle,
			Page page
			){
		Map<String,Object> queryMap = new HashMap<String,Object>();
		queryMap.put("username", "%" + username + "%");
		queryMap.put("subjectName", "%" + subjectName + "%");
			hash.put("is_dir", true);
			hash.put("has_file", (file.listFiles() != null));
			hash.put("filesize", 0L);
			hash.put("is_photo", false);
			hash.put("filetype", "");
		} else if(file.isFile()){
			String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
			hash.put("is_dir", false);
			hash.put("has_file", false);
			hash.put("filesize", file.length());
			hash.put("is_photo", Arrays.<String>asList(fileTypes).contains(fileExt));
			hash.put("filetype", fileExt);
		}
		hash.put("filename", fileName);
		hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
		fileList.add(hash);
	}
}

if ("size".equals(order)) {
	Collections.sort(fileList, new SizeComparator());
} else if ("type".equals(order)) {
	Collections.sort(fileList, new TypeComparator());
} else {
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/admin/vote_stats")
public class VoteStatsController {
	
	@Autowired
	private SubjectService subjectService;
	@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);
	  		});
	  	});
	  	
	  //修改按钮监听事件
	  	$("#edit-btn").click(function(){
	  		var selectRow = $("#dataList").datagrid("getSelected");
	    	//console.log(selectRow);
        	if(selectRow == null){
            	$.messager.alert("消息提醒", "请选择数据进行修改!", "warning");
            	return;
            }
        	$("#editDialog").dialog("open");
	  	});
	  
	  //设置编辑班级窗口
	    $("#editDialog").dialog({
	    	title: "编辑主题",
	    	width: 500,
	    	height: 500,
			<div class="code">&amp;#xe67c;</div>
			<div class="fontclass">.Hui-iconfont-share-douban</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe693;</i>
			<div class="name">朋友圈</div>
			<div class="code">&amp;#xe693;</div>
			<div class="fontclass">.Hui-iconfont-share-pengyouquan</div>
		</li>
		<li> <i class="icon Hui-iconfont">&#xe694;</i>
			<div class="name">微信</div>
			<div class="code">&amp;#xe694;</div>
					} else {
						cmd.wrap('<span class="' + value + '"></span>');
					}
					cmd.select();
					self.hideMenu();
				}
				self.clickToolbar(name, function() {
					var menu = self.createMenu({
						name : name,
						width : 150
					});
					menu.addItem({
						title : '红底白字',
						click : function() {
							click('red');
						}
					});
					menu.addItem({
						title : '绿底白字',
						click : function() {
							click('green');
						}
					});
	    }); 
	    //设置分页控件 
	    var p = $('#dataList').datagrid('getPager'); 
	    $(p).pagination({ 
	        pageSize: 10,//每页显示的记录条数,默认为10 
	        pageList: [10,20,30,50,100],//可以设置每页记录条数的列表 
	        beforePageText: '第',//页数文本框前显示的汉字 
	        afterPageText: '页    共 {pages} 页', 
	        displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录', 
	    });
	    //设置工具类按钮
	    $("#add").click(function(){
	    	$("#addDialog").dialog("open");
	    });
	    //删除
	    $("#delete").click(function(){
	    	var selectRow = $("#dataList").datagrid("getSelected");
	    	//console.log(selectRow);
        	if(selectRow == null){
 * 验证码生成器
 * 
 * @author llq
 */
public class CpachaUtil {
	
	/**
	 * 验证码来源
	 */
	final private char[] code = {
		'2', '3', '4', '5', '6', '7', '8', '9',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
		'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 
		'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F',
		'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R',

运行环境

Java≥8、Tomcat≥7.0、MySQL≥5.7

开发工具

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

技术框架

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

适用

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

功能说明

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

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

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

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

20220314234918

前台

20220314234614

20220314234655

20220314234707

20220314234810

20220314234819

20220314234832

后台

20220314234309

20220314234333

20220314234352

20220314234448

20220314234459


↖[获取源码方式]见左侧

举报

相关推荐

0 条评论