在线投票系统详细设计.docx
- 文档编号:7196417
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:10
- 大小:19.13KB
在线投票系统详细设计.docx
《在线投票系统详细设计.docx》由会员分享,可在线阅读,更多相关《在线投票系统详细设计.docx(10页珍藏版)》请在冰豆网上搜索。
在线投票系统详细设计
在线投票系统详细设计
第1部分概述
在线投票系统主要用来统计网站用户对某个主题或热门话题的意见。
决策者通过这些统计数据做出相应的决策。
在线投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议。
他可以设计这样一个投票主题:
你认为该网站如何?
(A.很好B.一般C.不好)然后提供给用户进行投票。
我的投票系统具有极大的灵活性,投票类型分为单选投票和多选投票。
管理员可以在线设计不同的投票主题供用户进行投票。
对于该设计报告还有什么不当之处请见谅,同时也希望你能多提宝贵意见。
我会认真参考您的意见,修改和完善该系统。
术语列表:
JSP:
(JavaServerPages),JSP是一种基于Java的技术,用来产生跨平台和跨Web服务器的动态页面。
JDBC:
(JavaDataBaseConnectivity),Java数据库连接。
它主要是一套让你访问数据库的API,程序人员可以利用JDBCAPI来执行SQL语句。
Servlet:
Servlet可以称之为“服务器小程序”,与Javaapplication不同,它没有main方法,而是用一些特定的方法用于启动、执行和退出。
通过使用Servlet,可以与运行与客户端的Applet进行交互,也可以直接与HTML页进行交互。
JavaBeans:
JavaBeans是可复用的平台中立的软件组件,可以在软件开发工具中被直观地操作。
应用程序开发者可以通过支持JavaBeans的开发工具,直接使用现成的JavaBeans,也可以在开发工具容器中,对组件进行必要的修改、测试而不必编写和编译程序。
在Java模型中,组件可以修改或与其他组件组合以生成新组件或完整的应用程序。
HTML:
(HypertextMarkupLanguage)超文本标记语言,它是组织多媒体文档的重要语言,它不仅用来编写Web网页,而且可以使用它来制作光盘上的多媒体节目。
HTML可用来编排文档、创建列表、建立链接等等。
XML:
(eXtensibleMarkupLanguage)可扩展标记语言,它是一种具有数据描述功能(Meta-language)、高度结构性及可验证性的语言。
SQL:
(StructuredQueryLanguage),结构化查询语言。
SQL语言地任务就是与各种数据库建立关系,SQL语言是关系型数据库的标准语言,大多数关系型数据库管理系统都支持SQL语言并采用了SQL的语言标准。
MySQL:
MySQL是一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统。
按照使用又可以分为DML(DataManipulationLanguage),即数据操作语言和DDL(DataDefinitionLanguage)。
第2部分分析部分
2.1.功能需求
通过对用户的需求调查分析,可以概括出用户的功能需求如下:
单选投票、多选投票、查看投票、投票设计。
◆单选投票:
用户只能从多个选项中选取一项进行投票。
◆多选投票:
用户可以从多个选项中选取多项进行投票。
◆查看投票:
提供用户查看当前投票情况,投票结果以条形图显示。
◆投票设计:
管理员可以设计不同的投票主题,及投票主题的内容供用户进行投票。
投票
设计又包括以下功能需求:
增加主题、删除主题、查看主题、修改主题。
第3部分系统设计
3.1.功能模块设计
通过对功能需求进行分析和概括得到如图所示的系统功能模块图:
3.2.数据库的设计
该系统的数据库采用MySQL,根据投票系统功能设计的要求,可以列出以下数据项和数据结构:
投票表:
存放投票信息,数据项包括:
序号、标识、选项类型、投票主题、投票选项内
容、得票数。
第4部分系统开发
4.1.数据库4.1.1.创建数据库
CREATEDATABASEdb70019618;
4.1.2.创建表
创建数据库中用到的投票表:
CREATETABLEvote(
idINTNOTNULLAUTO_INCREMENT,flagint,optTypeint,
questionCHAR(255),optContentCHAR(255),numberINT,
PRIMARYKEY(id),);
数据库创建后的结构图如下:
4.1.3.连接数据库
该系统使用了MySQL的JDBC驱动程序来连接数据库。
因为对数据库的访问,在整个系统中比较频繁,所以我将对数据库的操作写成一个DBConnect的类,通过该类来连接数据库和访问数据库。
//部分代码如下
publicDBConnect(){try{
//加载数据库驱动程序
Class.forName(sDBDriver);//建立连接
conn=DriverManager.getConnection(sConnStr);catch(Exceptione){}
System.out.println("DBConnect():
"+e.getMessage());}}
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.修改DBConnect.java里连接MySQL数据库的IP、用户名和密码为你自己的IP,user,password修改编译之后放到WEB-INF\classes\目录下面。
3.请创建数据库db70019517,然后使用mysqldb70019517
4.然后在浏览器输入URL:
(例如这是我的运行方法:
http:
//127.0.0.1:
8080/vote/index.jsp)。
5.2.系统的使用
为了直观,在这里我将主要通过程序运行截图来介绍该投票系统的使用。
☞在浏览器地址栏里输入在线投票系统的URL后,将进入在线投票系统的首页。
在首页
中显示了该系统的操作。
☞在首页中点击你所要进行的操作,即可打开相应的页面。
如点击“单选投票”链接即可
打开单选投票页面。
☞在首页中点击“多选投票“链接,打开多选投票页面。
☞在首页中点击“在线投票“链接后,可以查看在线投票的结果
。
☞在首页中点击“投票设计“链接后,即可打开投票设计中的”增加主题“,同时你会看
到投票设计中的其它几项功能:
删除主题、查看主题、修改主题、返回首页。
增加主题的方法如下图所示:
☞在投票设计中点击“删除主题“链接后,即可打开删除主题页面。
如果你要删除某个主
题以及其选项,只需在文本框中输入其ID号即可。
(如果你不知道待删除主题的ID号你可以首先点击”查看主题“查看其ID号。
☞在投票设计中点击“查看主题“链接后,即可打开查看主题页面。
☞在投票设计中点击“修改主题“链接后,即可打开修改主题页面。
如果你要修改某个主
题以及其选项,只需在文本框中输入其主题名即可。
(如果你不知道待修改主题的主题名你可以首先点击”查看主题“查看其主题名并复制主题名,然后将其粘贴到修改主题名的文本
框中,点查询即可打开相应的主题及其选项。
第6部分附录
附录1运行环境1.1硬件要求
1.2.软件要求
要使用JSP,在服务器端和客户端都必须有对应的运行环境。
服务器主要是Servlet兼容的Web服务器,客户端主要是浏览器。
由于Java具有跨平台的特点,所以只要能够安装JDK,就能在此安装JSP服务器。
JSP服务器能够运行在目前绝大多数的操作系统上,目前在普通用户中用到的系统绝大多数为Windows系列和UNIX系列。
附录2设计代码1.vote.jsp
在线投票
2.result.jsp
投票结果
ResultSetrs=dbBean.executeQuery(sql);
Stringid;
id=request.getParameter("vote");
sql="updatevotesetnumber=number+1whereid="+id;
dbBean.executeQuery(sql);
ResultSetrs1,rstotal;
intquestionNum=0,optType,id1,number,total=0;
Stringquestion,str,optContent;
sql="select*fromvotewhereflag=0andoptType=0orderbyiddesc";rs=dbBean.executeQuery(sql);
while(rs.next()){
questionNum++;
str="主题"+questionNum+":
";
question=rs.getString("question");
optType=rs.getInt("optType");
%>
得票数:
"height=10>
id=Integer.toString(rs.getInt("id"));sql="select*fromvotewhereflag="+id;rstotal=dbBean.executeQuery(sql);//求得投票的总数while(rstotal.next()){number=rstotal.getInt("number");total+=number;}sql="select*fromvotewhereflag="+id;rs1=dbBean.executeQuery(sql);out.print("
Stringquestion=request.getParameter("question");
if(question==null){
question="";
}
Stringtype=request.getParameter("type");
intnum=0,optType=0;
try{
num=Integer.parseInt(request.getParameter("num"));
}
catch(Exceptione){}
%>
增加主题
||修改主题||返回首页
if(submit1!
=null){
sql="insert
intovote(flag,optType,question)values(0,"+optType+",'"+question+"')";dbBean.executeUpdate(sql);sql="select*fromvoteorderbyiddesc";ResultSetrs=dbBean.executeQuery(sql);id=rs.getInt
(1);for(inti=1;i
}
out.print("成功插入主题!
");
}
%>
4.del.jsp
Stringid=request.getParameter("id");
Stringsql="deletefromvotewhereid="+id;
if(id!
=null){
if(dbBean.executeUpdate(sql)){
}
%>
删除主题
out.print("删除记录成功。
");}
||修改主题||返回首页
查看主题
||修改主题||返回首页
ResultSetrs=dbBean.executeQuery(sql);
%>
while(rs.next()){
out.println("
");
}
%>
out.println("
");out.println("");out.println("");out.println("");out.println("");out.println("");
6.modify.jsp
修改主题
||修改主题||返回首页
Stringsubmit,sql;
intid;
submit=request.getParameter("submit");
if(submit!
=null){
Stringsql_s=request.getParameter("sql");
ResultSetrs,rs1;
inti=0;
if(sql_s!
=null){
sql="select*fromvotewherequestion='"+sql_s+"'";
rs=dbBean.executeQuery(sql);
id=rs.getInt("id");
%>
}
Stringsubmit1;
submit1=request.getParameter("submit1");
if(submit1!
=null){
intcount=Integer.parseInt(request.getParameter("count"));
intflag=Integer.parseInt(request.getParameter("id"));
StringoptType,optType1;
optType=request.getParameter("multiple");
if(optType==null)
optType1="0";
else{
optType1="1";
}
Stringquestion=request.getParameter("question");
sql="updatevotesetquestion='"+question
+"',optType="+optType1+"whereid="+flag;
if(dbBean.executeUpdate(sql))out.print("更新主题成功!
");
StringoptContent,optContent1,id1;
for(inti=0;i
optContent1="optContent"+i;
id1="id"+i;
id=Integer.parseInt(request.getParameter(id1));
optContent=request.getParameter(optContent1);
sql="updatevotesetoptContent='"+optContent+"'whereid="+id;dbBean.executeUpdate(sql);
}
}
%>
7.DBConnect.java
packagevote;
importjava.sql.*;
publicclassDBConnect{
//设置连接数据库的参数
privateStringuser="s70019618";
privateStringpassword="s7001618";
//MySQL的JDBC驱动程序
StringsDBDriver="org.gjt.mm.mysql.Driver";
//连接数据库
StringsConnStr="jdbc:
mysql:
//localhost:
3306/db70019618?
user&password";Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
publicDBConnect(){
try{
//加载数据库驱动程序
Class.forName(sDBDriver);
//建立连接
conn=DriverManager.getConnection(sConnStr);
}
catch(Exceptione){
System.out.println("DBConnect():
"+e.getMessage());
}
}
//查询
publicResultSetexecuteQuery(Stringsql){
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLExceptionex){
System.out.println("sql.executeQuery:
"+ex.getMessage());
}
returnrs;
}
//更新
publicbooleanexecuteUpdate(Stringsql){
try{
stmt=conn.createStatement();
stmt.executeUpdate(sql);
returntrue;
}catch(SQLExceptionex){
System.out.println("sql.executeUpdate:
"+ex.getMessage());returnfalse;
}
}
//关闭数据库的连接
publicvoidclose()throwsException{
conn.close();
stmt.close();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 投票 系统 详细 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)