使用ivx實現(xiàn)影院訂票的經(jīng)驗總結(jié)

今天我們來制作一個影院訂票模型忿危,模型中用戶可以選擇影片斯棒、場次和座位剿涮,并且支持一次預定多張影票,下面來說一說具體實現(xiàn)方法腻异。

一.數(shù)據(jù)庫

1.影片庫

在實際案例中可能需要添加更多字段进副,比如演員表,影片描述等,模型中我們就簡化一下影斑,只保存影片名稱和影片海報给赞。

2.影廳庫

影廳中的座位一般都是按照行列排序,所以我們可以用一個二維數(shù)組存儲影廳的座位信息矫户。不過影廳中的座位可能如下圖中的情況片迅,并不是對應(yīng)一個完整的二維數(shù)組,所以我們令數(shù)組元素為true和false分別表示有無對應(yīng)座位皆辽。具體操作就是添加一個JSON字段位置地圖柑蛇,將二維數(shù)組寫成JSON字符串格式添加到數(shù)據(jù)庫中。另外我們還需要添加一個JSON字段定座地圖驱闷,這個字段中true和false表示座位是否被預定耻台,不過由于每個影廳會放映多個場次,因此具體的定座情況是無法在影廳庫中體現(xiàn)的空另,我們就只是保存一份所有座位都為未被預定的初始狀態(tài)數(shù)據(jù)盆耽。

3.場次庫

場次庫中前面幾個字段保存的是影片名稱、日期扼菠、開場散場時間和影廳名等基本信息摄杂,后面的位置地圖和定座地圖則與影廳庫中的含義相同,而且添加新場次時其初始值就由是影廳庫的輸出結(jié)果直接賦值的(本案例中使用Ctrl+C娇豫,Ctrl+V在數(shù)據(jù)庫里直接輸入就可以了)匙姜。顯然場次庫中定座地圖字段的值是會隨著用戶訂票操作而改變的。

4.用戶選座記錄

這個數(shù)據(jù)庫中我們存放用戶成功定座的操作記錄冯痢,因為數(shù)據(jù)庫會默認添加提交用戶氮昧,所以我們只需再用兩個字段記錄用戶所選擇的電影場次ID和選擇的座位即可。要注意這里的“用戶選擇”是一個一維數(shù)組格式的JSON字段浦楣,每個引號里的內(nèi)容代表一個座位袖肥,“-”前是行號,“-”后是列號振劳。

二.服務(wù)

1.選擇影片

選擇影片服務(wù)中將所選影片的名稱傳給服務(wù)即可椎组,數(shù)據(jù)庫會把場次庫中該影片的所有場次輸出并返回。

2.選擇場次

其實選擇影片時已經(jīng)將該影片的所有場次信息都輸出到前臺了历恐,不過在輸出到前臺后可能又有其他用戶成功訂票導致后臺數(shù)據(jù)更新寸癌,所以還是添加一個選擇場次服務(wù),能夠通過數(shù)據(jù)ID讓場次庫輸出該場次的最新數(shù)據(jù)弱贼。

3.選座訂票服務(wù)

接下來就是案例的核心——選座訂票服務(wù)了蒸苇,我們需要傳給服務(wù)的是選擇場次的ID和所選座位組成的一維數(shù)組。首先我們會將該場次的定座地圖輸出到后臺的一個二維數(shù)組里吮旅,然后將數(shù)值變量“可以定票數(shù)”歸零溪烤。之后我們通過一個循環(huán)判斷用戶所選的每一個座位是否被預定,如果沒有就讓“可以訂票數(shù)”加1,并將二維數(shù)組中對應(yīng)的元素改為true檬嘀。

循環(huán)結(jié)束后如果“可以訂票數(shù)”等于用戶傳給服務(wù)的一維數(shù)組中元素的個數(shù)槽驶,就說明用戶所選的座位都是可預訂的,就將更改后的二維數(shù)組更新到場次庫中并返回seccess鸳兽,如果不等于則說明已有其他用戶預訂此座位掂铐,定座失敗,返回fail贸铜。

三.前臺

1.影片選擇頁面

在頁面初始化時堡纬,我們讓影片庫將所有影片輸出到前臺對象數(shù)組中,通過循環(huán)創(chuàng)建展示所有影片蒿秦。

當用戶選擇某一影片后烤镐,調(diào)用選擇影片服務(wù),將返回的影片場次信息保存到前臺的對象數(shù)組“場次選擇”中棍鳖。

2.場次選擇頁面

在場次選擇頁面中炮叶,我們依舊是通過循環(huán)創(chuàng)建展示出所有場次。當用戶選擇場次后通過該場次的數(shù)據(jù)ID調(diào)用選擇場次服務(wù)渡处,獲取場次數(shù)據(jù)镜悉,并且將返回結(jié)果中的定座地圖和位置地圖分別保存到兩個二維數(shù)組。

3.位置選擇頁面

在位置選擇頁面医瘫,首先利用二維數(shù)組“位置地圖”進行一個雙層的循環(huán)創(chuàng)建侣肄,然后通過if容器判斷當前數(shù)據(jù)的值,如果為true說明該點有座位醇份,就顯示一個座位的圖標稼锅;如果為false就用一個與背景顏色相同的分割線組件占位。當然展示的座位還有3種情況僚纷,已被預訂矩距,未被預訂和當前用戶選中,我們需要再進行兩層判斷怖竭,在有座位的情況下座位是否被預定锥债,沒被預定的情況下是否被當前用戶選中。

接下來是訂票操作的邏輯痊臭,當點擊一個處于未被預訂狀態(tài)的座位圖標時哮肚,我們會先判斷這個座位是否在一維數(shù)組“用戶選擇”里,如果不在就用該座位的行列號拼成“3-3”這樣的格式加到“用戶選擇”中广匙,如果已經(jīng)在“用戶選擇”里就將該值從數(shù)組中刪除绽左。(可以注意到上一步中判斷是否將座位顯示為用戶選中狀態(tài)的if容器,其篩選條件與此處的邏輯是對應(yīng)的)

最后是提交定座艇潭,最下方按鈕的禁用屬性和內(nèi)容都與“用戶選擇”進行了數(shù)據(jù)綁定,當“用戶選擇”的元素個數(shù)為0,也就是當前用戶沒有選擇座位時蹋凝,按鈕會被禁用并顯示Please select the seat鲁纠,當用戶選擇座位后按鈕會顯示Buy tickets并允許點擊。點擊后則調(diào)用選座訂票服務(wù)鳍寂,返回該場次最新的數(shù)據(jù)信息并告知用戶定座結(jié)果改含。

總結(jié)

案例中第一個難點是要使用合適的數(shù)據(jù)結(jié)構(gòu)存儲用戶的訂票信息,這點需要大家能夠熟練使用JSON字符串迄汛,設(shè)計出自己需要的變量格式捍壤;第二個是在展示座位狀態(tài)時使用了多層的for容器和if容器,這里我們需要明確每層循環(huán)的數(shù)據(jù)格式和類型鞍爱,以及if容器進行判斷的條件分支結(jié)構(gòu)鹃觉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市睹逃,隨后出現(xiàn)的幾起案子盗扇,更是在濱河造成了極大的恐慌,老刑警劉巖沉填,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疗隶,死亡現(xiàn)場離奇詭異,居然都是意外死亡翼闹,警方通過查閱死者的電腦和手機斑鼻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猎荠,“玉大人坚弱,你說我怎么就攤上這事》ㄉ” “怎么了史汗?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拒垃。 經(jīng)常有香客問我停撞,道長,這世上最難降的妖魔是什么悼瓮? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任戈毒,我火速辦了婚禮,結(jié)果婚禮上横堡,老公的妹妹穿的比我還像新娘埋市。我一直安慰自己,他們只是感情好命贴,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布道宅。 她就那樣靜靜地躺著食听,像睡著了一般。 火紅的嫁衣襯著肌膚如雪污茵。 梳的紋絲不亂的頭發(fā)上樱报,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音泞当,去河邊找鬼迹蛤。 笑死,一個胖子當著我的面吹牛襟士,可吹牛的內(nèi)容都是我干的盗飒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼陋桂,長吁一口氣:“原來是場噩夢啊……” “哼逆趣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起章喉,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汗贫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秸脱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體落包,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年摊唇,在試婚紗的時候發(fā)現(xiàn)自己被綠了咐蝇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡巷查,死狀恐怖有序,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岛请,我是刑警寧澤旭寿,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站崇败,受9級特大地震影響盅称,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜后室,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一缩膝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岸霹,春花似錦疾层、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽予弧。三九已至,卻和暖如春湖饱,著一層夾襖步出監(jiān)牢的瞬間桌肴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工琉历, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人水醋。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓旗笔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拄踪。 傳聞我的和親對象是個殘疾皇子蝇恶,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 【踐行人員】楊琴~唐悅?cè)悖ㄆ邭q) 【打卡日期】2018年8月29日 【打卡累計天數(shù)】85/90 【宣 言】成為孩...
    悅享人生yq閱讀 153評論 0 0
  • 都說眼睛是心靈的窗戶,目光有時候能給一個人帶來鼓勵和希望惶桐!它甚至能給我們的生活帶來巨大的影響撮弧。而我最忘不了的...
    汪天鵬童年回憶_3791閱讀 321評論 0 3
  • 9月26日 星期二 中雨 這幾天家里澆玉米,一直休息不好姚糊,到了晚上困的不行了贿衍,想寫日記但是打不起精神...
    王心如媽媽閱讀 118評論 0 1
  • 依然是一個云淡風輕的日子,在這個仿佛重復昨日的今日救恨,我又該如何面對呢贸辈? 我常思考一個問題:什么原因讓我時...
    incredible_1048閱讀 238評論 0 0