[毕业论文]基于JAVA的网上投票系统

上传人:1666****666 文档编号:38362479 上传时间:2021-11-06 格式:DOC 页数:41 大小:500.04KB
返回 下载 相关 举报
[毕业论文]基于JAVA的网上投票系统_第1页
第1页 / 共41页
[毕业论文]基于JAVA的网上投票系统_第2页
第2页 / 共41页
[毕业论文]基于JAVA的网上投票系统_第3页
第3页 / 共41页
点击查看更多>>
资源描述
在线投票系统摘要:如今,越来越多的网站开始重视网页的互动性。而在线投票就是一个非常重要的互动形式。本文以JSP、SQL Server2000为编程工具开发了一种通用网上投票系统,并介绍了系统的调试、运行环境、系统功能、系统设计以及系统实现。关键词:在线投票;JSP;SQL Server2000Abstract: Nowadays, more and more sites starting to focus on interactive web pages. The online voting is a very important forms of interaction. In this paper, JSP, SQL Server2000 as program development of a common online voting system, and introduced the system of commissioning, operating environment, system function, system design and implementation.Keywords: online voting; JSP; SQL Server2000目 录第一章 概述3第二章 相关知识介绍42.1 Java简介42.1.1 什么是Java42.1.2 Java主要特性42.2 JSP简介62.2.1 什么是JSP62.2.2 JSP的运行原理及优点72.2.3 JSP运行环境介绍82.3 SQL Server2000简介92.3.1 SQL Server概述92.3.2 SQL Server2000特性92.4 JSP与SQL Server2000数据库的连接10第三章 系统分析123.1 需求分析12第四章 系统设计134.1 总体设计134.2 模块设计154.2.1 客户投票模块154.2.2 管理员模块164.2.3 数据处理模块184.3 数据库设计18第五章 系统开发215.1 客户投票模块215.2 管理员模块275.3 数据处理模块36第六章 系统实现396.1 系统运行环境396.2 系统测试39【参考文献】40第一章 概述如今,许许多多的网站设计者们开始意识到,网站的主要作用,除了给广大网友们提供单项的信息资讯服务外,还应该成为网友们互相交流的场所。于是,他们把越来越多的注意力,集中到网站互动性的设计规划上。互动的形式,除了我们经常见到的留言板、讨论组和聊天室之外,还有一项非常重要的、正在被日益广泛地采用的互动形式一一在线投票。在线投票和留言板、聊天室相比,其优点在于简洁、规范、直观。它不仅能够给网友们提供互相交流看法、兴趣的场所,还可以方便网站设计者们作广泛的社会调查,进行社会研究或是制定商业策略。我的投票系统具有极大的灵活性,管理员可以在线设计不同的投票主题供用户进行投票。对于该设计报告还有什么不当之处请见谅,同时也希望您能多提宝贵意见。我会认真参考您的意见,修改和完善该系统。第二章 相关知识介绍该在线投票系统主要采用Java、JSP、SQL Server2000进行设计与开发,下面主要介绍与之相关的知识。2.1 Java简介2.1.1 什么是Java Java是由Sun公司开发的编程语言,使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。不论用户使用的是哪一种WWW测览嚣、哪一种计算机、哪一种操作系统,只要www浏览器上面注明了”支持Java”,就可以看到生动的页面。Java正在逐步成为Intemet应用的扛要开发语言。它彻底改变了应用软件的开发模式,带来了自个人计算机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。2.1.2 Java主要特性1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2 JSP简介2.2.1 什么是JSPJSP (JavaServer Pages)是由Sun Microsystems公司倡导,许多公司参与建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记( tag),就构成了JSP网页(jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送E-mail等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅仅是结果,对客户浏览器的要求最低。在Java的基础上开发出的JSP实现了动态贞面与静态页而的分离,脱离了硬件平台的束缚以及编译后运行等方式,大大提高了其执行效率f酊逐渐成为Internet上的主流开发工具。在美国,EJB+Servlet+JSP几乎成了电子商务的开发标准而在我国也正逐渐兴起,不少网站部采用了JSP技术。2.2.2 JSP的运行原理及优点在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个Servlet。而这个引擎本身也是一个Servlet。JSP的运行过程如下所示:(1)JSP引擎先把该JSP文件转换成一个Java源文件(Servlet),在转换时如果发现JSP文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息。(2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件。(3)创建一个该Servlet(JSP页面的转换结果)的实例,该Servlet的jspInit()方法被执行,jspInit()方法在Servlet的生命周期中只被执行一次。(4)jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但不过也应该注意多线程的编程限制,由于该Servlet始终驻于内存,所以响应是非常快的。(5)如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。(6)虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延 迟。此外,在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用。(7)然后Servlet实例便被标记加入“垃圾收集”处理。可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。基于Java语言的JSP技术具有很多其他动态网页技术所没有的特点,具体表现在如下方面:1简便性和有效性 JSP动态网页的编写与一般的静态HTML的网页编写是十分相似的。只是在原来的HTML网页中加入一些JSP专有的标签,或是一些脚本程序(此项不是必需的)。这样,一个熟悉HTML网页编写的设计人员可以很容易进行JSP网页的开发。而且开发人员完全可以不自己编写脚本程序,而只是通过JSP独有的标签使用别人已写好的部件来实现动态网页的编写。这样,一个不熟悉脚本语言的网页开发者,完全可以利用JSP做出漂亮的动态网页。而这在其他的动态网页开发中是不可实现的。2程序的独立性JSP是Java API家族的一部分,它拥有一般的Java程序的跨平台的特性。换句话说,就是拥有程序的对平台的独立性,即Write once,Run anywhere!。3程序的兼容性 JSP中的动态内容可以各种形式进行显示,所以它可以为各种客户提供服务,即从使用HTML/DHTML的浏览器,到使用WML的各种手提无线设备(例如,移动电话和个人数字设备PDA),再到使用XML的B2B应用,都可以使用JSP的动态页面。4程序的可重用性 在JSP页面中可以不直接将脚本程序嵌入,而只是将动态的交互部分作为一个部件加以引用。这样,一旦这样的一个部件写好,它可以为多个程序重复引用,实现了程序的可重用性。现在,大量的标准JavaBeans程序库就是一个很好的例证。2.2.3 JSP运行环境介绍从最开始的JSWDK到现在的Tomcat、WebLogic等,JSP的运行环境也有了很大的变化,出现了很多优秀的JSP容器,如Tomcat、WebLogic、IBM WebSphere等。本文介绍Tomcat 6.0。Tomcat是Apache Jakarta软件组织的一个子项目,它是一个JSP/Servlet的容器,是在Sun公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现。使用Tomcat可以体验JSP和Servlet的最新规范。经过多年的发展,使得Tomcat不仅是JSP和Servlet规范的标准实现,而且具备了很多商业Java Servlet容器的特性,使得它被一些企业用于商业用途。2.3 SQL Server2000简介2.3.1 SQL Server概述SQL Server 是一个关系数据库管理系统,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本;Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。2.3.2 SQL Server2000特性1.Internet 集成。SQL Server 2000 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。SQL Server 2000 程序设计模型与 Windows DNA 构架集成,用以开发 Web 应用程序,并且SQL Server 2000 支持 English Query 和 Microsoft 搜索服务等功能,在Web 应用程序中包含了用户友好的查询和强大的搜索功能。2.可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows® 98 的便携式电脑,到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。SQL Server 2000 企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大 Web 站点所需的性能级别。3.企业级数据库功能。SQL Server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。SQL Server 2000 分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是 SQL Server 2000 数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。4.易于安装、部署和使用。 SQL Server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。SQL Server 2000 还支持基于标准的、与 Windows DNA 集成的程序设计模型,使 SQL Server 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 SQL Server 应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。5.数据仓库。 SQL Server 2000 中包括析取和分析汇总数据以进行联机分析处理 (OLAP) 的工具。SQL Server 中还包括一些工具,可用来直观地设计数据库并通过 English Query 来分析数据。SQL Server 2000共有4个版本,分别是个人版,标准版,企业版和开发版,本系统采用个人版。2.4 JSP与SQL Server2000数据库的连接testsqlserver.jsp如下:您的第一个字段内容为:您的第二个字段内容为:第三章 系统分析3.1 需求分析需求分析是软件工程中一个重要的过程,在很长的一-段时间内,人们一直认为需求分析是软件开发过程中最简单的一部分,但需求分析的草率行事往往会使最终的软件产品不符合用户的要求,从而导致软件产品开发的失败。下面就介绍在线投票系统的需求分析。对于普通用户,在线投票系统在网页中显示需要调查的问题、接受用户的投票,并以统计图示的方式显示当前调查结果。如下图:进入投票页投票查看结果退出对于管理员用户,在线投票系统提供管理接口,管理员可以任意增加、修改、删除投票,如下图:管理员登录判断进入管理页投票系统管理退出密码错误 密码正确第四章 系统设计4.1 总体设计为了更好地表述在线投票系统,这里将部分地使用UML的建模图形。用例图(Use Case Diagram)提供一个系统环境的建模办式,它能够帮助系统分析师确定系统内部利外部元素以及系统范围。简单来说,列例图由用例和参与者构成,其中用例是外部可见的一个系统功能单元;参与者是与系统发生交互作用的外部用户、进程或其他系统的理想化概念。在线投票系统的用例图下图所示,可以识别出两个参与者,即系统管理员( Admin)和系统使用者( user)。系统管理员除了可以参加投票外还能对整个系统实施完全的管理。系统使用者只能参与投票升查看投票结果。在线投票用例图 顺序图( Sequence Diagram)描述对象之问动态交互关系,着重体现对象间消息传递的时间顺序。顺序图是一个二维图,纵向是时问轴,时间延竖线向下延伸;横向表示对象之间的消息传递。对象之间的消息从一个对象的生命线(时问轴上的双道线用箭头指向另一个对象的生命线。用户参与投票的流程顺序图如下所示,用户参与在线投票系统从进入投票模块开始,投票模块以网页的形式显示所有开放的问题,用户在选取符合他要求的投票项后单击“提交”按钮,他的投票数据将提交给数据模块,由数据模块保存到SQL Server 2000数据库中,从而完成投票提交的过程。用户还可以查看某问题的投票统计结果,用户进入显示模块,显示模块从数据模块读取开放问题的投票数据,并以柱状统计图的形式显示。用户参与投票的流程顺序图管理员增加新投票的过程从登录管理模块开始,管理员先把用户名和密码提交给登录模块,登求模块根据用户名到数据库中搜索其对应的密码,然后对比用户名是否存在以及管理员输入的密码是否币确。如果用户名和密码正确,登录模块把用户信息提交到管理模块并提示用户登录成功,管理员在管理模块提交新投票数据,管理模块把新投票数据提交到数据模块并保存到数据库中,管理模块提示管理员操作成功,从而完成添加新投票的整个过程。管理员添加新投票的流程顺序图如下:管理员添加新投票的流程图4.2 模块设计在线投票系统大致可以分为客户投票模块、管理员模块以及数据处理模块3部分。4.2.1 客户投票模块用户投票模块包括showquestion.jsp、showresult.jsp、thanks.jsp、convert.jsp 4个程序页面,具体的系统结构如下图。其中,showquestion.jsp是用户投票的首页,用户登录在线投票系统后就自动跳转到该页面,该页面通过数据处理模块读取数据库中所有开放的问题并显示,用户可以选取一项或多项回答项并提交。 thanks.jsp是数据接收页。用户在showquestion.jsp中选择投票的回答项并提交,用户所选择的数据项被提交到thanks.jsp,该页把这些数据项储存到数据库中,并提示用户投票数据提交成功。showresult.jsp是数据的显示页。当用广在参加投票后可以查看该项投票的统计结果,该页就用柱状图的显示给出统计图和所有选择的百分比。convert.j sp足字符转换页,主要用于解决中文字符无法正确显示的问题。在这里用清晰易懂的顺序图来描述用户投票的过裎中上述页面间的互相协作以及消息交互。客户投票模块各页面间的顺序图如图所示。 4.2.2 管理员模块管理员模块由用户登录页面、新增投票页面、编辑投票页面组成,具体的系统结构图如下图所示。其中login,jsp是管理员的登录页,管理员要对在线投票系统进行管理必须先进行登录,通过用户名和密码的验证。Checkadmin.jsp是管理员登录的验证页。管理员在login,jsp填入用户名和密码后,这些数据将被提交到该页,然后与数据库中的数据进行对比。如果验证通过将跳转到管理主页面。Mainform.jsp是在线投票系统的管理主页面,在管理员通过用户名和密码的验证后,login.jsp将跳转到该页面。Mainform.jsp包含所有投票的链接,管理员单击问题就能查看投票的结果,管理员还可以选择编辑该投票或者删除该投票。Result.jsp是查看投票结果的页面。管理员在登录刽管理主页面Mainform,jsp后,单击某投票的问题,系统会跳转到该页面。Result.jsp会以柱状图的形式在网页上给出该投票每个选项所占的百分比。Addpoll.jsp和Savedata.jsp是新增投票的页。管理员在登录到管理主页面Mainform.jsp后,选择新增投票系统会跳转到Addpoll.jsp页而,管理员需要在该页面填入新增投票的问题以及选项,然后提交。Savedata.jsp页面把管理员所提交的新增投票资料保存到数据库中,并提示管理员操作成功。Delete.jsp是删除投票页。管理员在登录到管理主页面Mainform.jsp后,呵以选择删除投票选项来删除不需要的投票。 Edituserjsp和moduser.jsp是编辑密码页。管理员在登录到管理主页面Mainform.jsp后,可以选择更改自己的登录密码 isopen.jsp和isvisible.jsp是编辑投票项页面管理员在登录到管理主页面Main form.jsp后,可以编辑某个投票的属性。isopen.jsp是设置投票结果为不开放,即接收用户的投票但用户不可以查看投票的结果。isvisible,jsp是把某个投票设置为对用户不可见,即不再接收用户的投票而且用户也不能查看投票的结果,但系统管理员还可以查看投票的结果在这里选取典型的管理员添加投票过程来描述系统页面间的互相协作以及消息交互的过程。管理员添加投票各页面间的顺序图如下图所示。4.2.3 数据处理模块数据处理模块由一个JavaBean程序opendata.java组成一般的系统都把与数据库相关的代码封装在一个JavaBean组件中。本系统中的opendata.java负责连接数据库、执行数据库查询、更新、删除数据等操作。4.3 数据库设计在线投票系统使用的数据库是Microsof SQL Server 2000。系统所使用的表包括管理员信息表(Admins)、投票问题表(Questions)以及投票选项表(Items)。管理员信息表(Admins)字段说明类型备注Admname管理员用户名Varchar 10主键Admpwd管理员密码Varchar 10管理员信息表( Admins)包括管理员的用户名和密码,管理员登录在线投票系统时Checkadmin.jsp就是读取管理员输入的用户名和密码与数据库中的数据对比投票问题表(Questions)字段说明类型备注QuestionID投票问题ID号Int主键,自增1Question投票问题内容Varchar 500不为空IsVisable该问题对用户是否可见Int1为可见,0为不可见IsOpen该问题统计结果是否可见Int1为可见,0为不可见Date该问题设立的时间Varchar 50投票问题表(Questions)包括的字段为投票的问题、投票问题是否可见、投票问题是否开放、投票问题设立的时间,当用户登录showquestion.jsp时该页就从数据库中读取所有的可见问题及其选项并显示在网页上。投票选项表(Items)字段说明类型备注ItemID投票问题选项ID号Int主键,自增1QuestionID投票问题ID号Int不为空Item该问题选项内容Varchar 500不为空ItemCount该选项获得的投票数Int不为空投票选项表(Items)包括的字段为投票问题ID号、该问题选项内容、该选项获得的投票数。当用户登录showquestion.jsp时,该网页先读取投票问题表(Questions)中所有可见的问题,然后根据每一个问题的ID号在投票选项表(ltems)中找到该问题的对应选项并最终显示在网页上。当用户完成自己的投票后,thanks.jsp将用户所投的选项所对应的投票数加1。投票问题表(Questions)与投票选项表(Items)在SQL-Server 2000中的数据库逻辑关系如下图所示。第五章 系统开发5.1 客户投票模块1.用户投票首页用户登录在线投票系统后首先看到的就是该页面,该页面从数据库中读取所有的可见问题及其选项后以网页的形式显示,并且接收用户的投票,然后把用户的投票信息提交给数据接收页。程序说明:用户投票首页。程序模块名称:Showquestion.jsp。相关数据表:投票问题表(Questions)、投票选项表(Items)。用户投票页的部分代码如下: String permit; String SqlString=SELECT Question,QuestionID from questions where IsVisable = 1;try ResultSet rs=null; ResultSet ch_rs=null; /设置连接sqltest.setConnection(com.microsoft.jdbc.sqlserver.SQLServerDriver,jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=questionnaire,sa,); /设置SQL语句 rs=sqltest.executeQuery(SqlString); /得到查询结果 int questionid = 0,itemid = 0; int i=0,j; /题目及选项标号 while(rs.next() i+; String question = rs.getString(1); questionid= rs.getInt(2); out.print(+ +i+.+ +question+);/子查询语句,根据问题id号到items表中查询该问题的所有选项 String ch_sql = SELECT Item,ItemID From Items Where QuestionID =+questionid+; ch_rs=sqltest.executeQuery(ch_sql); j = 0; while(ch_rs.next() j+;String item = ch_rs.getString(1); / itemid = ch_rs.getInt(2); % input type=radio value= name= % out.print( ); catch(SQLException e1) out.print(SQL异常!); 2.数据接收页用户首先登录投票页showquestion.jsp并提交他们认可的回答项,用户所选择的数据项被提交到数据接收页thanks.jsp,该页把这些数据项储存到数据库中并提示用户投票数据提交成功。程序说明:数据接收页。程序模块名称:Thanks.jsp相关数据表:投票问题表(Questions)、投票选项表(Items)数据接收页的代码如下:ResultSet rs=null; ResultSet ch_rs=null;/查询所有可见问题 String sqlstring = SELECT QuestionID from questions where IsVisable = 1 ;try rs=sqltest.executeQuery(sqlstring); int questionid = 0,itemid = 0; while(rs.next() questionid = rs.getInt(1); /获取用户选择的该问题的选项的id号 itemid = Integer.parseInt(request.getParameter(String.valueOf(questionid); /更新该问题选择的计数值,做加1操作 sqlstring = update Items set ItemCount = ItemCount + 1 Where ItemID =+itemid; sqltest.executeUpdate(sqlstring); catch(SQLException e1) out.print(SQL异常!); 3.数据显示页showresult.jsp是数据的显示页。当用户在用户投票贞showquestion.jsp完成投票后可以跳转到本页面查看该顼投票的统计结果该页就是用柱状图的显示给出统计图,并给出投票问题每个选项的百分比。程序说明:数据显示页。程序模块名称:showresult.jsp相关数据表:投票问题表(Questions)、投票选项表(Items)数据显示页的代码如下:String question,date,Sqlstring; ResultSet rs=null; /定义数据集 ResultSet rs1=null; ResultSet rs2=null; int questionid = 0; Sqlstring = SELECT Question, Date, QuestionID from questions where IsVisable = 1 and IsOpen= 1; /查询所有问题内容可见且投票结果可见的问题 rs=sqltest.executeQuery(Sqlstring); Sqlstring = SELECT ItemCount From Items Where QuestionID =+questionid; rs1 = sqltest.executeQuery(Sqlstring); int totalcount = 0; while(rs1.next() totalcount += rs1.getInt(1); if(totalcount=0) out.print(暂时还没有人参加本题投票); Sqlstring = SELECT Item, ItemCount FROM Items where QuestionID =+questionid; rs2 = sqltest.executeQuery(Sqlstring); String item; int itemcount; String percent; while(rs2.next() item = rs2.getString(1); itemcount = rs2.getInt(2); percent = printf(String.valueOf(double)itemcount/totalcount*100)+0); out.print(+item+); out.print(+itemcount+); out.print(); else out.print(共有+totalcount+人参加本题投票); Sqlstring = SELECT Item, ItemCount FROM Items where QuestionID =+questionid; rs2 = sqltest.executeQuery(Sqlstring); String item; int itemcount; String percent; while(rs2.next() item = rs2.getString(1); itemcount = rs2.getInt(2); percent = printf(String.valueOf(double)itemcount/totalcount*100)+0); out.print(+item+); out.print(+itemcount+); out.print(+ percent+%); out.print(); 4.字符转换页此页面主要用于解决中文字符无法正确显示的问题,这是一个基础页面,在其他所有的页面都有可能调用该页的函数。程序说明:字符转换页。程序模块名称:converr.jsp。相关数据表:无。字符转换页代码如下:%! String convert(String str) byte newstr = new bytestr.length(); for(int i=0;istr.length();i+) newstri=(byte)str.charAt(i); return new String(newstr); String Replace(String str) int index=0; while(index=str.indexOf(n) != -1) str = str.substring(0,index) + str.substring(index+1); return(str); %5.2 管理员模块1. 管理员登陆页程序说明:管理员登录页。程序模块名称:login.jsp。相关数据表:无。管理员登录页部分代码如下:String errmsg = request.getParameter(errmsg); request.getSession(true); String chk = false; session.putValue(Enter,chk);if(errmsg != null & errmsg.equals(error1) out.print(您输入管理员帐号或者密码不正确!); else if(errmsg != null & errmsg.equals(error2) out.print(请先登陆!);2. 管理员验证页checkadmin.jsp是管理员登录的验证页。管理员在login.jsp页面填入用户名和密码后,这些数据将被提交到该页,然后与数据库中的相应数据进行对比。如果验证通过将跳转到管理主页面。程序说明:管理员验证页。程序模块名称:checkadmin.jsp。相关数据库:管理员信息表(Admins)。管理员验证页部分代码如下:ResultSet rs=null; String name = request.getParameter(name); String password = request.getParameter(password);/根据用户提交的用户名和密码查询admins表 String sqlstring = select * from admins where Admname = +name+ and Admpwd= +password+; rs = sqltest.executeQuery(sqlstring);if(rs.next!=NULL)if(rs.next() /查询数据集不为空,说明用户名和密码正确,跳转到mainform.jsp request.getSession(true); String chk=true; session.putValue(Enter,chk); response.sendRedirect(mainform.jsp); else /查询数据集为空,说明用户名和密码不正确,重新跳转到登陆页 String errmsg=error1; response.sendRedirect(login.jsp?errmsg=+errmsg); 3. 在线投票系统的管理主页面Mainform.jsp是在线投票系统的管理主页面。在管理员通过用户名和密码的验证后,系统将跳转到该页面。Mainform.jsp包含所有的投票的链接,管理员单击问题就能查看投票的结果,管理员还可以选择编辑该投票或者删除该投票。管理员可以撤销或恢复某投票。当管理员单击撤销某投票后,该项投票项将对客户不可见。但管理员有查看此投票及其统计结果的权限,在单击恢复后,该投票又将恢复到最初对所有用户可见的状态,管理员还可以设置投票结果是否公布,当管理员单击某投票的隐藏结果后,该投票项可以继续接收用户访问,只是投票的统计结果变为了不公开。程序说明:管理主页面。程序模块名称:Mainform.jsp。相关数据库:投票问题表(Questions)、投票选项表(Items)。管理主页面部分代码如下所示。ResultSet rs=null;/查询所有可见的问题 String sqlstring = select * from questions where IsVisable=1; rs = sqltest.executeQuery(sqlstring); String question,date; int isvisable; int questionid ; int id = 0; int isopen = 0; while(rs.next() questionid = rs.getInt(1); question = rs.getString(2); isvisable = rs.getInt(3); date = rs.getString(4); isopen = rs.getInt(5); out.print(); out.print(+date+); out.print(+question+); out.print(撤消); if (isopen = 1) out.print(隐藏结果); else out.print(公布结果); out.print(); 4. 查看投票结果页Result.jsp是查看投票结果页。管理员在登录到管理主页面Mainform.jsp后,单击某投票的问题,系统会跳转到该页面。Resukjsp会以拄状图的形式在网页上给出该投票每个选项所占的百分比。此功能是必须的,因为管理员可能会撤销某投票,这时此投票的统计结果图只有管理员使用此功能可见。 程序说明:查看投票结果页。程序模块名称:Result.jsp。相关数据表:投票问题表(Questions)、投票选项表(Items)。 查看投票结果页的部分代码如下所示。ResultSet rs=null;/获取问题的id号 int questionid = Integer.parseInt(request.getParameter(questionid);/获取该问题的内容、发布时间 String sqlstring = SELECT Question, Date from questions where QuestionID =+questionid; rs = sqltest.executeQuery(sqlstring); while(rs.next() Stri
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 其他分类


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!