收藏 分销(赏)

基于Java技术的在线投票系统设计.doc

上传人:天**** 文档编号:4880584 上传时间:2024-10-17 格式:DOC 页数:20 大小:903.04KB 下载积分:10 金币
下载 相关 举报
基于Java技术的在线投票系统设计.doc_第1页
第1页 / 共20页
基于Java技术的在线投票系统设计.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
   长春职业技术学院毕业设计(论文)专用纸                 第 19 页 毕业论文(设计) 题目 在线投票系统 学生姓名 学号 班 级 专 业 分 院 指导教师 2008年04月04日 目 录 第1部分 概 述 1 第2部分 分析部分 2 2.1.功能需求 2 第3部分 系统设计 3 3.1.功能模块设计 3 3.2.数据库的设计 3 第4部分 系统开发 3 4.1.数据库 3 4.1.1.创建数据库 3 4.1.2.创建表 4 4.1.3.连接数据库 4 4.2.功能的实现 5 4.3.问题及解决 5 第5部分 运行部分 5 5.1.系统的安装 5 5.2.系统的使用 6 第6部分 附 录 8 附录1 运行环境 8 1.1硬件要求 8 1.2.软件要求 9 附录2 设计代码 9 1.vote.jsp 9 2.result.jsp 10 3.add.jsp 11 4.del.jsp 13 5.display.jsp 14 6.modify.jsp 15 7. DBConnect.java 18 第1部分 概 述 在线投票系统主要用来统计网站用户对某个主题或热门话题的意见。决策者通过这些统计数据做出相应的决策。在线投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议。他可以设计这样一个投票主题:你认为该网站如何?(A.很好 B.一般C.不好)然后提供给用户进行投票。 我的投票系统具有极大的灵活性,投票类型分为单选投票和多选投票。管理员可以在线设计不同的投票主题供用户进行投票。 对于该设计报告还有什么不当之处请见谅,同时也希望你能多提宝贵意见。我会认真参考您的意见,修改和完善该系统。 术语列表: JSP:(Java Server Pages),JSP是一种基于Java的技术,用来产生跨平台和跨Web服务器的动态页面。 JDBC:(Java DataBase Connectivity),Java数据库连接。它主要是一套让你访问数据库的API,程序人员可以利用JDBC API来执行SQL语句。 Servlet: Servlet可以称之为“服务器小程序”,与Java application不同,它没有main方法,而是用一些特定的方法用于启动、执行和退出。通过使用Servlet,可以与运行与客户端的Applet进行交互,也可以直接与HTML页进行交互。 JavaBeans: JavaBeans是可复用的平台中立的软件组件,可以在软件开发工具中被直观地操作。应用程序开发者可以通过支持JavaBeans的开发工具,直接使用现成的JavaBeans,也可以在开发工具容器中,对组件进行必要的修改、测试而不必编写和编译程序。在Java模型中,组件可以修改或与其他组件组合以生成新组件或完整的应用程序。 HTML:(Hypertext Markup Language)超文本标记语言,它是组织多媒体文档的重要语言,它不仅用来编写Web网页,而且可以使用它来制作光盘上的多媒体节目。HTML可用来编排文档、创建列表、建立链接等等。 XML:(eXtensible Markup Language)可扩展标记语言,它是一种具有数据描述功能(Meta-language)、高度结构性及可验证性的语言。 SQL:(Structured Query Language),结构化查询语言。SQL语言地任务就是与各种数据库建立关系,SQL语言是关系型数据库的标准语言,大多数关系型数据库管理系统都支持SQL语言并采用了SQL的语言标准。 MySQL:MySQL是一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统。按照使用又可以分为DML(Data Manipulation Language),即数据操作语言和DDL(Data Definition Language)。 第2部分 分析部分 2.1.功能需求 通过对用户的需求调查分析,可以概括出用户的功能需求如下:单选投票、多选投票、查看投票、投票设计。 u 单选投票:用户只能从多个选项中选取一项进行投票。 u 多选投票:用户可以从多个选项中选取多项进行投票。 u 查看投票:提供用户查看当前投票情况,投票结果以条形图显示。 u 投票设计:管理员可以设计不同的投票主题,及投票主题的内容供用户进行投票。投票 设计又包括以下功能需求:增加主题、删除主题、查看主题、修改主题。 第3部分 系统设计 3.1.功能模块设计 通过对功能需求进行分析和概括得到如图所示的系统功能模块图: 3.2.数据库的设计 该系统的数据库采用MySQL,根据投票系统功能设计的要求,可以列出以下数据项和数据结构: l 投票表:存放投票信息,数据项包括:序号、标识、选项类型、投票主题、投票选项内容、得票数。 第4部分 系统开发 4.1.数据库 4.1.1.创建数据库 CREATE DATABASE db70019618; 4.1.2.创建表 创建数据库中用到的投票表: CREATE TABLE vote ( id INT NOT NULL AUTO_INCREMENT, flag int, optType int, question CHAR(255), optContent CHAR(255), number INT, PRIMARY KEY(id), ); 数据库创建后的结构图如下: 4.1.3.连接数据库 该系统使用了MySQL的JDBC驱动程序来连接数据库。因为对数据库的访问,在整个系统中比较频繁,所以我将对数据库的操作写成一个DBConnect的类,通过该类来连接数据库和访问数据库。 //部分代码如下 public DBConnect() { try { //加载数据库驱动程序 Class.forName(sDBDriver); //建立连接 conn = DriverManager.getConnection(sConnStr); } catch (Exception e) { 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,然后使用mysql db70019517<vote.sql脚本创建该数据库使用到的表。(脚本存放的路径vote\vote.sql) 4.然后在浏览器输入URL: (例如这是我的运行方法:http://127.0.0.1:8080/vote/index.jsp)。 5.2.系统的使用 为了直观,在这里我将主要通过程序运行截图来介绍该投票系统的使用。 F 在浏览器地址栏里输入在线投票系统的URL后,将进入在线投票系统的首页。在首页中显示了该系统的操作。 F 在首页中点击你所要进行的操作,即可打开相应的页面。如点击“单选投票”链接即可打开单选投票页面。 F 在首页中点击“多选投票“链接,打开多选投票页面。 F 在首页中点击“在线投票“链接后,可以查看在线投票的结果。 F 在首页中点击“投票设计“链接后,即可打开投票设计中的”增加主题“,同时你会看到投票设计中的其它几项功能:删除主题、查看主题、修改主题、返回首页。增加主题的方法如下图所示: F 在投票设计中点击“删除主题“链接后,即可打开删除主题页面。如果你要删除某个主题以及其选项,只需在文本框中输入其ID号即可。(如果你不知道待删除主题的ID号你可以首先点击”查看主题“查看其ID号。 F 在投票设计中点击“查看主题“链接后,即可打开查看主题页面。 F 在投票设计中点击“修改主题“链接后,即可打开修改主题页面。如果你要修改某个主题以及其选项,只需在文本框中输入其主题名即可。(如果你不知道待修改主题的主题名你可以首先点击”查看主题“查看其主题名并复制主题名,然后将其粘贴到修改主题名的文本框中,点查询即可打开相应的主题及其选项。 第6部分 附 录 附录1 运行环境 1.1硬件要求 CPU 使用586或更高级别的处理器 内存 64MB及其以上 硬盘 500MB以上(根据不同的服务器要求不同) 其他计算机设备 网卡等联网设备 1.2.软件要求 要使用JSP,在服务器端和客户端都必须有对应的运行环境。服务器主要是Servlet兼容的Web服务器,客户端主要是浏览器。 由于Java具有跨平台的特点,所以只要能够安装JDK,就能在此安装JSP服务器。JSP服务器能够运行在目前绝大多数的操作系统上,目前在普通用户中用到的系统绝大多数为Windows系列和UNIX系列。 附录2 设计代码 1.vote.jsp <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <jsp:useBean id="dbBean" class="vote.DBConnect" scope="page" /> <html> <head> <title>在线投票</title> <link href="vote.css" rel="stylesheet" type="text/css"> </head> <body> <center> <h3>单选投票</h3> <hr> <form action="result.jsp" method="post"> <div align="left"> <% String sql="select * from vote where flag = 0 and optType=0 order by id desc"; ResultSet rs=dbBean.executeQuery(sql); int questionNum=0,optType,id,id1; String question,str,optContent,type; while(rs.next()){ //输出投票的主题 questionNum++; str="主题"+questionNum+":"; question=rs.getString("question"); optType=rs.getInt("optType"); id=rs.getInt("id"); out.print(str+question+"<br>"); ResultSet rs1; sql="select * from vote where flag="+id; rs1=dbBean.executeQuery(sql); out.print("<hr>"); //输出该主题的选项 while(rs1.next()){ id1=rs1.getInt("id"); optContent=rs1.getString("optContent"); if(optType==0) type="radio"; else{ type="checkbox"; } %> <input type="<%=type%>" name="vote" value="<%=id1%>"> <%=optContent%> <br> <%}%> </div> <hr> <div align="left"> <%}%> </div> <input type="submit" name="sumbit1" value="确定"> </form> <%rs.close();%> </center> </body> </html> 2.result.jsp <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <html> <head> <title>投票结果</title> <link href="vote.css" rel="stylesheet" type="text/css"> </head> <body> <jsp:useBean id="dbBean" class="vote.DBConnect" scope="page" /> <h3 align="center">单选投票结果</h3> <hr> <% String sql="select * from vote order by id "; ResultSet rs=dbBean.executeQuery(sql); String id; id = request.getParameter("vote"); sql="update vote set number=number+1 where id="+id; dbBean.executeQuery(sql); ResultSet rs1,rstotal; int questionNum=0,optType,id1,number,total=0; String question,str,optContent; sql="select * from vote where flag=0 and optType=0 order by id desc"; rs=dbBean.executeQuery(sql); while(rs.next()){ questionNum++; str="主题"+questionNum+":"; question=rs.getString("question"); optType=rs.getInt("optType"); id=Integer.toString(rs.getInt("id")); out.print(str+question+"<br>"); sql="select * from vote where flag="+id; rstotal=dbBean.executeQuery(sql); //求得投票的总数 while(rstotal.next()){ number=rstotal.getInt("number"); total+=number; } sql="select * from vote where flag="+id; rs1=dbBean.executeQuery(sql); out.print("<hr>"); //输出各选项的得票数 while(rs1.next()){ id1=rs1.getInt("id"); optContent=rs1.getString("optContent"); number=rs1.getInt("number"); %> <%=optContent%> 得票数:<%=number%> <img src = bar.gif width ="<%=100*number/total%>" height = 10><br> <%}%> <hr> <div align="left"> <%}%> </div> <div align="center"><a href="index.jsp"> 返回主页 </a> </div> </body> </html> 3.add.jsp <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <jsp:useBean id="dbBean" scope="page" class="vote.DBConnect"/> <% String question=request.getParameter("question"); if(question==null){ question =""; } String type=request.getParameter("type"); int num=0,optType=0; try{ num=Integer.parseInt(request.getParameter("num")); } catch(Exception e){} %> <html> <head> <title>增加主题</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link href="vote.css" rel="stylesheet" type="text/css"> </head> <body> <center> <h3>增加主题</h3> <hr> <a href="add.jsp">增加主题</a>||<a href="del.jsp">删除主题</a>|| <a href="display.jsp">查看主题</a> || <a href="modify.jsp">修改主题</a> ||<a href="index.jsp">返回首页</a> <hr> <form action="add.jsp" method="post"> 请输入主题名:<br> <input type="text" name="question" size="50" value="<%=question%>"><p> <input type="checkbox" value="T" name="type" <% if(type!=null){ out.print("checked"); optType=1; } else{ optType=0; } %> >多选 &nbsp;&nbsp; 请输入选项的数目: <input typ="text" name="num" size="5" value="<%=num%>"> <input type="submit" name="sumbit" value="创建选项"> <p> <% String submit=request.getParameter("sumbit"); if(submit!=null){ for(int i=1;i<=num;i++){ %> 选项<%=i%>: <input type="text" name="<%=i%>" value="" size="50"> <br> <%}%> <input type="submit" name="submit1" value="增加主题"> <%}%> </form> <% String submit1=request.getParameter("submit1"),str="",optContent,sql; int id; if(submit1!=null){ sql="insert into vote(flag,optType,question) values(0,"+optType+",'"+question+"')"; dbBean.executeUpdate(sql); sql="select * from vote order by id desc"; ResultSet rs=dbBean.executeQuery(sql); id=rs.getInt(1); for(int i=1;i<=num;i++){ str=Integer.toString(i); optContent=request.getParameter(str); sql="insert into vote(flag,optContent,number) values("+id+",'"+optContent+"',0)"; dbBean.executeUpdate(sql); } out.print("成功插入主题!"); } %> </center> </body> </html> 4.del.jsp <%@page contentType="text/html;charset=gb2312"%> <jsp:useBean id="dbBean" scope="session" class="vote.DBConnect"/> <% String id=request.getParameter("id"); String sql="delete from vote where id="+id ; if(id!=null){ if(dbBean.executeUpdate(sql)){ out.print("删除记录成功。"); } } %> <html> <head> <title>删除主题</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link href="vote.css" rel="stylesheet" type="text/css"> </head> <body> <center> <h3>删除主题</h3> <hr> <a href="add.jsp">增加主题</a>||<a href="del.jsp">删除主题</a>|| <a href="display.jsp">查看主题</a> ||<a href="modify.jsp">修改主题</a> ||<a href="index.jsp">返回首页</a> <hr> <form name="form1" action="del.jsp" method="post"> 请输入删除的序号(ID): <input name="id" type="text" id="id" size="50"> <input name="submit" type="submit" value="删除"> <br> </form></hr> </center> </body> </html> 5.display.jsp <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <html> <head> <title>查看主题</title> <link href="vote.css" rel="stylesheet" type="text/css"> <body> <center> <h3>查看主题</h3> <hr> <a href="add.jsp">增加主题</a>||<a href="del.jsp">删除主题</a>|| <a href="display.jsp">查看主题</a> ||<a href="modify.jsp">修改主题</a> ||<a href="index.jsp">返回首页</a> <hr> <jsp:useBean id="dbBean" class="vote.DBConnect" scope="page" /> <% String sql="select * from vote"; ResultSet rs=dbBean.executeQuery(sql); %> <table border=1 align="center" > <tr > <td>序号</td> <td>标识</td> <td><div align="center">投票主题</div></td> <td><div align="center">投票选项</div></td> <td><div align="center">得 票 数</div></td> </tr> <% while(rs.next()){ out.println("<tr>"); out.println("<td>"+rs.getInt("id")+"</td>"); out.println("<td>"+rs.getInt("flag")+"</td>"); out.println("<td>"+rs.getString("question")+"</td>"); out.println("<td>"+rs.getString("optContent")+"</td>"); out.println("<td>"+rs.getInt("number")+"</td>"); out.println("</tr>"); } %> </table> <div align="center"> <%rs.close();%> </div></hr> </center> </body> </html> 6.modify.jsp <%@page contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*"%> <jsp:useBean id="dbBean" scope="session" class="vote.DBConnect"/> <html> <head> <title>修改主题</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link href="vote.css" rel="stylesheet" type="text/css"> </head> <body> <center> <h3>修改主题</h3> <hr> <a href="add.jsp">增加主题</a>||<a href="del.jsp">删除主题</a>|| <a href="display.jsp">查看主题</a> ||<a href="modify.jsp">修改主题</a> ||<a href="index.jsp">返回首页</a> <form action="modify.jsp" method="post"> 请输入您所要修改的主题名:<br> <input type="text" name="sql" size="50"> <input type="submit" name="submit" value="查询"> </form> <% String submit,sql; int id; submit=request.getParameter("submit"); if(submit!=null){ String sql_s=request.getParameter("sql"); ResultSet rs,rs1; int i=0; if(sql_s!=null){ sql="select * from vote where question ='"+sql_s+"'"; rs=dbBean.executeQuery(sql); id=rs.getInt("id"); %> <form action="modify.jsp" method="post"> <table> <tr> <td>题目</td> </tr> <tr> <td> <input type="hidden" name="id" value="<%=id%>"> <input name="question" type="text" value="<%=rs.getString("question")%>" size="50" maxlength="50"> </td> </tr> <tr> <td>选项</td> </tr> <tr> <td> <% sql="select * from vote where flag="+id; rs1=dbBean.executeQuery(sql); while(rs1.next()){ %> <input type="text" name="optContent<%=i%>" size="100" value="<%=rs1.getString("optContent")%>"> <input type="hidden" name="id<%=i%>" value="<%=rs1.getInt("id")%>"> <%i++;}%> <input type="hidden" name="count" value="<%=i%>"> </td> </tr> <tr> <td>是否多选 <% int type=rs.getInt("optType"); String s_type=""; if(type==1){ s_type="checked"; } %> <input type="checkbox" name="multiple" value="1" <%=s_type%>> </td> </tr> <tr> <td> <input type="submit" name="submit1" value="更新"> </td> </tr> </table> </form> <% } } String submit1; submit1=request.getParameter("submit1"); if(submit1!=null){ int count=Integer.parseInt(request.getParameter("count")); int flag=Integer.parseInt(request.getParameter("id")); String optType,optType1; optType=request.getParameter("multiple"); if(optType==null) optType1="0"; else{ optType1="1"; } String question=request.getParameter("question"); sql="update vote set question='"+question +"',optType= "+optType1+" where id="+flag; if(dbBean.executeUpdate(sql)) out.print("更新主题成功!"); String optContent,optContent1,id1; for(int i=0;i<count;i++){ optContent1="optContent"+i; id1="id"+i; id=Integer.parseInt(request.getParameter(id1)); optContent=request.getParameter(optContent1); sql="update vote set optContent='"+optContent+"' where id="+id; dbBean.executeUpdate(sql); } } %> </c
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服