
投票表决系统
-
2023年3月6日发(作者:你曾是少年歌词)在线投票系统详细设计
文档下载站更多资源下载
本站所有资源均来自互联网或本站会员提供,如有侵犯您的版权或其他问题,请通知管理员,我们会在最
短的时间回复您!
第1部分概述
在线投票系统主要用来统计网站用户对某
个主题或热门话题的意见。决策者通过这些统计
数据做出相应的决策。在线投票系统是一般网站
必备的程序之一,如果网站开发者想了解用户对
该网站的意见和建议。他可以设计这样一个投票
主题:你认为该网站如何?(A.很好
B.一般C.不好)然后提供给用户进行投票。
我的投票系统具有极大的灵活性,投票类型分
为单选投票和多选投票。管理员可以在线设计不
同的投票主题供用户进行投票。
对于该设计报告还有什么不当之处请见谅,
文档下载站更多资源下载
本站所有资源均来自互联网或本站会员提供,如有侵犯您的版权或其他问题,请通知管理员,我们会在最
短的时间回复您!
文档下载站更多资源下载
本站所有资源均来自互联网或本站会员提供,如有侵犯您的版权或其他问题,请通知管理员,我们会在最
短的时间回复您!
文档下载站更多资源下载
本站所有资源均来自互联网或本站会员提供,如有侵犯您的版权或其他问题,请通知管理员,我们会在最
短的时间回复您!
第2部分分析部分
2.1.功能需求
通过对用户的需求调查分析,可以概括出用
户的功能需求如下:单选投票、多选投票、查看
投票、投票设计。
单选投票:用户只能从多个选项中选取一项进
行投票。
多选投票:用户可以从多个选项中选取多项进
行投票。
查看投票:提供用户查看当前投票情况,投票
结果以条形图显示。
投票设计:管理员可以设计不同的投票主题,
及投票主题的内容供用户进行投票。投票
设计又包括以下功能需求:增加
主题、删除主题、查看主题、修改主题。
第3部分系统设计
3.1.功能模块设计
通过对功能需求进行分析和概括得到如图
所示的系统功能模块图:
系统的功能模块图
在线投票系统
单
选
投
票
显
示
投
票
表
单
返
回
投
票
结
果
多
选
投
票
显
示
投
票
表
单
返
回
投
票
结
果
查
看
投
票
返
回
投
票
结
果
增
加
主
题
删
除
主
题
查
看
主
题
修
改
主
题
投
票
设
计
3.2.数据库的设计
该系统的数据库采用MySQL,根据投票系
统功能设计的要求,可以列出以下数据项和数据
结构:
投票表:存放投票信息,数据项包括:序号、
标识、选项类型、投票主题、投票选项内容、
得票数。
第4部分系统开发
4.1.数据库
4.1.1.创建数据库
CREATEDATABASEdb70019618;
4.1.2.创建表
创建数据库中用到的投票表:
CREATETABLEvote
(
idINTNOTNULL
AUTO_INCREMENT,
flagint,
optTypeint,
questionCHAR(255),
optContentCHAR(255),
numberINT,
PRIMARYKEY(id),
);
数据库创建后的结构图如下:
4.1.3.连接数据库
该系统使用了MySQL的JDBC驱动程序来
连接数据库。因为对数据库的访问,在整个系统
中比较频繁,所以我将对数据库的操作写成一个
DBConnect的类,通过该类来连接数据库和访问
数据库。
//部分代码如下
publicDBConnect(){
try{
//加载数据库驱动程序
e(sDBDriver);
//建立连接
conn=nection(sConnStr);
}
catch(Exceptione){
n("DBConnect():"+sage());
}
}
4.2.功能的实现
投票流程图:
开始
显示投票表单
是否取得参数
否
是
取得投票的参数
将结果写入数据
库
显示投票结果
结束
累加投票数
该流程图已经包含了在线投票系统的制作
的主要方法。下面的工作实际上就是按照该流程
图,写出具体的代码。在附录2设计代码中有
我开发的代码,并附有注释。所以在这里我就不
展开介绍每一个功能的开发过程。
4.3.问题及解决
这部分应该写在开发中遇到了哪些问题,如
何解决等。
第5部分运行部分
5.1.系统的安装
该系统我在
j2sdk1.4.1_01+resin-2.1.9+MySQL-4.0.12-nt
环境下测试通过:
安装步骤:
该系统需要JSP运行环境和MySQL数据库,
如果服务器还没有搭建的话请先搭建。
1.把vote、WEB-INF(vote文件夹存放的
是.jsp文件,WEB-INF存放的是该系统使用到的
一些.class文件)文件夹上传到你的主机目录。
2.修改里连接MySQL数据
库的IP、用户名和密码为你自己的IP,user,
password修改编译之后放到WEB-INFclasses
目录下面。
3.请创建数据库db70019517,然后使用
mysqldb70019517<脚本创建该数据库
使用到的表。(脚本存放的路径)
4.然后在浏览器输入URL:
(例如这是我的运行方法:
127.0.0.1:8080/vote/)。
5.2.系统的使用
为了直观,在这里我将主要通过程序运行截
图来介绍该投票系统的使用。
在浏览器地址栏里输入在线投票系统的URL
后,将进入在线投票系统的首页。在首页中显示
了该系统的操作。
在首页中点击你所要进行的操作,即可打开相
应的页面。如点击“单选投票”链接即可打开单
选投票页面。
在首页中点击“多选投票“链接,打开多选投
票页面。
在首页中点击“在线投票“链接后,可以查看
在线投票的结果。
在首页中点击“投票设计“链接后,即可打开
投票设计中的”增加主题“,同时你会看到投票
设计中的其它几项功能:删除主题、查看主题、
修改主题、返回首页。增加主题的方法如下图所
示:
在投票设计中点击“删除主题“链接后,即可
打开删除主题页面。如果你要删除某个主题以及
其选项,只需在文本框中输入其ID号即可。(如
果你不知道待删除主题的ID号你可以首先点
击”查看主题“查看其ID号。
在投票设计中点击“查看主题“链接后,即可
打开查看主题页面。
在投票设计中点击“修改主题“链接后,即可
打开修改主题页面。如果你要修改某个主题以及
其选项,只需在文本框中输入其主题名即可。(如
果你不知道待修改主题的主题名你可以首先点
击”查看主题“查看其主题名并复制主题名,然
后将其粘贴到修改主题名的文本框中,点查询即
可打开相应的主题及其选项。
第6部分附录
附录1运行环境
1.1硬件要求
CPU使用586或更高级别的处理器
内存64MB及其以上
硬盘500MB以上(根据不同的服务器要求
不同)
其他计算
机设备
网卡等联网设备
1.2.软件要求
要使用JSP,在服务器端和客户端都必须有
对应的运行环境。服务器主要是Servlet兼容的
Web服务器,客户端主要是浏览器。
由于Java具有跨平台的特点,所以只要能
够安装JDK,就能在此安装JSP服务器。JSP服
务器能够运行在目前绝大多数的操作系统上,目
前在普通用户中用到的系统绝大多数为Windows
系列和UNIX系列。
附录2设计代码
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport=".*"%>
在线投票
单选投票
<%
Stringsql="select*fromvotewhereflag=0andoptType=0orderbyiddesc";
ResultSetrs=eQuery(sql);
intquestionNum=0,optType,id,id1;
Stringquestion,str,optContent,type;
while(()){
//输出投票的主题
questionNum++;
str="主题"+questionNum+":";
question=ing("question");
optType=("optType");
id=("id");
(str+question+"");
ResultSetrs1;
sql="select*fromvotewhereflag="+id;
rs1=eQuery(sql);
("");
//输出该主题的选项
while(()){
id1=("id");
optContent=ing("optContent");
if(optType==0)
type="radio";
else{
type="checkbox";
}
%>
"name="vote"value="<%=id1%>">
<%=optContent%>
<%}%>
<%}%>
<%();%>
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport=".*"%>
投票结果
单选投票结果
<%
Stringsql="select*fromvoteorderbyid";
ResultSetrs=eQuery(sql);
Stringid;
id=ameter("vote");
sql="updatevotesetnumber=number+1whereid="+id;
eQuery(sql);
ResultSetrs1,rstotal;
intquestionNum=0,optType,id1,number,total=0;
Stringquestion,str,optContent;
sql="select*fromvotewhereflag=0andoptType=0orderbyiddesc";
rs=eQuery(sql);
while(()){
questionNum++;
str="主题"+questionNum+":";
question=ing("question");
optType=("optType");
id=ng(("id"));
(str+question+"");
sql="select*fromvotewhereflag="+id;
rstotal=eQuery(sql);
//求得投票的总数
while(()){
number=("number");
total+=number;
}
sql="select*fromvotewhereflag="+id;
rs1=eQuery(sql);
("");
//输出各选项的得票数
while(()){
id1=("id");
optContent=ing("optContent");
number=("number");
%>
<%=optContent%>得票数:<%=number%>
"height=10>
<%}%>
<%}%>
返回主页
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport=".*"%>
<%
Stringquestion=ameter("question");
if(question==null){
question="";
}
Stringtype=ameter("type");
intnum=0,optType=0;
try{
num=nt(ameter("num"));
}
catch(Exceptione){}
%>
增加主题
增加主题
增加主题||删除主题||
href="">查看主题
||修改主题||返回首页
请输入主题名:
">
<% if(type!=null){ ("checked"); optType=1; } else{ optType=0; } %> >多选请输入选项的数目: "> <% Stringsubmit=ameter("sumbit"); if(submit!=null){ for(inti=1;i<=num;i++){ %> 选项<%=i%>: "value=""size="50"> <%}%> <%}%> <% Stringsubmit1=ameter("submit1"),str="",optContent,sql; intid; if(submit1!=null){ sql="insertintovote(flag,optType,question) values(0,"+optType+",'"+question+"')"; eUpdate(sql); sql="select*fromvoteorderbyiddesc"; ResultSetrs=eQuery(sql); id=(1); for(inti=1;i<=num;i++){ str=ng(i); optContent=ameter(str); sql="insertintovote(flag,optContent,number) values("+id+",'"+optContent+"',0)"; eUpdate(sql); } ("成功插入主题!"); } %> <%@pagecontentType="text/html;charset=gb2312"%> <% Stringid=ameter("id"); Stringsql="deletefromvotewhereid="+id; if(id!=null){ if(eUpdate(sql)){ ("删除记录成功。"); } } %> 删除主题 删除主题 增加主题||删除主题|| href="">查看主题 ||修改主题||返回首页 请输入删除的序号(ID): <%@pagecontentType="text/html;charset=gb2312"%> <%@pageimport=".*"%> 查看主题 查看主题 增加主题||删除主题|| href="">查看主题 ||修改主题||返回首页 <% Stringsql="select*fromvote"; ResultSetrs=eQuery(sql); %>序号 标识 投票主题 投票选项 得票数
<%
while(()){
n("
n("
n("
n("
n("
n("
n("
}
%>
<%();%>
<%@page
contentType="text/html;charset=gb2312"%>
<%@pageimport=".*"%>
class="ect"/> 修改主题 content="text/html;charset=gb2312"> type="text/css"> 修改主题 增加主题|| href="">删除主题|| href="">查看主题 ||修改主题|| href="">返回首页 请输入您所要修改的主题名: size="50"> value="查询"> <% Stringsubmit,sql; intid; submit=ameter("submit"); if(submit!=null){ Stringsql_s=ameter("sql"); ResultSetrs,rs1; inti=0; if(sql_s!=null){ sql="select*fromvotewherequestion ='"+sql_s+"'"; rs=eQuery(sql); id=("id"); %> method="post"> name="id"value="<%=id%>"> type="text" value="<%=ing("question")%>" size="50"maxlength="50"> <% sql="select*fromvotewhereflag="+id; rs1=eQuery(sql); while(()){ %> name="optContent<%=i%>"size="100" value="<%=ing("optContent")%> "> name="id<%=i%>" value="<%=("id")%>"> <%i++;}%> name="count"value="<%=i%>"> <% inttype=("optType"); Strings_type=""; if(type==1){ s_type="checked"; } %> value="1"<%=s_type%>> name="submit1"value="更新"> <%} } Stringsubmit1; submit1=ameter("submit1"); if(submit1!=null){ int count=nt(ameter("c ount")); int flag=nt(ameter("id ")); StringoptType,optType1; optType=ameter("multiple"); if(optType==null) optType1="0"; else{ optType1="1"; } String question=ameter("question"); sql="updatevotesetquestion='"+question +"',optType="+optType1+"where id="+flag; if(eUpdate(sql))("更 新主题成功!"); StringoptContent,optContent1,id1; for(inti=0;i optContent1="optContent"+i; id1="id"+i; id=nt(ameter(id1)); optContent=ameter(optContent1) ; sql="updatevoteset optContent='"+optContent+"'whereid="+id; eUpdate(sql); } } %> packagevote; .*; publicclassDBConnect{ //设置连接数据库的参数 privateStringuser="s70019618"; privateStringpassword="s7001618"; //MySQL的JDBC驱动程序 StringsDBDriver= ""; //连接数据库 StringsConnStr= "jdbc:mysql://localhost:3306/db70019618?user &password"; Connectionconn=null; Statementstmt=null; ResultSetrs=null; publicDBConnect(){ try{ //加载数据库驱动程序 e(sDBDriver); //建立连接 conn= nection(sConnStr); } catch(Exceptione){ n("DBConnect():"+ sage()); } } //查询 publicResultSetexecuteQuery(Stringsql){ try{ stmt=Statement(); rs=eQuery(sql); } catch(SQLExceptionex){ n("eQuery:" +sage()); } returnrs; } //更新 publicbooleanexecuteUpdate(Stringsql){ try{ stmt=Statement(); eUpdate(sql); returntrue; }catch(SQLExceptionex){ n("eUpdate:" +sage()); returnfalse; } } //关闭数据库的连接 publicvoidclose()throwsException{ (); (); } }题目 选项 是否多选