基于Web的影院信息管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文_第1頁
基于Web的影院信息管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文_第2頁
基于Web的影院信息管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文_第3頁
基于Web的影院信息管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文_第4頁
基于Web的影院信息管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)論文_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目目 錄錄 1 1 緒論緒論 .1 1 1.1 研究背景及研究意義.1 1.2 研究內(nèi)容.1 1.3 論文結(jié)構(gòu).2 2 2 系統(tǒng)開發(fā)工具與相關(guān)技術(shù)介紹系統(tǒng)開發(fā)工具與相關(guān)技術(shù)介紹 .3 3 2.1 JSF 技術(shù) .3 2.2 PrimeFaces.3 2.3 MyEclipse.4 2.4 MySQL.4 2.5 Java 語言 .4 3 3 需求分析需求分析 .5 5 3.1 系統(tǒng)功能需求分析.5 3.1.1 普通用戶功能 .5 3.1.2 管理員功能 .6 3. 2 系統(tǒng)數(shù)據(jù)庫分析.7 3.2.1 數(shù)據(jù)庫物理建模分析 .7 3.2.2 實體表詳細(xì)分析 .7 3. 3 系統(tǒng)結(jié)構(gòu)分析.10 3.

2、3.1 系統(tǒng)功能結(jié)構(gòu)分析 .10 3.3.2 系統(tǒng)邏輯結(jié)構(gòu)分析 .10 4 4 系統(tǒng)詳細(xì)設(shè)計系統(tǒng)詳細(xì)設(shè)計 .1212 4.1 普通用戶功能的設(shè)計.12 4.1.1 用戶注冊/登錄功能 .12 4.1.2 查找電影功能 .14 4.1.3 電影投票功能 .14 4.1.4 添加影評功能 .15 4.1.5 禮品兌換功能 .15 4.1.5 用戶訂/退功能 .16 本本 科科 畢畢 業(yè)業(yè) 論論 文文 4.2 管理員功能的設(shè)計 .17 4.2.1 管理員登錄功能 .18 4.2.2 電影信息管理功能 .18 4.2.3 用戶信息管理功能 .19 4.2.4 禮品管理功能 .21 4.3 主要界面設(shè)計

3、.22 4.3.1 主頁設(shè)計 .22 4.3.2 電影詳情頁面設(shè)計 .23 4.4 關(guān)鍵問題及解決方案.23 5 5 系統(tǒng)的實現(xiàn)系統(tǒng)的實現(xiàn).2727 5.1 系統(tǒng)開發(fā)以及運行環(huán)境 .27 5.2 面向普通用戶的系統(tǒng)功能 .27 5.2.1 系統(tǒng)主頁功能 .27 5.2.2 用戶注冊/登錄功能 .28 5.2.3 查找電影功能 .29 5.2.4 查看全部電影功能 .29 5.2.4 查看電影排名功能 .32 5.2.5 投票功能 .32 5.3 面向管理員的系統(tǒng)功能 .32 5.3.1 管理員主頁 .32 5.3.2 電影信息管理功能 .33 5.3.3 用戶信息管理功能 .35 5.3.4

4、禮品管理功能 .37 結(jié)結(jié) 論論 .3939 致致 謝謝 .4040 參參 考考 文文 獻(xiàn)獻(xiàn) .4141 第 1 頁 共 46 頁 1 1 緒論緒論 隨著經(jīng)濟(jì)的發(fā)展,人們生活質(zhì)量提高了,娛樂方式也日新月異。電影不再是“奢 侈品” ,而是人們?nèi)粘I钪行蓍e娛樂必備的商業(yè)產(chǎn)物。在這個網(wǎng)絡(luò)信息化濃厚的時代, 網(wǎng)絡(luò)成為主要的通訊手段。當(dāng)代網(wǎng)絡(luò)如此發(fā)達(dá),也有不少基于 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)特殊功能的控件,

5、如用戶打分的可拖拉五角星打分條,沒有現(xiàn) 成的組件,編寫制作起來非常復(fù)雜麻煩。雖然 JSP 簡化了編程開發(fā),但在復(fù)雜邏輯中 還是要編寫很多代碼,開發(fā)人員的學(xué)習(xí)負(fù)擔(dān)也不斷加重。JavaServer Faces(JSF)框架 可以很好的解決以上問題,它提供全新的,動態(tài)的標(biāo)簽庫,且組件豐富多樣,組件可 以同托管 Bean 綁定,進(jìn)一步簡化了代碼編寫,減少了代碼量。利用 JSF 能制作出飽滿 的頁面,且支持拖拽功能,非常方便。因此本系統(tǒng)要使用 JSF 框架,利用發(fā)達(dá)的網(wǎng)絡(luò) 技術(shù),構(gòu)建起一個基于 Web 的影院信息管理系統(tǒng)。 1.11.1 研究背景及研究意義研究背景及研究意義 信息時代的今天,我們感受到計

6、算機科學(xué)日新月異的氣息日漸膨脹。如此,信息 的傳播途徑與傳遞方式也隨之豐富多彩。發(fā)展日漸成熟的計算機網(wǎng)絡(luò)承載著大量信息 的流通任務(wù),人們的生活也越來越依靠網(wǎng)絡(luò)。在日常娛樂商品中,電影成為豐富精神 生活的佳品。而如今信息流逝太快,傳統(tǒng)媒體不能對影院起到較高效的宣傳與展示, 電影文化只存在于紙張和膠片中使其傳播力度受到局限。由此一來,人們不易在第一 時間獲知影院動態(tài),許多精彩的電影信息得不到廣泛交流,得不到有效的定格,人們 想要了解詳細(xì)的、日志性的影院信息可能也無從下手。我們要利用發(fā)達(dá)的網(wǎng)絡(luò),利用 時新的技術(shù),構(gòu)建起一個基于 Web 的影院信息管理系統(tǒng)。這樣,各大影院就可以合理 規(guī)劃電影信息,展示

7、影院文化,與客戶做好充分交流,讓用戶感受到實時信息,使影 院運營的更加流暢,獲取更好的經(jīng)濟(jì)效益。 1.21.2 研究內(nèi)容研究內(nèi)容 該系統(tǒng)主要面向普通用戶和管理員兩種人群。對于普通用戶可實現(xiàn)注冊/登錄功能、 積分獲取功能、查找站內(nèi)電影功能(多條件查找) 、瀏覽影院電影信息功能、添加影評 功能、電影投票功能、訂/退票功能、兌換禮品功能;管理員可實現(xiàn)注冊/登錄功能、更 新電影信息功能、據(jù)用戶投票進(jìn)行電影排名功能、更新展示的禮品功能、管理用戶功 能。 第 2 頁 共 46 頁 該系統(tǒng)使用了新框架 JavaServer Faces 2.0,使用的開發(fā)語言為 Java 語言,開發(fā)工 具采用的是 MyEcl

8、ipse10.0,采用 Tomcat7.0 作為 Web 服務(wù)器,采用 MySQL 作為數(shù)據(jù) 庫。 1.31.3 論文結(jié)構(gòu)論文結(jié)構(gòu) 本文首先對實現(xiàn)系統(tǒng)所有的技術(shù)和工具進(jìn)行了介紹(第二章) ;其次對系統(tǒng)需求進(jìn) 行了詳細(xì)的分析(第三章) ;再次,本文對系統(tǒng)的詳細(xì)設(shè)計與實現(xiàn),以及所遇到的關(guān)鍵 問題及解決方案做了詳細(xì)的闡述(第四章) ;最后對系統(tǒng)實現(xiàn)效果進(jìn)行了展示(第五章) 。 第 3 頁 共 46 頁 2 2 系統(tǒng)開發(fā)工具與相關(guān)技術(shù)介紹系統(tǒng)開發(fā)工具與相關(guān)技術(shù)介紹 本系統(tǒng)使用 JSF2.0 技術(shù),PrimeFaces3.5 參考實作,MyEclipse10.0 開發(fā)環(huán)境, MySQL 數(shù)據(jù)庫,Tomc

9、at7.0 服務(wù)器。 2.12.1 JSFJSF 技術(shù)技術(shù) JavaServerFaces(JSF)是一個新的,基于 Java 的標(biāo)準(zhǔn)框架。它為 Web 應(yīng)用程序 提供了用戶接口,而且它化簡了用戶接口的應(yīng)用。也就是說,JSF 提供了一種以組件為 中心的用戶界面(UI)構(gòu)建方法1,不管是前臺頁面設(shè)計人員還是后臺程序開發(fā)人員,都 可以使用 JSF 獨立地完成自己涉及的模塊,前臺與后臺得到了有效地分離,大大減小 了耦合度。JSF2.0 內(nèi)置于 Facelets 提供的先進(jìn)模板,與 Ajax 更完美地結(jié)合;它提供了 復(fù)合多種功能的組件,只需將組件的功能屬性啟動,就可以非常簡便的使用該功能; 它整合了

10、Bean 的驗證,改進(jìn)了驗證規(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)的標(biāo)簽,它與后臺動態(tài)程序相連接。JSF 框架自帶的 Servlet 擔(dān)任了 MVC 中的控制器,而后臺 Bean 實現(xiàn)了模型層。JS

11、F 實現(xiàn)了視圖和業(yè)務(wù) 邏輯代碼的完全分離,完全遵循 MVC2 模式4。 那么在JSF中是怎樣實現(xiàn)前臺與后臺的聯(lián)系,利用什么來管理資源的呢?這就是托 管Bean。在Java編程語言中,一個托管Bean(Managed Bean)就是一個Java對象。定義 了托管Bean,就不需再手動實例化類對象了。托管Bean代表了一種可管理的資源,比 如一個組件,一個臺設(shè)備,一個服務(wù)類。托管Bean具有惰性初始化的性質(zhì),僅當(dāng)在運 行時間內(nèi)應(yīng)用程序需要它時,容器才將它初始化,也就是說,在JSF 架構(gòu)中, 后臺處 理Bean 交由JSF容器進(jìn)行管理。配置文件為faces-config.xml,Bean 對象的生命

12、周期可 以為null: 用時才生成5。任何Java公共類,任何無參的構(gòu)造函數(shù)都能做托管 Bean,List和Map對象也可以2。 2.22.2 PrimeFacesPrimeFaces Primefaces是JSF的參考實例。它提供了豐富的組件,內(nèi)置于Ajax,基于JSF2.0標(biāo)準(zhǔn)。 它是輕組件庫,只有一個jar文件,無需配置,沒有必要的依附體,是頁面表現(xiàn)的更生 動,倍受程序開發(fā)者的青睞。PrimeFaces提供了局部頁面呈現(xiàn)功能,這就可以選擇在一 個JSF生命周期中要運行什么,最后要同Ajax返回什么數(shù)據(jù)。JSF的原稿基于jQuery和 第 4 頁 共 46 頁 JavaScript6。Pr

13、imeFaces提高了JSF Web應(yīng)用程序開發(fā)的效率,它主要由三個模塊構(gòu)成, 即UI模塊,Optimus模塊和FacesTrace模塊。UI提供的組件支持通過Ajax更新頁面。 Optimus模塊簡化了JSF的開發(fā),F(xiàn)acesTrace模塊提供的各種工具能夠JSF Web應(yīng)用程序, 可查看JSF生命周期,進(jìn)行性能跟蹤查看,監(jiān)聽頁面信息等。 2.32.3 MyEclipseMyEclipse 本系統(tǒng)使用My Eclipse10.0開發(fā)平臺。Myeclipse 是Eclipse 支持下的J2EE開發(fā)插件, 功能十分完善,具備了完備的編碼、調(diào)試、測試和發(fā)布等功能并且完整支持 HTML、Struts

14、、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.42.4 MySQLMySQL MySQL 是由瑞典MySQL AB 公司開發(fā)的一個開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理 系統(tǒng),由于其體積小、速度快、總體擁有成本低被廣泛地應(yīng)

15、用在Internet 上的中小型網(wǎng) 站開發(fā)中,目前通過JDBC 連接MySQL 一般采用兩種方式:JDBC-ODBC 連接橋方式 和純Java 驅(qū)動程序直接連接的方式9。JDBC(Java Data Base Connectivity)是基于中 間件平臺的一種數(shù)據(jù)庫訪問技術(shù),他能夠很好的與ODBC(Open DataBase Connectivity)結(jié)合,具有可移植性、平臺無關(guān)性10。要通過JDBC 訪問MySQL,需要 下載JDBC 驅(qū)動程序。通過DriverManager 類的getConnection 方法可以建立連接11。 數(shù)據(jù)庫中數(shù)據(jù)的丟失,若無法通過軟件等途徑恢復(fù),則會致使業(yè)務(wù)無

16、法進(jìn)行12。 所以數(shù)據(jù)庫的備份是非常重要的。MySQL可通過Mysqldump、客戶端管理工具、直接 拷貝、日志進(jìn)行備份。 2.52.5 JavaJava 語言語言 Java 語言是一種純面向?qū)ο蟮木幊陶Z言。它主要的特性是面向?qū)ο?,可移植性?多線程,動態(tài)性。面向?qū)ο笏哂械姆庋b性,繼承性,多態(tài)性等特點使其具有強大的 生命力15。.java 文件中存放了 Java 源程序,它經(jīng) javac 命令編譯后就生成了相應(yīng)的. class 文件。 第 5 頁 共 46 頁 3 3 需求分析需求分析 所謂好的開始是成功的一半,在啟動一個項目前需求分析是必不可少的也是至關(guān) 重要的一步。我們要對準(zhǔn)啟動項目進(jìn)行

17、數(shù)據(jù)采集,分析預(yù)計實現(xiàn)的功能及功能的可行 性,對系統(tǒng)結(jié)構(gòu)進(jìn)行搭建,對數(shù)據(jù)對象進(jìn)行物理建模,對其存儲方式、存儲結(jié)構(gòu)、依 賴關(guān)系進(jìn)行縝密的揣測定奪。 3.13.1 系統(tǒng)功能需求分析系統(tǒng)功能需求分析 基于 Web 的影院信息管理系統(tǒng)面向兩種用戶,即普通用戶和管理員。普通用戶為 影院的大眾客戶,通過該系統(tǒng)與影院進(jìn)行信息交流;管理員則是對系統(tǒng)的數(shù)據(jù)進(jìn)行管 理,主要是對數(shù)據(jù)的修改,添加和修改。 下面對面向普通用戶功能和面向管理員功能進(jìn)行具體分析。 3.1.1 普通用戶功能 普通用戶功能用例圖建模分析如圖 3.1 所示。 圖 3.1 普通用戶功能用例建模分析圖 a普通用戶注冊功能:用戶輸入用戶名及密碼后,注

18、冊成功后方可登錄。未經(jīng)注 冊登錄者,系統(tǒng)予以提示,并拒絕本次登錄。普通用戶身份代碼為“0”。 b普通用戶登錄功能:對已注冊用戶經(jīng)行用戶名與密碼的匹配驗證。驗證通過后 方可登錄成功。 c積分獲取功能:用戶注冊成功后自動獲取相應(yīng)積分(本系統(tǒng)為 30 分) 。訂票成 功后會獲取相應(yīng)積分(本系統(tǒng)為 10 分) ,退票后收回所獲積分。積分可換取禮品。 第 6 頁 共 46 頁 d添加影評功能:用戶可對電影進(jìn)行評價,打分。 e電影投票功能:用戶可選擇進(jìn)入投票頁面,對電影進(jìn)行投票。 f訂票功能:用戶登錄成功后可訂電影票,根據(jù)座位圖選擇座位號,訂票成功后 返回訂單號。 g退票功能:登錄后可查看訂單信息,在訂單

19、生產(chǎn)后 24 小時內(nèi)可退訂。 h查找電影功能:用戶可根據(jù)電影名稱,電影效果(是否為 3D 電影) ,上映日期, 觀看日期,電影分類查找站內(nèi)電影。 i瀏覽網(wǎng)站功能:用戶無需登錄,可查看近期上映電影信息,站內(nèi)電影列表,電 影詳細(xì)信息等頁面,但如果要實現(xiàn)登錄后才有的功能,若尚未登錄,系統(tǒng)會予以提示。 3.1.2 管理員功能 管理員功能用例圖建模分析如圖 3.2 所示。 圖 3.2 管理員功能用例建模分析圖 a管理員登錄功能:管理員已添加到數(shù)據(jù)庫中,身份代碼為“1”。管理員無注冊功 能,新的管理與由已有管理員進(jìn)行添加(見更新用戶功能) 。登錄時,系統(tǒng)根據(jù)身份代 碼驗證身份,同時驗證用戶名和密碼是否匹配

20、,可報錯。登錄成功后進(jìn)行相應(yīng)操作。 b更新電影信息功能:可添加/刪除電影;修改電影信息:電影名稱,上映時間, 電影簡介,電影效果,海報。 c更新禮品信息:對用戶積分可換取的禮品進(jìn)行添加,刪除。 d發(fā)布電影排榜功能:根據(jù)用戶投票對電影進(jìn)行熱度排名,將排名列表公布。 第 7 頁 共 46 頁 e更新用戶功能:總管理員(身份代碼為“1”)可添加新管理員和普通用戶,新管理 員屬于二級管理員,身份代碼為“2”。只有總管理員才能刪除二級管理員和普通用戶。 f普通用戶功能:管理員登錄后擁有普通用戶的多有功能。 3.3. 2 2 系統(tǒng)數(shù)據(jù)庫分析系統(tǒng)數(shù)據(jù)庫分析 本系統(tǒng)設(shè)計到的實體表有:用戶信息表、電影信息表、電

21、影分類表、影評表、禮 品信息表、影院座位表、訂單表、禮品兌換單表。 3.2.1 數(shù)據(jù)庫物理建模分析 系統(tǒng)數(shù)據(jù)庫物理建模如圖 3.3 所示。 userinform film gift criticism filmcategory subscrib giftexchange allseat N : 1 外外鍵鍵:userId 1:N 外鍵:giftId N:1 外鍵:userId N:1 外鍵:filmId N:1 外鍵:filmId N : N 圖 3.3 數(shù)據(jù)庫物理建模 userinform(用戶信息表)與 gift(禮品表)通過 giftexchange(禮品兌換單表)關(guān) 聯(lián)起來;useri

22、nform 與 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 實體表詳細(xì)分析 auserinform 為用戶信息表。它記錄了用戶名(userName) ,用戶密碼 (passWord) ,身份編碼(ustatus,標(biāo)記普通用戶和管理員級別) ,用戶編號(userId) , 用戶積分(uscore) 。用戶信息表如表 3.1 所示。 bfilm 為電影信息表。它記錄

23、了電影名稱(filmName) ,電影編號(filmId) ,電影 效果(is3D) ,電影海報(filmPicture) ,電影簡介(filmDescribe) ,電影得分 (filmScore) ,所得投票數(shù)(vote) ,上映時間(filmTime) ,播出時間(showTime) ,電 第 8 頁 共 46 頁 影分類(category1,category2,category3) ,余票數(shù)(ticketCount) 。電影信息表如表 3.2 所示。 表 3.1 用戶信息表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 userId int(11) 是否 userNamevarchar(10)

24、否 passWordvarchar(15)否 ustatusint(1)否 uscoreint(10)unsigned是 表 3.2 電影信息表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 filmIdint(11) 是否 filmNamevarchar(20)是NULL Is3Dvarchar(5)是NULL filmDescribetext 是NULL filmPicturevarchar(20)是NULL category1varchar(10)是NULL category2varchar(10)是NULL category3varchar(10)是NULL filmTimevarchar(

25、20)是NULL showTimevarchar(100)是NULL voteint(11)是NULL filmScoreint(11) 是NULL ticketCountint(11)是NULL cfilmcategory 為電影分類表。它記錄了分類編號(fcategoryId) ,分類名稱 (fcategory) 。電影分類表如表 3.3 所示。 表 3.3 電影分類表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 fcategoryId int(11) 是否 fcategoryvarchar(10)是NULL 第 9 頁 共 46 頁 dgift 為用戶積分兌換的禮品信息表。它記錄了禮品編號(

26、giftId) ,禮品名稱 (giftName) ,禮品描述(giftDescribe) ,禮品實體圖(giftPicture) ,所需積分 (requiredScore) 。禮品信息表如表 3.4 所示。 表 3.4 禮品信息表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 giftId int(11) 是否 giftNamevarchar(20)是NULL giftDescribetext是NULL giftPicture varchar(20) 是NULL requiredScoreint(11) 是NULL 表 3.5 電影票訂單表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 subId int

27、(11) 是否 filmIdint(11) 是否 filmNamevarchar(20)是NULL subTime varchar(20) 是NULL subNumint(11) 是NULL userIdint(11) 是否 esubscrib 為電影票訂單表。它記錄了訂單號(subId) ,電影編號(filmId) ,電影 名稱(filmName) ,下單時間(subTime) ,座位號(subNum) ,用戶編號(userId) 。電 影票訂單表如表 3.5 所示。 fciticism 為電影評論表。它記錄了影評編號(criId) ,影評內(nèi)容(criDescribe) , 電影編號(fil

28、mId) 。電影評論表如表 3.6 所示。 表 3.6 電影評論表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 criId int(11) 是否 criDescribetext否 filmIdvarchar(20)是否 第 10 頁 共 46 頁 ggiftexchange 為禮品兌換單表,它的性質(zhì)同電影票訂單表一樣,用戶每兌換一樣 禮品便生成一張兌換單。它記錄了兌換單編號(giftexchangeId) ,禮品編號(giftId) , 用戶編號(userId) ,禮品名稱(giftName) ,禮品實體圖(giftPicture) 。禮品兌換單表 如表 3.7 所示。 表 3.7 禮品兌換單表

29、字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 giftexchangeId int(11) 是否 giftIdint(11) 是否 userIdint(11) 是否 giftName varchar(20) 是NULL giftPictureint(11) 是NULL hallseat 為影院所有的座位編號表。它為獨立的表,與其它表沒有聯(lián)系。它之記 錄了所有座位號(seatNumber) 。座位編號表如表 3.8 所示。 表 3.8 座位編號表 字段名稱字段類型主鍵外鍵是否為空默認(rèn)值 seatNumber int(11) 是否 3.3. 3 3 系統(tǒng)結(jié)構(gòu)分析系統(tǒng)結(jié)構(gòu)分析 3.3.1 系統(tǒng)功能結(jié)構(gòu)分析

30、 本系統(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ù)庫連接,

31、 第 11 頁 共 46 頁 對數(shù)據(jù)庫進(jìn)行操作,在 cinemasManageBean 包中調(diào)用這些操作和返回的結(jié)果集向前臺 頁面?zhèn)髦怠ilter 包中是過濾器,文件上傳時用到。系統(tǒng)包圖如圖 3.5 所示。 圖 3.4 系統(tǒng)功能結(jié)構(gòu)圖 cinemasManageBeanDao filter 圖 3.5 系統(tǒng)包圖 基于 Web 的影院信息管理系統(tǒng) 普通用戶功能管理員功能 電影信息 禮品 個人信息 電影信息 禮品信息 用戶信息 個人信息 查看 添加影評、打分 訂/退票 兌換 修改 刪除 修改 增加 第 12 頁 共 46 頁 4 4 系統(tǒng)詳細(xì)設(shè)計系統(tǒng)詳細(xì)設(shè)計 本系統(tǒng)面向管理員和普通用戶兩種人群。

32、管理員不可注冊,只能由已有管理員進(jìn) 行添加。系統(tǒng)主頁,所有電影信息是開放的,無需登錄就可瀏覽;而訂票,兌換積分, 電影投票,電影評價是要用戶進(jìn)行登錄后才可享有的功能。 系統(tǒng)要對實體:用戶、電影、電影分類、影評、禮品、訂單進(jìn)行管理,所以建立 了相應(yīng)的托管 Bean 的類: UserBean,F(xiàn)ilmBean,AllfCategoryBean,CriticismBean,GiftBean,SubscribBean;托 管 Bean 要對數(shù)據(jù)庫進(jìn)行訪問則通過 Dao 包的相應(yīng)類: UserDao,F(xiàn)ilmDao,AllfCategoryDao,CriticismDao,GiftDao,Subscri

33、bDao 實現(xiàn)。系 統(tǒng)類圖如圖 4.1 所示。 UserBeanFilmBean GiftBean AllfCategoryBeanCriticismBeanSubscribBean BaseDao UserDaoFilmDao GiftDao AllfCategoryDao CriticismDaoSubscribDao 圖 4.1 系統(tǒng)類圖 4.14.1 普通用戶功能的設(shè)計普通用戶功能的設(shè)計 第 13 頁 共 46 頁 4.1.1 用戶注冊/登錄功能 a用戶注冊 userlog.xgtmluserBean:UserBeanuserdao:UserDao uRegist() userdeta

34、il.xhtml:xhtml setUserName(String) userRegist(String,String) setPassWord(String) 圖 4.2 用戶注冊時序圖 該功能實質(zhì)就是對數(shù)據(jù)庫的用戶表進(jìn)行插入操作。用戶注冊時向頁面的 輸入用戶名和密碼,分別與 userBean 中的 userName 和 passWord 綁定, 的 required 屬性值為真,用進(jìn)行輸入空的提示。注冊按鈕的 action 屬性值為#userBean.uRegist,即與 userBean 的 public String uRegist()方法綁 定。點擊注冊按鈕后,觸發(fā) UserBean

35、 類中的 uRegist()方法,在該方法中又嵌套調(diào)用 UserDao 中的 public String userRegist(String userName,String passWord)方法,將前臺 傳入 userBean 的 userName 和 passWord 的值作為參數(shù)傳給 userRegist()方法。若注冊 成功,則返回字符串“yes”,若失敗則返回“fail”。對 face-config.xml 進(jìn)行配置,檢測與 userBean 綁定的函數(shù)的返回值,實現(xiàn)頁面跳轉(zhuǎn)。時序圖如圖 4.2 所示。 b用戶登錄 第 14 頁 共 46 頁 userlog.xhtml:xhtmlu

36、serBean:UserBeanuserdao:UserDao ucheckLogin() findusers(String,String) setSessionValue(String , Object) 圖 4.3 用戶登錄時序圖 用戶登錄就是對數(shù)據(jù)庫的用戶表進(jìn)行查找,鎖定用戶名和密碼兩個條件。用戶登 錄時向中輸入用戶名和密碼,兩個輸入文本框分別與 userBean 的 userName 和 passWord 綁定,其 required 屬性值為真。登錄按鈕與 userBean 的 public String ucheckLogin()方法綁定,點擊登錄按鈕后觸發(fā) UserBean 類中的

37、 ucheckLogin()方法,在該方法中又嵌套調(diào)用 UserDao 類中的 public String findusers(String userName,String passWord)方法,將前臺傳入 userBean 的 userName 和 passWord 作為參數(shù)送入 findusers() ,登錄成功后返回字符串“success”,若失敗則 返回“fail”。同樣對 face-config.xml 文件進(jìn)行配置實現(xiàn)頁面跳轉(zhuǎn)。時序圖如圖 4.3 所示。 4.1.2 查找電影功能 該功能使用 PrimeFaces 中的控件 dataTable 實現(xiàn)。dataTable 的 val

38、ue 屬性值是一個 數(shù)據(jù)集,即要放入該數(shù)據(jù)表的數(shù)據(jù)集合。在此,該數(shù)據(jù)集為 filmBean.films,即 dataTable 與 filmBean 中的集合 films 綁定。films 由 FilmDao 類中的 public List findFilm()方法返回。dataTable 的 var 屬性值表示數(shù)據(jù)集中的一個元 素,在此 var=“fsearch”。dataTable 中加入,使用期 filterBy 屬性即可實現(xiàn)按 指定字段查找。如按電影上映日期查找,賦值 filterBy=“#fsearch.filmTime” (filmTime 為 filmBean 的一個屬性,表示上

39、映時間)即可。 4.1.3 電影投票功能 第 15 頁 共 46 頁 fvote.xhtml:xhtmluserBean.UserBeanfilmBean:FilmBeanfilmdao:FilmDao filmVote(ActionEvent) getSessionValue(String) filmVote(int,int) 圖 4.4 電影投票時序圖 該功能就是對數(shù)據(jù)庫的電影表的票數(shù)字段進(jìn)行更新操作。該功能使用 dataTable 盛 放數(shù)據(jù)集,即所有電影,每條記錄后面加一個投票功能列,使用。其 actionListener 屬性值為#filmBean.filmVote,即與 FilmB

40、ean 類的 public void filmVote(ActionEvent event)方法綁定。filmVote()中調(diào)用 FilmDao 類的 public int filmVote(int vote,int filmId)方法。形參 vote 為當(dāng)前票數(shù),filmId 為待打分電影的編 號,這兩個參數(shù)由頁面的傳入。在后臺使用 event.getComponent(). getAttributes().get(“f:attribute 的 name 屬性值”)方法即可獲取 f:attribute 的值。時序圖如 圖 4.4 所示。 4.1.4 添加影評功能 用戶在電影詳細(xì)信息頁面進(jìn)行電

41、影打分和添加影評。 a電影打分 使用 PrimeFaces 的 rating 組件實現(xiàn),并給 rating 添加 ajax。設(shè)置 rating 與 filmScore(filmBean 的一個屬性,表示電影當(dāng)前得分)綁定,設(shè)置 ajax 監(jiān)聽事件為 “rate”,監(jiān)聽動作為 filmBean.onrate,更新對象為消息控件,即用戶進(jìn)行打分動作后會 觸發(fā) FilmBean 類的 public void onrate(RateEvent rateevent)方法,在該方法中嵌套 調(diào)用 FilmDao 類中的 public int rateScore(int filmScore,int filmI

42、d)方法,將前臺傳入 的電影當(dāng)前得分(通過 getSessionValue(“鍵”)得到)和電影編號(通過前臺 rating 組 件的得到)作為實參傳入,如此實現(xiàn)打分。打分的實質(zhì)就是對數(shù)據(jù)庫的電 影表進(jìn)行更新操作,更新其得分字段。打分成功后會有消息提示用戶的打分值,在 onrate( )方法中調(diào)用 FaceContext.getCurrentInstance( ).addMessage( )方法實現(xiàn)消息提示。 b添加影評 第 16 頁 共 46 頁 影評的添加實質(zhì)上就是在數(shù)據(jù)庫中影評表里插入一條記錄的操作。使用 盛放用戶輸入的評論,該控件與 criticismBean.criDescribe(

43、criDescribe 屬性為影評字段)綁定。提交按鈕與 criticismBean.fCriticismInsert 綁定,且設(shè)置提交按 鈕的 ajax 值為真,更行對象為整個表單,實現(xiàn)動態(tài)刷新,提交評論后就能立刻看到自 己的評論。點擊提交按鈕后觸發(fā) CriticismBean 類的 public void fCriticismInsert()方法, 該方法中又嵌套調(diào)用 CriticismDao 類中的 public int filmCriInsertByid(int filmId, String criDescribe)方法,filmId 通過 getSessionValue()方法得到,

44、criDescribe 通過綁定的 前臺控件傳入。 4.1.5 禮品兌換功能 用戶登錄成功后,點擊禮品兌換選項卡進(jìn)入禮品列表頁面,此選項卡使用 PrimeFaces 的控件實現(xiàn)。用戶每兌換一次禮品前進(jìn)行用戶的積分檢測,積 分符合則實現(xiàn)兌換,用戶的積分要相應(yīng)的減少,對數(shù)據(jù)庫中禮品兌換單表插入一天兌 換記錄。giftBean 是管理禮品的托管 Bean,集合 allgifts 是其屬性之一,表示所有禮品 的集合,通過 GiftDao 類中的 findAllGifts()方法返回,該方法實質(zhì)就是對數(shù)據(jù)庫進(jìn) 行一次查詢操作。在前臺頁面中使用 PrimeFaces 的 dataGrid 控件來盛放該集合

45、,與 dataTable 相似,var 屬性也表示集合中的一個元素。兌換按鈕的 actionListener 值為 #giftBean.giftExchange,ajax 值為真,更新對象為整個表單,這樣用戶兌換后就能立 刻看到剛才兌換的禮品(頁面動態(tài)刷新具體實現(xiàn)見 4.4) 。點擊兌換按鈕后觸發(fā) GiftBean 類的 giftExchange(ActionEvent event)方法。在該方法中,首先通過 session 得到用戶積分,將該積分與禮品所需積分對比,少于則提示積分不足,多余則先后調(diào) 用 GiftDao 類中 public String exchange(int userId,

46、int giftId,String giftName,String giftPicture)和 public void userScoreDivid(int requiredScore,int userId)兩個方法,其中 giftId,giftName,giftPicture,requiredScore 通過兌換按鈕下的得到,userId 通過 session 得到。 4.1.5 用戶訂/退功能 a用戶訂票 第 17 頁 共 46 頁 userdetail.xhtml:xhtmluserBean:UserBeanfilmBean:FilmBeanfilmdao:FilmDao getFilm

47、s() findFilm() selectedFilm(ActionEvent) buyticket.xhtml:xhtml selectById(int) subscribBean:SubscribBeansubsdao:SubscribDao getAllSeats() findSelectedSeats(int) findSeats() buyTicket(ActionEvent) getSessionValue(String) addSubscrib(int, int, String, String,String) filmTicketsDivid(int) userScoreAdd(

48、int) 圖 4.5 用戶訂票時序圖 用戶登錄成功后點擊訂票選項卡進(jìn)入有訂票功能的電影列表。該列表由 PrimeFaces 的 dataGrid 盛放。訂票操作實質(zhì)上是對數(shù)據(jù)庫中三個表的操作:對訂單表 插入一條訂單記錄,對電影表的余票字段進(jìn)行減量更新,對用戶表的用戶積分字段進(jìn) 行增量更新。點擊訂票按鈕后跳轉(zhuǎn)到 buyticket(訂票)頁面,將該電影編號傳入此頁 面(頁面?zhèn)髦翟敿?xì)實現(xiàn)見 4.4) ,該頁面根據(jù)電影余票數(shù)動態(tài)生成座位號(生成座位號 詳細(xì)實現(xiàn)見 4.4) ,即已訂走的座位號不再出現(xiàn)。每個座位號是一個按鈕,點擊按鈕生 成一個訂單,該按鈕 actionListener 屬性與 subs

49、cribBean.buyTicket 綁定,點擊座位號按 鈕觸發(fā) SubscribBean 類的 public void buyTicket(ActionEvent event)方法,在該方法中首 先嵌套調(diào)用 FilmDao 類的 public int ticketCounts(int filmId)方法檢測電影余票數(shù),有 余票則先后調(diào)用 SubscribBean 類的 public String addSubscrib(int userId,int filmId,String subsTime,int seatNum,String filmName),public void filmTick

50、etsDivid(int filmId)和 public void userScoreAdd(int userId)方法。其中 filmId,filmName,userId 通過 session 得到, seatNum 通過座位號按鈕下的得到,subsTime 是下單時間,通過調(diào)用 第 18 頁 共 46 頁 GidtDao.nowTime()方法得到當(dāng)前系統(tǒng)時間(詳細(xì)實現(xiàn)見 4.4) 。時序圖見圖 4.5 所示。 b用戶退票 userdetail.xhtml:xhtmlsubscribBean:SubscribBeansubsdao:SubscribDaofilmBean:FilmBean

51、deleteSub(ActionEvent) getSessionValue(String) deleteSub(int) filmTicketsAdd(int) userScoreDivid(int) 圖 4.6 用戶退票時序圖 用戶登錄成功后會進(jìn)入用戶詳情界面,其中包括用戶訂單列表,可對該列表進(jìn)行 刪除行的操作。刪除訂單的實質(zhì)就是對數(shù)據(jù)庫的訂單表進(jìn)行刪除操作,對用戶表的用 戶積分字段值進(jìn)行減量更新,對電影表的余票數(shù)字段值進(jìn)行增量更新。使用 PrimeFaces 的 dataTable 控件盛放該用戶訂單的集合,由 SubscribDao 類的 public List findAllSubs

52、(int userId)方法返回。其中 userId 通過 session 得到,即 通過用戶編號從數(shù)據(jù)庫的訂單表中選出對應(yīng)用戶的所有訂單。刪除按鈕同 subscribBean.deleteSub 綁定,及點擊刪除按鈕后調(diào)用 SubscribBean 的 public void deleteSub(ActionEvent event)方法,在該方法中先后調(diào)用 SubscribDao 類的 public void deleteSub( String subId )方法,public void filmTicketsAdd( int filmId )方法和 public void userScor

53、eDivid ( int userId )方法。其中 subId 和 filmId 通過刪除按鈕下的得 到,userId 通過 session 得到。時序圖如圖 4.6 所示。 4.24.2 管理員功能的設(shè)計管理員功能的設(shè)計 4.2.1 管理員登錄功能 同用戶登錄相似。不同的是管理員登錄時調(diào)用 UserBean 類中的 public String checkLogin()方法,在此方法中嵌套調(diào)用 UserDao 類中的 public String findMUers(String userName,String passWord)方法,該方法中調(diào)用了 setSessionValue()方法,將

54、管理員編號與身份代碼保存到 session 中,供修改個人信 息和刪除操作時用。此方法中加上了身份代碼的驗證條件(管理員的身份代碼為 1 或 2) ,通過驗證則登錄成功。 第 19 頁 共 46 頁 4.2.2 電影信息管理功能 電影信息管理功能分為添加電影,修改電影信息,刪除電影,添加電影分類,和 刪除分類。 a添加電影 電影名稱(filmName) ,電影效果(is3D) ,電影分類 (category1,category2,category3) ,代售票數(shù)(ticketCount) ,上映日期(filmTime) 都使用輸入,電影簡介(filmDescribe)使用輸入,這些 控件分別與

55、 filmBean 的相應(yīng)屬性綁定。電影的海報添加要使用文件上傳功能,由 PrimeFaces 的 fileUpload 控件實現(xiàn)(詳細(xì)實現(xiàn)見 4.4) 。添加按鈕與 filmBean.filmInsert 綁定,點擊添加按鈕觸發(fā) FilmBean 類的 public void filmInsert()方法,在此方法中嵌 套調(diào)用 FilmDao 類中的 public int filmInsert(String filmName,String is3D,String category1,String category2,String category3,String filmPicture,St

56、ring filmDescribe,String filmTime,int ticketCount)方法,其中的參數(shù)都有前臺綁定的 filmBean 的屬性值得到。添 加成功或失敗都有相應(yīng)的消息提示,設(shè)置添加按鈕的 ajax 屬性值為真,更新對象為相 應(yīng)消息提示框。時序圖如圖 4.7 所示。 filminsert.xhtml:xhtmlfilmBean:FilmBeanfilmdao:FilmDaoFaceContext filmInsert() filmInsert(String,String,String,String ,String,String,String,String,int) a

57、ddMessage(String) 圖 4.7 添加電影時序圖 b修改電影信息 該功能就是根據(jù)前臺頁面?zhèn)鱽淼?filmId 查到電影表的一條記錄,對該記錄進(jìn)行更 新操作。電影列表由盛放,每條記錄后有一個修改按鈕,此修改按鈕下 的將 filmId 傳入后臺,通過 filmId 選出要修改的電影的詳細(xì)表單,管理員 能夠修改電影名稱(filmName) ,電影效果(is3D) ,電影分類 (category1,category2,category3) ,代售票數(shù)(ticketCount) ,上映日期(filmTime) , 電影簡介(filmDescribe) ,這些字段與前臺綁定,且在這些字段的

58、set 方 法中調(diào)用 setSessionValue() ,進(jìn)行修改后,通過 session 獲取新值。點擊保存按鈕后觸 發(fā) FilmBean 類的 public void filmUpdate(ActionEvent event)方法,其中嵌套調(diào)用 第 20 頁 共 46 頁 FilmDao 類的 public int filmUpdateById(String filmName,String is3D,String category1,String category2,String category3,String filmPicture,String filmDescribe,Strin

59、g filmTime,int filmId)方法,除 filmId 外其他參數(shù)由 getSessionValue()方法得到,filmId 由保存按鈕下的得到。 c刪除電影 該功能實質(zhì)是根據(jù) filmId 刪除數(shù)據(jù)庫中電影表的一條記錄。電影列表由 盛放,dataTable 的 value 值為#filmBean.films,films 為所有電影的集合, 由 FilmDao 類的 public List findFilm()方法返回。dataTable 中每條電影記錄 后都有一個刪除按鈕,該按鈕與 filmBean.filmDelete 綁定,點擊后觸發(fā) FilmBean 類的 public

60、void filmDelete(ActionEvent event)方法,該方法中嵌套調(diào)用 public void filmDeleteByID(int filmId)方法,filmId 有刪除按鈕下的得到。刪除后頁面使 用 ajax 進(jìn)行動態(tài)刷新。 d添加電影分類 電影分類由托管 Bean:allfCategoryBean 管理。頁面的與 allfCategoryBean.fcategory 綁定,點擊添加按鈕觸發(fā) AllfCategoryBean 類的 public void categoryInsert() 方法,該方法中嵌套調(diào)用 AllfCategoryDao 類的 public in

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論