摘要:該文介紹了網(wǎng)絡(luò)投票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),該系統(tǒng)采用MVC設(shè)計(jì)模式進(jìn)行開發(fā)。主要實(shí)現(xiàn)了用戶注冊、登錄、注銷,匿名投票,實(shí)名投票,查看投票結(jié)果,留言,發(fā)表意見,留言管理,用戶管理等功能。該系統(tǒng)界面友好、操作簡單,易于維護(hù)。
關(guān)鍵詞:投票系統(tǒng);MVC;JSP
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)29-0117-02
Abstract: The design and implementation of a network voting system is introduced, which is developed with the MVC design pattern.Many functions are mainly implemenmted, such as user registration, login, cancellation, anonymous voting, real-name voting, checking the results of voting, leaving a message, commenting, message management, user management etc. Meanwhile, the system has friendly interface, simple operation and easy maintenance.
Key words: voting System;MVC;JSP
1 背景
隨著社會信息化程度的提高,及時、有效的獲取信息已成為關(guān)鍵,網(wǎng)上投票系統(tǒng)正好能滿足信息獲取的基本需求。投票系統(tǒng)不但擴(kuò)展了信息反饋的規(guī)模,節(jié)流了人力資源,在日益競爭的市場中具有較強(qiáng)的作用。
2 系統(tǒng)的分析和設(shè)計(jì)
2.1 需求分析
投票系統(tǒng)中共有三種用戶角色:游客、注冊用戶、管理員。每種角色的操作權(quán)限是不同的。
游客的主要權(quán)限有:瀏覽信息、用戶注冊、匿名投票、留言。
注冊用戶的主要權(quán)限有:登錄、投票、查看結(jié)果、留言。
管理員的主要權(quán)限有:登錄、管理投票、管理用戶。
2.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
該系統(tǒng)是基于B/S架構(gòu)下的多層結(jié)構(gòu)應(yīng)用系統(tǒng)。系統(tǒng)采用三層架構(gòu),其中最上一層為表現(xiàn)層,該層主要負(fù)責(zé)接收用戶的請求,以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問。第二層為業(yè)務(wù)邏輯層,該層專注于實(shí)現(xiàn)業(yè)務(wù)邏輯功能,主要負(fù)責(zé)對數(shù)據(jù)層的操作。第三層為數(shù)據(jù)訪問層,有時候也稱為是持久層,其功能主要是負(fù)責(zé)數(shù)據(jù)庫的訪問,簡單來說就是實(shí)現(xiàn)對數(shù)據(jù)表的Select,Insert,Update,Delete的操作。在該系統(tǒng)中,使用開源的MySQL數(shù)據(jù)庫,持久化層使用Hibernate技術(shù),業(yè)務(wù)邏輯層使用struts框架和javabean技術(shù),表現(xiàn)層運(yùn)用jsp技術(shù)。
2.3 數(shù)據(jù)庫設(shè)計(jì)
通過對投票系統(tǒng)的數(shù)據(jù)進(jìn)行分析,確定了系統(tǒng)的五個實(shí)體分別是:用戶、管理員、投票內(nèi)容、投票結(jié)果、留言。
用戶實(shí)體用來表示用戶的基本信息,包括以下屬性:用戶ID、用戶名、密碼、性別、出生日期、郵箱等。
管理員實(shí)體用來表示管理員的基本信息,包括以下屬性:管理員ID、管理員名、密碼、權(quán)限等。
投票內(nèi)容實(shí)體用來表示投票的相關(guān)信息,包括以下屬性:投票ID、投票名、選項(xiàng)A、選項(xiàng)B、選項(xiàng)C、選項(xiàng)D等。
投票結(jié)果實(shí)體用來表示投票結(jié)果的相關(guān)數(shù)據(jù),包括以下屬性:投票ID、選項(xiàng)A投票數(shù)、選項(xiàng)B投票數(shù)、選項(xiàng)C投票數(shù)、選項(xiàng)D投票數(shù)、總投票數(shù)等。
留言實(shí)體用來表示用戶留言的相關(guān)信息,包括以下屬性:用戶ID、留言內(nèi)容、郵箱等。
3 系統(tǒng)實(shí)現(xiàn)
3.1 首頁顯示模塊
投票系統(tǒng)的首頁會顯示相關(guān)投票內(nèi)容,提供選項(xiàng)進(jìn)行投票。實(shí)現(xiàn)該模塊主要使用了Map數(shù)組,首先從數(shù)據(jù)庫的投票內(nèi)容表中查詢到投票ID和投票名,把投票ID和投票名看成鍵值對應(yīng)的關(guān)系,全部put到Map數(shù)組中,重寫集合框架Collection中的sort()方法,通過重寫compare()方法來實(shí)現(xiàn)升序排序,然后使用for循環(huán)遍歷Map數(shù)組,即可獲取到投票的列表信息。
3.2 注冊模塊
游客點(diǎn)擊注冊按鈕進(jìn)入注冊頁,輸入相關(guān)注冊信息,首先查詢數(shù)據(jù)庫中是否存在此用戶名,如存在注冊失敗,如不存在,則會跳轉(zhuǎn)到登錄頁。 實(shí)現(xiàn)該模塊是通過JavaBean技術(shù),建立用戶類,所有屬性一律用private修飾,利用get()和set()方法獲取和設(shè)置屬性值。JSP中的內(nèi)置對象request用來獲取注冊表單里的內(nèi)容,通過set()方法設(shè)置User類各屬性的信息,最后判斷是否成功插入數(shù)據(jù)庫中,如成功則跳轉(zhuǎn)到RegisterSuccess.jsp;如失敗,則跳轉(zhuǎn)到注冊頁。
3.3 登錄模塊
用戶進(jìn)入登錄頁面,輸入用戶名和密碼,點(diǎn)擊登錄按鈕,此時會查詢數(shù)據(jù)庫進(jìn)行驗(yàn)證,驗(yàn)證通過,則可以正常登錄。實(shí)現(xiàn)該模塊通過JavaBean技術(shù),建立用戶類,所有屬性一律用private修飾,利用get()和set()方法獲取和設(shè)置屬性值。使用JSP中的內(nèi)置對象request來獲取表單里的內(nèi)容,判斷通過request獲取的用戶名、密碼是否與User類中g(shù)etUserName()、getPassword()的返回值相同,如相同則跳轉(zhuǎn)到index.jsp;如失敗,則跳轉(zhuǎn)回登錄頁。
3.4 投票模塊
用戶在投票頁面選擇一個選項(xiàng)進(jìn)行投票,如果成功會跳轉(zhuǎn)到投票結(jié)果顯示頁,如果不成功則返回到投票頁。實(shí)現(xiàn)該模塊也使用了JavaBean技術(shù),首先查詢數(shù)據(jù)庫中投票內(nèi)容表的數(shù)據(jù),然后從結(jié)果集中一一取出,通過內(nèi)置對象request的getParameter()獲取,最后傳遞到表單中,通過頁面顯示出來。
3.5 顯示結(jié)果模塊
投票成功后,系統(tǒng)會自動跳轉(zhuǎn)到投票結(jié)果顯示頁,實(shí)時查看投票結(jié)果,結(jié)果通過橫向柱狀圖顯示。實(shí)現(xiàn)該模塊是通過地址傳參,獲得投票ID,再根據(jù)投票ID查詢投票結(jié)果表中的相應(yīng)記錄,得到每一個選項(xiàng)的投票數(shù),求出總和,并求出每個選項(xiàng)所占比例,根據(jù)比例設(shè)置綠條的width屬性,即可柱狀顯示。
3.6 投票管理模塊
管理員成功登錄后,通過輸入投票名、投票選項(xiàng)等內(nèi)容創(chuàng)建新的投票,系統(tǒng)會將輸入的內(nèi)容插入到數(shù)據(jù)庫的投票內(nèi)容表中。實(shí)現(xiàn)該模塊首先要把表單里輸入的內(nèi)容保存到新建的Vote對象中,通過Vote類中的get()方法獲取所有屬性的值,然后使用insert語句插入到相應(yīng)的投票內(nèi)容表中。
4 結(jié)束語
該系統(tǒng)使用了J2EE相關(guān)技術(shù),采用了MVC系統(tǒng)架構(gòu),較好地實(shí)現(xiàn)了投票系統(tǒng)的基本功能,實(shí)現(xiàn)了投票的無紙化管理,讓用戶投票以及統(tǒng)計(jì)投票結(jié)果更為快捷,讓組織投票更加便利。
參考文獻(xiàn):
[1] 衡友躍. 基于MVC模式的網(wǎng)上購物系統(tǒng)應(yīng)用研究[J]. 淮北職業(yè)技術(shù)學(xué)院學(xué)報, 2008,7(1):77-79.
[2] 孫衛(wèi)琴. 精通struts:基于MVC的JAVA WEB設(shè)計(jì)與開發(fā)[M]. 北京: 電子工業(yè)出版社, 2004.
[3] 劉瑾, 詹玲超. 基于J2EE的網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識與技術(shù), 2016(4).
【通聯(lián)編輯:謝媛媛】