【正文】
相似, var 屬性也表示集合中的一個元素。用戶每兌換一次禮品前進行用戶的積分檢測,積分符合則實現(xiàn)兌換,用戶的積分要相應的減少,對數(shù)據(jù)庫中禮品兌換單表插入一天兌換記錄。點擊提交按鈕后觸發(fā) CriticismBean 類的 public void fCriticismInsert()方法,該方法中又嵌套調(diào)用 CriticismDao 類中的 public int filmCriInsertByid( int filmId, String criDescribe)方法, filmId 通過 getSessionValue()方法得到, criDescribe 通過綁定的前臺控件傳入。使用h:inputTextarea盛放用戶輸入的評論,該控件與 ( criDescribe屬性為影評字段)綁定。打分成功后會 有消息提示用戶的打分值,在 onrate( )方法中調(diào)用( ).addMessage( )方法實現(xiàn)消息提示。設置 rating 與 filmScore( filmBean 的一個屬性,表示電影當前得分)綁定,設置 ajax 監(jiān)聽事件為 “rate”,監(jiān)聽動作為 ,更新對象為消息控件,即 用戶進行打分動作后會觸發(fā) FilmBean類的 public void onrate( RateEvent rateevent)方法,在該方法中嵌套調(diào)用 FilmDao 類中的 public int rateScore( int filmScore, int filmId)方法,將前臺傳入的電影當前得分(通過 getSessionValue( “鍵 ”)得到)和電影編號(通過前臺 rating 組件的 f:attribute得到)作為實參傳入,如此實現(xiàn)打分。 添加影評功能 用戶在電影詳細信息頁面進行電影打分和添加影評。在后臺使用().getAttributes().get(“f:attribute 的 name 屬性值 ”)方法即可獲取f:attribute 的值。 filmVote()中調(diào)用 FilmDao 類的 public int filmVote( int 第 15 頁 共 45 頁 vote, int filmId)方法。該功能使用 dataTable 盛放數(shù)據(jù)集,即所有電影,每條記錄后面加一個投票功 能列,使用 p:mandLink。如按電影上映日期查找,賦值 filterBy=“{}”( filmTime 為 filmBean 的一個屬性,表示上映時間)即可。 dataTable 的 var 屬性值表示數(shù)據(jù)集中的一個元素,在此 var=“fsearch”。在此,該數(shù)據(jù)集為 ,即 dataTable與 filmBean中的集合 films 綁定。 查找電影功能 該功能使用 PrimeFaces 中的控件 dataTable 實現(xiàn)。同樣對 文件進行配置實現(xiàn)頁面跳轉。用戶登錄時向 h:inputText中輸入用戶名和密碼,兩個輸入文本框分別與 userBean 的 userName和 passWord 綁定,其 required 屬性值為真。 時序圖如圖 所示。若注冊成功,則返回字符串 “yes”,若失敗則返回 “fail”。注冊按鈕的action 屬性值為 {},即與 userBean 的 public String uRegist()方法綁定。 U s e r B e a n F i l m B e a nG i f t B e a nA l l f C a t e g o r y B e a nC r i t i c i s m B e a n S u b s c r i b B e a nB a s e D a oU s e r D a o F i l m D a oG i f t D a oA l l f C a t e g o r y D a oC r i t i c i s m D a o S u b s c r i b D a o 圖 系統(tǒng)類圖 普通用戶功能的設計 用戶注冊 /登錄功能 第 13 頁 共 45 頁 a. 用戶注冊 u s e r l o g . x g t m l u s e r B e a n : U s e r B e a n u s e r d a o : U s e r D a ou R e g i s t ( )u s e r d e t a i l . x h t m l : x h t m ls e t U s e r N a m e ( S t r i n g )u s e r R e g i s t ( S t r i n g , S t r i n g )s e t P a s s W o r d ( S t r i n g ) 圖 用戶注冊時序圖 該功能實質就是對數(shù)據(jù)庫的用戶表進行插入操作。 系統(tǒng)要對實體:用戶、電影、電影分類、影評、禮品、訂單進行管理,所以建立了相應的托管 Bean 的類: UserBean, FilmBean, AllfCategoryBean, CriticismBean, GiftBean,SubscribBean;托管 Bean 要對數(shù)據(jù)庫進行訪問則通過 Dao 包的相應類: UserDao,F(xiàn)ilmDao, AllfCategoryDao, CriticismDao, GiftDao, SubscribDao 實現(xiàn)。管理員不可注冊,只能由已有管理員進行添加。系統(tǒng)包圖 如圖 所示。后臺通過 Dao 包同數(shù)據(jù)庫連接,對數(shù)據(jù)庫進行操作,在 cinemasManageBean 包中調(diào)用這些操作和返回的結果集向前臺頁面?zhèn)髦怠0?cinemasManageBean 中定義了所有的托管 Bean,托管 Bean 與前臺空間綁定。 系統(tǒng)邏輯結構分析 JSF 中用到托管 Bean 實現(xiàn)前臺頁面同后臺的傳值。管理員對三種信息的操作有增加、刪除、修改。 表 座位編號表 字段名稱 字段類型 主鍵 外鍵 是否為空 默認值 seatNumber int(11) 是 否 3. 3 系統(tǒng)結構分析 系統(tǒng)功能結構分析 本系統(tǒng)面向的操作主體為普通用戶和管理員,操作對象主要為電影信息、用戶信息和禮品信息。它之記錄了所有座位號( seatNumber)。 表 禮品兌換單表 字段名稱 字段類型 主鍵 外鍵 是否為空 默認值 giftexchangeId int(11) 是 否 giftId int(11) 是 否 userId int(11) 是 否 giftName varchar(20) 是 NULL giftPicture int(11) 是 NULL h. allseat 為影院所有的座 位編號表。它記錄了兌換單編號( giftexchangeId),禮品編號( giftId),用戶 編號( userId),禮品名稱( giftName),禮品實體圖( giftPicture)。電影評論表如表 所示。 f. citicism 為電影評論表。它記錄了訂單號( subId),電影編號( filmId),電影名稱( filmName),下單時間( subTime),座位號( subNum),用戶編號( userId)。禮品信息表如表 所示。 表 電影分類表 字段名稱 字段類型 主鍵 外鍵 是否為空 默認值 fcategoryId int(11) 是 否 fcategory varchar(10) 是 NULL d. gift 為用戶積分兌換的禮品信息表。它記錄了分類編號( fcategoryId),分類名稱( fcategory)。電影信息表如表 所示。 b. film 為電影信息表。它記錄了用戶名( userName),用戶密碼( passWord),身份編碼( ustatus,標記普通用戶和管理員級別),用戶編號( userId),用戶積分( uscore)。 u s e r i n f o r mf i l mg i f tc r i t i c i s mf i l m c a t e g o r ys u b s c r i bg i f t e x c h a n g ea l l s e a tN : 1外 鍵 : u s e r I d1 : N外 鍵 : g i f t I dN : 1外 鍵 : u s e r I dN : 1外 鍵 : f i l m I dN : 1外 鍵 : f i l m I dN : N 圖 數(shù)據(jù)庫 物理建模 userinform(用戶信息表)與 gift(禮品表)通過 giftexchange(禮品兌換單表)關聯(lián)起來; userinform 與 film(電影信息表)通過 subscribe(訂單表)關聯(lián)起來; film 與criticism(評論表)為 N: 1 的關系; film 與 filmcategory(電影分類表)為 N:N 的 關系;allseat 為座位表,存儲影院多有座位號,與其他表沒有關聯(lián)。 3. 2 系統(tǒng)數(shù)據(jù)庫分析 本系統(tǒng)設計到的 實體表有:用戶信息表、電影信息表、電影分類表、影評表、禮品信息表、影院座位表、訂單表、禮品兌換單表。只有總管理員才能刪除二級管理員和普通用戶。 d. 發(fā)布電影排榜功能:根據(jù)用戶投票對電影進行熱度排名,將排名列表公布。 b. 更新電影信息功能:可添加 /刪除電影;修改電影信息:電影名稱,上映時間,電影簡介,電影效果,海報。登錄時,系統(tǒng)根據(jù)身份代碼驗證身份,同時驗證用戶名和密碼 是否匹配,可報錯。 圖 管理員功能用例 建模分析 圖 a. 管理員登錄功能:管理員已添加到數(shù)據(jù)庫中,身份代碼為 “1”。 i. 瀏覽網(wǎng)站功能:用戶無需登錄,可查看近期上映電影信息,站內(nèi)電影列表,電影詳細信息等頁面,但如果要實現(xiàn)登錄后才有的功能,若尚未登錄,系統(tǒng)會予以提示。 g. 退票功能:登錄后可查看訂單信息,在訂單生產(chǎn)后 24 小時內(nèi)可退訂。 e. 電影投票功能:用戶可選擇進入投票頁面,對電影進行投票。積分可換取禮品。 c. 積分獲取功能:用戶注冊成功后自動獲取相應積分(本系統(tǒng)為 30 分)。 b. 普通用戶登錄功能:對已注冊用戶經(jīng) 行用戶名與密碼的匹配驗證。未經(jīng)注冊登錄者,系統(tǒng)予以提示,并拒絕本次登錄。 普通用戶功能 普通用戶功能 用例圖 建模分析 如圖 所示。普通用戶為影院的大眾客戶,通過該系統(tǒng)與影院進行信息交流;管理員則是對系統(tǒng)的數(shù)據(jù)進行管理,主要是對數(shù)據(jù)的修改,添加和修改。我們要對準啟動項目進行數(shù)據(jù)采集,分析預計實現(xiàn)的功能及功能的可行性,對系統(tǒng)結構進行搭建,對數(shù)據(jù)對象進行物理建模,對其存儲方式、存儲結構、依賴關系進行縝密的揣測定奪。 .java 文件中存放了 Java 源程序,它經(jīng) javac 命令編譯后就生成了相應的 .class 文件。它主要的特性是面向對象,可移植性,多線程,動態(tài)性。 MySQL可通過 Mysqldump、 客戶端管理工具、直接拷貝、日志進行備份。 數(shù)據(jù)庫中數(shù)據(jù)的丟失,若無法通過軟件等途徑恢復,則會致使業(yè)務無法進行 [12]。要通過 JDBC 訪問 MySQL,需要下載 JDBC 驅動程序。 MySQL MySQL 是由瑞典 MySQL AB 公司開發(fā)的一個開放源碼的小型關聯(lián)式數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、總體擁有成本低被廣泛地應用在 Inter 上的中小型網(wǎng)站開發(fā)中,目前通過 JDBC 連接 MySQL 一般采用兩種方式: JDBCODBC 連接橋方式和純 Java 驅動程序直接連接的方式 [9]。 Myeclipse 插件基本上涵蓋了眾多Eclipse 插件的功能,能滿足我們的各種應用需求,基本上安裝了它就無須其它任何插件 [7]。 MyEclipse 本系統(tǒng)使用 My 。 UI提供的組件支持通過 Ajax更新頁面。 JSF的 原稿基于 jQuery和 第 4 頁 共 45 頁 JavaScript[6]。它是輕組件庫,只有一個 jar文件,無需配置,沒有必要的依附體,是頁面表現(xiàn)的更生動,倍受程序開發(fā)者的青睞。 PrimeFaces Primefaces是 JSF的參考實例。配置文件為 , Bean 對象的生命周期可以為 null: 用時才生成 [5]。托管 Bean代表了一種可管理的資源,比如一個組件,一個臺設備,一個服務類。 在 Java編程語言中,一個托管 Bean( Managed Bean)就是一個 Java對象。 JSF 實現(xiàn)了視圖和業(yè)務邏輯代碼的完全分離,完全遵循 MVC—2 模式 [4]。 JSF 提供了一組新的動態(tài)的標簽,它與后臺動態(tài)程序相連接。 MVC 是 ModelViewController的簡稱,即模型 —視圖 —控制器 [3]。 JSF 有很多用于提高其 Web 應用程序的類庫,如PrimeFaces, MyFaces 等,本系統(tǒng)使用了 PrimeFaces 類庫。也就是說, JSF 提供了一種以組件為中心的用戶界面 (UI)構建方法 [1],不管是前臺頁面設計人員還是后臺程序開發(fā)人員,都可以使用 JSF 獨立地完成自己涉及的模塊,前臺與后臺得到了有效地分離,大大減小了耦合度。