在线投票系统_jsp在线投票系统
在线投票系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“jsp在线投票系统”。
实验题目:在线投票系统
实验目的:综合运用Web开发技术开发一个在线投票系统,开发过程涵盖需求、设计、编码、测试等软件开发生命周期的各个阶段,通过这个项目的开发,使学生具备较强的Web开发能力,并培养学生的动手能力和解决实际问题的能力。
实验要求:项目包含网站前台和后台管理系统,涉及用户管理、投票管理、报表系统等功能。需要实现用户界面和业务逻辑,数据存储在数据库中。
主要代码:
javabean的设计: 1.值建一个值JavaBean用来封装存储表tb-temp中的投票选项信息,代码如下:
package com.yxq.valuebean;
public cla VoteSingle {
private String id;//存儲選項ID private String title;//存儲選項標題 private String num;//存儲選項所得票數 private String order;//存儲選項的排列序號
public String getId(){ } public void setId(String id){ } public String getNum(){ } public void setNum(String num){ } public String getOrder(){ } public void setOrder(String order){ } public String getTitle(){ this.order = order;return order;this.num = num;return num;this.id = id;return id;
} } return title;public void setTitle(String title){ } this.title = title;
同样建另一个值JavaBean用来封装存储表tb-vote中的信息:
package com.yxq.valuebean;
public cla TempSingle {
} private String id;//存儲投票用戶ID private String voteIp;//存儲投票用戶IP private long voteMSEL;//存儲毫秒數
private String voteTime;//存儲yyyy-MM-dd HH:mm:形式的時間
public long getVoteMSEL(){ } public void setVoteMSEL(long voteMSEL){ } public String getVoteTime(){ } public void setVoteTime(String voteTime){ } public String getId(){ } public void setId(String id){ } public String getVoteIp(){ } public void setVoteIp(String voteIp){ } this.voteIp = voteIp;return voteIp;this.id = id;return id;this.voteTime = voteTime;return voteTime;this.voteMSEL = voteMSEL;return voteMSEL;2.数据库操作类的编写: 定义属性及构造方法 package com.yxq.toolbean;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;
import com.yxq.valuebean.TempSingle;import com.yxq.valuebean.VoteSingle;
public cla DB { private String claName;//存儲數據庫驅動類路徑
private String url;//存儲數據庫URL
private String username;//存儲登陸數據庫的用戶名
private String paword;//存儲登陸數據庫的密碼
private Connection con;//聲明一個Connection對象
private Statement stm;//聲明一個Statement對象用來執行SQL語句
private ResultSet rs;//聲明一個ResultSet對象用來存儲結果集
public DB(){
//通過構造方法為屬性賦值
claName = “org.apache.derby.jdbc.ClientDriver”;
url = “jdbc:derby://localhost:1527/myeclipse”;
username = “claiccars”;
paword = “claiccars”;}
/**
* @功能 加载数据库驱动程序
*/ public void loadDrive(){
try {
Cla.forName(claName);
//加載數據庫驅動程序
} catch(ClaNotFoundException e){
System.out.println(“加载数据库驱动程序失败!”);
e.printStackTrace();
//向控制臺輸出提示信息
} }
/**获取数据库连接
* @功能
*/ public void getCon(){ loadDrive();//加載數據庫驅動程序
try {
con = DriverManager.getConnection(url, username, paword);//獲取連接
} catch(Exception e){
System.out.println(“连接数据库失败!”);
e.printStackTrace();} } /** * @功能 获取Statement对象
*/ public void getStm(){ getCon();//獲取數據庫連接
try {
stm = con.createStatement();//獲取Statement類對象
} catch(Exception e){
System.out.println(“获取Statement对象失败!”);
e.printStackTrace();} } /** * @功能 查询数据表,获取结果集
*/ public void getRs(String sql){ getStm();try {
rs = stm.executeQuery(sql);//執行SQL語句查詢數據表獲取結果集
} catch(Exception e){
System.out.println(“查询数据库失败!”);
e.printStackTrace();} } /** * @功能 查询数据表,获取投票选项
*/ public List selectVote(String sql){
} List votelist = null;if(sql!= null &&!sql.equals(“”)){ getRs(sql);//查詢數據表獲取結果集
if(rs!= null){
votelist = new ArrayList();
try {
while(rs.next()){//依次將結果集中的记录封装到VoteSingle类对象中
VoteSingle voteSingle = new VoteSingle();
voteSingle.setId(MyTools.intToStr(rs.getInt(1)));
voteSingle.setTitle(rs.getString(2));
voteSingle.setNum(MyTools.intToStr(rs.getInt(3)));
voteSingle.setOrder(MyTools.intToStr(rs.getInt(4)));
votelist.add(voteSingle);//将VoteSingle类对象存储到List集合中
}
} catch(Exception e){
System.out.println(“封装tb_vote表中数据失败!”);
e.printStackTrace();
} finally {
closed();
//关闭 数据库
} } } return votelist;/** * @功能 查询数据表,获取指定IP最后一次投票的记录
*/ public TempSingle selectTemp(String sql){ TempSingle tempSingle = null;if(sql!= null &&!sql.equals(“”)){
getRs(sql);//查询数据表获取结果集
if(rs!= null){
try {
while(rs.next()){//若该结果集中有记录,说明当前用户投过票
tempSingle = new TempSingle();
tempSingle.setId(MyTools.intToStr(rs.getInt(1)));
tempSingle.setVoteIp(rs.getString(2));
tempSingle.setVoteMSEL(rs.getLong(3));
tempSingle.setVoteTime(rs.getString(4));
}
} catch(Exception e){
System.out.println(“封装tb_temp表中数据失败!”);
e.printStackTrace();
} finally {
closed();
//关闭数据库
}
}
}
return tempSingle;//返回TempSingle类对象中
}
/**
* @功能 更新数据表,实现票数累加
*/ public int update(String sql){
int i =-1;
if(sql!= null &&!sql.equals(“”)){
getStm();//获取Statement类对象
try {
i = stm.executeUpdate(sql);//执行SQL语句更新数据表
} catch(Exception e){
System.out.println(“更新数据库失败!”);
e.printStackTrace();
} finally {
closed();
}
}
return i;} /**
* @功能 关闭数据库连接
*/ public void closed(){
try {
if(rs!= null)
rs.close();//关闭结果集
if(stm!= null)
stm.close();//关闭Statement类对象
if(con!= null)
con.close();//关闭数据库连接
} catch(Exception e){
System.out.println(“关闭数据库失败!”);
e.printStackTrace();
} } } 3.工具类的编写: package com.yxq.toolbean;
import java.text.SimpleDateFormat;import java.util.Date;
public cla MyTools { /** * @功能 将int型数据转换为String型数据
* @参数 num为要转换的int型数据
* @返回值 String类型
*/ public static String intToStr(int num){
return String.valueOf(num);} /** * @功能 比较时间。
* @参数 today当前时间,temp为上次投票时间。这两个参数都是以毫秒显示的时间
* @返回值 String类型
*/ public static String compareTime(long today,long temp){
int limitTime=60;
//设置限制时间为60分钟
long count=today-temp;
//计算当前时间与上次投票时间相差的毫秒数(该结果一定是大于等于0)
if(count
//如果相差小于等于60分钟(1分=60秒,1秒=1000毫秒)
return “no”;
else
//如果相差大于60分钟
return “yes”;} /** * @功能 格式化时间为指定格式。首先通过Date类的构造方法根据给出的毫秒数获取一个时间,然后将该时间转换为指定格式,如“年-月-日 时:分:秒” * @参数 ms为毫秒数
* @返回值 String类型
*/ public static String formatDate(long ms){
Date date=new Date(ms);
SimpleDateFormat format=new SimpleDateFormat(“yyyy-MM-dd HH:mm:”);
String strDate=format.format(date);
return strDate;} } 4.显示投票选项的设计: <%@ page contentType=“text/html;charset=UTF-8”%> <%@ page import=“java.util.List” %>
<%@ page import=“com.yxq.valuebean.VoteSingle” %>
<%
response.addHeader(“Pragma”,“No-cache”);response.addHeader(“Cache-Control”,“no-cache”);response.addDateHeader(“Expires”,1L);
String sql=“select * from app.tb_vote order by vote_order”;//生成查询投票选项的SQL语句
List votelist=myDb.selectVote(sql);//查询数据表获取所有投票选项 %>
在线投票
background=“images/voteT.jpg”>
<% if(votelist==null||votelist.size()==0){ %> 没有选项可显示!
<% } else{ %>
<%
int i=0;while(i
%>
style=“text-indent:7”><%=single.getTitle()%> “>
<%
i++;} //while结束
%>
票!
<%
} //else结束
%>
style=”background-image:url(images/submitB.jpg);width:68;height:26;border:0“>
style=”background-image:url(images/resetB.jpg);width:68;height:26;border:0“>
&nb

注意事项:
1小时内只能投一次
VoteSingle single=(VoteSingle)votelist.get(i);
sp;

