基于JAVA的網(wǎng)上投票系統(tǒng)_第1頁
基于JAVA的網(wǎng)上投票系統(tǒng)_第2頁
基于JAVA的網(wǎng)上投票系統(tǒng)_第3頁
基于JAVA的網(wǎng)上投票系統(tǒng)_第4頁
基于JAVA的網(wǎng)上投票系統(tǒng)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、在線投票系統(tǒng)摘要:如今,越來越多的網(wǎng)站開始重視網(wǎng)頁的互動(dòng)性。而在線投票就是一個(gè)非常重要的互動(dòng)形式。本文以JSP、SQL Server2000為編程工具開發(fā)了一種通用網(wǎng)上投票系統(tǒng),并介紹了系統(tǒng)的調(diào)試、運(yùn)行環(huán)境、系統(tǒng)功能、系統(tǒng)設(shè)計(jì)以及系統(tǒng)實(shí)現(xiàn)。關(guān)鍵詞:在線投票;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 p

2、aper, 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第二章 相關(guān)知識(shí)介紹42.1 Java簡介42.1.1 什么是Java42.1.2 Java

3、主要特性42.2 JSP簡介62.2.1 什么是JSP62.2.2 JSP的運(yùn)行原理及優(yōu)點(diǎn)72.2.3 JSP運(yùn)行環(huán)境介紹82.3 SQL Server2000簡介92.3.1 SQL Server概述92.3.2 SQL Server2000特性92.4 JSP與SQL Server2000數(shù)據(jù)庫的連接10第三章 系統(tǒng)分析123.1 需求分析12第四章 系統(tǒng)設(shè)計(jì)134.1 總體設(shè)計(jì)134.2 模塊設(shè)計(jì)154.2.1 客戶投票模塊154.2.2 管理員模塊164.2.3 數(shù)據(jù)處理模塊184.3 數(shù)據(jù)庫設(shè)計(jì)18第五章 系統(tǒng)開發(fā)215.1 客戶投票模塊215.2 管理員模塊275.3 數(shù)據(jù)處理模塊

4、36第六章 系統(tǒng)實(shí)現(xiàn)396.1 系統(tǒng)運(yùn)行環(huán)境396.2 系統(tǒng)測(cè)試39【參考文獻(xiàn)】40第一章 概述如今,許許多多的網(wǎng)站設(shè)計(jì)者們開始意識(shí)到,網(wǎng)站的主要作用,除了給廣大網(wǎng)友們提供單項(xiàng)的信息資訊服務(wù)外,還應(yīng)該成為網(wǎng)友們互相交流的場(chǎng)所。于是,他們把越來越多的注意力,集中到網(wǎng)站互動(dòng)性的設(shè)計(jì)規(guī)劃上?;?dòng)的形式,除了我們經(jīng)常見到的留言板、討論組和聊天室之外,還有一項(xiàng)非常重要的、正在被日益廣泛地采用的互動(dòng)形式一一在線投票。在線投票和留言板、聊天室相比,其優(yōu)點(diǎn)在于簡潔、規(guī)范、直觀。它不僅能夠給網(wǎng)友們提供互相交流看法、興趣的場(chǎng)所,還可以方便網(wǎng)站設(shè)計(jì)者們作廣泛的社會(huì)調(diào)查,進(jìn)行社會(huì)研究或是制定商業(yè)策略。我的投票系統(tǒng)具有

5、極大的靈活性,管理員可以在線設(shè)計(jì)不同的投票主題供用戶進(jìn)行投票。對(duì)于該設(shè)計(jì)報(bào)告還有什么不當(dāng)之處請(qǐng)見諒,同時(shí)也希望您能多提寶貴意見。我會(huì)認(rèn)真參考您的意見,修改和完善該系統(tǒng)。第二章 相關(guān)知識(shí)介紹該在線投票系統(tǒng)主要采用Java、JSP、SQL Server2000進(jìn)行設(shè)計(jì)與開發(fā),下面主要介紹與之相關(guān)的知識(shí)。2.1 Java簡介2.1.1 什么是Java Java是由Sun公司開發(fā)的編程語言,使用它可在各式各樣不同種機(jī)器、不同種操作平臺(tái)的網(wǎng)絡(luò)環(huán)境中開發(fā)軟件。不論用戶使用的是哪一種WWW測(cè)覽囂、哪一種計(jì)算機(jī)、哪一種操作系統(tǒng),只要www瀏覽器上面注明了”支持Java”,就可以看到生動(dòng)的頁面。Java正在逐步

6、成為Intemet應(yīng)用的扛要開發(fā)語言。它徹底改變了應(yīng)用軟件的開發(fā)模式,帶來了自個(gè)人計(jì)算機(jī)以來又一次技術(shù)革命,為迅速發(fā)展的信息世界增添了新的活力。2.1.2 Java主要特性1、Java語言是簡單的。Java語言的語法與C語言和C+語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。2、Java語言是一個(gè)面向?qū)ο蟮?。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但

7、支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語言全面支持動(dòng)態(tài)綁定,而C+ 語言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定。總之,Java語言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。3、Java語言是分布式的。Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。4、Java語言是健壯的。Java的強(qiáng)類型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序

8、健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。5、Java語言是安全的。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對(duì)通過網(wǎng)絡(luò)下載的類具有一個(gè)安全防范機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。 6、Java語言是體系結(jié)構(gòu)中立的。Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的

9、文件), 然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。 7、Java語言是可移植的。這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。8、Java語言是解釋型的。如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式, 然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。9、Java是高性能的

10、。與那些解釋型的高級(jí)腳本語言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C+。 10、Java語言是多線程的。在Java語言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable) 的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中

11、包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來控制。 Java語言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。11、Java語言是動(dòng)態(tài)的。Java語言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。Java語言的優(yōu)良特性使得Java應(yīng)用具有無比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。Java對(duì)對(duì)象技術(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開發(fā)時(shí)間并降低成本。Java的編

12、譯一次,到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低成本方式。特別是Java企業(yè)應(yīng)用編程接口(Java Enterprise APIs)為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫。2.2 JSP簡介2.2.1 什么是JSPJSP (JavaServer Pages)是由Sun Microsystems公司倡導(dǎo),許多公司參與建立的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記( tag),就構(gòu)成了JSP網(wǎng)頁(jsp)。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請(qǐng)求時(shí),首先執(zhí)行

13、其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶。程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅僅是結(jié)果,對(duì)客戶瀏覽器的要求最低。在Java的基礎(chǔ)上開發(fā)出的JSP實(shí)現(xiàn)了動(dòng)態(tài)貞面與靜態(tài)頁而的分離,脫離了硬件平臺(tái)的束縛以及編譯后運(yùn)行等方式,大大提高了其執(zhí)行效率f酊逐漸成為Internet上的主流開發(fā)工具。在美國,EJB+Servlet+JSP幾乎成了電子商務(wù)的開發(fā)標(biāo)準(zhǔn)而在我國也正逐漸興起,不少網(wǎng)站部采用了JSP技術(shù)。2.2.2 JSP的運(yùn)行原理及優(yōu)點(diǎn)在一個(gè)JSP文件第一次被請(qǐng)求時(shí),JSP引擎把該

14、JSP文件轉(zhuǎn)換成為一個(gè)Servlet。而這個(gè)引擎本身也是一個(gè)Servlet。JSP的運(yùn)行過程如下所示:(1)JSP引擎先把該JSP文件轉(zhuǎn)換成一個(gè)Java源文件(Servlet),在轉(zhuǎn)換時(shí)如果發(fā)現(xiàn)JSP文件有任何語法錯(cuò)誤,轉(zhuǎn)換過程將中斷,并向服務(wù)端和客戶端輸出出錯(cuò)信息。(2)如果轉(zhuǎn)換成功,JSP引擎用javac把該Java源文件編譯成相應(yīng)的class文件。(3)創(chuàng)建一個(gè)該Servlet(JSP頁面的轉(zhuǎn)換結(jié)果)的實(shí)例,該Servlet的jspInit()方法被執(zhí)行,jspInit()方法在Servlet的生命周期中只被執(zhí)行一次。(4)jspService()方法被調(diào)用來處理客戶端的請(qǐng)求。對(duì)每一個(gè)請(qǐng)

15、求,JSP引擎創(chuàng)建一個(gè)新的線程來處理該請(qǐng)求。如果有多個(gè)客戶端同時(shí)請(qǐng)求該JSP文件,則JSP引擎會(huì)創(chuàng)建多個(gè)線程。每個(gè)客戶端請(qǐng)求對(duì)應(yīng)一個(gè)線程。以多線程方式執(zhí)行可以大大降低對(duì)系統(tǒng)的資源需求,提高系統(tǒng)的并發(fā)量及響應(yīng)時(shí)間。但不過也應(yīng)該注意多線程的編程限制,由于該Servlet始終駐于內(nèi)存,所以響應(yīng)是非??斓?。(5)如果.jsp文件被修改了,服務(wù)器將根據(jù)設(shè)置決定是否對(duì)該文件重新編譯,如果需要重新編譯,則將編譯結(jié)果取代內(nèi)存中的Servlet,并繼續(xù)上述處理過程。(6)雖然JSP效率很高,但在第一次調(diào)用時(shí)由于需要轉(zhuǎn)換和編譯而有一些輕微的延 遲。此外,在任何時(shí)候如果由于系統(tǒng)資源不足的原因,JSP引擎將以某種不確

16、定的方式將Servlet從內(nèi)存中移去。當(dāng)這種情況發(fā)生時(shí)jspDestroy()方法首先被調(diào)用。(7)然后Servlet實(shí)例便被標(biāo)記加入“垃圾收集”處理??稍趈spInit()中進(jìn)行一些初始化工作,如建立與數(shù)據(jù)庫的連接,或建立網(wǎng)絡(luò)連接,從配置文件中取一些參數(shù)等,在jspDestory()中釋放相應(yīng)的資源?;贘ava語言的JSP技術(shù)具有很多其他動(dòng)態(tài)網(wǎng)頁技術(shù)所沒有的特點(diǎn),具體表現(xiàn)在如下方面:1簡便性和有效性 JSP動(dòng)態(tài)網(wǎng)頁的編寫與一般的靜態(tài)HTML的網(wǎng)頁編寫是十分相似的。只是在原來的HTML網(wǎng)頁中加入一些JSP專有的標(biāo)簽,或是一些腳本程序(此項(xiàng)不是必需的)。這樣,一個(gè)熟悉HTML網(wǎng)頁編寫的設(shè)計(jì)人員

17、可以很容易進(jìn)行JSP網(wǎng)頁的開發(fā)。而且開發(fā)人員完全可以不自己編寫腳本程序,而只是通過JSP獨(dú)有的標(biāo)簽使用別人已寫好的部件來實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁的編寫。這樣,一個(gè)不熟悉腳本語言的網(wǎng)頁開發(fā)者,完全可以利用JSP做出漂亮的動(dòng)態(tài)網(wǎng)頁。而這在其他的動(dòng)態(tài)網(wǎng)頁開發(fā)中是不可實(shí)現(xiàn)的。2程序的獨(dú)立性JSP是Java API家族的一部分,它擁有一般的Java程序的跨平臺(tái)的特性。換句話說,就是擁有程序的對(duì)平臺(tái)的獨(dú)立性,即Write once,Run anywhere!。3程序的兼容性 JSP中的動(dòng)態(tài)內(nèi)容可以各種形式進(jìn)行顯示,所以它可以為各種客戶提供服務(wù),即從使用HTML/DHTML的瀏覽器,到使用WML的各種手提無線設(shè)備(例如

18、,移動(dòng)電話和個(gè)人數(shù)字設(shè)備PDA),再到使用XML的B2B應(yīng)用,都可以使用JSP的動(dòng)態(tài)頁面。4程序的可重用性 在JSP頁面中可以不直接將腳本程序嵌入,而只是將動(dòng)態(tài)的交互部分作為一個(gè)部件加以引用。這樣,一旦這樣的一個(gè)部件寫好,它可以為多個(gè)程序重復(fù)引用,實(shí)現(xiàn)了程序的可重用性?,F(xiàn)在,大量的標(biāo)準(zhǔn)JavaBeans程序庫就是一個(gè)很好的例證。2.2.3 JSP運(yùn)行環(huán)境介紹從最開始的JSWDK到現(xiàn)在的Tomcat、WebLogic等,JSP的運(yùn)行環(huán)境也有了很大的變化,出現(xiàn)了很多優(yōu)秀的JSP容器,如Tomcat、WebLogic、IBM WebSphere等。本文介紹Tomcat 6.0。Tomcat是Apac

19、he Jakarta軟件組織的一個(gè)子項(xiàng)目,它是一個(gè)JSP/Servlet的容器,是在Sun公司的JSWDK(Java Server Web Development Kit)基礎(chǔ)上發(fā)展起來的一個(gè)JSP和Servlet規(guī)范的標(biāo)準(zhǔn)實(shí)現(xiàn)。使用Tomcat可以體驗(yàn)JSP和Servlet的最新規(guī)范。經(jīng)過多年的發(fā)展,使得Tomcat不僅是JSP和Servlet規(guī)范的標(biāo)準(zhǔn)實(shí)現(xiàn),而且具備了很多商業(yè)Java Servlet容器的特性,使得它被一些企業(yè)用于商業(yè)用途。2.3 SQL Server2000簡介2.3.1 SQL Server概述SQL Server 是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),它最初是由Microsoft

20、 Sybase 和Ashton-Tate三家公司共同開發(fā)的,于1988 年推出了第一個(gè)OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發(fā)上就分道揚(yáng)鑣了。Microsoft 將SQL Server 移植到Windows NT系統(tǒng)上,專注于開發(fā)推廣SQL Server 的Windows NT 版本;Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)用。SQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫管理系統(tǒng)的最新版本。該版本繼承了SQL Server 7.0 版本的優(yōu)點(diǎn)同時(shí)

21、又比它增加了許多更先進(jìn)的功能,具有使用方便,可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行Microsoft Windows 98 的膝上型電腦到運(yùn)行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺(tái)使用。2.3.2 SQL Server2000特性1.Internet 集成。SQL Server 2000 數(shù)據(jù)庫引擎提供完整的XML 支持。它還具有構(gòu)成最大的Web 站點(diǎn)的數(shù)據(jù)存儲(chǔ)組件所需的可伸縮性、可用性和安全功能。SQL Server 2000 程序設(shè)計(jì)模型與 Windows DNA 構(gòu)架集成,用以開發(fā) Web 應(yīng)用程序,并且SQL Server 2000

22、支持 English Query 和 Microsoft 搜索服務(wù)等功能,在Web 應(yīng)用程序中包含了用戶友好的查詢和強(qiáng)大的搜索功能。2.可伸縮性和可用性。同一個(gè)數(shù)據(jù)庫引擎可以在不同的平臺(tái)上使用,從運(yùn)行 Microsoft Windows® 98 的便攜式電腦,到運(yùn)行 Microsoft Windows 2000 數(shù)據(jù)中心版的大型多處理器服務(wù)器。SQL Server 2000 企業(yè)版支持聯(lián)合服務(wù)器、索引視圖和大型內(nèi)存支持等功能,使其得以升級(jí)到最大 Web 站點(diǎn)所需的性能級(jí)別。3.企業(yè)級(jí)數(shù)據(jù)庫功能。SQL Server 2000 關(guān)系數(shù)據(jù)庫引擎支持當(dāng)今苛刻的數(shù)據(jù)處理環(huán)境所需的功能。數(shù)據(jù)庫引

23、擎充分保護(hù)數(shù)據(jù)完整性,同時(shí)將管理上千個(gè)并發(fā)修改數(shù)據(jù)庫的用戶的開銷減到最小。SQL Server 2000 分布式查詢使您得以引用來自不同數(shù)據(jù)源的數(shù)據(jù),就好象這些數(shù)據(jù)是 SQL Server 2000 數(shù)據(jù)庫的一部分,同時(shí)分布式事務(wù)支持充分保護(hù)任何分布式數(shù)據(jù)更新的完整性。復(fù)制同樣使您得以維護(hù)多個(gè)數(shù)據(jù)復(fù)本,同時(shí)確保單獨(dú)的數(shù)據(jù)復(fù)本保持同步??蓪⒁唤M數(shù)據(jù)復(fù)制到多個(gè)移動(dòng)的脫接用戶,使這些用戶自主地工作,然后將他們所做的修改合并回發(fā)布服務(wù)器。4.易于安裝、部署和使用。 SQL Server 2000 中包括一系列管理和開發(fā)工具,這些工具可改進(jìn)在多個(gè)站點(diǎn)上安裝、部署、管理和使用 SQL Server 的過程

24、。SQL Server 2000 還支持基于標(biāo)準(zhǔn)的、與 Windows DNA 集成的程序設(shè)計(jì)模型,使 SQL Server 數(shù)據(jù)庫和數(shù)據(jù)倉庫的使用成為生成強(qiáng)大的可伸縮系統(tǒng)的無縫部分。這些功能使您得以快速交付 SQL Server 應(yīng)用程序,使客戶只需最少的安裝和管理開銷即可實(shí)現(xiàn)這些應(yīng)用程序。5.數(shù)據(jù)倉庫。 SQL Server 2000 中包括析取和分析匯總數(shù)據(jù)以進(jìn)行聯(lián)機(jī)分析處理 (OLAP) 的工具。SQL Server 中還包括一些工具,可用來直觀地設(shè)計(jì)數(shù)據(jù)庫并通過 English Query 來分析數(shù)據(jù)。SQL Server 2000共有4個(gè)版本,分別是個(gè)人版,標(biāo)準(zhǔn)版,企業(yè)版和開發(fā)版,

25、本系統(tǒng)采用個(gè)人版。2.4 JSP與SQL Server2000數(shù)據(jù)庫的連接testsqlserver.jsp如下:您的第一個(gè)字段內(nèi)容為:您的第二個(gè)字段內(nèi)容為:第三章 系統(tǒng)分析3.1 需求分析需求分析是軟件工程中一個(gè)重要的過程,在很長的一-段時(shí)間內(nèi),人們一直認(rèn)為需求分析是軟件開發(fā)過程中最簡單的一部分,但需求分析的草率行事往往會(huì)使最終的軟件產(chǎn)品不符合用戶的要求,從而導(dǎo)致軟件產(chǎn)品開發(fā)的失敗。下面就介紹在線投票系統(tǒng)的需求分析。對(duì)于普通用戶,在線投票系統(tǒng)在網(wǎng)頁中顯示需要調(diào)查的問題、接受用戶的投票,并以統(tǒng)計(jì)圖示的方式顯示當(dāng)前調(diào)查結(jié)果。如下圖:進(jìn)入投票頁投票查看結(jié)果退出對(duì)于管理員用戶,在線投票系統(tǒng)提供管理接

26、口,管理員可以任意增加、修改、刪除投票,如下圖:管理員登錄判斷進(jìn)入管理頁投票系統(tǒng)管理退出密碼錯(cuò)誤 密碼正確第四章 系統(tǒng)設(shè)計(jì)4.1 總體設(shè)計(jì)為了更好地表述在線投票系統(tǒng),這里將部分地使用UML的建模圖形。用例圖(Use Case Diagram)提供一個(gè)系統(tǒng)環(huán)境的建模辦式,它能夠幫助系統(tǒng)分析師確定系統(tǒng)內(nèi)部利外部元素以及系統(tǒng)范圍。簡單來說,列例圖由用例和參與者構(gòu)成,其中用例是外部可見的一個(gè)系統(tǒng)功能單元;參與者是與系統(tǒng)發(fā)生交互作用的外部用戶、進(jìn)程或其他系統(tǒng)的理想化概念。在線投票系統(tǒng)的用例圖下圖所示,可以識(shí)別出兩個(gè)參與者,即系統(tǒng)管理員( Admin)和系統(tǒng)使用者( user)。系統(tǒng)管理員除了可以參加投票

27、外還能對(duì)整個(gè)系統(tǒng)實(shí)施完全的管理。系統(tǒng)使用者只能參與投票升查看投票結(jié)果。在線投票用例圖 順序圖( Sequence Diagram)描述對(duì)象之問動(dòng)態(tài)交互關(guān)系,著重體現(xiàn)對(duì)象間消息傳遞的時(shí)間順序。順序圖是一個(gè)二維圖,縱向是時(shí)問軸,時(shí)間延豎線向下延伸;橫向表示對(duì)象之間的消息傳遞。對(duì)象之間的消息從一個(gè)對(duì)象的生命線(時(shí)問軸上的雙道線用箭頭指向另一個(gè)對(duì)象的生命線。用戶參與投票的流程順序圖如下所示,用戶參與在線投票系統(tǒng)從進(jìn)入投票模塊開始,投票模塊以網(wǎng)頁的形式顯示所有開放的問題,用戶在選取符合他要求的投票項(xiàng)后單擊“提交”按鈕,他的投票數(shù)據(jù)將提交給數(shù)據(jù)模塊,由數(shù)據(jù)模塊保存到SQL Server 2000數(shù)據(jù)庫中,

28、從而完成投票提交的過程。用戶還可以查看某問題的投票統(tǒng)計(jì)結(jié)果,用戶進(jìn)入顯示模塊,顯示模塊從數(shù)據(jù)模塊讀取開放問題的投票數(shù)據(jù),并以柱狀統(tǒng)計(jì)圖的形式顯示。用戶參與投票的流程順序圖管理員增加新投票的過程從登錄管理模塊開始,管理員先把用戶名和密碼提交給登錄模塊,登求模塊根據(jù)用戶名到數(shù)據(jù)庫中搜索其對(duì)應(yīng)的密碼,然后對(duì)比用戶名是否存在以及管理員輸入的密碼是否幣確。如果用戶名和密碼正確,登錄模塊把用戶信息提交到管理模塊并提示用戶登錄成功,管理員在管理模塊提交新投票數(shù)據(jù),管理模塊把新投票數(shù)據(jù)提交到數(shù)據(jù)模塊并保存到數(shù)據(jù)庫中,管理模塊提示管理員操作成功,從而完成添加新投票的整個(gè)過程。管理員添加新投票的流程順序圖如下:管

29、理員添加新投票的流程圖4.2 模塊設(shè)計(jì)在線投票系統(tǒng)大致可以分為客戶投票模塊、管理員模塊以及數(shù)據(jù)處理模塊3部分。4.2.1 客戶投票模塊用戶投票模塊包括showquestion.jsp、showresult.jsp、thanks.jsp、convert.jsp 4個(gè)程序頁面,具體的系統(tǒng)結(jié)構(gòu)如下圖。其中,showquestion.jsp是用戶投票的首頁,用戶登錄在線投票系統(tǒng)后就自動(dòng)跳轉(zhuǎn)到該頁面,該頁面通過數(shù)據(jù)處理模塊讀取數(shù)據(jù)庫中所有開放的問題并顯示,用戶可以選取一項(xiàng)或多項(xiàng)回答項(xiàng)并提交。 thanks.jsp是數(shù)據(jù)接收頁。用戶在showquestion.jsp中選擇投票的回答項(xiàng)并提交,用戶所選擇的數(shù)

30、據(jù)項(xiàng)被提交到thanks.jsp,該頁把這些數(shù)據(jù)項(xiàng)儲(chǔ)存到數(shù)據(jù)庫中,并提示用戶投票數(shù)據(jù)提交成功。showresult.jsp是數(shù)據(jù)的顯示頁。當(dāng)用廣在參加投票后可以查看該項(xiàng)投票的統(tǒng)計(jì)結(jié)果,該頁就用柱狀圖的顯示給出統(tǒng)計(jì)圖和所有選擇的百分比。convert.j sp足字符轉(zhuǎn)換頁,主要用于解決中文字符無法正確顯示的問題。在這里用清晰易懂的順序圖來描述用戶投票的過裎中上述頁面間的互相協(xié)作以及消息交互??蛻敉镀蹦K各頁面間的順序圖如圖所示。 4.2.2 管理員模塊管理員模塊由用戶登錄頁面、新增投票頁面、編輯投票頁面組成,具體的系統(tǒng)結(jié)構(gòu)圖如下圖所示。其中l(wèi)ogin,jsp是管理員的登錄頁,管理員要對(duì)在線投票系

31、統(tǒng)進(jìn)行管理必須先進(jìn)行登錄,通過用戶名和密碼的驗(yàn)證。Checkadmin.jsp是管理員登錄的驗(yàn)證頁。管理員在login,jsp填入用戶名和密碼后,這些數(shù)據(jù)將被提交到該頁,然后與數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行對(duì)比。如果驗(yàn)證通過將跳轉(zhuǎn)到管理主頁面。Mainform.jsp是在線投票系統(tǒng)的管理主頁面,在管理員通過用戶名和密碼的驗(yàn)證后,login.jsp將跳轉(zhuǎn)到該頁面。Mainform.jsp包含所有投票的鏈接,管理員單擊問題就能查看投票的結(jié)果,管理員還可以選擇編輯該投票或者刪除該投票。Result.jsp是查看投票結(jié)果的頁面。管理員在登錄劊管理主頁面Mainform,jsp后,單擊某投票的問題,系統(tǒng)會(huì)跳轉(zhuǎn)到該頁

32、面。Result.jsp會(huì)以柱狀圖的形式在網(wǎng)頁上給出該投票每個(gè)選項(xiàng)所占的百分比。Addpoll.jsp和Savedata.jsp是新增投票的頁。管理員在登錄到管理主頁面Mainform.jsp后,選擇新增投票系統(tǒng)會(huì)跳轉(zhuǎn)到Addpoll.jsp頁而,管理員需要在該頁面填入新增投票的問題以及選項(xiàng),然后提交。Savedata.jsp頁面把管理員所提交的新增投票資料保存到數(shù)據(jù)庫中,并提示管理員操作成功。Delete.jsp是刪除投票頁。管理員在登錄到管理主頁面Mainform.jsp后,呵以選擇刪除投票選項(xiàng)來刪除不需要的投票。 Edituserjsp和moduser.jsp是編輯密碼頁。管理員在登錄到

33、管理主頁面Mainform.jsp后,可以選擇更改自己的登錄密碼 isopen.jsp和isvisible.jsp是編輯投票項(xiàng)頁面管理員在登錄到管理主頁面Main form.jsp后,可以編輯某個(gè)投票的屬性。isopen.jsp是設(shè)置投票結(jié)果為不開放,即接收用戶的投票但用戶不可以查看投票的結(jié)果。isvisible,jsp是把某個(gè)投票設(shè)置為對(duì)用戶不可見,即不再接收用戶的投票而且用戶也不能查看投票的結(jié)果,但系統(tǒng)管理員還可以查看投票的結(jié)果在這里選取典型的管理員添加投票過程來描述系統(tǒng)頁面間的互相協(xié)作以及消息交互的過程。管理員添加投票各頁面間的順序圖如下圖所示。4.2.3 數(shù)據(jù)處理模塊數(shù)據(jù)處理模塊由一個(gè)

34、JavaBean程序opendata.java組成一般的系統(tǒng)都把與數(shù)據(jù)庫相關(guān)的代碼封裝在一個(gè)JavaBean組件中。本系統(tǒng)中的opendata.java負(fù)責(zé)連接數(shù)據(jù)庫、執(zhí)行數(shù)據(jù)庫查詢、更新、刪除數(shù)據(jù)等操作。4.3 數(shù)據(jù)庫設(shè)計(jì)在線投票系統(tǒng)使用的數(shù)據(jù)庫是Microsof SQL Server 2000。系統(tǒng)所使用的表包括管理員信息表(Admins)、投票問題表(Questions)以及投票選項(xiàng)表(Items)。管理員信息表(Admins)字段說明類型備注Admname管理員用戶名Varchar 10主鍵Admpwd管理員密碼Varchar 10管理員信息表( Admins)包括管理員的用戶名和密碼

35、,管理員登錄在線投票系統(tǒng)時(shí)Checkadmin.jsp就是讀取管理員輸入的用戶名和密碼與數(shù)據(jù)庫中的數(shù)據(jù)對(duì)比投票問題表(Questions)字段說明類型備注QuestionID投票問題ID號(hào)Int主鍵,自增1Question投票問題內(nèi)容Varchar 500不為空IsVisable該問題對(duì)用戶是否可見Int1為可見,0為不可見IsOpen該問題統(tǒng)計(jì)結(jié)果是否可見Int1為可見,0為不可見Date該問題設(shè)立的時(shí)間Varchar 50投票問題表(Questions)包括的字段為投票的問題、投票問題是否可見、投票問題是否開放、投票問題設(shè)立的時(shí)間,當(dāng)用戶登錄showquestion.jsp時(shí)該頁就從數(shù)據(jù)庫

36、中讀取所有的可見問題及其選項(xiàng)并顯示在網(wǎng)頁上。投票選項(xiàng)表(Items)字段說明類型備注ItemID投票問題選項(xiàng)ID號(hào)Int主鍵,自增1QuestionID投票問題ID號(hào)Int不為空Item該問題選項(xiàng)內(nèi)容Varchar 500不為空ItemCount該選項(xiàng)獲得的投票數(shù)Int不為空投票選項(xiàng)表(Items)包括的字段為投票問題ID號(hào)、該問題選項(xiàng)內(nèi)容、該選項(xiàng)獲得的投票數(shù)。當(dāng)用戶登錄showquestion.jsp時(shí),該網(wǎng)頁先讀取投票問題表(Questions)中所有可見的問題,然后根據(jù)每一個(gè)問題的ID號(hào)在投票選項(xiàng)表(ltems)中找到該問題的對(duì)應(yīng)選項(xiàng)并最終顯示在網(wǎng)頁上。當(dāng)用戶完成自己的投票后,thank

37、s.jsp將用戶所投的選項(xiàng)所對(duì)應(yīng)的投票數(shù)加1。投票問題表(Questions)與投票選項(xiàng)表(Items)在SQL-Server 2000中的數(shù)據(jù)庫邏輯關(guān)系如下圖所示。第五章 系統(tǒng)開發(fā)5.1 客戶投票模塊1.用戶投票首頁用戶登錄在線投票系統(tǒng)后首先看到的就是該頁面,該頁面從數(shù)據(jù)庫中讀取所有的可見問題及其選項(xiàng)后以網(wǎng)頁的形式顯示,并且接收用戶的投票,然后把用戶的投票信息提交給數(shù)據(jù)接收頁。程序說明:用戶投票首頁。程序模塊名稱:Showquestion.jsp。相關(guān)數(shù)據(jù)表:投票問題表(Questions)、投票選項(xiàng)表(Items)。用戶投票頁的部分代碼如下: String permit; String S

38、qlString=SELECT Question,QuestionID from questions where IsVisable = 1;try ResultSet rs=null; ResultSet ch_rs=null; /設(shè)置連接sqltest.setConnection(com.microsoft.jdbc.sqlserver.SQLServerDriver,jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=questionnaire,sa,); /設(shè)置SQL語句 rs=sqltest.executeQuery(SqlSt

39、ring); /得到查詢結(jié)果 int questionid = 0,itemid = 0; int i=0,j; /題目及選項(xiàng)標(biāo)號(hào) while(rs.next() i+; String question = rs.getString(1); questionid= rs.getInt(2); out.print(+ +i+.+ +question+);/子查詢語句,根據(jù)問題id號(hào)到items表中查詢?cè)搯栴}的所有選項(xiàng) String ch_sql = SELECT Item,ItemID From Items Where QuestionID =+questionid+; ch_rs=sqltes

40、t.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.數(shù)據(jù)接收頁用戶首先登錄投票頁showquestion.jsp并提交他們認(rèn)可的回答項(xiàng),用戶所選擇的數(shù)據(jù)項(xiàng)被提交到數(shù)據(jù)接收頁thanks.jsp,該頁把這些數(shù)據(jù)項(xiàng)儲(chǔ)存到數(shù)據(jù)庫中并提示用戶投票

41、數(shù)據(jù)提交成功。程序說明:數(shù)據(jù)接收頁。程序模塊名稱:Thanks.jsp相關(guān)數(shù)據(jù)表:投票問題表(Questions)、投票選項(xiàng)表(Items)數(shù)據(jù)接收頁的代碼如下: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() questioni

42、d = rs.getInt(1); /獲取用戶選擇的該問題的選項(xiàng)的id號(hào) itemid = Integer.parseInt(request.getParameter(String.valueOf(questionid); /更新該問題選擇的計(jì)數(shù)值,做加1操作 sqlstring = update Items set ItemCount = ItemCount + 1 Where ItemID =+itemid; sqltest.executeUpdate(sqlstring); catch(SQLException e1) out.print(SQL異常!); 3.數(shù)據(jù)顯示頁showresu

43、lt.jsp是數(shù)據(jù)的顯示頁。當(dāng)用戶在用戶投票貞showquestion.jsp完成投票后可以跳轉(zhuǎn)到本頁面查看該頊投票的統(tǒng)計(jì)結(jié)果該頁就是用柱狀圖的顯示給出統(tǒng)計(jì)圖,并給出投票問題每個(gè)選項(xiàng)的百分比。程序說明:數(shù)據(jù)顯示頁。程序模塊名稱:showresult.jsp相關(guān)數(shù)據(jù)表:投票問題表(Questions)、投票選項(xiàng)表(Items)數(shù)據(jù)顯示頁的代碼如下:String question,date,Sqlstring; ResultSet rs=null; /定義數(shù)據(jù)集 ResultSet rs1=null; ResultSet rs2=null; int questionid = 0; Sqlstrin

44、g = SELECT Question, Date, QuestionID from questions where IsVisable = 1 and IsOpen= 1; /查詢所有問題內(nèi)容可見且投票結(jié)果可見的問題 rs=sqltest.executeQuery(Sqlstring); Sqlstring = SELECT ItemCount From Items Where QuestionID =+questionid; rs1 = sqltest.executeQuery(Sqlstring); int totalcount = 0; while(rs1.next() totalco

45、unt += rs1.getInt(1); if(totalcount=0) out.print(暫時(shí)還沒有人參加本題投票); 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

46、 = 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;

47、 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.字符轉(zhuǎn)換頁此頁面主要用于解決中文字符無法正確顯示的問題,這是一個(gè)基礎(chǔ)頁面,在其他所有的頁面都有可能調(diào)用該頁的函數(shù)。程序說明:字

48、符轉(zhuǎn)換頁。程序模塊名稱:converr.jsp。相關(guān)數(shù)據(jù)表:無。字符轉(zhuǎn)換頁代碼如下:%! 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) + s

49、tr.substring(index+1); return(str); %5.2 管理員模塊1. 管理員登陸頁程序說明:管理員登錄頁。程序模塊名稱:login.jsp。相關(guān)數(shù)據(jù)表:無。管理員登錄頁部分代碼如下:String errmsg = request.getParameter(errmsg); request.getSession(true); String chk = false; session.putValue(Enter,chk);if(errmsg != null & errmsg.equals(error1) out.print(您輸入管理員帳號(hào)或者密碼不正確!); else

50、 if(errmsg != null & errmsg.equals(error2) out.print(請(qǐng)先登陸!);2. 管理員驗(yàn)證頁checkadmin.jsp是管理員登錄的驗(yàn)證頁。管理員在login.jsp頁面填入用戶名和密碼后,這些數(shù)據(jù)將被提交到該頁,然后與數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)進(jìn)行對(duì)比。如果驗(yàn)證通過將跳轉(zhuǎn)到管理主頁面。程序說明:管理員驗(yàn)證頁。程序模塊名稱:checkadmin.jsp。相關(guān)數(shù)據(jù)庫:管理員信息表(Admins)。管理員驗(yàn)證頁部分代碼如下:ResultSet rs=null; String name = request.getParameter(name); String password = request.getParameter(password);/根據(jù)用戶提交的用戶名和密碼查詢admins表 String sqlstring = select * from admins where Admname = +name+ and Admpwd= +password+;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論