JSP投票管理系统
JSP投票管理系统概述
(1)投票用户:浏览投票系统栏目,参与投票,并实时查投票结果
(2)投票系统后台:新增投票:可以选择投票频道(足球、篮球等等)、输入投票名称,输入选项名称,管理员可自由设置选项多少;投票管理:可以删除投票任务;新增频道:为了符合众多用户的选择,可以根据自己需求添加新的频道。
代码链接:https://pan.baidu.com/s/1F7dEBfny5aAU_AKpLpwCiA
提取码:3pxo
代码截图
选民界面
新增投票
投票管理
新增频道
核心代码
数据库链接代码
package com.sanqing.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBConnection {
private static final String DBDRIVER = "com.mysql.jdbc.Driver" ; //驱动类类名
private static final String DBURL = "jdbc:mysql://localhost:3306/db_votemanage";//连接URL
private static final String DBUSER = "root" ; //数据库用户名
private static final String DBPASSWORD = "123456"; //数据库密码
public static Connection getConnection(){
Connection conn = null; //声明一个连接对象
try {
Class.forName(DBDRIVER); //注册驱动
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); //获得连接对象
} catch (ClassNotFoundException e) { //捕获驱动类无法找到异常
e.printStackTrace();
} catch (SQLException e) { //捕获SQL异常
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn) {//关闭连接对象
if(conn != null) { //如果conn连接对象不为空
try {
conn.close(); //关闭conn连接对象对象
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement pstmt) {//关闭预处理对象
if(pstmt != null) { //如果pstmt预处理对象不为空
try {
pstmt.close(); //关闭pstmt预处理对象
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs) {//关闭结果集对象
if(rs != null) { //如果rs结果集对象不为null
try {
rs.close(); //关闭rs结果集对象
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
用户界面:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>体育赛事投票系统</title>
<LINK HREF="style.css" TYPE="text/css" REL="stylesheet">
<style type="text/css">
<!--
.STYLE14 {color: #FF0000}
.STYLE15 {font-family: tahoma; font-size: 11px;}
.STYLE17 {color: #003300}
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
<td width="642" align="left" valign="top"><table width="642" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="37" align="left" valign="top" background="images/menu.jpg">
<!--导航栏-->
<div style="padding-left:42px; padding-top:10px">
<a href="showVoteByChannel.action?channelID=1" class="style2" style="text-decoration:none ">NBA</a>
<img src="images/spacer.gif" width="74" height="1">
<a href="showVoteByChannel.action?channelID=2" class="style2" style="text-decoration:none ">CBA</a>
<img src="images/spacer.gif" width="55" height="1">
<a href="showVoteByChannel.action?channelID=3" class="style2" style="text-decoration:none ">足球世界杯</a>
<img src="images/spacer.gif" width="33" height="1">
<a href="showVoteByChannel.action?channelID=4" class="style2" style="text-decoration:none ">中超</a>
<img src="images/spacer.gif" width="68" height="1">
<a href="showVoteByChannel.action?channelID=5" class="style2" style="text-decoration:none ">英超</a>
<img src="images/spacer.gif" width="64" height="1">
<a href="showVoteByChannel.action?channelID=6" class="style2" style="text-decoration:none ">F1</a>
</div>
</td>
</tr>
<tr>
<td align="left" valign="top"><table width="642" border="0" cellspacing="0" cellpadding="0">
<tr align="left" valign="top">
<td width="427" height="100%" align="right"><table width="426" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top"><table width="426" border="0" cellpadding="0" cellspacing="0" background="images/line_1.jpg">
<tr>
<td height="22" align="left" valign="middle" background="images/kattle_1.jpg" class="style2"> 最新投票</td>
</tr>
<tr>
<td height="518" align="left" valign="top"><div style="padding-left:18px; padding-top:16px; padding-bottom:20px">
<s:actionerror/>
<s:iterator value="#request.voteResultList" var="voteResult">
<p class="style2">${voteResult.vote.voteName}</p>
<form action="doVote.action" method="post">
<p class="style2">
<s:iterator value="#voteResult.voteOptions" var="voteOption">
<input type="radio" name="voteOptionID" value="${voteOption.voteOptionID}">${voteOption.voteOptionName}<br>
</s:iterator>
<input type="radio" name="voteOptionID" value="0">其它<br>
<input type="text" name="otherOption">
<input type="hidden" name="voteID" value="${voteResult.vote.voteID}">
<input type="hidden" name="channelID" value="${voteResult.vote.channelID}">
<a href="voteResult?voteID=${voteResult.vote.voteID}">查看投票结果</a>
</p>
<p>
<input type="submit" value="投票">
<input type="reset" value="重置">
</p>
</form>
</s:iterator>
<s:if test="#request.voteResultList.size == 0">
没有任何投票内容!
</s:if>
</div>
<div align="center" style="font-size: 12px">
<s:if test="#request.page.hasPrePage">
<a href="showVoteByChannel?channelID=${channelID}&¤tPage=1">首页</a> |
<a href="showVoteByChannel?channelID=${channelID}&¤tPage=${page.currentPage -1 }">上一页</a>
</s:if>
<s:else>
首页 | 上一页
</s:else>
<s:if test="#request.page.hasNextPage">
<a href="showVoteByChannel?channelID=${channelID}&¤tPage=${page.currentPage + 1 }">下一页</a> |
<a href="showVoteByChannel?channelID=${channelID}&¤tPage=${page.totalPage }">尾页</a>
</s:if>
<s:else>
下一页 | 尾页
</s:else>
</div>
</td>
</tr>
<tr>
<td align="left" valign="top"><img src="images/kettle_2.jpg" width="426" height="2"></td>
</tr>
</table></td>
</tr>
</table></td>
<td width="215" height="100%" align="right"><table width="203" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top"><table width="203" height="613" border="0" cellpadding="0" cellspacing="0" background="images/line_3.jpg">
<tr>
<td height="22" align="left" valign="middle" background="images/kettle_5.jpg" class="style9 STYLE14"> <span class="STYLE15"> <span class="STYLE17">热门投票</span></span></td>
</tr>
<tr>
<td align="left" valign="top"><div style="padding-left:19px; padding-top:14px; padding-bottom:10px"></div>
<ol>
<li class="style7">你最喜欢的NBA球员</li>
<li class="style7">你最喜欢的NBA中锋</li>
</ol></td>
</tr>
<tr>
<td height="2" align="left" valign="top"><img src="images/bot_1.jpg" width="203" height="2"></td>
</tr>
</table></td>
</tr>
<tr>
<td height="11" align="left" valign="top"><img src="images/spacer.gif" width="1" height="11"></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td height="12" align="left" valign="top"><img src="images/spacer.gif" width="1" height="12"></td>
</tr>
<tr>
<td align="left" valign="top" background="images/rep_1.jpg" style="background-repeat:repeat-x; background-position:top left "><div align="center" style="padding-top:14px"></div>
<div style="padding-left:5px; padding-top:3px">
<div align="center" class="style8">体育赛事投票系统 ©2009-2010 </div>
</div></td>
</tr>
</table></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td width="642" align="left" valign="top"> </td>
<td> </td>
</tr>
</table>
</body>
</html>
新增投票界面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>新增投票</title>
<script type="text/javascript" language="javascript">
var i = 4;
function addVoteOption(){
var voteP = document.getElementById("voteOptionList");
var inputText = document.createTextNode("选项" + (i++) +"名称:");
voteP.appendChild(inputText);
var inputP = document.createElement("input");
inputP.type="text";
inputP.name="voteOption";
voteP.appendChild(inputP);
var brP = document.createElement("<br>");
voteP.appendChild(brP);
}
</script>
</head>
<body>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="30"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="30"><img src="images/tab_03.gif" width="15" height="30" /></td>
<td width="1101" background="images/tab_05.gif"><img src="images/311.gif" width="16" height="16" /> <span style="font-size: 12px">新增投票</span></td>
<td width="281" background="images/tab_05.gif"></td>
<td width="14"><img src="images/tab_07.gif" width="14" height="30" /></td>
</tr>
</table></td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="9" background="images/tab_12.gif"> </td>
<td bgcolor="#f3ffe3">
<div style="padding-left: 100px;padding-top: 10px;font-size: 12px">
<form action="addVote.action" method="post" name="addForm">
<!-- edit by damonbian -->
<!--
选择投票频道:<select name="channel">
<option value="1">NBA</option>
<option value="2">CBA</option>
<option value="3">足球世界杯</option>
<option value="4">中超</option>
<option value="5">英超</option>
<option value="6">F1</option>
</select><br/>
-->
选择投票频道:<select name="channel">
<s:iterator value="#request.channels" var="channel">
<option value="${channel.channelID }">${channel.channelName }</option>
</s:iterator>
</select><br/>
请输入投票名称:<input type="text" name="voteName"/><br/>
<div id="voteOptionList">
选项1名称:<input type="text" name="voteOption"/><br/>
选项2名称:<input type="text" name="voteOption"/><br/>
选项3名称:<input type="text" name="voteOption"/><br/>
</div>
<input type="button" value="新增投票选项" onclick="addVoteOption()"/>
<input type="submit" value="发布"/>
<input type="reset" value="重置"/>
</form>
</div>
</td>
<td width="9" background="images/tab_16.gif"> </td>
</tr>
</table></td>
</tr>
<tr>
<td height="29"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="29"><img src="images/tab_20.gif" width="15" height="29" /></td>
<td background="images/tab_21.gif"> </td>
<td width="14"><img src="images/tab_22.gif" width="14" height="29" /></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>