【《基于Spring Boot的影城購票系統(tǒng)的設計與實現(xiàn)》21000字】_第1頁
【《基于Spring Boot的影城購票系統(tǒng)的設計與實現(xiàn)》21000字】_第2頁
【《基于Spring Boot的影城購票系統(tǒng)的設計與實現(xiàn)》21000字】_第3頁
【《基于Spring Boot的影城購票系統(tǒng)的設計與實現(xiàn)》21000字】_第4頁
【《基于Spring Boot的影城購票系統(tǒng)的設計與實現(xiàn)》21000字】_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGEIII基于SpringBoot的影城購票系統(tǒng)的設計與實現(xiàn)摘要 在互聯(lián)網(wǎng)快速發(fā)展的今天,各行各業(yè)都在依托互聯(lián)網(wǎng)飛速發(fā)展。其中在線電影購票業(yè)務的興起給購買電影票的網(wǎng)民帶來了極大的的便利,也給影院帶來了更多的發(fā)展空間,影院只要加盟第三方院線,就可以在第三方院線系統(tǒng)在線售票。但并不是所有的影院都適合加盟院線的售票模式,對于一些非一線城市的電影院來說,他們的特點是影院規(guī)模小,投資規(guī)模小,上游資金鏈不足或沒有上游資金鏈的支持。在這種情況下,此類電影院如果選擇加盟院線的售票模式,會有加盟費過高、票房分成處于劣勢地位、受限于第三方院線等不利因素,特別是遇到諸如疫情影響這一類的特殊情況,影院方?jīng)]有充足的資金鏈來維持發(fā)展,甚至沒有辦法及時止損。為了改善小型影院在生存發(fā)展方面遇到的一些困境,本課題將以梧州市文化中心影城為切入點,擬開發(fā)一套“基于SpringBoot的梧州市文化中心影城購票系統(tǒng)”。本系統(tǒng)在借鑒目前主流院線購票系統(tǒng)設計方案的同時還會加入會員模式,掃碼觀影模式等設計方案。會員模式是幫助影院方提高用戶留存率、得到會員費收益的有效方案,其中會員模式涉及到的支付流程將會采用Alipay支付接口來實現(xiàn);掃碼觀影模式總的來說就是可以省去取票的流程,影院工作人員直接掃描觀影者的購票二維碼,核驗通過之后就可以進入影院看電影,這無疑可以幫助觀影者節(jié)約許多時間成本,其中掃碼觀影涉及到的二維碼相關功能將會采用開源的QRcode技術來實現(xiàn)。會員模式和掃碼觀影模式的設計有利于促成觀影者和影院方互利共贏的局面。關鍵字:在線購票;會員模式;QRcode;SpringBoot目錄17400_WPSOffice_Level1第一章緒論 124477_WPSOffice_Level21.1課題的研究背景和意義 13093_WPSOffice_Level21.2國內外現(xiàn)狀研究 230053_WPSOffice_Level21.3本論文的主要工作 227133_WPSOffice_Level21.4本論文的結構安排 324477_WPSOffice_Level1第二章相關概念與技術理論綜述 417545_WPSOffice_Level22.1B/S模式 428188_WPSOffice_Level22.2SpringBoot介紹 424365_WPSOffice_Level22.3Thymeleaf介紹 413902_WPSOffice_Level22.4MySQL介紹 55854_WPSOffice_Level22.5Bootstrap介紹 521639_WPSOffice_Level22.6本章小結 53093_WPSOffice_Level1第三章系統(tǒng)需求分析 62547_WPSOffice_Level23.1可行性分析 614632_WPSOffice_Level23.2用戶需求分析 711528_WPSOffice_Level23.3軟件需求 1015646_WPSOffice_Level23.4非功能性需求 1014637_WPSOffice_Level23.5本章小結 1130053_WPSOffice_Level1第四章系統(tǒng)總體設計 1212732_WPSOffice_Level24.1系統(tǒng)總體模塊設計 1227846_WPSOffice_Level24.2業(yè)務平臺架構設計 1319638_WPSOffice_Level24.3部署架構設計 1415404_WPSOffice_Level24.4數(shù)據(jù)庫設計 1414505_WPSOffice_Level24.5本章小結 1827133_WPSOffice_Level1第五章系統(tǒng)詳細設計與實現(xiàn) 1914475_WPSOffice_Level25.1影片展示模塊的設計與實現(xiàn) 195894_WPSOffice_Level25.2排片管理模塊的設計與實現(xiàn) 2426270_WPSOffice_Level25.3會員管理模塊的設計與實現(xiàn) 2926223_WPSOffice_Level25.4訂單管理模塊的設計與實現(xiàn) 3519493_WPSOffice_Level25.5本章小結 3917545_WPSOffice_Level1第六章系統(tǒng)測試 406327_WPSOffice_Level26.1測試環(huán)境 4029270_WPSOffice_Level26.2主要功能測試 4015910_WPSOffice_Level26.3本章小結 4328188_WPSOffice_Level1第七章總結與展望 4419612_WPSOffice_Level27.1總結 446074_WPSOffice_Level27.2展望 4424365_WPSOffice_Level1參考文獻 45第一章緒論1.1課題的研究背景和意義中國互聯(lián)網(wǎng)絡信息中心發(fā)布的《第48次中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告》的統(tǒng)計結果表明,截至2021年6月,我國網(wǎng)民規(guī)模達10.11億,較2020年12月增長2175萬,互聯(lián)網(wǎng)普及率達71.6%,較2020年12月提升1.2個百分點。由數(shù)據(jù)可知,中國的互聯(lián)網(wǎng)的發(fā)展已經(jīng)進入白熱化階段,中國已經(jīng)踏入了全民上網(wǎng)的新時代。我國網(wǎng)民規(guī)模的增長以及互聯(lián)網(wǎng)普及率的提高,很大程度上是服務業(yè)迅猛發(fā)展的結果,而服務業(yè)的發(fā)展大有向互聯(lián)網(wǎng)靠攏的趨勢。如餐飲行業(yè)的在線點餐,公共服務行業(yè)的網(wǎng)約車、在線教育,娛樂行業(yè)的電影在線購票、網(wǎng)絡直播等等,在互聯(lián)網(wǎng)的支持下,這些行業(yè)可以說是發(fā)展相當迅速了。隨著國民生活水平的提升,國民對娛樂活動的追求也也越來越多元化,其中看電影是眾多娛樂項目中較方便、娛樂成本較低、娛樂效果不俗的一種娛樂方式。電影受眾的增多也給電影院帶來了更多的利益,也有源源不斷的投資者看準商機投入到電影行業(yè),開設電影院。隨著觀看電影的人數(shù)越來越多,也出現(xiàn)了不少面臨解決的問題,如傳統(tǒng)排隊買票的過程既耗費時間又耗費精力,而且線下買電影票價格往往不便宜,于是在這種壓力下各電影院不得不進行銷售模式上的轉型與升級,借助互聯(lián)網(wǎng)的快速發(fā)展把銷售重心從線下轉到線上。線下到線上轉型必須解決的問題是在線購票系統(tǒng)的開發(fā),典型的例子就是貓眼電影、淘票票等第三方在線購票系統(tǒng)的興起,光是這兩個平臺就搶占了電影在線購票市場的大部分份額,影院方只需要加盟這些第三方平臺,支付一定的加盟費用,并遵守賣出電影票后的分成規(guī)則,就可以使用平臺提供的系統(tǒng)在線售票。對于開設電影院的小型企業(yè)或者個體來說,加盟第三方院線平臺相較于大型企業(yè)是沒有優(yōu)勢的,小型企業(yè)或個體因資金不充足無法支付較大的加盟費,在電影票的分成方面也處于劣勢,且遇到疫情影響這一類特殊情況沒有充足的資金鏈來維持虧損的情況。為了解決這些問題,以梧州市文化中心影城為背景,擬開發(fā)一套基于SpringBoot的梧州市文化中心影城購票系統(tǒng)。該系統(tǒng)不用受限于第三方院線平臺,旨在幫小型企業(yè)或個體避免加盟第三方院線的加盟費支付壓力并且改善加盟院線之后分成占比較少的情況。除此之外該系統(tǒng)還設計會員制模式增強小型影院的核心競爭力,為了解決影迷排隊買票或取票耗時耗精力的問題,本系統(tǒng)還將設計掃碼驗票功能,目的是讓線上購票的用戶憑借影票二維碼經(jīng)工作人員掃碼驗票之后入院觀影,節(jié)約觀影者的時間成本。本系統(tǒng)的設計對諸如“梧州市文化中心影城”這樣的小型電影院的困境有一定的幫助作用,因此本人認為“基于SpringBoot的梧州市文化中心影城購票系統(tǒng)”的設計與實現(xiàn)有一定的現(xiàn)實意義。PAGEPAGEIII1.2國內外現(xiàn)狀研究1.2.1國外研究現(xiàn)狀國外票務系統(tǒng)的發(fā)展起源于上世紀70年代計算機活動票務銷售公司Ticketmaster的成立,該公司的票務系統(tǒng)真正意義上實現(xiàn)了北美票務市場從人工售票銷售模式到計算機售票銷售模式的轉變。在Ticketmaster公司還沒有成立以前,全美最大的計算機票務公司是Ticketron公司,該公司的票務系統(tǒng)每年銷售超過3000萬張各種演出與賽事的門票,而且擁有超過1000個分銷渠道?;旧铣邪巳来蟛糠种饕鞘械母鞣N票務活動。但是Ticketron公司的票務系統(tǒng)有一個致命的缺陷,就是系統(tǒng)在面對大量并發(fā)響應需求時不能提供穩(wěn)定的票務服務,嚴重時還會出現(xiàn)宕機的情況。而Ticketmaster公司的票務系統(tǒng)不但在系統(tǒng)穩(wěn)定性方面完勝Ticketron公司,而且可以處理大量的并發(fā)響應需求,因此Ticketmaster公司在成立之后的短短幾年內就取代了Ticketron公司成為全美最大的計算機票務公司。時至今日,Ticketmaster票務系統(tǒng)已經(jīng)從最初的線下票務系統(tǒng)轉變成線上線下一體的票務系統(tǒng)。值得一提的是,Ticketmaster票務系統(tǒng)的經(jīng)營模式是作為第三方承接其他商戶或公司的賣票業(yè)務并給民眾提供售票服務,該經(jīng)營模式對以后的票務市場乃至中國的票務市場產生了深遠的影響。而國外在線電影票務系統(tǒng)是在電影業(yè)飛速發(fā)展的前提下,以線下票務系統(tǒng)為基礎發(fā)展起來的。目前國外有兩家較大的在線電影票務平臺,分別是Movietickets和Fandango,這兩個網(wǎng)站于2000年成立。在兩家網(wǎng)站還沒有出現(xiàn)之前,美國的在線電影票務市場非?;靵y,于是兩家公司借助互聯(lián)網(wǎng)發(fā)展的契機,分別開發(fā)了自己的在線電影票務系統(tǒng),兩個系統(tǒng)的出現(xiàn)改變了美國在線電影票務市場的混亂局面,民眾不僅可以在兩個網(wǎng)站上選擇座位、購買電影票,還可以查看相關電影的影評、預告、電影簡介等信息。2017年,為了擴展拉丁美洲市場,F(xiàn)andango公司收購了Movietickets公司,之后Fandango網(wǎng)站的在線電影票務業(yè)務也變得更加完善。但是Fandango公司的在線電影票務市場也只占到美國電影票務市場20%的市場份額,另外80%的市場份額依然被線下電影票務市場占據(jù),其中一個重要的原因是美國民眾的生活習慣已經(jīng)固化,大部分民眾還是習慣直接到電影院賣票。即便如此,F(xiàn)andango公司的在線電影票務業(yè)務依然保持著上升發(fā)展的態(tài)勢。1.2.2國內研究現(xiàn)狀目前為止國內的在線購票系統(tǒng)大概經(jīng)歷了四個階段。首先是龍卷風售票系統(tǒng)的出現(xiàn)。該系統(tǒng)出現(xiàn)以后,原本傳統(tǒng)的人工售票模式開始被打破,逐漸有電影院開始使用該系統(tǒng)用計算機售票,這也是互聯(lián)網(wǎng)探索階段衍生的產物??梢驗樵撓到y(tǒng)功能并不完善,所以沒有被大范圍使用;其次是火烈鳥售票系統(tǒng)的出現(xiàn)?;鹆银B110售票系統(tǒng)以龍卷風售票系統(tǒng)的設計為參考,進行了重新設計,完善了許多功能,做到了多臺終端同時售票、排片計劃的管理等。該系統(tǒng)在國內影院反響不錯,因此受到一定范圍的推廣使用;接著是滿天星售票系統(tǒng)和火鳳凰售票系統(tǒng)的出現(xiàn)。這兩個系統(tǒng)是整合了火烈鳥系統(tǒng)的各種優(yōu)缺點而形成的功能更為全面的售票系統(tǒng),此階段的售票系統(tǒng)已經(jīng)趨于完善和成熟,因此各影院都引進自動售票機配合售票系統(tǒng)進行雙邊銷售,這極大的節(jié)約了影院的人力成本和觀影者的時間成本。自此這兩個系統(tǒng)一直被大范圍使用;最后是貓眼電影、淘票票等第三方在線售票平臺的出現(xiàn)。這些平臺主要是以加盟的方式與各大電影院合作,只要電影院加盟了這些第三方院線平臺,就可以在平臺上在線售賣電影票,自此觀影者又多了一種在線購票的方式,這種方式進一步簡化了購票流程并降低了時間成本、影院方人力成本,購票也不用再受地域限制。自此電影購票觀影體系已經(jīng)趨于完善。國內的在線電影票務系統(tǒng)在經(jīng)歷幾個階段的發(fā)展之后各種業(yè)務功能基本都已經(jīng)完善。但是最后發(fā)展成為貓眼、淘票票兩強相爭在線電影票務市場的局面,這也導致貓眼、淘票票兩個平臺在整個電影市場產業(yè)鏈中占據(jù)了主導地位,而影院方則處于電影市場產業(yè)鏈的下游地位,加盟兩家第三方在線票務平臺的電影院沒有話語權,加盟費用偏高,出現(xiàn)疫情影響整個電影市場的特殊情況時也沒有辦法及時止損。特別是一些小型電影院,它們本身的資金就非常緊缺,沒有應對風險的能力,此時為這些小型影院設計一個自己的電影售票系統(tǒng)就顯得非常重要,小型影院有了自己的售票系統(tǒng)就可以自己占據(jù)主導權,避免加盟費用的支付,靈活處理特殊情況帶來的影響。1.3本論文的主要工作分析目前小企業(yè)或個體戶所支持的小型影院與大企業(yè)支持的大型連鎖影院相比處于競爭劣勢的原因,首先是小型電影院無力支付高額的加盟費用,其次是就算加盟了院線也在分成方面處于不利地位,最后是小型影院在面對諸如疫情影響這一類的突發(fā)狀況時因為有第三方院線的加盟而受限無法及時止損,造成的損失非常大。為了幫助這樣的小型電影院降低投資風險并靈活的應對特殊情況造成的損失,以梧州市“文化中心影城”為背景,擬設計一套專供梧州市文化中心影城使用的“基于SpringBoot的梧州市文化中心影城購票系統(tǒng)”,擬解決的主要問題如下:1.目前不少在線影院售票系統(tǒng)都缺少用戶會員模塊,沒有對用戶級別做出區(qū)分。會員,作為一種常見的營銷手段,伴隨著商業(yè)的誕生一直發(fā)展至今,會員模式對影院而言,可以達到“提高用戶留存率”、“提升用戶價值”、“得到會費收益”、“建立流量橋梁”的目的,對于用戶而言,可以享受會員相關的優(yōu)惠方案。會員模式是一種雙贏的模式,因此我認為會員模塊的開發(fā)具有很大的現(xiàn)實意義。2.目前主流在線影院購票平臺很少有省去“取紙質電影票”流程這一業(yè)務需求的,因此本人在分析了省去“取紙質電影票”流程這一業(yè)務需求實現(xiàn)的可行性的基礎上,認為這一個需求可以借助二維碼技術實現(xiàn),并且能夠完善梧州市文化中心影城購票系統(tǒng)。3.實現(xiàn)選座購票、掃碼驗票、訂單支付、座位設置、電影排片、增加影片等核心功能和訂單管理、用戶管理等基礎功能。1.4本論文的結構安排第一章:緒論。這一章主要從課題研究的背景及意義、國內外發(fā)展的現(xiàn)狀、論文的主要工作等方面闡述“基于SpringBoot的梧州市文化中心影城購票系統(tǒng)”的開發(fā)背景、開發(fā)意義以及所要開發(fā)的功能。第二章:相關概念與技術理論綜述。這一章主要從開發(fā)項目需要使用到的關鍵技術出發(fā),詳細闡述B/S模式、SpringBoot技術、Thymeleaf技術、MySQL技術、Bootstrap技術的相關概念及作用。第三章:系統(tǒng)需求分析。這一章主要從系統(tǒng)可行性分析、用戶需求分析、軟件需求、非功能性需求等方面詳細闡述軟件需求。第四章:系統(tǒng)總體設計。這一章主要分析了系統(tǒng)有哪些主要功能模塊、業(yè)務平臺架構如何設計、部署架構如何設計、數(shù)據(jù)庫有哪些核心表和哪些字段。第五章:系統(tǒng)詳細設計與實現(xiàn)。這一章在上一章系統(tǒng)總體模塊設計的基礎上詳細闡述了影片展示模塊、排片管理模塊、會員管理模塊、訂單管理模塊等幾個核心功能模塊的具體實現(xiàn)細節(jié),包括模塊流程設計、模塊功能實現(xiàn)步驟、模塊核心編碼實現(xiàn)、模塊實現(xiàn)結果截圖等。第六章:系統(tǒng)測試。這一章主要從系統(tǒng)測試環(huán)境、主要功能測試兩個方面通過測試用例測試核心功能是否符合需求分析的預期結果,最大程度避免系統(tǒng)漏洞出現(xiàn)。第七章:總結與展望。這一章主要是總結系統(tǒng)設計完成之后還有哪些不足之處,以后如何改進等等。第二章相關概念與技術理論綜述基于SpringBoot的梧州市文化中心影城購票系統(tǒng)是以Java語言為基礎開發(fā)的,本系統(tǒng)使用MVC分層架構作為應用框架,視圖控制框架使用的是SpringBoot,數(shù)據(jù)持久層用Mybatis框架,數(shù)據(jù)存儲使用MySQL數(shù)據(jù)庫,使用jquery作為腳本框架,使用Thymeleaf作為模板渲染引擎,使用Bootstrap設計主要的UI界面。2.1B/S模式B/S模式,全稱是Browser/Server,也就是瀏覽器/服務器模式,是WEB興起后的一種網(wǎng)絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)、維護和使用??蛻魴C上只要安裝一個瀏覽器,如Chrome、Safari、MicrosoftEdge、NetscapeNavigator或InternetExplorer,服務器安裝SQLServer、Oracle、MYSQL等數(shù)據(jù)庫。瀏覽器通過WebServer同數(shù)據(jù)庫進行數(shù)據(jù)交互。2.2SpringBoot介紹SpringBoot設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。SpringBoot框架有兩個非常重要的策略,分別是開箱即用和約定優(yōu)于配置。開箱即用是指在項目開發(fā)過程中,開發(fā)者不需要把太多的精力花費在項目配置和依賴管理上,只需要在pom文件中添加開發(fā)項目所用到的依賴包,然后交給maven工具來管理,從而使開發(fā)者更加專注于業(yè)務邏輯設計。約定優(yōu)于配置是指SpringBoot項目的結構是固定的,它本身有一套默認的配置規(guī)則,開發(fā)者只需要遵循規(guī)則在特定的文件路徑下放指定的編碼文件,就可以省去許多配置步驟,輕松運行項目。2.3Thymeleaf介紹Thymeleaf是一個模板引擎,出現(xiàn)的目的是為了服務Java語言。它既可以用在基于servlet的Web環(huán)境中,也可以用在獨立環(huán)境下的現(xiàn)代服務端。在以MVC分層架構為基礎而開發(fā)的Web應用程序中,Thymeleaf具有得天獨厚的優(yōu)勢,它可以更自然、更流暢的渲染W(wǎng)eb應用程序視圖層的數(shù)據(jù),包括XHTML和HTML5。更為重要的一點是,Thymeleaf可以在Spring框架的基礎上集成大量對項目開發(fā)有幫助的工具,也可以插入自己的功能。Thymeleaf問世以后,完全取代了JSP技術在Web應用程序中渲染數(shù)據(jù)的作用。2.4MySQL介紹由瑞典MySQLAB公司開發(fā)的一種關系型數(shù)據(jù)庫管理系統(tǒng)。關系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內,這樣就增加了速度并提高了靈活性。與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQLServer等相比,MySQL[1]自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。2.5Bootstrap介紹Bootstrap是目前最受歡迎的HTML、CSS和JS框架,它的特點在于UI簡潔、優(yōu)美、使用簡單。我們只需要在Bootstrap的css和js文件的支持下給HTML標簽添加簡單的class屬性,就可以快速完成標簽的樣式渲染。更重要的一點在于它用于開發(fā)響應式布局、移動設備優(yōu)先的WEB項目。在Bootstrap的加持下,只需要一份前端界面源碼,我們就可以適配不同的設備,我們即可以適配PC設備,也可適配手機、平板等。我們的網(wǎng)站和應用能在Bootstrap的幫助下通過同一份源碼快速、有效地適配手機、平板和PC設備,這一切都是CSS媒體查詢(MediaQuery)的功勞。2.6本章小結這一章主要從開發(fā)項目需要使用到的關鍵技術出發(fā),詳細闡述B/S模式、SpringBoot技術、Thymeleaf技術、MySQL技術、Bootstrap技術的相關概念及作用。第三章系統(tǒng)需求分析在軟件項目的開發(fā)過程中,需求分析對設計方案有指導作用,并且可以識別需求的有效性,避免早期錯誤,從而提高生產效率,降低開發(fā)成本。本章以面向小型個體影院web端電影購票平臺的切實需求、背景出發(fā),對本系統(tǒng)的總體需求進行信息挖掘、整理、總結,分析得出系統(tǒng)的最終需求,本章主要圍繞系統(tǒng)業(yè)務需求、角色分析、系統(tǒng)功能性需求以及系統(tǒng)非功能性需求展開論述、總結。3.1可行性分析3.1.1技術可行性技術可行性是指決策的技術和決策方案的技術不能突破開發(fā)相關人員所掌握的技術資源條件的邊界。本系統(tǒng)開發(fā)所使用的操作系統(tǒng)是windows10,windows10自2015年上市至今,經(jīng)過5~6年的發(fā)展,已經(jīng)趨向于成熟和穩(wěn)定,用來開發(fā)該系統(tǒng)是可行的。本系統(tǒng)所使用的開發(fā)工具是IntelliJIDEA,IntelliJIDEA自上市以來,就以強大的代碼提示功能以及集成各種開發(fā)語言和工具包聞名,大大縮短了開發(fā)人員的開發(fā)周期,是目前主流的Java語言開發(fā)工具;該系統(tǒng)使用的后端開發(fā)技術是SpringBoot,SpringBoot是基于Spring框架的一種框架,其設計目的是用來\t"/item/Spring%20Boot/_blank"簡化新\t"/item/Spring%20Boot/_blank"Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。該系統(tǒng)所使用的模板引擎是thymeleaf,在前后端不分離的開發(fā)模式下,thymeleaf是最優(yōu)秀的數(shù)據(jù)渲染引擎,它取代了jsp,用更簡潔的代碼完成更復雜的數(shù)據(jù)渲染工作。3.1.2經(jīng)濟可行性經(jīng)濟可行性分析要估計項目的成本和效益,分析項目經(jīng)濟上是否合理。即進行成本效益分析,評估項目的開發(fā)成本,計算開發(fā)成本是否會保證項目預期的全部利潤。項目支出主要包括計算機硬件、軟件、外部設備及維護費用等。硬件方面計算機一臺,用于處理后臺數(shù)據(jù),所以以不需要額外的支出了。軟件方面,本系統(tǒng)采用IntelliJIDEA軟件作為開發(fā)工具,數(shù)據(jù)庫采用MySql,這些都是不需要額外的花銷。所以,本系統(tǒng)基本上不會帶來額外的資金投入。項目效益方面,梧州市文化中心影城售票系統(tǒng)實現(xiàn)了對梧州市文化中心影城的高效管理。它不管是否節(jié)假日,都可以減輕影城工作人員的負擔,節(jié)約運營成本,提高服務質量、工作效率和影迷購票效率。本系只是一個小型售票系統(tǒng),開發(fā)這個系統(tǒng)的經(jīng)濟效益是遠遠超過它的開發(fā)成本的,它對軟件和硬件的投資費用要求都不高,且節(jié)省了勞動力、提高了工作效率、且具有很好的適用性。3.1.3社會可行性分析本系統(tǒng)的主要服務對象是梧州市文化中心影城,這樣的個體影院存在資金緊缺、規(guī)模較小、設備更新緩慢等不利因素,難以依托淘票票、貓眼電影等這些大型一站式電影互聯(lián)網(wǎng)平臺發(fā)展,缺乏核心競爭力。而本系統(tǒng)的開發(fā),就是為了幫助個體影院增強核心競爭力。個體影院有了自己的售票系統(tǒng),不但可以省去第三方服務費,而且方便了信息管理,在售票模式的選取上也有了更大的彈性。本系統(tǒng)設計了會員折扣+優(yōu)惠券的售票模式,有利于吸引更多的客戶。本系統(tǒng)沒有違反有關國家政策,沒有觸犯法律,也沒有損害任何個體和集體的利益,是以良性競爭為基礎而設計的能夠增強個體影院核心競爭力的產品。3.2用戶需求分析3.2.1系統(tǒng)需求概述近年來,隨著國民經(jīng)濟水平的提升和娛樂需求的增加,看電影幾乎成為娛樂成本最低的一項娛樂活動,而且每年看電影的人數(shù)還在持續(xù)不斷的增長。因此,眾多大型互聯(lián)網(wǎng)企業(yè)、中小型企業(yè)乃至個體戶都看準了商機,紛紛發(fā)展了自己的電影產業(yè)鏈。其中,個體影院因資金緊缺、規(guī)模較小、產業(yè)鏈單一、設備更新不易等不利因素,難以在日漸增長的電影市場競爭中取得有利地位。針對這個問題,以“梧州市文化中心影城”為對象,本人擬設計一套“基于SpringBoot的梧州市文化中心影城售票系統(tǒng)”,該系統(tǒng)界簡潔,操作友好,簡單易用,不會給使用該系統(tǒng)的用戶帶來系統(tǒng)操作上的壓力。該系統(tǒng)的核心功能有以下幾點:1.影片展示。包括影片搜索子功能、查看排片子功能、選座購票子功能。2.排片管理。包括查看排片子功能、增加排片子功能、刪除排片子功能、座位設置子功能。3.會員管理。包括查看會員信息子功能、修改個人信息子功能、會員提升子功能。4.訂單管理。包括查看訂單子功能、下單子功能、支付訂單子功能、掃碼驗票子功能、刪除訂單子功能。3.2.2需求用例分析1.影片展示。該功能模塊的主要使用角色是“會員”,注冊了本系統(tǒng)的用戶即為該系統(tǒng)的會員,會員用戶可以在系統(tǒng)前臺進行“影片搜索、查看排片、選座購票”等操作,該用例的用例圖如下(見圖3-1):圖3-1影片展示用例圖2.排片管理。該功能模塊的主要使用角色是“影院工作人員”,影院工作人員可以在系統(tǒng)后臺進行“查看排片、增加排片、刪除排片、座位設置”等操作,該用例的用例圖如下(見圖3-2):圖3-2排片管理用例圖3.會員管理。該功能模塊的主要使用角色是“會員”和“后臺管理員”,會員用戶可以在系統(tǒng)前臺進行“查看會員信息、修改個人信息、升級會員”等操作,后臺管理員可以在系統(tǒng)后臺進行“查看會員信息”操作,該用例的用例圖如下(見圖3-3):圖3-3會員管理用例圖4.訂單管理。該功能模塊的主要使用者是“會員”、“后臺管理員”和“影院工作人員”,會員用戶可以在系統(tǒng)前臺進行“查看訂單、刪除訂單、下單、支付訂單、生成二維碼”等操作,后臺管理員可以在系統(tǒng)后臺進行“查看訂單、刪除訂單”等操作,影院工作人員可以在系統(tǒng)后臺進行“掃碼檢票”操作,該用例的用例圖如下(見圖3-4):圖3-4訂單管理用例圖5.影庫管理。該功能模塊的主要使用角色是“影院工作人員”,影院工作人員可以在系統(tǒng)后臺進行“查看影片列表、添加影片、修改影片信息、刪除影片”等操作,該用例的用例圖如下(見圖3-5):圖3-5影庫管理用例圖3.3軟件需求1.影片展示模塊。主要包括影片搜索子功能、查看排片子功能、選座購票子功能。對于需要購買電影票的用戶來說,有一個電影列表用來展示電影的信息是用戶購買電影票的前提。為了提高用戶查找心儀電影的效率進而分析出需要為用戶設計影片搜索功能,并且每一個電影列表還應該設計電影詳情信息的描述以及相關電影的排期信息供用戶選擇,這些都是用戶完成選座購票之前不可缺的功能設計。而選座購票功能就是影片展示模塊的核心功能,只有用戶選定座位并點擊下單才能完成一個電影購票訂單的生成。2.排片管理模塊。主要包括查看排片子功能、增加排片子功能、刪除排片子功能、座位設置子功能。排片管理模塊是分析了整個系統(tǒng)的核心業(yè)務需求之后得出的,該模塊的設計目的是給影片展示模塊的選擇排片場次功能和選座功能提供后臺數(shù)據(jù)支持。影院工作人員需要在后臺添加待放映影片的排片信息,因此設計增加排片功能;為了使用戶能夠查看相關排片場次的座位列表及進行座位的選取,在添加排片信息的同時還應該生成座位列表,之后需要管理座位列表信息,因此設計座位設置功能,該功能不僅可以鎖定選中的座位,將座位變?yōu)椴豢沙鍪蹱顟B(tài),還可以重置所有鎖定的座位;為了完善排片管理模塊,方便管理,還應該設計排片信息刪除功能。3.會員管理模塊。主要包括查看會員信息子功能、修改個人信息子功能、會員提升子功能。考慮到像梧州市文化中心影城這樣的小型影院的核心競爭力不足,因此為系統(tǒng)設計會員模塊來增加影院的核心競爭力是有必要的。會員管理模塊中必須有會員升級這個核心功能,該功能通過會員分級制度給用戶相應的優(yōu)惠。而會員升級功能要進行會員費支付,因此考慮用阿里云的沙箱支付接口技術完成支付功能。此外為了完善會員管理模塊還需要設計查看會員信息、修改個人信息等基礎功能。4.訂單管理模塊。包括查看訂單子功能、下單子功能、支付訂單子功能、掃碼檢票子功能、刪除訂單子功能。訂單管理模塊是一個包含金額交易功能的系統(tǒng)必不可少的模塊,用戶在選擇電影并選擇座位之后需要生成一筆訂單,所以為該模塊設計下單功能;用戶在完成下單之后還要為訂單支付相應的費用,因此為該模塊設計了支付訂單功能,支付訂單功能主要使用的是alipay的沙箱支付接口來完成;若下單之后超過30分鐘沒有支付訂單,訂單將會自動取消,這樣設計是為了曾強用戶體驗并完善整個購票流程的業(yè)務。為了簡化取票流程,進一步增強用戶的體驗并減少相應的人力成本付出,本系統(tǒng)考慮設計掃碼驗票功能代替現(xiàn)有的在線電影購票系統(tǒng)的紙質取票過程。掃碼驗票功能主要使用的是開源的QRcode技術來生成相應訂單的二維碼,用戶只要在支付訂單之后就會自動生成訂單二維碼并發(fā)送二維碼到個人郵箱,用戶可在指定的觀影時間到電影院掃碼驗票通過之后進入電影院觀影。另外為了完善訂單管理模塊還應該設計訂單查看、刪除訂單等基礎功能。3.4功能結構在系統(tǒng)用例分析和軟件需求分析完成后得到大致的功能模塊及各功能模塊的子功能,最終根據(jù)功能模塊得到的功能結構圖如圖3-6所示:圖3-6系統(tǒng)功能結構圖3.5非功能性需求梧州市文化中心影城售票系統(tǒng)主要用戶群體是梧州市內的居民以及梧州市文化中心影城工作人員。因為該系統(tǒng)服務的是建設規(guī)模不大的單個影院,放映廳有限,座位也有限,所以給服務器造成的壓力處于中等水平,不會太大。為了滿足后期維護需求以及系統(tǒng)的伸縮性、適用性,系統(tǒng)的設計應滿足以下幾項非功能性需求:1.性能需求在電影票售賣階段可能會有較多用戶訪問系統(tǒng),因此,在設計系統(tǒng)的時候應從數(shù)據(jù)庫和代碼邏輯方面進行優(yōu)化,以保證系統(tǒng)性能。系統(tǒng)性能應滿足平均響應時間不超過2000ms,中值不超過1500ms,吞吐量不小于774.9/sec,數(shù)據(jù)接收量不少于2000kb/sec,數(shù)據(jù)發(fā)送量不少于150kb/sec。2.系統(tǒng)可靠性需求系統(tǒng)應具備一定的穩(wěn)定性,保證24*7小時不死機,平均故障間隔時間不少于4個月,對于數(shù)據(jù)處理有一定的容錯能力。3.5本章小結這一章首先對系統(tǒng)進行了可行性分析,分析結果表明本系統(tǒng)的設計從經(jīng)濟可行性、技術可行性、社會可行性幾方面來看都是可行的。接著對系統(tǒng)進行用例分析得到大概的功能模塊,然后在系統(tǒng)軟件需求階段更具體的分析了各模塊的功能,從而得到系統(tǒng)的功能結構圖,最后對系統(tǒng)的非功能性需求進行分析。第四章系統(tǒng)總體設計4.1系統(tǒng)總體模塊設計對于一個系統(tǒng)來說,模塊劃分是系統(tǒng)前期設計中重要的一環(huán),合理的對系統(tǒng)進行模塊劃分有利于降低程序設計的復雜性,提高代碼的復用性,且方便系統(tǒng)維護和擴充功能,本小節(jié)從系統(tǒng)“模塊化”的設計思想出發(fā),對核心業(yè)務模塊進行概述。軟件工程“模塊化”方法和規(guī)約,要求系統(tǒng)在進行模塊化設計時應該遵循“高內聚,低耦合”的原則,具體來說就是每個模塊完成一個相對獨立的特定子功能,并且與其他模塊之間的聯(lián)系最簡單,保持模塊的高度獨立性。在模塊分解時還需要注意:保持模塊的大小適中,盡可能減少調用的深度,直接調用該模塊的個數(shù)應該盡量大,但調用其他模塊的個數(shù)則不宜過大。將系統(tǒng)進行“模塊化”分解之后,得到系統(tǒng)的5個核心業(yè)務模塊分別是“影片展示模塊,排片管理模塊,會員管理模塊,訂單管理模塊,影庫管理模塊”,并且的得到的功能結構圖如下(見圖4-1):圖4-1系統(tǒng)功能結構圖4.2業(yè)務平臺架構設計第三章對本系統(tǒng)進行了具體的需求分析之后,得到“選座購票、升級會員、增加排片、座位設置、下單、支付訂單、掃碼檢票”等核心需求。其中“選座購票、座位設置”需求涉及到前端座位動態(tài)渲染和前后端異步交互;“升級會員、支付訂單”涉及到支付寶沙箱支付接口的調用;“增加排片”涉及到涉及到座位列表的生成;“下單”涉及到訂單超時的處理;“掃碼檢票”涉及到二維碼的生成以及二維碼的掃描。要實現(xiàn)這些需求需要編寫較復雜的代碼邏輯,因此本系統(tǒng)考慮使用MVC分層架構進行設計。MVC模式用于應用程序的分層開發(fā),特點是視圖層和業(yè)務層分離,更改視圖代碼之后,不用重新編譯模型和控制器代碼,代碼重用性高,代碼維護性高。具體業(yè)務平臺架構圖如圖4-2。前端UI主要使用bootstrap框架結合jquery技術搭建,展示層發(fā)送AJAX異步或同步請求請求與后臺交互數(shù)據(jù),數(shù)據(jù)到達控制器之后控制器執(zhí)行相應的方法調用業(yè)務層邏輯方法,然后數(shù)據(jù)持久層通過MyBatis框架結合MySql持久化業(yè)務層傳遞過來的數(shù)據(jù)。圖4-2業(yè)務平臺架構圖4.3部署架構設計梧州學院文化中心影城購票系統(tǒng)采用的是B/S(瀏覽器/服務器)的架構模式。在PC端系統(tǒng)前臺中,用戶可以通過瀏覽器訪問應用服務器地址從而獲取系統(tǒng)的數(shù)據(jù),并進行一系列的查票購票操作;影院管理員可以訪問應用服務器地址登錄系統(tǒng)后臺之后對排片信息,電影信息等進行管理;后臺管理員可以訪問應用服務器地址登錄系統(tǒng)后對訂單信息、用戶信息等進行管理。整個系統(tǒng)由PC端、數(shù)據(jù)庫服務器端構成。系統(tǒng)的物理架構如圖4-3所示。圖4-2業(yè)務平臺架構圖4.4數(shù)據(jù)庫設計目前計算機信息化的普及程度越來越高,需要產生的數(shù)據(jù)越來越大,越來越多的程序開發(fā)需要使用專業(yè)的數(shù)據(jù)庫來管理數(shù)據(jù)。由此來看數(shù)據(jù)庫的設計也顯得尤為重要,合理的數(shù)據(jù)庫設計能加快數(shù)據(jù)存儲和讀取的速度,節(jié)省存儲空間,從而大大提高應用開發(fā)的效率,方便用戶使用,減輕數(shù)據(jù)庫系統(tǒng)管理人員維護負擔。4.4.1邏輯結構設計ER圖是表示概念關系的一種方式,是描述現(xiàn)實世界關系概念模型的有效方法,是現(xiàn)實世界和程序數(shù)據(jù)世界的橋梁。通過ER圖可以理清楚程序的業(yè)務關系,理清了所開發(fā)項目的業(yè)務邏輯關系,有助于后續(xù)數(shù)據(jù)庫的設計和編碼的實現(xiàn)。所以ER圖的設是非常有必要的。本系統(tǒng)的ER圖如圖4-3。圖4-3ER圖本系統(tǒng)的實體主要包括排片信息、電影類型信息、影院工作人員、后臺管理員、會員用戶、座位、二維碼、放映廳、訂單、影片等。下面將著重介紹影院工作人員、后臺管理員、會員用戶、座位、二維碼、訂單幾個實體之間的關系。1.一個影院工作人員可以設置多個座位,一個座位只可以被一個影院管理員;一個影院工作人員可以掃描多個二維碼,一個二維碼只能被一個影院工作人員掃描。2.一個會員用戶可以選擇多個座位,一個座位只能被一個會員用戶選擇;一個會員用戶可以生成多個二維碼,一個二維碼只能由一個會員用戶生成;一個會員用戶可以添加多個訂單,一個訂單只能被一個會員用戶添加。3.一個后臺管理員可以管理多個影院工作人員,一個影院工作人員只能被一個后臺管理員管理;一個后臺管理員可以管理多個會員用戶,一個會員用戶只能被一個后臺管理員管理;一個后臺管理員可以管理多個訂單,一個訂單只能被一個后臺管理員管理。4.4.2數(shù)據(jù)庫物理設計1.影片表(film),(見表4-1)。用于存儲上映電影的影片信息。表4-1影片表名稱字段字段類型字段長度是否為空備注電影編號film_idint11notnull主鍵(自增)電影名稱film_namevarchar100上映時間film_timedate0導演directorvarchar100演員actorvarchar100編劇screenwritervarchar100放映時長play_timeint11海報地址poster_urlvarchar200軟刪除標記is_deleteint11電影簡介describevarchar10002.會員信息表(member),見表4-2。用于存儲會員用戶的會員信息。其中會員等級字段包括“VIP1,VIP2,VIP3”,依次對應折扣字段的“1.0,0.8,0.75”,支付時間字段記錄會員用戶升級會員的時間,方便計算會員到期時間。表4-2會員信息表名稱字段字段類型字段長度是否為空備注記錄編號idint11notnull主鍵(自增)會員編號user_idint11性別sexvarchar100手機號phonevarchar100會員等級vip_gradevarchar100折扣discountdecimal11支付時間pay_timedatetime0查詢時間select_timedatetime0剩余優(yōu)惠券數(shù)ticket_numint113.訂單表(order),見表4-3。用于存儲會員用戶購買電影票之后生成的訂單信息。其中已使用優(yōu)惠券數(shù)記錄了會員用戶在會員期間購買電影票所使用的優(yōu)惠券數(shù),會員等級為VIP2的用戶在會員期間享受每張電影票八五折的優(yōu)惠,限量6張,會員等級為VIP3的用戶在會員期間享受每張電影票七五折的優(yōu)惠,限量4張。表4-3影片表名稱字段字段類型字段長度是否為空備注記錄編號idbigint11notnull主鍵(自增)訂單號order_idvarchar100訂單描述film_namevarchar100下單時間create_timedatetime0支付時間pay_timedatetime0查詢時間select_timedatetime0單價pricedecimal10總數(shù)totaldecimal10排片idplay_idvarchar100座位數(shù)seat_numint11座位號seatvarchar200會員編號user_idvarchar100已使用優(yōu)惠券數(shù)use_ticketint11支付狀態(tài)pay_statusint11轉刪除標記is_deleteint114.排片信息表(play),見表4-4。用于存儲上映電影的排片信息,用戶可以根據(jù)已有的排片信息購買對應場次的電影票。其中座位行列數(shù)字段用于記錄影院管理員在添加排片信息時生成的座位列表為幾行幾列。座位信息字段用于記錄座位列表的位置信息和狀態(tài)信息,對應位置值為0表示位置可選,對應位置值為1表示位置不可選。表4-4排片表名稱字段字段類型字段長度是否為空備注排片編號play_idint11notnull主鍵(自增)影片編號film_idint11影片名稱film_namevarchar100放映時間play_timedatetime0語言版本lan_versionvarchar100放映廳編號room_idint11放映廳名稱room_namevarchar100票價pricedecimal10座位行列數(shù)layoutvarchar100座位信息seat_infovarchar10005.用戶表(adm_user),見表4-5。用于存儲系統(tǒng)后臺用戶的賬戶信息。其中角色類型字段值為staff表示影院管理員,字段值為admin表示后臺管理員。表4-5用戶表名稱字段字段類型字段長度是否為空備注記錄編號idint11notnull主鍵(自增)用戶編號user_idvarchar100密碼passwordvarchar100手機號phonevarchar100角色類型rolevarchar1004.5本章小結這一章主要分析了系統(tǒng)的主要功能模塊進而畫出系統(tǒng)的功能模塊圖,然后又分析了系統(tǒng)的業(yè)務平臺架構設計進而畫出系統(tǒng)的業(yè)務平臺架構圖,接著分析了系統(tǒng)部署架構設計進而畫出部署架構圖,最后列出了核心的數(shù)據(jù)庫表以及表的字段。第五章系統(tǒng)詳細設計與實現(xiàn)本章節(jié)依據(jù)詳細需求分析、功能模塊劃分等,確定系統(tǒng)的業(yè)務需求,為系統(tǒng)的業(yè)務功能模塊提供了詳細的設計與實現(xiàn)方案。本章分別從系統(tǒng)的各業(yè)務模塊功能著手,為影片展示模塊、排片管理模塊、會員管理模塊、訂單管理模塊以影庫管理模塊進行詳細的設計與實現(xiàn)。5.1影片展示模塊的設計與實現(xiàn)5.1.1影片展示模塊流程設計影片展示模塊的主要使用者是注冊該系統(tǒng)的用戶,該模塊主要包括影片搜索、查看排片、選座購票等功能。其功能模塊流程圖如圖5-1所示,具體流程分析如下:1.用戶注冊并登錄系統(tǒng)進入系統(tǒng)前臺首頁,用戶可以點擊首頁展示的電影列表信息進入電影詳情頁面,或者點擊搜索按鈕完成相關電影搜索之后進入電影詳情頁面;2.電影詳情頁面有電影的導演、主演、上映時間、劇情簡介、排片等信息。用戶可以選擇當前電影已有的排片場次信息,然后點擊選座購票按鈕進入選座頁面。3.選座頁面可以選擇座位和取消座位,同時動態(tài)計算對應電影票數(shù)的總價,最后點擊下單按鈕完成下單操作,下單后如果30分鐘內沒有付款則自動取消訂單。影片展示模塊流程圖如圖5-1所示:圖5-1影片展示模塊流程圖5.1.2核心實現(xiàn)過程通過分析得出,在影片展示模塊中選座購票功能的實現(xiàn)較為復雜,其中座位列表的可選狀態(tài)需要通過二維數(shù)組記錄并存儲到數(shù)據(jù)庫的某一個字段中,但是數(shù)據(jù)庫本身是不支持二維數(shù)組類型的存儲的,所以存到數(shù)據(jù)庫之前必須把二維數(shù)組轉換為String類型字符串;在修改可選狀態(tài)之前又需要先把字符串轉換為二維數(shù)組類型才可以操作;在渲染到前端頁面之前還需要把二維數(shù)組重新組裝成集合才方便前端取值,其中涉及的類型轉換過程較為復雜。其中核心編碼如下:下列strToIntArr()方法的設計目的是將String類型的字符串為int類型的二維數(shù)組,方便修改座位坐標值以控制座位的可選狀態(tài)。//String轉int[][]方法publicint[][]strToIntArr(StringstatusInfo,introw,intcol){ //去除statusInfo的所有符號,只留下數(shù)字字符串 statusInfo=statusInfo.replaceAll("[^0-9a-zA-Z]",""); int[][]b; String[]first=newString[row]; for(intx=0;x<row;x++){ first[x]=statusInfo.substring(x*col,x*col+col);} b=newint[row][]; for(intx=0;x<row;x++){ String[]second=first[x].split(""); b[x]=newint[col]; for(inty=0;y<col;y++){b[x][y]=Integer.parseInt(second[y]);}} returnb;} 下列intArrToList()方法設計的目的是將存儲位座位位置信息的int型二維數(shù)組重新組裝成集合,方便數(shù)據(jù)傳遞到前端渲染座位列表。//int[][]轉List<List<SeatInfo>>方法publicList<List<SeatInfo>>intArrToList(int[][]array,introw,intcol){ List<List<SeatInfo>>seatInfoLists=newArrayList<>(); for(intx=0;x<row;x++){ List<SeatInfo>seatInfoList=newArrayList<>(); for(inty=0;y<col;y++){ SeatInfoseatInfo=newSeatInfo(array[x][y],(x+1)+"-"+(y+1)); seatInfoList.add(seatInfo);} seatInfoLists.add(seatInfoList);} returnseatInfoLists;}下列toSeat()方法的作用是處理渲染座位列表所需的數(shù)據(jù),并控制跳轉頁面。//展示選座頁面前的數(shù)據(jù)處理@GetMapping("seat")publicStringtoSeat(//參數(shù)省略...)throwsParseException{ Roomroom=roomService.selectByRoomId(roomId); Playplay=playService.selectByPlayId(playId); //從查詢到的play對象中獲取到選座表的行和列 inti=Integer.parseInt(play.getLayout().split("")[0]); intj=Integer.parseInt(play.getLayout().split("")[2]);//自定義方法//play.getSeatInfo()獲取查詢到的位置分布信息(String類型,二維數(shù)組的形式) //String類型轉int[][]類型 int[][]array=newStrToIntArrUtil() .strToIntArr(play.getSeatInfo(),i,j); List<List<SeatInfo>>seatInfoLists=newStrToIntArrUtil() .intArrToList(array,i,j); //遍歷int[][],將值為1的數(shù)組元素的坐標信息(+1得到座位信息)//存入seatList集合 //1表示位置可選,0表示位置不可選 List<String>seatList=newArrayList<>(); for(intx=0;x<array.length;x++){ for(inty=0;y<array[x].length;y++){ if(array[x][y]==1){ seatList.add((x+1)+"-"+(y+1));}}} //后續(xù)代碼省略... return"seat";}5.1.3實現(xiàn)結果1.影片列表前端頁面展示如圖5-3:圖5-3影片列表展示圖2.電影詳情信息及相關電影排片信息前端展示頁面如圖5-4:圖5-4影片詳情及排片信息頁面展示圖3.選座購票前端展示頁面如圖5-5:圖5-5選座購票頁面展示圖5.2排片管理模塊的設計與實現(xiàn)5.2.1排片管理模塊流程設計排片管理模塊的主要使用者是影院工作人員,該模塊主要包括查看排片、增加排片、刪除排片、座位設置等功能。其功能模塊流程圖如圖5-6所示,具體流程分析如下:1.影院工作人員登錄系統(tǒng)后臺點擊排片管理菜單,系統(tǒng)展示所有電影的排片信息;2.影院工作人員點擊添加按鈕跳轉到電影排片信息添加頁面,輸入電影名稱、放映時間、放映廳、單價、座位行列數(shù)之后點擊提交按鈕,提交成功之后再次跳轉到排片信息展示頁面;3.影院工作人員點擊排片信息的座位設置按鈕之后跳轉到對應的座位狀態(tài)設置頁面,在該頁面選擇需要鎖定的座位后點擊鎖定座位按鈕,被選擇的座位就被鎖定了,之后前臺用戶就不可以選擇被鎖定的座位;點擊座位重置按鈕之后所有被鎖定的座位將解除鎖定狀態(tài)。4.影院工作人員點擊排片信息的刪除按鈕之后,該排片信息就會被刪除。圖5-6排片管理模塊流程圖5.2.2核心實現(xiàn)過程通過分析得出,在排片管理模塊中座位設置功能的實現(xiàn)較為復雜,其中鎖定座位功能以及重置座位功能涉及到異步請求的發(fā)送以及回調函數(shù)的執(zhí)行,且涉及String類型向int[][]數(shù)組的轉換和字符串的拆分截取。核心編碼如下:下列代碼負責給重置座位按鈕綁定點擊事件,并發(fā)送異步請求。$("#resetSeat").click(function(){ $.ajax({type:"post",url:"resetSeat", data:"layout="+[[${layout}]]+"&playId="+[[${playId}]], dataType:"json", success:function(data){ location.href="seatSet?playId="+[[${playId}]];}, error:function(){ alert("error");}});});下列代碼負責給座位設置按鈕綁定點擊事件,并發(fā)送異步請求。$("#lockSeat").click(function(){ list=[]; map.forEach(function(value,key,map){list.push(value);}); if(list.length!==0){ $.ajax({type:"post",url:"lockSeat", data:"list="+list+"&playId="+[[${playId}]], dataType:"json",//請求成功發(fā)送后的回調函數(shù) success:function(data){ location.href="seatSet?playId="+[[${playId}]];}, error:function(){ alert("error");}});}});下列l(wèi)ockSeat()方法設計目的是將位置標記1轉變?yōu)?,達到重置座位的目的。//鎖定座位相關代碼@PostMapping("lockSeat")@ResponseBodypublicStringlockSeat(@RequestParam("list")Stringlist, @RequestParam("playId")StringplayId){ Playplay=playService.selectByPlayId(playId); inti=Integer.parseInt(play.getLayout().split("")[0]); intj=Integer.parseInt(play.getLayout().split("")[2]);//字符串轉int[][] int[][]array=newStrToIntArrUtil() .strToIntArr(play.getSeatInfo(),i,j); String[]buySeat=list.split(","); for(intx=0;x<buySeat.length;x++){//拆分選中的座位位置信息,方便位置狀態(tài)更新 String[]oneSeat=buySeat[x].split("-"); intoneSeatX=Integer.parseInt(oneSeat[0])-1; intoneSeatY=Integer.parseInt(oneSeat[1])-1; //修改位置標記(0-->1) array[oneSeatX][oneSeatY]=1; playService.updateOne(newGson().toJson(array),playId);} returnnewGson().toJson("success");}5.2.3實現(xiàn)結果1.查看排片信息頁面如圖5-8:圖5-8查看排片頁面展示圖2.座位設置頁面如圖5-9:圖5-9座位設置頁面展示圖5.3會員管理模塊的設計與實現(xiàn)5.3.1會員管理模塊流程設計會員管理模塊的主要使用者是注冊該系統(tǒng)的用戶和后臺管理員。該模塊包括查看會員信息、修改會員信息、會員升級等功能。其功能模塊流程圖如圖5-10所示,具體流程分析如下:1.會員登錄系統(tǒng)后即使本系統(tǒng)的會員用戶,用戶可以點擊個人中心的會員信息鏈接查看個人的會員信息,初次登錄系統(tǒng)的用戶的會員等級是VIP1,會員等級為VIP1的用戶不能享受購票折扣優(yōu)惠;2.用戶可以點擊等級提升按鈕提升自己的會員等級,會員提升至不同的等級享受不同程度的購票優(yōu)惠;3.用戶點擊等級提升按鈕之后系統(tǒng)調用支付寶沙箱支付接口以便用戶支付會員提升費用,支付成功之后會員等級提升;4.后臺管理員登錄系統(tǒng)后臺之后可以查看所有用戶的會員信息,點擊編輯按鈕可以跳轉到會員信息編輯頁面,修改完會員信息之后點擊修改按鈕完成會員信息修改。點擊刪除按鈕可以刪除會員信息。圖5-10會員管理模塊流程圖5.3.2會員升級規(guī)則說明1.用戶初始會員等級為VIP1,無優(yōu)惠服務;2.會員等級提升至VIP2,自開通之日起30日內,享有6張電影票每張8.5折優(yōu)惠的服務,資費為15元;3.會員等級提升至VIP3,自VIP2等級開通之日起30日內,享有4張電影票每張7折優(yōu)惠的服務,資費為12元;4.會員等級提升至VIP3,意味著尊貴的會員用戶可享受"VIP2等級的6張電影票8.5折優(yōu)惠服務+VIP3等級的4張電影票7折優(yōu)惠服務;5.會員等級逐級提升,不可越級提升;6.到期會員等級降為VIP1,到期后可繼續(xù)提升。5.3.3核心實現(xiàn)過程通過分析得出,在影片展示模塊中會員提升功能的實現(xiàn)較為復雜,其中涉及到支付寶接口的調用,訂單號的隨機生成,不同等級會員的會員費價格處理,支付完成之后的數(shù)據(jù)更新等。核心編碼如下:下列vipPay()方法首先獲得初始化的Alipayclient,然后設置請求相關的參數(shù),接著隨機生成訂單號,獲取會員升級的付款金額,最后調用Alipay支付接口完成支付功能。//會員升級方法@RequestMapping("vipPay")publicStringvipPay(Modelmodel,StringvipGrade){ AlipayClientalipayClient=newDefaultAlipayClient (AlipayConfig.gatewayUrl,AlipayConfig.app_id, AlipayConfig.merchant_private_key,"json",AlipayConfig.charset, AlipayConfig.alipay_pubilc_key,AlipayConfig.sign_type); //設置請求的參數(shù) AlipayTradeWapPayRequestalipayRequest=newAlipayTradeWapPayRequest(); alipayRequest.setReturnUrl(AlipayConfig.return_url); alipayRequest.setNotifyUrl(AlipayConfig.notify_url); //訂單ID Stringout_trde_no=RandomUtil.getRandomString(10); //訂單名稱 subject="會員升級"; //付款金額 Stringtotal_amount; if("VIP1".equals(vipGrade)){ total_amount="15.00"; }else{ total_amount="12.00";} //后續(xù)代碼省略... return"payPageRender";} 下列finishPay()方法是完成支付之后需要執(zhí)行的方法,方法中需要處理用戶所使用的優(yōu)惠券數(shù)量。//完成支付后更新數(shù)據(jù)@RequestMapping("finishPay")privateStringfinishPay(HttpServletRequestrequest)throwsException{ //此處代碼省略... booleansinVerifig=AlipaySignature.rsaCheckV1 (params,AlipayConfig.alipay_pubilc_key, AlipayConfig.charset,AlipayConfig.sign_type); if(sinVerifig){//獲取訂單號 StringorderId=newString(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); //獲取支付寶交易號 StringtradeId=newString(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8"); //獲取付款金額 Stringtotal=newString(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8"); if(subject.equals("電影購票")){//此處代碼省略...}else{ HttpSessionsession=request.getSession(); Stringusername=(String)session.getAttribute("username"); Useruser=userService.selectOne(username); Membermember=newMember(); member.setUserId(user.getUserId()); Membermember1=memberService.selectOneByUserId(user.getUserId()); if(member1.getVipGrade().equals("VIP1")){ member.setVipGrade("VIP2"); BigDecimaldecimal=newBigDecimal("0.85"); member.setDiscount(decimal); member.setTicketNum(6); }else{member.setVipGrade("VIP3"); BigDecimaldecimal=newBigDecimal("0.70"); member.setDiscount(decimal);member.setTicketNum(4);} member.setPayTime(newTimeProcessUtil().nowTime()); memberService.update(member);}} return"redirect:toIndex";}}

5.3.4實現(xiàn)結果1.后臺查看會員信息頁面如圖5-12:圖5-12查看會員信息頁面展示圖2.后臺修改會員信息頁面如圖5-13:圖5-13修改會員信息頁面展示圖3.前臺查看會員信息頁面如圖5-14:圖5-14前臺查看會員信息頁面展示圖4.支付寶付款頁面如圖5-15:圖5-15支付寶付款頁面展示圖5.4訂單管理模塊的設計與實現(xiàn)5.4.1訂單管理模塊流程設計訂單管理模塊的主要使用者是注冊該系統(tǒng)的用戶、后臺管理員以及影院工作人員。該模塊主要包括查看訂單、下單、支付訂單、掃碼驗票、刪除訂單等功能。其中下單、支付訂單、掃碼驗票功能的時序圖如圖5-16和圖5-17所示,具體流程分析如下:1.用戶登錄系統(tǒng)前臺選擇好對應電影的座位之后點擊下單按鈕,之后控制層生成一條訂單信息記錄并插入到數(shù)據(jù)庫,然后頁面跳轉到訂單支付頁面;2.用戶繼續(xù)點擊訂單支付頁面的支付按鈕,系統(tǒng)調用支付寶沙箱支付接口并喚起付款頁面,然后用戶選擇瀏覽器付款,用戶登錄支付寶賬戶并輸入支付密碼之后完成訂單支付,之后系統(tǒng)修改訂單支付狀態(tài);3.用戶點擊個人中心查看自己的訂單信息,點擊訂單信息的查看二維碼按鈕之后系統(tǒng)會生成含有電影票購票信息的二維碼;4.用戶憑借二維碼在電影放映時間內經(jīng)影院工作人員驗票通過之后進入電影院觀影。5.后臺管理員登錄系統(tǒng)后臺可以查看所有訂單信息,并可以刪除訂單。圖5-16下單以及支付訂單功能時序圖圖5-17掃碼驗票功能時序圖5.4.2核心實現(xiàn)過程通過分析得出,在訂單管理模塊中下單功能、支付訂單功能、掃碼驗票功能的實現(xiàn)過程都較為復雜,其中涉及到下單時的價格計算、優(yōu)惠券數(shù)量的計算、支付寶接口的調用、二維碼的生成、二維碼的掃碼檢驗等。核心編碼如下://下單功能關鍵代碼@PostMapping("buy")@ResponseBodypublicintbuy(//參數(shù)省略...){ //此處代碼省略... //下單成功后增加一條訂單記錄 orderService.addOrder(order); StringplayTime=play.getPlayTime(); //下單成功后更新座位狀態(tài) intupdateSign=playService.updateOne(newGson().toJson(array),playId); HttpSessionsession=request.getSession(); //會員優(yōu)惠劵減少 Stringusername=(String)session.getAttribute("username"); Useruser=userService.selectOne(username); Membermember=memberService.selectOneByUserId(user.getUserId()); if(member.getTicketNum()>0){ intticketNum=member.getTicketNum()-Integer.parseInt(amount); memberService.updateTicketNum(ticketNum,user.getUserId()); } //此處代碼省略... returnupdateSign;} 下列代碼用于計算訂單需要支付的實際金額。total=parseFloat((price*useTicket*discount+price*noDiscountNum).toFixed(2));letoriginalTotal=parseFloat((price*amount).toFixed(2)); 下列編碼用于在訂單支付完成之后生成訂單信息二維碼并保存到服務器。//訂單支付完成關鍵代碼//自定義工具類獲取當前時間StringpayTime=newTimeProcessUtil().nowTime();//更新支付狀態(tài)orderService.updateStatus(orderId,1,payTime);//獲取本地服務器地址InetAddressaddress=InetAddress.getLocalHost();Stringip=address.toString();String[]ipInfo=ip.split("/");StringlocalIp=ipInfo[1];//生成訂單二維碼并保存二維碼圖片訪問路徑StringqrcodeUrl=ZxingUtil.createImage(localIp+":8090/qrcode?orderId="+orderId);QrCodeqrCode=newQrCode(null,orderId,qrcodeUrl);qrCodeService.insert(qrCode);下列createImage()方法是生成二維碼的詳細實現(xiàn)邏輯。//二維碼生成的方法publicstaticStringcreateImage(Stringtext)throwsException{ HashMapmap=newHashMap(); map.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.H); map.put(EncodeHintType.CHARACTER_SET,"utf-8"); map.put(EncodeHintType.MARGIN,1); BitMatrixbitMatrix=newMultiFormatWriter() .encode(text,BarcodeFormat.QR_CODE,300,300,map); intwidth=bitMatrix.getWidth();intheight=bitMatrix.getHeight(); BufferedImageimage=newBufferedImage (width,height,BufferedImage.TYPE_INT_ARGB); for(inti=0;i<width;i++){ for(intj=0;j<height;j++){ image.setRGB(i,j,bitMatrix.get(i,j)?0xFF000000:0xFFFFFFFF);}} StringfileName="qr_code_"+nowTime+".png"; ImageIO.write(image,"png",newFile("F:\\files\\ApacheTomcat9.0.35\\webapps\\QR_code\\"+fileName)); StringSERVER_PATH="http://localhost:8080/QR_code/"; returnSERVER_PATH+fileName;}5.4.3實現(xiàn)結果1.訂單列表展示頁面如圖5-18:圖5-18訂單列表展示圖1.二維碼生成頁面展示如圖5-19:圖5-19二維碼生成頁面展示圖5.5本章小結這一章在上一章系統(tǒng)總體模塊設計的基礎上詳細闡述了影片展示模塊、排片管理模塊、會員管理模塊、訂單管理模塊等幾個核心功能模塊的具體實現(xiàn)細節(jié),包括模塊流程設計、模塊功能實現(xiàn)步驟、模塊核心編碼實現(xiàn)、模塊實現(xiàn)結果截圖等。第六章系統(tǒng)測試系統(tǒng)測試是程序的一種執(zhí)行過程,目的是盡可能發(fā)現(xiàn)并改正被測試系統(tǒng)中的錯誤,提高軟件的可靠性。它是軟件生命周期中一項非常重要且非常復雜的工作,對軟件可靠性保證具有極其重要的意義。6.1測試環(huán)境測試環(huán)境是指測試運行其上的軟件和硬件環(huán)境的描述,以及任何其它與被測軟件交互的軟件,測試環(huán)境包括計算機硬件、軟件、網(wǎng)絡設備。梧州市文化中心影城購票系統(tǒng)主要是PC端的應用程序測試,測試環(huán)境

溫馨提示

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

評論

0/150

提交評論