版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
影院票務(wù)管理系統(tǒng)的設(shè)計與實現(xiàn)影院票務(wù)管理系統(tǒng)的設(shè)計與實現(xiàn)DesignandImplementationofTicketManagementSysteminCinema系統(tǒng)關(guān)鍵技術(shù)、開發(fā)工具以及運(yùn)行環(huán)境概述關(guān)鍵技術(shù)本系統(tǒng)的編程語言主要是以JAVA語言為主,使用的Web框架是SSM,數(shù)據(jù)庫使用的是MySQL并且利用Navicat15forMySQL軟件進(jìn)行操作。整個框架所使用的jar包都是由Maven進(jìn)行管理。代碼的編寫使用的是IntelliJIDEA。JAVA語言使用Java作為編程語言的原因有以下幾點(diǎn):簡單、面向?qū)ο?、分布式、健壯、安全、體系結(jié)構(gòu)中立、可移植、解釋型的、高性能、多線程,動態(tài)性。Java和面對過程編程語言不同,它是面向?qū)ο蟮木幊陶Z言,是現(xiàn)實世界模型比較自然的延伸,是一種“萬物皆對象”的編程思想。它由執(zhí)行者變成了指揮者,我們可以把現(xiàn)實世界中的所有物體歸納成一類具體的事物,其中的每個個體就是一類事物的實例,面對對象是以對象為中心,消息為驅(qū)動。Java還具有面對對象的封裝、繼承以及多態(tài)這三大特性。其中封裝是指把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,如果外部想訪問里面的數(shù)據(jù)只能通過已知的接口來完成。繼承是指從某個已知的類得到繼承信息然后創(chuàng)建新類的過程,提供繼承信息的類是父類,獲得繼承信息的類是子類。多態(tài)的實現(xiàn)需要兩個條件:其一是子類繼承父類并重寫父類中的方法,其二是父類型引用子類型,這樣同樣的引用就會根據(jù)子類型的不同而表現(xiàn)出不同的行為,多態(tài)分為兩種,一種是運(yùn)行時的多態(tài)(方法重寫),另一種是編譯時期的多態(tài)(方法重載)。以Java為主的開發(fā)框架(例如:Struts、Hibernate、Spring等)是現(xiàn)在主流的Web開發(fā)框架,這些框架使用靈活方便,代碼復(fù)用性高,同時可以幫助開發(fā)者對代碼進(jìn)行管理。因此在進(jìn)行web項目開發(fā)的時候,大多數(shù)開發(fā)者都會選擇Java作為主要開發(fā)語言。SSM框架SSM(Spring+SpringMVC+MyBatis)框架是由Spring、MyBatis這兩個開源框架整合而成,其中的SpringMVC是Spring框架中的一部分。SSM框架常作為數(shù)據(jù)源較簡單的web項目。SpringSpring框架被認(rèn)為是Java應(yīng)用最廣泛的框架之一,能在許多框架上看到它的影子。之所以Spring框架被如此廣泛的使用,是因為該框架設(shè)計的思想非常的成功。其中就包括了廣為人知的IoC(InversionofControl)即控制反轉(zhuǎn)和AOP(AspectOrientedProgramming)即面向切面進(jìn)行編程。IoCIoC可以把它比喻成一個可以裝東西的容器。在Spring中,IoC認(rèn)為所有的Java資源就是JavaBean。而Ioc這個大容器的作用就是來裝載這些JavaBean并且管理他們之間的關(guān)系,其中包括了JavaBean的是怎么樣創(chuàng)建的、它們之間相應(yīng)的事件以及對于事件它們的所做出的行為是怎樣的等等。但是在大多數(shù)的情況下管理的還是Java資源之間的一些依賴關(guān)系,就像是公司依靠員工才能運(yùn)轉(zhuǎn)這種的依賴關(guān)系。IoC能對這一類的依賴關(guān)系進(jìn)行管理,但是這個管理行動并不是人為的,而是Spring通過用戶描述的信息而創(chuàng)建其所需的資源。整個流程就是當(dāng)我們配置完IoC后,如果需要某類資源,我們只需要向IoC容器描述這個資源,IoC就會自動幫我們找到所需資源,不再需要我們自己利用“new”關(guān)鍵字創(chuàng)建出新對象之后再獲得。這樣做的好處是把JavaBean之間的關(guān)系進(jìn)行解耦了,讓我們可以寫出結(jié)構(gòu)更清楚的程序。同時,IoC還提供了對于JavaBean生命周期的管理,例如可以延遲加載以及在其生命周期定義一些具體的行為,這樣讓我們可以更加有效的利用好JavaBean。AOPAOP常用于數(shù)據(jù)庫事物的編程,當(dāng)我們做完數(shù)據(jù)庫的第一部分操作時,想進(jìn)行第二部分的操作,但是第二部分的操作不確定是否能成功,一旦失敗了,我們必須使用數(shù)據(jù)庫的回滾功能去回滾事物,同時也得讓第一部分的操作也跟著進(jìn)行回滾,這樣才能保證數(shù)據(jù)的一致性。而在Spring的AOP去實現(xiàn)數(shù)據(jù)庫的管理中,是以異常為消息的,只要Spring接受到了異常信息就會通知數(shù)據(jù)庫進(jìn)行回滾。我們只需要讓AOP接受到異常消息,它就會回滾數(shù)據(jù)庫的事物,我們就不需要用代碼去回滾事物。大大節(jié)省了人力。SpringMVCSpringMVC結(jié)構(gòu)十分清晰,內(nèi)容比較簡單,重點(diǎn)它可以和Spring的IoC和AOP進(jìn)行無縫的對接,它不像Struts2與Spring的結(jié)合那樣存在許多的問題而導(dǎo)致穩(wěn)定性大幅度的降低。SpringMVC將整個項目進(jìn)行分層,這樣操作會降低項目之間的耦合度??偣苍谶@里將它總共分為三個部分:Model:模型層,這里封裝了應(yīng)用程序的數(shù)據(jù)和它們組成的pojo。View:視圖層,這里是將模型的數(shù)據(jù)以視圖的形式展現(xiàn)給用戶。Controller:控制層,負(fù)責(zé)處理用戶的請求,并將模型傳遞給視圖層顯示。MybatisMybatis的最開始是一個開源的項目iBatis演變而來的,其中iBatis由“Internet”和“abatis”這兩個單詞組合而成。它是一個Java持久層的框架,在2010年被移植到GooleCode并更名為MyBatis,再后來被開發(fā)者放到GitHub代碼庫中,之后一直由GitHub進(jìn)行管理。之所以使用是因為Mybatis強(qiáng)大的靈活性,并且它可以完全替代JDBC。在以往的JDBC代碼中,我們往往需要去實現(xiàn)Dao層接口的功能,這樣做的代碼復(fù)用性不高,并且大量的查詢、刪除、修改的方法混在一起難以進(jìn)行管理,而Mybatis卻大不相同,它并不需要實現(xiàn)Dao層的接口,而是直接使用XML進(jìn)行編程。同時它提供的自動映射、動態(tài)SQL、級聯(lián)、緩存、注解、代碼和SQL分離等功能,可以讓開發(fā)者非常方便的對數(shù)據(jù)庫進(jìn)行操作和管理。并且它對于SQL進(jìn)行了優(yōu)化,這讓它成為了互聯(lián)網(wǎng)的首選持久層框架。MySQL數(shù)據(jù)庫MySQL是目前比較流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。其主要優(yōu)點(diǎn)有:性能比較強(qiáng)勁,分辨一個數(shù)據(jù)庫的好壞不僅僅看其處理的性能,更重要的是看它的穩(wěn)定性如何。MySQL它的服務(wù)功能非常的穩(wěn)定,這讓它很少出現(xiàn)異常而宕機(jī),能夠長時間運(yùn)行。在保證性能和穩(wěn)定性的同時它的軟件體積也比較小,這使得用戶能夠簡單的進(jìn)行按照,并且易于維護(hù),這就讓安裝及維護(hù)成本比較低,非常適合比較小的項目開發(fā)。最重要的是它的開源性,可以大大減少軟件采購費(fèi)用。開發(fā)工具JDKJDK(JavaDevelopmentKit即java開發(fā)工具包),是整個java開發(fā)的核心,其中包含了java的運(yùn)行環(huán)境JRE(JavaRuntimeEnvironment)和java工具。IntelliJIDEAIntelliJ可以高效的進(jìn)行Java的開發(fā),它的代碼輔助功能和人體工學(xué)設(shè)計讓開發(fā)變得十分便捷。雖然IntelliJIDEA是一種適用于Java的IDE,但它也理解大量其他語言(例如SQL、JPQL、HTML、JavaScript等)并提供智能編碼輔助,即使當(dāng)語言表達(dá)式被注入到Java代碼的字符串文字中也能夠辨識。并且它直接集成了相應(yīng)的框架,無需安裝插件就能直接使用。例如這次的系統(tǒng)設(shè)計就是直接使用該軟件集成的SSM框架,省去了手動去創(chuàng)建該框架的步驟,提升了效率。Navicat15forMySQLNavicatforMySQL是管理和開發(fā)MySQL或MariaDB的理想解決方案。它是一套單一的應(yīng)用程序,能同時連接MySQL和MariaDB數(shù)據(jù)庫,并與AmazonRDS、AmazonAurora、OracleCloud、MicrosoftAzure、阿里云、騰訊云和華為云等云數(shù)據(jù)庫兼容。這套全面的前端工具為數(shù)據(jù)庫管理、開發(fā)和維護(hù)提供了一款直觀而強(qiáng)大的圖形界面。MavenMaven是Apache下的一個純Java開發(fā)的開源項目。基于項目對象模型(POM)概念,Maven利用一個中央信息片斷能管理一個項目的構(gòu)建、報告和文檔等步驟。同時Maven也是一個項目管理工具,可以對Java項目進(jìn)行構(gòu)建、依賴管理。Maven也可被用于構(gòu)建和管理各種項目,例如C#,Ruby,Scala和其他語言編寫的項目。Maven曾是Jakarta項目的子項目,現(xiàn)為由Apache軟件基金會主持的獨(dú)立Apache項目。它的特點(diǎn)主要有:項目的設(shè)置遵循統(tǒng)一的規(guī)則、可在任意工程中共享、依賴管理包括自動更新、一個龐大且不斷增長的庫、可擴(kuò)展,能夠輕松編寫Java或腳本語言的插件、只需很少或不需要額外配置即可即時訪問新功能等等。本次的項目主要是用該工具對整個框架使用的jar包進(jìn)行管理,可以直接在pom.xml里面直接對包進(jìn)行增加或者修改其版本號,這樣就可以避免手動導(dǎo)入jar包的繁瑣,大大增加了開發(fā)的效率。
系統(tǒng)主要功能模塊和架構(gòu)的設(shè)計主要功能模塊的設(shè)計該系統(tǒng)總共被設(shè)計為兩大模塊:分別為管理員模塊和用戶模塊。管理員模塊分為:電影模塊,會員模塊,電影院信息模塊以及訂單模塊。而用戶模塊分為:用戶信息模塊,查看影訊模塊以及購買電影票模塊。下面將詳細(xì)展開論述。前臺模塊的設(shè)計前臺模塊就是用戶實際操作的模塊,是面向用戶的,該模塊旨在讓用戶可以非常方便進(jìn)行使用,避免復(fù)雜的操作和晦澀難懂的流程。該模塊是我的同組成員來實現(xiàn),這里只論述設(shè)計方案。該模塊總體分為三大板塊來實現(xiàn):用戶信息板塊:這個板塊主要是用戶查看或修改自己的信息。用戶登錄系統(tǒng)后,如果是未登錄的狀態(tài),該用戶只能訪問影訊板塊,購買電影票和修改自己的信息都是不被允許的。訪問這些板塊系統(tǒng)將直接跳轉(zhuǎn)登錄界面。直到用戶登錄之后,用戶才能在該板塊進(jìn)行操作。查看影訊板塊:在該板塊用戶可以不用經(jīng)過登錄就可以完成該板塊所有功能的使用,包括用戶可以根據(jù)自己對電影類型的喜好來篩選電影。同時該模塊還提供了查詢電影的影訊,也就是電影的簡介以及預(yù)告片,這樣可以很好的幫助用戶了解他們想看的電影,同時也可以吸引用戶去觀看這些電影。當(dāng)用戶看完電影之后可以在該板塊的評分和影評中給出自己的評價和觀后感,這一部分是給用戶一個發(fā)表自己的想法的地方,同時,他們的評分和影評也可以幫助想看該電影的觀眾去更好的了解該電影,增加用戶的體驗感。購買電影票板塊:該板塊必須是用戶登錄的狀態(tài)下才能進(jìn)行,總共分為三步:第一步,用戶根據(jù)自己的喜好選擇電影;第二部,用戶選擇觀看電影的時間以及座位;第三步,確定訂單以及選擇支付的方式。后臺模塊的設(shè)計后臺模塊主要是面向管理者的,該模塊旨在幫助管理員快速便捷的對整個影城進(jìn)行管理,同時也要兼顧安全性以避免后臺突然崩潰導(dǎo)致影城損失。該模塊總共分為三個模塊:(1)電影模塊:該模塊是整個電影院的核心模塊,管理員在進(jìn)行登錄后可以進(jìn)行以下操作:首先是對電影的管理,包括了對電影的增加、修改、刪除以及分類進(jìn)行查找,同時還包括了對電影的排片管理。其次是對電影的類型進(jìn)行管理,包括了對電影類型的增加、修改和刪除。最后是統(tǒng)計管理,包括了對影院的票房進(jìn)行統(tǒng)計,對電影的評分進(jìn)行統(tǒng)計,以及對電影的熱度進(jìn)行統(tǒng)計。(2)會員模塊:會員是指用戶購買會員卡后將自動轉(zhuǎn)為會員身份。管理員在該模塊可以進(jìn)行兩種操作,一是查看操作,包含了查看會員的總體信息和查看某個用戶的詳細(xì)信息。而是設(shè)置操作,包含了設(shè)置會員的優(yōu)惠票價,用戶只有成為會員之后才能享受會員的優(yōu)惠票價。(3)訂單模塊:訂單是指用戶完成一次購票行為后產(chǎn)生的記錄。訂單包含該次行為的所有信息,管理員可以對這些訂單進(jìn)行查找,其中查找分為精確查找和模糊查找,精確查找是指管理員可以查找到具體某個用戶的所有訂單,模糊查找是指管理員可以查找某一天的所有訂單,這樣就為統(tǒng)計票房帶來了依據(jù)。Spring、SpringMVC、Mybatis框架的設(shè)計本系統(tǒng)使用的SSM(Spring+SpringMVC+Mybatis)框架,該框架是完整的MVC設(shè)計模式,整個系統(tǒng)分為視圖層(這里使用JSP來實現(xiàn))、Controller層、Service層以及Dao(持久層)層。整個框架的流程如下:首先,用戶將會訪問JSP界面,界面有許多的功能模塊,當(dāng)用戶具體想訪問某一模塊的時候,視圖層會向服務(wù)器發(fā)送一些請求(這些請求有可能還會攜帶參數(shù)),這個時候Controller層的某一攔截器將會攔截其對應(yīng)的請求,如果攜帶參數(shù)就同時接收相應(yīng)的參數(shù),并進(jìn)行處理。處理的具體過程是在Service層完成的,Controller只調(diào)用Service層的具體的接口便可,Service層的大部分邏輯都會涉及到持久層的操作,例如對數(shù)據(jù)庫的某些表進(jìn)行增刪改查,這時候就要用到持久層框架——Mybatis,它提供了使用Mapper的接口編程,只需要一個接口和XML就能完成映射器的創(chuàng)建,然后映射器發(fā)送SQL去執(zhí)行并返回結(jié)果。這里得到的結(jié)果將沿著原來的路徑返回到控制層,然后由控制層傳給JSP顯示。界面設(shè)計整個系統(tǒng)的界面根據(jù)功能來劃分,總共分為四大模塊,分別為:主模塊、電影模塊、訂單模塊、會員模塊。再往下細(xì)分,主模塊包括了管理員登錄界面和主界面,電影模塊包括了電影詳細(xì)信息,電影類型,電影分?jǐn)?shù)這三個界面,訂單模塊為訂單信息界面,最后是會員模塊,其包括了會員信息界面和會員卡界面。這里統(tǒng)一使用JSP作為管理員看到的網(wǎng)頁,使用的前端框架為BootStrap。具體步驟為:先用該框架搭建好登錄界面,然后搭建好主界面,接著往主頁面上連接相應(yīng)的其它界面完成整個界面的設(shè)計。數(shù)據(jù)存儲結(jié)構(gòu)設(shè)計該系統(tǒng)總共有12張表,分別為:管理員表、用戶表、電影表、電影類型表、電影排片表、電影分?jǐn)?shù)表、影廳表、影廳的座位表、訂單表、支付方式表、會員表,影廳的座位類型表。表的設(shè)計首先利用PowerDesigner軟件完成E-R圖的繪制,接著使用逆向工程導(dǎo)出數(shù)據(jù)庫到Navicat15forMySQL軟件。接下來的利用這個軟件來管理MySQL中的所有表。
主要模塊以及架構(gòu)的具體實現(xiàn)主要模塊的實現(xiàn)主要模塊總體分為用戶模塊和管理員模塊,由于整個項目是我和另外一個小組成員共同開發(fā),因此下面將詳細(xì)闡述自己負(fù)責(zé)的管理員模塊。后臺模塊的實現(xiàn)管理員登錄管理員的登錄界面非常簡潔明了,總共需要管理員輸入三類信息,分別為:管理員的賬號,該賬號的密碼以及驗證碼。管理員的賬號和密碼都是一開始默認(rèn)分配好的。驗證碼是通過函數(shù)隨機(jī)生成的,這樣做就可以避免使用腳本進(jìn)行破解密碼和惡意進(jìn)行大量自動登錄。同時對輸入的賬號和密碼以及驗證碼進(jìn)行了非空和輸入是否符合要求的判斷,減少了對數(shù)據(jù)庫的訪問的次數(shù),減輕了數(shù)據(jù)庫的壓力。只有當(dāng)用戶輸入三類信息全部符合要求時才向服務(wù)器發(fā)送登錄請求,并且該請求是使用了Ajax技術(shù)即異步傳輸,使得不必刷新整個界面就能獲得請求的結(jié)果。登錄完成后服務(wù)器將用戶的信息儲存在session中,這樣后續(xù)的所有操作經(jīng)過過濾器時就不會被當(dāng)作無登錄狀態(tài)處理。這樣就拒絕了除管理員外的其它人員的訪問,大大增加了整個系統(tǒng)的安全性。檢查登陸的核心代碼:@OverridepublicMap<String,String>checkLoginByIdAndPassword(Map<String,Object>map,HttpSessionsession){//TODOAuto-generatedmethodstubAdministratoradministrator=administratorDao.queryByIdAndPassword(Integer.parseInt(map.get("adminId").toString()),map.get("adminPassword").toString());StringgetVerifyCode=(String)session.getAttribute("verifyCode");Map<String,String>messageMap=newHashMap<>();if(!map.get("verifyCode").toString().toLowerCase().equals(getVerifyCode.toLowerCase())){messageMap.put("verifyCode_error","驗證碼錯誤");}elseif(administrator==null){messageMap.put("admin_error","用戶賬號密碼錯誤");}else{session.setAttribute("administrator",administrator);}returnmessageMap;}電影信息以及電影類別管理電影信息管理包括兩大類,一類是電影的詳細(xì)信息管理,另一類是電影的排行榜管理。電影的詳細(xì)信息是將數(shù)據(jù)庫中電影表中所有的電影信息查詢出來放置到JSP界面然后利用表格顯示出來,同時為了對查詢出來的電影信息進(jìn)行管理,在電影的詳細(xì)界面利用了分頁和模糊查詢。分頁是指在一個界面上顯示固定個數(shù)的記錄,同時給出了上一頁和下一頁的按鈕來對所有的電影進(jìn)行訪問。而模糊查詢是指了解到電影的一部分信息的情況下想具體的了解電影的所有信息,這時可以通過相應(yīng)的查詢類型來模糊查詢電影,提升了電影管理的效率。對于查詢出來的電影可以進(jìn)行相應(yīng)的增加、修改和刪除操作。增加電影類型的核心代碼:@OverridepublicMap<String,String>addMovieType(MovieTypemovieType){Map<String,String>map=newHashMap<>();//判斷typeName是否重復(fù)if(movieTypeDao.queryMovieTypeByName(movieType.getTypeName())!=null){map.put("typeName_error","電影類型名重復(fù)");}else{movieTypeDao.insertMovieType(movieType);}returnmap;}增加電影的核心代碼://增加電影@RequestMapping("/addMovie")@ResponseBodypublicvoidaddMovie(HttpServletRequestrequest,HttpServletResponseresponse,HttpSessionsession)throwsNumberFormatException{MultipartHttpServletRequestmultipartRequest=(MultipartHttpServletRequest)request;MultipartFilefile=multipartRequest.getFile("movieCover");FileUploadupload=newFileUpload();upload.imgUpload(file);MovieTypemovieType=newMovieType();movieType.setTypeId(Integer.parseInt(request.getParameter("movie_type")));Moviemovie=newMovie(request.getParameter("movieName"),request.getParameter("movieDirector"),request.getParameter("movieActor"),movieType,request.getParameter("movieArea"),Integer.parseInt(request.getParameter("movieTime")),request.getParameter("movieReleaseDate"),request.getParameter("movieSynopsis"),0,newBigDecimal(request.getParameter("moviePrice")),file.getOriginalFilename(),request.getParameter("movieTrailer"));movieService.addMovie(movie);}訂單管理訂單管理主要是起顯示、查詢和統(tǒng)計作用,用戶每進(jìn)行一次購票活動都會在后臺生成相應(yīng)的訂單信息,如果要對其進(jìn)行查看,具體的過程是在數(shù)據(jù)庫中查詢訂單表的訂單信息,并將查詢出來的訂單信息放入JSP界面的表格中進(jìn)行分頁顯示。該訂單管理界面提供了與之對應(yīng)的查詢功能,即可通過訂單的時間來查詢那個時間段的所有訂單,也可通過用戶名來查詢用戶的相應(yīng)的訂單。訂單管理沒有刪除和修改操作,因為這樣的操作是不被允許的,這會導(dǎo)致票房等數(shù)據(jù)出現(xiàn)問題。獲取訂單的核心代碼:@OverridepublicPageBean<MovieOrder>queryMovieOrderByPage(intcurrentPage){//TODOAuto-generatedmethodstubPageBean<MovieOrder>pageBean=newPageBean<>(currentPage,pageSize,movieOrderDao.queryCount());List<MovieOrder>list=movieOrderDao.queryMovieOrderByPage((current1)*pageSize,pageSize);pageBean.setLists(list);returnpageBean;}會員信息管理對于會員信息管理主要以顯示和查詢?yōu)橹鳎撃K將所有是會員的用戶信息進(jìn)行列表。同時為了方便管理員了解整個影城會員的數(shù)量情況,該模塊的會對會員的人數(shù)進(jìn)行匯總,并且繪制了會員和普通用戶的比例餅狀圖。這樣就能比較清楚的描繪了會員和非會員的比重,從而讓管理者看到整個影城的運(yùn)營情況。而查詢功能可以讓管理者具體查到某個會員的詳細(xì)信息。對于會員卡的管理的實現(xiàn)同會員信息管理類似,對會員卡的使用者、卡號、以及余額進(jìn)行列表,同時提供了通過會員名查詢會員卡的功能,方便管理者查詢。而對于會員卡訂票的折扣管理,首先將數(shù)據(jù)庫中的電影類型表的數(shù)據(jù)分頁取出來進(jìn)行列表,管理者就能比較詳細(xì)的了解不同的電影類型的折扣,然后管理員就能對電影類型設(shè)置不同的折扣,同時電影類型會有查重的操作,對于相同名稱的電影類型,系統(tǒng)會認(rèn)為是添加重復(fù),將會提示管理者名稱已經(jīng)重復(fù),請重新添加。同樣管理員也可以對電影類型進(jìn)行修改和刪除等操作。會員界面的核心代碼://進(jìn)入會員列表界面@RequestMapping("/enterMemberPage")publicStringenterMemberPage(@RequestParam(value="currentPage",defaultValue="1",required=false)intcurrentPage,Modelmodel){model.addAttribute("memberpagemsg",memberCardServiece.queryMemberByPage(currentPage));model.addAttribute("userpagemsg",userService.getAllUserCount());return"member";}電影排行榜管理對于電影的排行榜分為兩種:第一種是電影分?jǐn)?shù)排行榜,第二種是電影熱度排行榜。電影分?jǐn)?shù)排行榜是根據(jù)所有觀看過該電影的觀眾給出的評分通過平均后給出的結(jié)果,現(xiàn)在許多用戶看電影時都會參考其評價,而電影的評分在很大程度上是用戶參考的依據(jù)。電影熱度排行榜則是根據(jù)訂單表的信息得來的。訂單表將統(tǒng)計某段時間電影觀看人數(shù),觀看某個電影的人數(shù)越多就說明該電影的越受歡迎,從而該電影的票房就會越多,這樣就能讓管理者能夠有依據(jù)的對電影進(jìn)行排片。電影排行榜的核心代碼:<!--根據(jù)分?jǐn)?shù)排名查詢電影排行榜--><selectid="queryMovieScore"resultMap="BaseResultMap">select(@i:=@i+1)id,a.*from(selectm.movieName,m.movieCover,ms.scoreListfrommoviem,(selectmovie_Id,floor(sum(score)/count(*))scoreListfrommovie_scoregroupbymovie_Id)mswherem.movieId=ms.movie_IdorderbyscoreListdesc)a,(SELECT@i:=0)i<iftest="start!=nullandsize!=null">limit#{start},#{size}</if></select>界面實現(xiàn)界面的實現(xiàn)利用了JSP和bootstrap框架來完成。JSP的全稱是JavaServerPages,它是一種動態(tài)的網(wǎng)頁技術(shù)標(biāo)準(zhǔn),它是部署在服務(wù)器上,并可以相應(yīng)客戶端的請求,并可以通過內(nèi)容動態(tài)的生成HTML,并且它是以Java作為腳本語言,可以與企業(yè)級的Java進(jìn)行相互配合,JSP就只做數(shù)據(jù)的展示。由于它內(nèi)部自帶標(biāo)簽(JSTL),可以使用JavaBean和該標(biāo)簽進(jìn)行代碼的復(fù)用,減少程序的臃腫,給開發(fā)效率帶來比較大的提升。并且它的許多樣式和插件都直接可以使用,避免了自己去新建而浪費(fèi)時間。JSP該系統(tǒng)的管理員總共有8個界面。利用JSP來實現(xiàn),分別為:(adminLogin.jsp)登錄界面首先管理員提供自己的賬號、密碼以及輸入隨機(jī)生成的驗證碼,如果三者都正確,管理員將進(jìn)入主界面進(jìn)行相應(yīng)的操作。如果有任一錯誤,系統(tǒng)將會根據(jù)錯誤的類型提示用戶相應(yīng)的錯誤,管理員會根據(jù)錯誤的類型來更正錯誤的信息,直到登錄成功。登錄界面如圖例4-1所示:圖4-1登錄界面(main.jsp)主頁面管理員登錄后將跳轉(zhuǎn)到該界面,如果管理員未經(jīng)登錄而是直接輸入該界面或其它界面的地址想試圖直接進(jìn)入管理系統(tǒng),這個時候攔截器將發(fā)揮它的作用。它會攔截所有的請求,如果發(fā)現(xiàn)該管理員沒有進(jìn)行登錄而嘗試訪問該系統(tǒng),攔截器將阻止該次求,并提示該管理員進(jìn)行登錄操作。該界面主要有三部分組成,第一部分是菜單欄,該部分主要是顯示管理員的名稱和進(jìn)行退出登錄的操作。第二部分是導(dǎo)航菜單,該菜單的是整個系統(tǒng)的主干,可以通過該菜單訪問到系統(tǒng)的所有模塊,并且導(dǎo)航菜單在所有的界面都有顯示,這樣做的目的是讓管理員在不同的模塊之間快速切換。第三部分是信息展示模塊,該部分所展示的信息有:影城的票房、今日的收入、影城的會員數(shù)以及整個影城的用戶數(shù),同時電影的熱度排行榜也在這里顯示。主界面如圖例4-2所示:圖4-2主界面(movie.jsp)電影信息界面這個界面是電影管理模塊的一部分,該部分與主頁面的前兩部分完全類似,不同的是在導(dǎo)航菜單會有標(biāo)志顯示管理員是處在的界面,這個界面的信息展示模塊是通過查詢電影表然后得到相應(yīng)的數(shù)據(jù)進(jìn)行分頁顯示電影的詳細(xì)信息,管理員可以在這里查看所有已經(jīng)入庫的電影,同時也能對某個電影進(jìn)行修改和刪除操作。由于電影的字段非常多,如果想模糊查詢某個字段會比較繁瑣,這里的處理是提供了幾個常用的查詢字段通過下拉列表來展示,同時把根據(jù)上映與否的選擇按鈕單獨(dú)列出來,這樣就能完美的解決查詢的問題。同時管理員在查詢時會進(jìn)行數(shù)據(jù)校驗,防止非法輸入。電影信息界面如圖例4-3所示:圖4-3電影信息界面(addMovieType.jsp)增加電影類型界面該界面的前兩個部分同主頁面的菜單欄和導(dǎo)航欄一樣,第三個數(shù)據(jù)展示部分是將數(shù)據(jù)庫中的電影類型表的數(shù)據(jù)分頁查詢出來然后顯示,管理員可以對這些數(shù)據(jù)進(jìn)行增加、修改和刪除。并且進(jìn)行增加和修改的時候會進(jìn)行類型的重復(fù)的判斷,以保證一個電影不會出現(xiàn)同時對應(yīng)兩個相同的類型的情況。增加電影類型界面如圖例4-4所示:圖4-4增加電影類型界面(movieScore.jsp)電影分?jǐn)?shù)界面該界面的前兩個部分同主頁面的菜單欄和導(dǎo)航欄一樣,數(shù)據(jù)展示部分是將觀眾評分表中的數(shù)據(jù)全部查詢出來進(jìn)行求和平均計算出分?jǐn)?shù),然后按照分?jǐn)?shù)來對電影進(jìn)行排行。電影分?jǐn)?shù)界面如圖例4-5所示:圖4-5電影分?jǐn)?shù)界面(order.jsp)訂單界面該界面的前兩個部分同主頁面的菜單欄和導(dǎo)航欄一樣,第三部分分為查詢和展示,訂單查詢有兩種具體的查詢,一種是根據(jù)訂單完成的時間來查詢,另一種是根據(jù)具體的用戶名來查詢訂單。如果不選擇具體的查詢方式將默認(rèn)的分頁查詢所有的訂單。訂單界面如圖例4-6所示:圖4-6訂單界面(member.jsp)會員界面該界面的前兩個部分同主頁面的菜單欄和導(dǎo)航欄一樣,第三部分為展示部分,該部分展示了三類信息,第一類信息是會員的總數(shù),第二部分是會員的分頁列表,第三部分是會員和用戶的占比的餅狀圖,設(shè)計餅狀圖的好處是幫助管理員十分清楚直觀的展現(xiàn)會員情況。會員界面如圖例4-7所示:圖4-7會員界面(memberCard.jsp)會員卡界面該界面的前兩個部分同主頁面的菜單欄和導(dǎo)航欄一樣,第三部分的展示部分為查詢和展示,查詢是根據(jù)用戶名來查詢用戶,展示部分為會員卡的詳細(xì)信息包括卡號、持有者以及卡內(nèi)的余額。會員卡界面如圖例4-8所示:圖4-8會員卡界面Bootstrap框架Bootstrap,來自Twitter,它目前是最受歡迎的前端框架。許多前端界面都使用了該框架。Bootstrap是基于HTML、CSS、JavaScript的,它簡潔靈活,提供了許多的樣式模板,使用者只需根據(jù)使用手冊調(diào)用指定名稱樣式就能直接獲得樣式的效果,這樣就會使得Web開發(fā)更加快捷。在整個前端界面中bootstrap框架主要有以下作用:(1)布局的排版前臺界面利用bootstrap框架的排版將整個界面進(jìn)行分區(qū),每個區(qū)域之間互不影響,使得每個區(qū)域便于管理。(2)樣式的美化bootstrap框架提供了許多布局組件的美化,前臺界面的字體、下拉菜單、按鈕組、表格以及分頁等都用上了該框架的樣式。(3)Bootstrap插件界面的過度效果、模態(tài)框、彈出框以及提示工具都是該框架的插件。數(shù)據(jù)存儲結(jié)構(gòu)實現(xiàn)數(shù)據(jù)的存儲使用的是MySQL數(shù)據(jù)庫,在建立數(shù)據(jù)庫之前使用PowerDesigner對該系統(tǒng)的數(shù)據(jù)庫進(jìn)行建模,建立表與表之間的關(guān)系,然后使用MySQL數(shù)據(jù)庫進(jìn)行表的存放。管理員模塊管理員表:管理員表主要是對管理員的賬號、姓名以及密碼進(jìn)行儲存,供登錄時使用。由于沒有注冊功能,所有的新增操作直接在數(shù)據(jù)庫進(jìn)行。電影模塊電影信息表:電影信息表主要存儲了電影的ID、名稱、導(dǎo)演、主演、類型、制片國家/地區(qū)、時長、首映時間、簡介、評分、價格、預(yù)告片地址。這些信息將在管理員進(jìn)入電影信息界面、電影的熱度排行榜、電影分?jǐn)?shù)排行榜以及用戶查詢影訊時顯示出來。同時這張表也是管理員根據(jù)例如:名稱、導(dǎo)演、主演、制片國家/地區(qū)這些關(guān)鍵字查詢信息的基表。(2)影廳表:該表存放著電影院所有的影廳。影廳包括三個字段:影廳號、座位類型和影廳名稱,這里的座位類型是指該影廳的座位設(shè)計(例如共幾排幾座),影廳名稱指該影廳的稱謂(例如IMAX廳等)。(3)電影排片表:電影排片表是管理員對每天電影的排片進(jìn)行規(guī)劃的表。該表共有三個字段:電影id、放映時間、影廳號。電影id是電影表的電影id的外鍵,可以通過該字段查詢到該編號電影的所有信息,放映時間則是電影的放映的開始時間以及結(jié)束的時間,影廳號則是該電影放映的影廳的編號。(4)電影分?jǐn)?shù)表:電影分?jǐn)?shù)表是觀看完電影的觀眾對該電影的打分以及評價。該表包括四個字段:用戶id、電影id、用戶評分以及評價內(nèi)容。用戶id是做出該評價的是哪位用戶,電影id是指用戶評價的哪個電影,用戶評分是指用戶對該電影的評分是多少(分值是0-100),評價內(nèi)容是指用戶看完該電影的評價內(nèi)容,這些數(shù)據(jù)將會在用戶查詢影訊時顯示。(5)電影類型表:電影的類型表包含三個字段:電影類型id,電影類型名和會員折扣。這里的會員折扣是指對于不同的電影類型的會員折扣是不同的,這個由管理員決定。(6)座位類型表:座位類型表總共三個字段:座位類型id、座位行數(shù)和座位列數(shù)。座位類型id是指該影廳的座位分布情況,后面兩個字段是用于用戶選擇座位時確定的行數(shù)和列數(shù)。用戶模塊用戶信息表:用戶信息表包含了用戶的id、昵稱和密碼,這些是用戶登錄時所要用到的信息。訂單表:用戶每進(jìn)行一次購票行為,系統(tǒng)將自動生成相應(yīng)的訂單,訂單包含了用戶購買電影的全部信息:訂單id、用戶id、電影id、購買的價格、訂單完成的時間、座位的行列數(shù)、影廳號以及支付方式。支付方式表:該表只有兩個字段,第一個是支付方式id,第二個是支付方式名稱(線上或線下),線上是指第三方支付,例如:支付寶、會員卡、微信支付和信用卡支付,線下是指用戶使用現(xiàn)金或者使用實體會員卡進(jìn)行支付。會員表:會員表是用戶進(jìn)行會員注冊后生成的,會員可享受電影折扣。該表主要記錄會員卡的卡號、密碼、綁定用戶的id以及卡內(nèi)的余額。
結(jié)論基于SSM的影務(wù)管理系統(tǒng)基本滿足了一個合格的影城管理系統(tǒng)的所有功能。該系統(tǒng)的主要優(yōu)點(diǎn)有:界面美觀、功能較為齊全、操作方便,交互效果良好,達(dá)到預(yù)期設(shè)計要求。它對于用戶而言,可以讓用戶十分便捷的完成查看影訊、購買電影票、對電影做出評價等系列的操作。而對于管理
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年生物科技前沿知識測試生物技術(shù)專業(yè)題目
- 道路路面修補(bǔ)技術(shù)方案
- 舊家具再利用設(shè)計方案
- 城中村文創(chuàng)產(chǎn)業(yè)發(fā)展方案
- 工業(yè)園區(qū)環(huán)境整治施工方案
- 材料供應(yīng)商關(guān)系管理方案
- 整體廚房設(shè)計及施工方案
- 道路施工電力設(shè)施保障方案
- 室內(nèi)隔斷設(shè)計與施工方案
- 道路施工路基換填技術(shù)方案
- 河北省NT名校聯(lián)合體2025-2026學(xué)年高三上學(xué)期1月月考英語(含答案)
- 2025-2026學(xué)年滬科版八年級數(shù)學(xué)上冊期末測試卷(含答案)
- 途虎養(yǎng)車安全培訓(xùn)課件
- 衛(wèi)生管理研究論文
- 2025-2026學(xué)年人教版(新教材)小學(xué)數(shù)學(xué)二年級下冊(全冊)教學(xué)設(shè)計(附教材目錄P161)
- 委托市場調(diào)研合同范本
- 畜牧安全培訓(xùn)資料課件
- 2025年度黨支部書記述職報告
- 2026四川省引大濟(jì)岷水資源開發(fā)限公司公開招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2026年安徽糧食工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考試題及答案詳解
- 內(nèi)科學(xué)總論小兒遺傳代謝病課件
評論
0/150
提交評論