天天看點

電影院的選座問題的思考

1.需求分析

  背景管理:提供電影院的名字,位址,票價,座位的排布(含空座位),上映時間(含多個)等

  前台選座管理:使用者可以選擇不通的時間,不同的座位,多個座位,選中且放棄的情況,然後支付,出現二維碼

2.思考(先提供已經完成的部分,支付部分尚未完成)

  

電影院的選座問題的思考
電影院的選座問題的思考
電影院的選座問題的思考
電影院的選座問題的思考
電影院的選座問題的思考

就兩個頁面,一個是表單送出(管理頁面),一個是選座頁面,後面還有支付頁面尚未完成。

部分分解:

1.座位排列的渲染。算法:背景 row*col ,在選座頁面的是通過兩層for 循環,循環 table 裡面的 tr 和td 将所有座位完成。

電影院的選座問題的思考

 我這裡采用的是ejs 的模版渲染。當然可以用js 拼字元串的,循環table的

2.空座位的處理,也就是某個角落沒有座位。需要提出來,單獨處理。背景,需要配置好資料,和前端的代碼一起配合處理頁面。

電影院的選座問題的思考

思路:循環table 裡的td,求出td的所在的row 和col,然後 拼成字元串 **排**列,比對從背景傳來的字元串,這個字元串也是循環背景配置空的數組得來的。兩個字元串如果相等的話,那麼将這個座位置空(追加class)。

3.已經定過座位的位置。同樣是通過的循環td,比對背景傳來的 數組中的資料,如果相等則追加class。如圖

電影院的選座問題的思考

這裡的做法和上面的一樣,我目前還沒找到好的方法,這樣的做法是比較不妥的。最好的做法應該在循環tabel 的時候,就應該處理這些資料,而不應該先做出表格,再處理表格。

(col 不加1)

3.選座位,考慮到選多個座位,然後取消某些座位的情況。處理如下

電影院的選座問題的思考

細節做法:壓入數組,和删除數組的某個元素。 這裡的添加一個數組的remove的方法。 (col 不加1 )

電影院的選座問題的思考

4.選座位後,座位和别人沖突的處理

電影院的選座問題的思考

前端處理大部分難點就是上面的部分。下面是背景處理的部分:

背景處理:

背景處理就是存取資料庫的部分。我背景用的是 nodejs + express + mongodb。

nodejs 生成電影院資料的接口如下:

電影院的選座問題的思考

nodejs 處理選座位的接口如下:

電影院的選座問題的思考

慚愧:因為後端接口是自己寫,前端渲染資料也是自己寫的,知識有所欠缺,是以代碼就是很糟糕的說,歡迎噴啊,各位有啥好的想法和做法,也可以和我交流。