電影售票系統(tǒng)優(yōu)秀畢業(yè)論文_第1頁
電影售票系統(tǒng)優(yōu)秀畢業(yè)論文_第2頁
電影售票系統(tǒng)優(yōu)秀畢業(yè)論文_第3頁
電影售票系統(tǒng)優(yōu)秀畢業(yè)論文_第4頁
電影售票系統(tǒng)優(yōu)秀畢業(yè)論文_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本科畢業(yè)論文目錄TOC\o"1-3"\h\u286251緒論 頁1緒論隨著經(jīng)濟的發(fā)展,人們生活質(zhì)量提高了,娛樂方式也日新月異。電影不再是“奢侈品”,而是人們?nèi)粘I钪行蓍e娛樂必備的商業(yè)產(chǎn)物。在這個網(wǎng)絡(luò)信息化濃厚的時代,網(wǎng)絡(luò)成為主要的通訊手段。當代網(wǎng)絡(luò)如此發(fā)達,也有不少基于Web的電影院網(wǎng)站,如深圳太陽數(shù)碼影城、Mtime時光網(wǎng)、58影院等。他們多用JSP實現(xiàn)動態(tài)網(wǎng)站制作。JSP將網(wǎng)頁的設(shè)計同網(wǎng)頁的后臺邏輯分離,是支持可重用的基于組件的設(shè)計。但是JSP的組件不夠豐富,要實現(xiàn)特殊功能的控件,如用戶打分的可拖拉五角星打分條,沒有現(xiàn)成的組件,編寫制作起來非常復(fù)雜麻煩。雖然JSP簡化了編程開發(fā),但在復(fù)雜邏輯中還是要編寫很多代碼,開發(fā)人員的學(xué)習(xí)負擔(dān)也不斷加重。JavaServerFaces(JSF)框架可以很好的解決以上問題,它提供全新的,動態(tài)的標簽庫,且組件豐富多樣,組件可以同托管Bean綁定,進一步簡化了代碼編寫,減少了代碼量。利用JSF能制作出飽滿的頁面,且支持拖拽功能,非常方便。因此本系統(tǒng)要使用JSF框架,利用發(fā)達的網(wǎng)絡(luò)技術(shù),構(gòu)建起一個基于Web的影院信息管理系統(tǒng)。1.1研究背景及研究意義信息時代的今天,我們感受到計算機科學(xué)日新月異的氣息日漸膨脹。如此,信息的傳播途徑與傳遞方式也隨之豐富多彩。發(fā)展日漸成熟的計算機網(wǎng)絡(luò)承載著大量信息的流通任務(wù),人們的生活也越來越依靠網(wǎng)絡(luò)。在日常娛樂商品中,電影成為豐富精神生活的佳品。而如今信息流逝太快,傳統(tǒng)媒體不能對影院起到較高效的宣傳與展示,電影文化只存在于紙張和膠片中使其傳播力度受到局限。由此一來,人們不易在第一時間獲知影院動態(tài),許多精彩的電影信息得不到廣泛交流,得不到有效的定格,人們想要了解詳細的、日志性的影院信息可能也無從下手。我們要利用發(fā)達的網(wǎng)絡(luò),利用時新的技術(shù),構(gòu)建起一個基于Web的影院信息管理系統(tǒng)。這樣,各大影院就可以合理規(guī)劃電影信息,展示影院文化,與客戶做好充分交流,讓用戶感受到實時信息,使影院運營的更加流暢,獲取更好的經(jīng)濟效益。1.2研究內(nèi)容該系統(tǒng)主要面向普通用戶和管理員兩種人群。對于普通用戶可實現(xiàn)注冊/登錄功能、積分獲取功能、查找站內(nèi)電影功能(多條件查找)、瀏覽影院電影信息功能、添加影評功能、電影投票功能、訂/退票功能、兌換禮品功能;管理員可實現(xiàn)注冊/登錄功能、更新電影信息功能、據(jù)用戶投票進行電影排名功能、更新展示的禮品功能、管理用戶功能。該系統(tǒng)使用了新框架JavaServerFaces2.0,使用的開發(fā)語言為Java語言,開發(fā)工具采用的是MyEclipse10.0,采用Tomcat7.0作為Web服務(wù)器,采用MySQL作為數(shù)據(jù)庫。1.3論文結(jié)構(gòu)本文首先對實現(xiàn)系統(tǒng)所有的技術(shù)和工具進行了介紹(第二章);其次對系統(tǒng)需求進行了詳細的分析(第三章);再次,本文對系統(tǒng)的詳細設(shè)計與實現(xiàn),以及所遇到的關(guān)鍵問題及解決方案做了詳細的闡述(第四章);最后對系統(tǒng)實現(xiàn)效果進行了展示(第五章)。

2系統(tǒng)開發(fā)工具與相關(guān)技術(shù)介紹本系統(tǒng)使用JSF2.0技術(shù),PrimeFaces3.5參考實作,MyEclipse10.0開發(fā)環(huán)境,MySQL數(shù)據(jù)庫,Tomcat7.0服務(wù)器。2.1JSF技術(shù)JavaServerFaces(JSF)是一個新的,基于Java的標準框架。它為Web應(yīng)用程序提供了用戶接口,而且它化簡了用戶接口的應(yīng)用。也就是說,JSF提供了一種以組件為中心的用戶界面(UI)構(gòu)建方法[1],不管是前臺頁面設(shè)計人員還是后臺程序開發(fā)人員,都可以使用JSF獨立地完成自己涉及的模塊,前臺與后臺得到了有效地分離,大大減小了耦合度。JSF2.0內(nèi)置于Facelets提供的先進模板,與Ajax更完美地結(jié)合;它提供了復(fù)合多種功能的組件,只需將組件的功能屬性啟動,就可以非常簡便的使用該功能;它整合了Bean的驗證,改進了驗證規(guī)范[2]。JSF有很多用于提高其Web應(yīng)用程序的類庫,如PrimeFaces,MyFaces等,本系統(tǒng)使用了PrimeFaces類庫。MVC是常用的設(shè)計模式,本系統(tǒng)使用了JSF來實現(xiàn)。MVC是Model-View-Controller的簡稱,即模型—視圖—控制器[3]。使用JSF實現(xiàn)視圖層,使頁面更加獨特美觀,它解決了網(wǎng)頁設(shè)計的靜態(tài)性與程序設(shè)計的動態(tài)性間的矛盾,使設(shè)計更加方便簡潔。JSF提供了一組新的動態(tài)的標簽,它與后臺動態(tài)程序相連接。JSF框架自帶的Servlet擔(dān)任了MVC中的控制器,而后臺Bean實現(xiàn)了模型層。JSF實現(xiàn)了視圖和業(yè)務(wù)邏輯代碼的完全分離,完全遵循MVC—2模式[4]。那么在JSF中是怎樣實現(xiàn)前臺與后臺的聯(lián)系,利用什么來管理資源的呢?這就是托管Bean。在Java編程語言中,一個托管Bean(ManagedBean)就是一個Java對象。定義了托管Bean,就不需再手動實例化類對象了。托管Bean代表了一種可管理的資源,比如一個組件,一個臺設(shè)備,一個服務(wù)類。托管Bean具有惰性初始化的性質(zhì),僅當在運行時間內(nèi)應(yīng)用程序需要它時,容器才將它初始化,也就是說,在JSF架構(gòu)中,后臺處理Bean交由JSF容器進行管理。配置文件為faces-config.xml,Bean對象的生命周期可以為null:用時才生成[5]。任何Java公共類,任何無參的構(gòu)造函數(shù)都能做托管Bean,List和Map對象也可以[2]。2.2PrimeFacesPrimefaces是JSF的參考實例。它提供了豐富的組件,內(nèi)置于Ajax,基于JSF2.0標準。它是輕組件庫,只有一個jar文件,無需配置,沒有必要的依附體,是頁面表現(xiàn)的更生動,倍受程序開發(fā)者的青睞。PrimeFaces提供了局部頁面呈現(xiàn)功能,這就可以選擇在一個JSF生命周期中要運行什么,最后要同Ajax返回什么數(shù)據(jù)。JSF的原稿基于jQuery和JavaScript[6]。PrimeFaces提高了JSFWeb應(yīng)用程序開發(fā)的效率,它主要由三個模塊構(gòu)成,即UI模塊,Optimus模塊和FacesTrace模塊。UI提供的組件支持通過Ajax更新頁面。Optimus模塊簡化了JSF的開發(fā),F(xiàn)acesTrace模塊提供的各種工具能夠JSFWeb應(yīng)用程序,可查看JSF生命周期,進行性能跟蹤查看,監(jiān)聽頁面信息等。2.3MyEclipse本系統(tǒng)使用MyEclipse10.0開發(fā)平臺。Myeclipse是Eclipse支持下的J2EE開發(fā)插件,功能十分完善,具備了完備的編碼、調(diào)試、測試和發(fā)布等功能并且完整支持HTML、Struts、JSF、CSS、JSP、SQL、Hibernate、Spring等技術(shù)。Myeclipse插件基本上涵蓋了眾多Eclipse插件的功能,能滿足我們的各種應(yīng)用需求,基本上安裝了它就無須其它任何插件[7]。用Genuitec公司的集成開發(fā)環(huán)境MyEclipse做開發(fā),人機界面良好、交互性好、實時性強、移植性強,經(jīng)過實際運行檢驗,證實了該系統(tǒng)操作簡便,響應(yīng)快,通用性、靈活性和安全性好[8],能夠明顯提影院信息管理的效率。2.4MySQLMySQL是由瑞典MySQLAB公司開發(fā)的一個開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、總體擁有成本低被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站開發(fā)中,目前通過JDBC連接MySQL一般采用兩種方式:JDBC-ODBC連接橋方式和純Java驅(qū)動程序直接連接的方式[9]。JDBC(JavaDataBaseConnectivity)是基于中間件平臺的一種數(shù)據(jù)庫訪問技術(shù),他能夠很好的與ODBC(OpenDataBaseConnectivity)結(jié)合,具有可移植性、平臺無關(guān)性[10]。要通過JDBC訪問MySQL,需要下載JDBC驅(qū)動程序。通過DriverManager類的getConnection方法可以建立連接[11]。數(shù)據(jù)庫中數(shù)據(jù)的丟失,若無法通過軟件等途徑恢復(fù),則會致使業(yè)務(wù)無法進行[12]。所以數(shù)據(jù)庫的備份是非常重要的。MySQL可通過Mysqldump、客戶端管理工具、直接拷貝、日志進行備份。2.5Java語言Java語言是一種純面向?qū)ο蟮木幊陶Z言。它主要的特性是面向?qū)ο?,可移植性,多線程,動態(tài)性。面向?qū)ο笏哂械姆庋b性,繼承性,多態(tài)性等特點使其具有強大的生命力[15]。.java文件中存放了Java源程序,它經(jīng)javac命令編譯后就生成了相應(yīng)的.class文件。3需求分析所謂好的開始是成功的一半,在啟動一個項目前需求分析是必不可少的也是至關(guān)重要的一步。我們要對準啟動項目進行數(shù)據(jù)采集,分析預(yù)計實現(xiàn)的功能及功能的可行性,對系統(tǒng)結(jié)構(gòu)進行搭建,對數(shù)據(jù)對象進行物理建模,對其存儲方式、存儲結(jié)構(gòu)、依賴關(guān)系進行縝密的揣測定奪。3.1系統(tǒng)功能需求分析基于Web的影院信息管理系統(tǒng)面向兩種用戶,即普通用戶和管理員。普通用戶為影院的大眾客戶,通過該系統(tǒng)與影院進行信息交流;管理員則是對系統(tǒng)的數(shù)據(jù)進行管理,主要是對數(shù)據(jù)的修改,添加和修改。下面對面向普通用戶功能和面向管理員功能進行具體分析。3.1.1普通用戶功能普通用戶功能用例圖建模分析如圖3.1所示。圖3.SEQ圖\*ARABIC1普通用戶功能用例建模分析圖普通用戶注冊功能:用戶輸入用戶名及密碼后,注冊成功后方可登錄。未經(jīng)注冊登錄者,系統(tǒng)予以提示,并拒絕本次登錄。普通用戶身份代碼為“0”。普通用戶登錄功能:對已注冊用戶經(jīng)行用戶名與密碼的匹配驗證。驗證通過后方可登錄成功。積分獲取功能:用戶注冊成功后自動獲取相應(yīng)積分(本系統(tǒng)為30分)。訂票成功后會獲取相應(yīng)積分(本系統(tǒng)為10分),退票后收回所獲積分。積分可換取禮品。添加影評功能:用戶可對電影進行評價,打分。電影投票功能:用戶可選擇進入投票頁面,對電影進行投票。訂票功能:用戶登錄成功后可訂電影票,根據(jù)座位圖選擇座位號,訂票成功后返回訂單號。退票功能:登錄后可查看訂單信息,在訂單生產(chǎn)后24小時內(nèi)可退訂。查找電影功能:用戶可根據(jù)電影名稱,電影效果(是否為3D電影),上映日期,觀看日期,電影分類查找站內(nèi)電影。瀏覽網(wǎng)站功能:用戶無需登錄,可查看近期上映電影信息,站內(nèi)電影列表,電影詳細信息等頁面,但如果要實現(xiàn)登錄后才有的功能,若尚未登錄,系統(tǒng)會予以提示。3.1.2管理員功能管理員功能用例圖建模分析如圖3.2所示。圖3.SEQ圖\*ARABIC2管理員功能用例建模分析圖管理員登錄功能:管理員已添加到數(shù)據(jù)庫中,身份代碼為“1”。管理員無注冊功能,新的管理與由已有管理員進行添加(見更新用戶功能)。登錄時,系統(tǒng)根據(jù)身份代碼驗證身份,同時驗證用戶名和密碼是否匹配,可報錯。登錄成功后進行相應(yīng)操作。更新電影信息功能:可添加/刪除電影;修改電影信息:電影名稱,上映時間,電影簡介,電影效果,海報。更新禮品信息:對用戶積分可換取的禮品進行添加,刪除。發(fā)布電影排榜功能:根據(jù)用戶投票對電影進行熱度排名,將排名列表公布。更新用戶功能:總管理員(身份代碼為“1”)可添加新管理員和普通用戶,新管理員屬于二級管理員,身份代碼為“2”。只有總管理員才能刪除二級管理員和普通用戶。普通用戶功能:管理員登錄后擁有普通用戶的多有功能。3.2系統(tǒng)數(shù)據(jù)庫分析本系統(tǒng)設(shè)計到的實體表有:用戶信息表、電影信息表、電影分類表、影評表、禮品信息表、影院座位表、訂單表、禮品兌換單表。3.2.1數(shù)據(jù)庫物理建模分析系統(tǒng)數(shù)據(jù)庫物理建模如圖3.3所示。圖3.3數(shù)據(jù)庫物理建模userinform(用戶信息表)與gift(禮品表)通過giftexchange(禮品兌換單表)關(guān)聯(lián)起來;userinform與film(電影信息表)通過subscribe(訂單表)關(guān)聯(lián)起來;film與criticism(評論表)為N:1的關(guān)系;film與filmcategory(電影分類表)為N:N的關(guān)系;allseat為座位表,存儲影院多有座位號,與其他表沒有關(guān)聯(lián)。3.2.2實體表詳細分析userinform為用戶信息表。它記錄了用戶名(userName),用戶密碼(passWord),身份編碼(ustatus,標記普通用戶和管理員級別),用戶編號(userId),用戶積分(uscore)。用戶信息表如表3.1所示。film為電影信息表。它記錄了電影名稱(filmName),電影編號(filmId),電影效果(is3D),電影海報(filmPicture),電影簡介(filmDescribe),電影得分(filmScore),所得投票數(shù)(vote),上映時間(filmTime),播出時間(showTime),電影分類(category1,category2,category3),余票數(shù)(ticketCount)。電影信息表如表3.2所示。表3.1用戶信息表字段名稱字段類型主鍵外鍵是否為空默認值userIdint(11)是否userNamevarchar(10)否passWordvarchar(15)否ustatusint(1)否uscoreint(10)unsigned是表3.2電影信息表字段名稱字段類型主鍵外鍵是否為空默認值filmIdint(11)是否filmNamevarchar(20)是NULLIs3Dvarchar(5)是NULLfilmDescribetext是NULLfilmPicturevarchar(20)是NULLcategory1varchar(10)是NULLcategory2varchar(10)是NULLcategory3varchar(10)是NULLfilmTimevarchar(20)是NULLshowTimevarchar(100)是NULLvoteint(11)是NULLfilmScoreint(11)是NULLticketCountint(11)是NULLfilmcategory為電影分類表。它記錄了分類編號(fcategoryId),分類名稱(fcategory)。電影分類表如表3.3所示。表3.3電影分類表字段名稱字段類型主鍵外鍵是否為空默認值fcategoryIdint(11)是否fcategoryvarchar(10)是NULLgift為用戶積分兌換的禮品信息表。它記錄了禮品編號(giftId),禮品名稱(giftName),禮品描述(giftDescribe),禮品實體圖(giftPicture),所需積分(requiredScore)。禮品信息表如表3.4所示。表3.4禮品信息表字段名稱字段類型主鍵外鍵是否為空默認值giftIdint(11)是否giftNamevarchar(20)是NULLgiftDescribetext是NULLgiftPicturevarchar(20)是NULLrequiredScoreint(11)是NULL表3.5電影票訂單表字段名稱字段類型主鍵外鍵是否為空默認值subIdint(11)是否filmIdint(11)是否filmNamevarchar(20)是NULLsubTimevarchar(20)是NULLsubNumint(11)是NULLuserIdint(11)是否subscrib為電影票訂單表。它記錄了訂單號(subId),電影編號(filmId),電影名稱(filmName),下單時間(subTime),座位號(subNum),用戶編號(userId)。電影票訂單表如表3.5所示。citicism為電影評論表。它記錄了影評編號(criId),影評內(nèi)容(criDescribe),電影編號(filmId)。電影評論表如表3.6所示。表3.6電影評論表字段名稱字段類型主鍵外鍵是否為空默認值criIdint(11)是否criDescribetext否filmIdvarchar(20)是否giftexchange為禮品兌換單表,它的性質(zhì)同電影票訂單表一樣,用戶每兌換一樣禮品便生成一張兌換單。它記錄了兌換單編號(giftexchangeId),禮品編號(giftId),用戶編號(userId),禮品名稱(giftName),禮品實體圖(giftPicture)。禮品兌換單表如表3.7所示。表3.7禮品兌換單表字段名稱字段類型主鍵外鍵是否為空默認值giftexchangeIdint(11)是否giftIdint(11)是否userIdint(11)是否giftNamevarchar(20)是NULLgiftPictureint(11)是NULLallseat為影院所有的座位編號表。它為獨立的表,與其它表沒有聯(lián)系。它之記錄了所有座位號(seatNumber)。座位編號表如表3.8所示。表3.8座位編號表字段名稱字段類型主鍵外鍵是否為空默認值seatNumberint(11)是否3.3系統(tǒng)結(jié)構(gòu)分析3.3.1系統(tǒng)功能結(jié)構(gòu)分析本系統(tǒng)面向的操作主體為普通用戶和管理員,操作對象主要為電影信息、用戶信息和禮品信息。普通用戶對電影信息的操作有查看、打分、投票、訂/退票;對禮品信息的操作有查看、兌換;對用戶個人信息的操作有查看和修改。管理員對三種信息的操作有增加、刪除、修改。系統(tǒng)功能結(jié)構(gòu)圖如圖3.4所示。3.3.2系統(tǒng)邏輯結(jié)構(gòu)分析JSF中用到托管Bean實現(xiàn)前臺頁面同后臺的傳值。該系統(tǒng)采用JDBC技術(shù)實現(xiàn)同數(shù)據(jù)庫的連接。包cinemasManageBean中定義了所有的托管Bean,托管Bean與前臺空間綁定。Dao包中定義了所有的具體的業(yè)務(wù)邏輯。后臺通過Dao包同數(shù)據(jù)庫連接,對數(shù)據(jù)庫進行操作,在cinemasManageBean包中調(diào)用這些操作和返回的結(jié)果集向前臺頁面?zhèn)髦怠ilter包中是過濾器,文件上傳時用到。系統(tǒng)包圖如圖3.5所示?;赪eb的影院信息管理系統(tǒng)基于Web的影院信息管理系統(tǒng)普通用戶功能管理員功能電影信息禮品個人信息電影信息禮品信息用戶信息個人信息查看添加影評、打分訂/退票兌換修改刪除修改增加圖3.4系統(tǒng)功能結(jié)構(gòu)圖圖3.5系統(tǒng)包圖

4系統(tǒng)詳細設(shè)計本系統(tǒng)面向管理員和普通用戶兩種人群。管理員不可注冊,只能由已有管理員進行添加。系統(tǒng)主頁,所有電影信息是開放的,無需登錄就可瀏覽;而訂票,兌換積分,電影投票,電影評價是要用戶進行登錄后才可享有的功能。系統(tǒng)要對實體:用戶、電影、電影分類、影評、禮品、訂單進行管理,所以建立了相應(yīng)的托管Bean的類:UserBean,F(xiàn)ilmBean,AllfCategoryBean,CriticismBean,GiftBean,SubscribBean;托管Bean要對數(shù)據(jù)庫進行訪問則通過Dao包的相應(yīng)類:UserDao,F(xiàn)ilmDao,AllfCategoryDao,CriticismDao,GiftDao,SubscribDao實現(xiàn)。系統(tǒng)類圖如圖4.1所示。圖4.1系統(tǒng)類圖4.1普通用戶功能的設(shè)計4.1.1用戶注冊/登錄功能用戶注冊圖4.2用戶注冊時序圖該功能實質(zhì)就是對數(shù)據(jù)庫的用戶表進行插入操作。用戶注冊時向頁面的<h:inputText>輸入用戶名和密碼,分別與userBean中的userName和passWord綁定,<h:inputText>的required屬性值為真,用<p:message>進行輸入空的提示。注冊按鈕的action屬性值為#{userBean.uRegist},即與userBean的publicStringuRegist()方法綁定。點擊注冊按鈕后,觸發(fā)UserBean類中的uRegist()方法,在該方法中又嵌套調(diào)用UserDao中的publicStringuserRegist(StringuserName,StringpassWord)方法,將前臺傳入userBean的userName和passWord的值作為參數(shù)傳給userRegist()方法。若注冊成功,則返回字符串“yes”,若失敗則返回“fail”。對face-config.xml進行配置,檢測與userBean綁定的函數(shù)的返回值,實現(xiàn)頁面跳轉(zhuǎn)。時序圖如圖4.2所示。用戶登錄圖4.3用戶登錄時序圖用戶登錄就是對數(shù)據(jù)庫的用戶表進行查找,鎖定用戶名和密碼兩個條件。用戶登錄時向<h:inputText>中輸入用戶名和密碼,兩個輸入文本框分別與userBean的userName和passWord綁定,其required屬性值為真。登錄按鈕與userBean的publicStringucheckLogin()方法綁定,點擊登錄按鈕后觸發(fā)UserBean類中的ucheckLogin()方法,在該方法中又嵌套調(diào)用UserDao類中的publicStringfindusers(StringuserName,StringpassWord)方法,將前臺傳入userBean的userName和passWord作為參數(shù)送入findusers(),登錄成功后返回字符串“success”,若失敗則返回“fail”。同樣對face-config.xml文件進行配置實現(xiàn)頁面跳轉(zhuǎn)。時序圖如圖4.3所示。4.1.2查找電影功能該功能使用PrimeFaces中的控件dataTable實現(xiàn)。dataTable的value屬性值是一個數(shù)據(jù)集,即要放入該數(shù)據(jù)表的數(shù)據(jù)集合。在此,該數(shù)據(jù)集為filmBean.films,即dataTable與filmBean中的集合films綁定。films由FilmDao類中的publicList<FilmBean>findFilm()方法返回。dataTable的var屬性值表示數(shù)據(jù)集中的一個元素,在此var=“fsearch”。dataTable中加入<p:column>,使用期filterBy屬性即可實現(xiàn)按指定字段查找。如按電影上映日期查找,賦值filterBy=“#{fsearch.filmTime}”(filmTime為filmBean的一個屬性,表示上映時間)即可。4.1.3電影投票功能圖4.4電影投票時序圖該功能就是對數(shù)據(jù)庫的電影表的票數(shù)字段進行更新操作。該功能使用dataTable盛放數(shù)據(jù)集,即所有電影,每條記錄后面加一個投票功能列,使用<p:commandLink>。其actionListener屬性值為#{filmBean.filmVote},即與FilmBean類的publicvoidfilmVote(ActionEventevent)方法綁定。filmVote()中調(diào)用FilmDao類的publicintfilmVote(intvote,intfilmId)方法。形參vote為當前票數(shù),filmId為待打分電影的編號,這兩個參數(shù)由頁面的<f:attribute>傳入。在后臺使用event.getComponent().getAttributes().get(“f:attribute的name屬性值”)方法即可獲取f:attribute的值。時序圖如圖4.4所示。4.1.4添加影評功能用戶在電影詳細信息頁面進行電影打分和添加影評。電影打分使用PrimeFaces的rating組件實現(xiàn),并給rating添加ajax。設(shè)置rating與filmScore(filmBean的一個屬性,表示電影當前得分)綁定,設(shè)置ajax監(jiān)聽事件為“rate”,監(jiān)聽動作為filmBean.onrate,更新對象為消息控件,即用戶進行打分動作后會觸發(fā)FilmBean類的publicvoidonrate(RateEventrateevent)方法,在該方法中嵌套調(diào)用FilmDao類中的publicintrateScore(intfilmScore,intfilmId)方法,將前臺傳入的電影當前得分(通過getSessionValue(“鍵”)得到)和電影編號(通過前臺rating組件的<f:attribute>得到)作為實參傳入,如此實現(xiàn)打分。打分的實質(zhì)就是對數(shù)據(jù)庫的電影表進行更新操作,更新其得分字段。打分成功后會有消息提示用戶的打分值,在onrate()方法中調(diào)用FaceContext.getCurrentInstance().addMessage()方法實現(xiàn)消息提示。添加影評影評的添加實質(zhì)上就是在數(shù)據(jù)庫中影評表里插入一條記錄的操作。使用<h:inputTextarea>盛放用戶輸入的評論,該控件與criticismBean.criDescribe(criDescribe屬性為影評字段)綁定。提交按鈕與criticismBean.fCriticismInsert綁定,且設(shè)置提交按鈕的ajax值為真,更行對象為整個表單,實現(xiàn)動態(tài)刷新,提交評論后就能立刻看到自己的評論。點擊提交按鈕后觸發(fā)CriticismBean類的publicvoidfCriticismInsert()方法,該方法中又嵌套調(diào)用CriticismDao類中的publicintfilmCriInsertByid(intfilmId,StringcriDescribe)方法,filmId通過getSessionValue()方法得到,criDescribe通過綁定的前臺控件傳入。4.1.5禮品兌換功能用戶登錄成功后,點擊禮品兌換選項卡進入禮品列表頁面,此選項卡使用PrimeFaces的<p:tabView>控件實現(xiàn)。用戶每兌換一次禮品前進行用戶的積分檢測,積分符合則實現(xiàn)兌換,用戶的積分要相應(yīng)的減少,對數(shù)據(jù)庫中禮品兌換單表插入一天兌換記錄。giftBean是管理禮品的托管Bean,集合allgifts是其屬性之一,表示所有禮品的集合,通過GiftDao類中的findAllGifts()方法返回,該方法實質(zhì)就是對數(shù)據(jù)庫進行一次查詢操作。在前臺頁面中使用PrimeFaces的dataGrid控件來盛放該集合,與dataTable相似,var屬性也表示集合中的一個元素。兌換按鈕的actionListener值為#{giftBean.giftExchange},ajax值為真,更新對象為整個表單,這樣用戶兌換后就能立刻看到剛才兌換的禮品(頁面動態(tài)刷新具體實現(xiàn)見4.4)。點擊兌換按鈕后觸發(fā)GiftBean類的giftExchange(ActionEventevent)方法。在該方法中,首先通過session得到用戶積分,將該積分與禮品所需積分對比,少于則提示積分不足,多余則先后調(diào)用GiftDao類中publicStringexchange(intuserId,intgiftId,StringgiftName,StringgiftPicture)和publicvoiduserScoreDivid(intrequiredScore,intuserId)兩個方法,其中g(shù)iftId,giftName,giftPicture,requiredScore通過兌換按鈕下的<f:attribute>得到,userId通過session得到。4.1.5用戶訂/退功能用戶訂票圖4.5用戶訂票時序圖用戶登錄成功后點擊訂票選項卡進入有訂票功能的電影列表。該列表由PrimeFaces的dataGrid盛放。訂票操作實質(zhì)上是對數(shù)據(jù)庫中三個表的操作:對訂單表插入一條訂單記錄,對電影表的余票字段進行減量更新,對用戶表的用戶積分字段進行增量更新。點擊訂票按鈕后跳轉(zhuǎn)到buyticket(訂票)頁面,將該電影編號傳入此頁面(頁面?zhèn)髦翟敿殞崿F(xiàn)見4.4),該頁面根據(jù)電影余票數(shù)動態(tài)生成座位號(生成座位號詳細實現(xiàn)見4.4),即已訂走的座位號不再出現(xiàn)。每個座位號是一個按鈕,點擊按鈕生成一個訂單,該按鈕actionListener屬性與subscribBean.buyTicket綁定,點擊座位號按鈕觸發(fā)SubscribBean類的publicvoidbuyTicket(ActionEventevent)方法,在該方法中首先嵌套調(diào)用FilmDao類的publicintticketCounts(intfilmId)方法檢測電影余票數(shù),有余票則先后調(diào)用SubscribBean類的publicStringaddSubscrib(intuserId,intfilmId,StringsubsTime,intseatNum,StringfilmName),publicvoidfilmTicketsDivid(intfilmId)和publicvoiduserScoreAdd(intuserId)方法。其中filmId,filmName,userId通過session得到,seatNum通過座位號按鈕下的<f:attribute>得到,subsTime是下單時間,通過調(diào)用GidtDao.nowTime()方法得到當前系統(tǒng)時間(詳細實現(xiàn)見4.4)。時序圖見圖4.5所示。用戶退票圖4.6用戶退票時序圖用戶登錄成功后會進入用戶詳情界面,其中包括用戶訂單列表,可對該列表進行刪除行的操作。刪除訂單的實質(zhì)就是對數(shù)據(jù)庫的訂單表進行刪除操作,對用戶表的用戶積分字段值進行減量更新,對電影表的余票數(shù)字段值進行增量更新。使用PrimeFaces的dataTable控件盛放該用戶訂單的集合,由SubscribDao類的publicList<SubscribBean>findAllSubs(intuserId)方法返回。其中userId通過session得到,即通過用戶編號從數(shù)據(jù)庫的訂單表中選出對應(yīng)用戶的所有訂單。刪除按鈕同subscribBean.deleteSub綁定,及點擊刪除按鈕后調(diào)用SubscribBean的publicvoiddeleteSub(ActionEventevent)方法,在該方法中先后調(diào)用SubscribDao類的publicvoiddeleteSub(StringsubId)方法,publicvoidfilmTicketsAdd(intfilmId)方法和publicvoiduserScoreDivid(intuserId)方法。其中subId和filmId通過刪除按鈕下的<f:attribute>得到,userId通過session得到。時序圖如圖4.6所示。4.2管理員功能的設(shè)計4.2.1管理員登錄功能同用戶登錄相似。不同的是管理員登錄時調(diào)用UserBean類中的publicStringcheckLogin()方法,在此方法中嵌套調(diào)用UserDao類中的publicStringfindMUers(StringuserName,StringpassWord)方法,該方法中調(diào)用了setSessionValue()方法,將管理員編號與身份代碼保存到session中,供修改個人信息和刪除操作時用。此方法中加上了身份代碼的驗證條件(管理員的身份代碼為1或2),通過驗證則登錄成功。4.2.2電影信息管理功能電影信息管理功能分為添加電影,修改電影信息,刪除電影,添加電影分類,和刪除分類。添加電影電影名稱(filmName),電影效果(is3D),電影分類(category1,category2,category3),代售票數(shù)(ticketCount),上映日期(filmTime)都使用<h:inputText>輸入,電影簡介(filmDescribe)使用<h:inputTextarea>輸入,這些控件分別與filmBean的相應(yīng)屬性綁定。電影的海報添加要使用文件上傳功能,由PrimeFaces的fileUpload控件實現(xiàn)(詳細實現(xiàn)見4.4)。添加按鈕與filmBean.filmInsert綁定,點擊添加按鈕觸發(fā)FilmBean類的publicvoidfilmInsert()方法,在此方法中嵌套調(diào)用FilmDao類中的publicintfilmInsert(StringfilmName,Stringis3D,Stringcategory1,Stringcategory2,Stringcategory3,StringfilmPicture,StringfilmDescribe,StringfilmTime,intticketCount)方法,其中的參數(shù)都有前臺綁定的filmBean的屬性值得到。添加成功或失敗都有相應(yīng)的消息提示,設(shè)置添加按鈕的ajax屬性值為真,更新對象為相應(yīng)消息提示框<p:growl>。時序圖如圖4.7所示。圖4.7添加電影時序圖修改電影信息該功能就是根據(jù)前臺頁面?zhèn)鱽淼膄ilmId查到電影表的一條記錄,對該記錄進行更新操作。電影列表由<p:dataTable>盛放,每條記錄后有一個修改按鈕,此修改按鈕下的<f:attribute>將filmId傳入后臺,通過filmId選出要修改的電影的詳細表單,管理員能夠修改電影名稱(filmName),電影效果(is3D),電影分類(category1,category2,category3),代售票數(shù)(ticketCount),上映日期(filmTime),電影簡介(filmDescribe),這些字段與前臺<h:inputText>綁定,且在這些字段的set方法中調(diào)用setSessionValue(),進行修改后,通過session獲取新值。點擊保存按鈕后觸發(fā)FilmBean類的publicvoidfilmUpdate(ActionEventevent)方法,其中嵌套調(diào)用FilmDao類的publicintfilmUpdateById(StringfilmName,Stringis3D,Stringcategory1,Stringcategory2,Stringcategory3,StringfilmPicture,StringfilmDescribe,StringfilmTime,intfilmId)方法,除filmId外其他參數(shù)由getSessionValue()方法得到,filmId由保存按鈕下的<f:attribute>得到。刪除電影該功能實質(zhì)是根據(jù)filmId刪除數(shù)據(jù)庫中電影表的一條記錄。電影列表由<p:dataTable>盛放,dataTable的value值為#{filmBean.films},films為所有電影的集合,由FilmDao類的publicList<FilmBean>findFilm()方法返回。dataTable中每條電影記錄后都有一個刪除按鈕,該按鈕與filmBean.filmDelete綁定,點擊后觸發(fā)FilmBean類的publicvoidfilmDelete(ActionEventevent)方法,該方法中嵌套調(diào)用publicvoidfilmDeleteByID(intfilmId)方法,filmId有刪除按鈕下的<f:attribute>得到。刪除后頁面使用ajax進行動態(tài)刷新。添加電影分類電影分類由托管Bean:allfCategoryBean管理。頁面的<h:inputText>與allfCategoryBean.fcategory綁定,點擊添加按鈕觸發(fā)AllfCategoryBean類的publicvoidcategoryInsert() 方法,該方法中嵌套調(diào)用AllfCategoryDao類的publicintfCategoryInsert(Stringfcategory)方法,fcategory參數(shù)由前臺被allCategoryBean.fcategory綁定的<h:inputText>得到。添加成功后進行消息提示,即在AllCategoryBean類的categoryInsert()方法中調(diào)用addMessage()方法。刪除電影分類同電影刪除功能相似,分類列表由PrimeFaces的dataTable盛放,點擊每行記錄后的刪除按鈕后觸發(fā)AllfCategoryBean類的publicvoidcategoryDelete(ActionEventevent)方法,在該方法中嵌套調(diào)用AllfCategoryDao類的publicvoidcategoryDeleteByID(intcategoryId)方法,參數(shù)categoryId通過刪除按鈕下的<f:attribute>得到。4.2.3用戶信息管理功能管理用戶分為對管理員的管理和對普通用戶的管理,對普通用戶只是刪除功能,對管理員可以添加、刪除,修改個人信息。對用戶和管理員的刪除功能只有終極管理員才能實現(xiàn)(其身份代碼為1),根據(jù)身份代碼檢測其是否有刪除權(quán)限。普通用戶刪除圖4.8刪除普通用戶時序圖普通用戶列表由PrimeFaces的dataTable盛放,普通用戶集合nusers由UserDao類的publicList<UserBean>findNusers()方法返回。每條記錄后都有一個刪除按鈕,點擊刪除按鈕會觸發(fā)UserBean類的publicvoiduserDelete(ActionEventevent)方法,該方法中首先通過session得到登錄的管理員的身份代碼,若不是1則消息提示“沒有刪除權(quán)限”,若是1則調(diào)用UserDao類的publicvoiduserDeleteByID(intuserId)方法,參數(shù)userId通過刪除按鈕下的<f:attribute>傳入。該功能實質(zhì)就是對數(shù)據(jù)庫的用戶列表記錄進行對號刪除操作。時序圖如圖4.8所示。添加管理員在后臺管理處添加的管理員身份代碼為2,初始密碼為888888,自行登錄后可修改個人名稱和密碼。使用<h:outputText>盛放身份代碼值和密碼值,這兩項是定死的不可輸入。管理員名稱使用<h:inputText>盛放并與userBean.userName綁定。點擊添加按鈕后觸發(fā)UserBean類的publicvoidmanagerInsert()方法,該方法中嵌套調(diào)用UserDao類的publicintmanagerInsert(StringuserName,intustatus,StringpassWord,intuscore)方法,userName參數(shù)由前臺被userBean綁定的控件傳入,參數(shù)ustatus、passWord、uscore直接賦值。刪除管理員同普通用戶的刪除功能相似。不同的是點擊刪除按鈕后觸發(fā)UserBean類的publicvoidmanagerDelete(ActionEventevent)方法,該方法中同樣對管理員身份代碼進行檢測。個人信息修改點擊個人修改功能項進入已登錄管理員信息列表。該信息集合由dataGrid盛放,其綁定值為userBean.loguser。loguser是一個集合,盛放了一個已登錄的管理員對象(UserBean類型)。loguser由UserDao類的publicList<UserBean>findLogUsers(intuserId)方法返回。在管理員登錄的方法publicStringfindMUers(StringuserName,StringpassWord)中已將管理員編號放入session中,因此通過getSessionValue()方法可得到userId。點擊修改按鈕觸發(fā)UserBean類的publicvoidlogedUserUpdate()方法,在其中嵌套調(diào)用UserDao類的publicintlogUserUpdate(StringuserName,StringpassWord,intuserId)方法。userName和passWord的set()方法中已調(diào)用setSessionValue()方法,所以通過session可得到他們的值,也是頁面?zhèn)鱽淼男轮?。時序圖如圖4.9所示。圖4.9修改個人信息時序圖4.2.4禮品管理功能禮品的管理包括添加禮品和刪除禮品。在后臺,禮品信息由managedBean:giftBean管理。添加禮品同添加電影功能相似,禮品的添加包括添加禮品名稱(giftName),禮品實體圖(giftPicture),禮品簡介(giftDescribe),所需積分(requiredScore)這些數(shù)據(jù)項。giftName,giftDescribe和requiredScore直接和前臺頁面的<h:inputText>綁定。giftPicture通過上傳文件得到(文件上傳的具體實現(xiàn)見4.4)。點擊添加按鈕觸發(fā)GiftBean類的publicvoidgiftInsert()方法,此方法中嵌套調(diào)用GiftDao類的publicintgiftsInsert(StringgiftName,StringgiftPicture,StringgiftDescribe,intrequiredScore)方法。刪除禮品禮品刪除功能同電影刪除功能相似,不同的是此刪除功能沒有權(quán)限限制,點擊刪除按鈕后觸發(fā)GiftBean類的publicvoidgiftDelete(ActionEventevent)方法,在此方法中嵌套調(diào)用GiftDao類的publicvoidgiftDeleteByID(intgiftId)方法。參數(shù)giftId通過前臺刪除按鈕下的<f:attribute>得到。4.3主要界面設(shè)計4.3.1主頁設(shè)計主頁(mainpage.xhtml)的頁面布局使用PrimeFaces的layout實現(xiàn),設(shè)置layout的fullpage屬性值為true。本系統(tǒng)主頁的layout將頁面分成北(north)、西(west)、中(center)三個模塊。且主頁作為后繼頁面的模板。模板使用詳細實現(xiàn)見4.4。northnorth中盛放系統(tǒng)的工具條,該工具條使用PrimeFaces的dock實現(xiàn)。<p:dock>的position屬性值為top,表示這個dock要放置在頁面的頂部。在<p:dock>中添加<p:menueitem>,表示屬于此dock的某一個元素,設(shè)置其value屬性值為本系統(tǒng)功能的相應(yīng)名稱,表示鼠標聚焦于此時顯示的文字內(nèi)容;設(shè)置icon屬性值為想要使用的圖標路徑,表示該功能按鈕的圖標;設(shè)置url屬性值為將要跳轉(zhuǎn)的頁面名稱。westwest模塊兒展示電影的分類集合。使用PrimeFaces的dataGrid盛放分類集合allCategory,allCategory由AllfCatrgoryDao類的publicList<AllfCategoryBean>findAllfCategory()方法返回。頁面上每個分類名稱都是一個鏈接,點擊某分類名稱,通過該鏈接下的<f:attribute>將分類編號傳入后臺,該鏈接與filmBean.showByCategory綁定,publicList<FilmBean>showByCategory(ActionEventevent)方法返回根據(jù)分類選出的電影列表集合showByCatg,該方法中調(diào)用FilmDao類下的publicList<FilmBean>showByCatg(intcatgId),將從前臺得到的分類編號傳入。點擊分類鏈接后跳轉(zhuǎn)與分類名稱相對應(yīng)的電影列表的新頁面,根據(jù)分類選出的電影列表showByCatg由PrimeFaces的dataGrid控件盛放,設(shè)置dataGrid的paginator屬性值為"true"實現(xiàn)分頁功能。每個電影都可以查看詳情,查看按鈕下的<f:attribute>將選中電影的電影編號傳入后臺,后臺根據(jù)此編號從數(shù)據(jù)庫中讀出對應(yīng)的電影數(shù)據(jù),將該數(shù)據(jù)放入集合中,供將要跳轉(zhuǎn)到的電影詳情頁面使用。centercenter模塊展示最新上線電影。最新上線電影集合nfilms(FilmBean的一個屬性)由FilmDao類的publicList<FilmBean>findNewFilm()方法返回。在前臺頁面中使用dataGrid盛放該集合。設(shè)置<p:dataGridvar=“nf”value=“#{filmBean.nfilms}”>的columns屬性值為4,即想要顯示的數(shù)據(jù)列為4列,<p:dataGrid>中嵌套一個<p:panel>,即一個panel占一個數(shù)據(jù)列,設(shè)置panel的header屬性值為#{nf.filmName},<p:pannel>中嵌套一個<p:panelGrid>,設(shè)置其columns屬性值為1,即數(shù)據(jù)滿一列則換行,在此panelGrid中順次嵌套<p:graphicImagevalue="/materials/images/#{nf.filmPicture}">(展示電影海報)、<h:outputTextvalue="#{nf.category1}#{nf.category2}#{nf.category3}">(展示電影分類)、<p:commandLinkactionListener="#{filmBean.selectedFilm}"action="fdetail.faces">,commandLink被點擊后觸發(fā)FilmBean類的publicList<FilmBean>selectedFilm(ActionEventevent)方法,之后跳轉(zhuǎn)到電影詳情頁面,在該方法中嵌套調(diào)用FilmDao類下的publicList<FilmBean>selectById(intfId)方法,參數(shù)fId通過<p:commandLink>下的<f:attribute>得到,此方法的返回值付給FilmBean的集合selectedFilmInfor,它是被選中電影的詳細信息集合,在電影詳情頁面用到。電影詳情頁面同樣使用dataGrid盛放selectedFilmInfor集合。4.3.2電影詳情頁面設(shè)計電影詳情(fdetail.xhtml)頁面使用mainpage.xhtml做模板。該頁面分為兩個區(qū),每個區(qū)域都用p:fieldset包裹。第一個區(qū)域是電影詳情區(qū),展示電影詳細信息(集合selectedFilmInfor),得分情況,可對電影進行打分;第二個區(qū)域是展示影評區(qū),也可對電影進行評價。打分和影評功能上面以做過描述。用戶詳細信息頁面設(shè)計用戶登錄成功后跳轉(zhuǎn)到用戶詳情頁面(userdetail,xhtml)。該頁面使用mainpage.xhtml做模板,分為三個區(qū)域,每個區(qū)域使用p:fieldset盛放。第一個區(qū)域展示用戶名和當前積分,是一個由dataGrid盛放的集合loguser,此集合由UserDao類的publicList<UserBean>findLogUsers(intuserId)方法返回,參數(shù)userId通過session得到。第二個區(qū)域是用戶兌換的禮品清單selectedug,是GiftBean類的一個集合,它由GiftDao類下的publicList<GiftBean>selectedUserGifts(intuserId)返回。該方法實質(zhì)是根據(jù)用戶編號從數(shù)據(jù)庫的禮品兌換單表中選出對應(yīng)用戶的所有禮品。第三個區(qū)域是用戶訂單列表,可對訂單進行撤銷操作。后臺管理頁面設(shè)計后臺管理的所有頁面都是用后臺管理主頁(managewelcome.xhtml)做模板,管理主頁的布局使用p:layout實現(xiàn),分為north、west、center、east四個模塊。north模塊顯示“影視棧管理系統(tǒng)”的字樣;west顯示后臺管理的功能列表,使用p:panelMenu實現(xiàn);center是可編輯的模塊,顯示各功能的具體操作頁面;east顯示一個flash,使用p:media盛放,對<p:media>嵌套<f:paramname="wmode"value="transparent"/>可使flash透明。4.4關(guān)鍵問題及解決方案模板的引用在模板頁面中,將可編輯的模塊用<ui:insertname="模塊名稱"></ui:insert>包裹住即可。在后繼頁面中使用此模板,只需寫要編輯模塊的代碼即可,將要編輯的模塊代碼用<ui:compositiontemplate="/模板頁面文件全名"><ui:definename="待編輯模塊名">代碼部分</ui:define></ui:composition>包裹住即可。編碼問題從前臺頁面向后臺傳參數(shù)時,若不能傳中文字符,則在數(shù)據(jù)庫連接字符串中的數(shù)據(jù)庫名稱后面加上?characterEncoding=uft8即可。界面的背景問題若把界面的背景圖加在body的background屬性中,則會因為瀏覽器不支持可修改擴展名的圖片的問題導(dǎo)致背景圖片無法顯示。那么將此背景圖加在模板頁面的layout中即可。后繼頁面引用此模板后當然也就引用了這個背景圖。在模板頁面的<h:head></h:head>中加上style樣式,樣式中加上css代碼。具體代碼截圖如圖4.1所示。圖4.1界面背景設(shè)置代碼截圖.ui-layout-unit的background-image:url()屬性設(shè)置背景圖路徑,background-repeat屬性設(shè)置圖片的連續(xù)方式,background-attachment:fixed屬性設(shè)置背景固定還是滑動,background-size屬性設(shè)置圖片的大小。由于layout是將整個頁面分成多個模塊,所以各個模塊之間會有間隙,設(shè)置p:layouUnit的gutter屬性值為負值(本系統(tǒng)設(shè)置為-5)即可。頁面控件與托管Bean綁定問題直接設(shè)置控件的value屬性值為el表達式#{托管Bean.屬性名}即可。p:dataGrid樣式問題在頁面頭部加上style樣式:.ui-datagrid.ui-paginator{background:顏色值;}設(shè)置的是dataGrid分頁條的顏色;.ui-datagrid-content{background:transparent;border:none}設(shè)置的是數(shù)據(jù)內(nèi)容的背景和邊框,此處背景透明,無邊框。動態(tài)刷新是用ajax進行動態(tài)刷新。點擊某按鈕后需要刷新頁面的,設(shè)置按鈕的ajax屬性值為true,update屬性值為要刷新對象,若是整個表單,則update=“:表單名”;若刷新對象為某個控件則update=“控件名”。再如打分時的動態(tài)刷新,在<p:rating></p:rating>中嵌套<p:ajaxevent="rate"listener="#{filmBean.onrate}"update="messages"/>即可。頁面?zhèn)髦祮栴}一個頁面要使用另一個頁面的某個字段作為參數(shù),那么就需要另一頁面將這個字段傳給它。當觸發(fā)了某一事件后傳參,如點擊某p:commandButton,那么就給<p:commandButton>嵌套<f:attributeid=“”value=“”>,value表示f:attribute的值,是將要要傳給其他頁面的值,id是它的名字,我們在后臺通過id值找到這個f:attribute。在點擊該p:commandButton觸發(fā)的方法定義為帶參數(shù)的方法,形參為ActionEventevent,表示將前臺動作事件作為參數(shù)傳入,這樣在方法體中就可以通過event調(diào)用event.getComponent().getAttributes().get("f:attributeid值")得到頁面?zhèn)鱽淼闹?,在另一頁面的后臺方法中就可直接使用了。若沒有形成動作事件的控件,那么可以使用session得到。在該屬性的set方法中調(diào)用setSessionValue(“鍵名”,鍵值),在某頁面用到這個屬性時就將其值保存到了session里,另一個頁面再使用它時就通過getSessionValue(“鍵名”)來得到它。動態(tài)生成座位號在SubscribBean中定義集合List<SubscribBean>allSeats盛放剩余座位號,在它的get方法中給它賦值。具體代碼如圖4.2所示。每次調(diào)用get方法時都將allSeats清空,避免座位累加。數(shù)組sS(由SubscribDao類的publicint[]findSelectedSeats(intfilmId)返回)為已訂走的座位,數(shù)組aS(由SubscribDao類的publicint[]findSeats()返回)為原始的所有座位號。從aS[]中除去sS[]的所有座位號就是余下的座位號,在此用到了有序表的順序查找算法,在aS[]中逐個與sS[]中的元素對比,aS[]中沒有,則將這個元素加到allSeats中。消息提示圖4.2動態(tài)生成座位號代碼在前臺頁面使用消息控件p:growl顯示消息,設(shè)置其showDetail屬性值為真,設(shè)置頁面ajax值為真,更新對象為這個消息控件。在后臺方法中調(diào)用FacesContext.getCurrentInstance().addMessage("",newFacesMessage(“消息內(nèi)容”))即可在滿足特定條件時輸出消息提示。

5系統(tǒng)的實現(xiàn)介紹了系統(tǒng)功能的實現(xiàn)效果以及操作流程。5.1系統(tǒng)開發(fā)以及運行環(huán)境操作系統(tǒng):WindowsXP;開發(fā)環(huán)境:MyEclipse10.0;數(shù)據(jù)庫:MySQL;服務(wù)器:Tomcat7.0;開發(fā)語言:Java;Java運行平臺:JDK1.6.0。5.2面向普通用戶的系統(tǒng)功能5.2.1系統(tǒng)主頁功能系統(tǒng)主頁實現(xiàn)圖如圖5.1所示。圖5.1系統(tǒng)主頁界面點擊某一分類(如:冒險),進入符合該分類的電影列表,實現(xiàn)圖如圖5.2所示。圖5.2符合冒險類的電影列表界面點擊某電影(如:阿黛拉的非凡冒險),進入該電影詳情頁面,實現(xiàn)效果如圖5.3所示。圖5.3電影詳情界面5.2.2用戶注冊/登錄功能點擊功能條的用戶注冊/登錄功能進入功能界面,實現(xiàn)效果如圖5.4所示。注冊后進行登錄,登錄成功跳轉(zhuǎn)到用戶詳細信息頁面,詳細信息包括用戶名,當前積分,已兌換禮品,訂單列表。實現(xiàn)效果圖如圖5.5所示。點擊禮品兌換功能選項卡,進入兌換禮品的界面,兌換前檢測積分是否充足,不足進行提示。兌換成功后進行消息提示。實現(xiàn)效果如圖5.6所示。圖5.4用戶注冊/登錄功能界面圖5.5用戶詳細信息界面點擊訂票功能選項卡,進入電影列表,點擊某電影(如:101次求婚)進入購票界面,選擇座位號后生成訂單,并進行消息提示。實現(xiàn)效果如圖5.7所示。5.2.3查找電影功能點擊功能條的查找功能進入查找界面,可進行多條件查找。實現(xiàn)效果如圖5.8所示。5.2.4查看全部電影功能點擊功能條的查看全部進入全部電影的列表頁面。實現(xiàn)效果如圖5.9所示。圖5.6禮品兌換功能效果界面圖5.7用戶訂票界面圖5.8查找功能界面圖5.9查看全部電影界面點擊某電影(如:黑影)進入電影詳細信息界面,可進行打分操作和添加影評操作。實現(xiàn)效果如圖5.10,圖5.11所示。圖5.10打分功能界面圖5.11添加影評界面5.2.4查看電影排名功能點擊功能條的查看排名,進入電影排名界面。實現(xiàn)效果如圖5.12所示。5.2.5投票功能點擊功能條的投票,進入投票界面,點擊投票按鈕完成一次投票,票數(shù)動態(tài)增長。實現(xiàn)效果如圖5.13所示。圖5.13投票界面5.3面向管理員的系統(tǒng)功能5.3.1管理員主頁管理員登錄成功后進入管理員主頁,界面實現(xiàn)效果如圖5.13所示。圖5.13系統(tǒng)管理主頁界面5.3.2電影信息管理功能點擊添加電影功能選項跳轉(zhuǎn)到添加電影界面,輸入電影信息,上傳海報后點擊添加按鈕,添加結(jié)果會有消息提示。實現(xiàn)效果如圖5.13所示。圖5.13添加電影功能界面點擊刪除功能選項,進入刪除功能界面,點擊刪除按鈕后完成刪除工作,頁面會動態(tài)刷新。實現(xiàn)效果如圖5.14所示。圖5.14刪除功能界面點擊修改功能選項,進入待修改電影列表界面,點擊修改按鈕進入修改界面,修改后點擊保存完成修改工作并有消息提示。實現(xiàn)效果如圖5.15、圖5.16所示。點擊添加電影分類功能項進入添加分類界面,添加成功后有消息提示。實現(xiàn)效果如圖5.17所示。圖5.15待修改電影列表界面圖5.16修改界面圖5.17添加電影分類界面點擊刪除電影分類選項,進入刪除分類功能界面,點擊刪除按鈕后完成刪除操作,頁面動態(tài)刷新。5.3.3用戶信息管理功能普通用戶的管理只有刪除功能,并且有刪除權(quán)限,若不是

溫馨提示

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

最新文檔

評論

0/150

提交評論