◆任曉萌 李海濤 王妍肖 及京京 陳 晨 王 波
?
基于微信平臺的反饋式訂票系統(tǒng)
◆任曉萌 李海濤 王妍肖 及京京 陳 晨 王 波
(華北理工大學建筑工程學院 河北 063000)
系統(tǒng)針對郊區(qū)學校與市中心區(qū)間的班車運行情況,在B/S架設下,使用Python語言,采用MTV模型組織下的Django框架,以Nginx+Uwsgi+Django組合作為后臺服務器構架,實現(xiàn)了用戶的登錄、查詢車次、預訂車票、進行支付、加車反饋、退票等功能,提供了一種可有效緩解班車運行壓力的新型的購票系統(tǒng),開發(fā)了基于微信平臺的反饋式訂票系統(tǒng),有效解決了學校師生候車時間長的問題。
微信;反饋式;訂票;系統(tǒng)
隨著網絡的快速發(fā)展,網上訂票作為一種簡便快捷的購票手段,受到了越來越多用戶的認可。目前華北理工大學已順利整體搬遷至曹妃甸,學校開通了校區(qū)——唐山西站的大巴以便利師生的出行。但學校師生仍面臨等車時間過長,等車隊伍過長的現(xiàn)狀。為解決上述問題,開發(fā)了基于微信平臺的反饋式訂票系統(tǒng),該系統(tǒng)基于用戶提供的出行時間段,反饋給用戶車次、乘車時間等具體信息,有效調整班車班次,合理安排班車發(fā)車時間和數(shù)量,提高師生出行效率。
反饋式訂票系統(tǒng)包括前臺用戶頁面、后臺管理頁面兩個方面。
前臺用戶頁面包括以下5個模塊:
(1)查詢功能模塊:用戶查詢班次,發(fā)車時間,車票記錄等基本信息;
(2)訂票功能模塊:用戶按照自身需求用于預訂車票,進行支付并更新數(shù)據(jù)庫信息;
(3)退票功能模塊:用戶按照自身需求用于退票和返款處理并更新數(shù)據(jù)庫信息;
(4)申請加車模塊:如果已有班次座位已滿,用戶可以根據(jù)自身情況進行申請加車;
(5)個人信息模塊:用戶可以查看本人的賬號信息、預訂信息以及加車信息。用戶能夠通過輸入出發(fā)地、目的地、發(fā)車時間,在前端訂票頁面查詢并根據(jù)自身需要選擇班次。若班次座位已滿,則用戶可以通過加車選項來申請具體時間的班次來進行加車預訂。微信支付成功以后,系統(tǒng)為用戶生成訂單信息,用戶可以在個人中心頁面查看他們的訂票記錄,且可以向系統(tǒng)發(fā)出退款請求。系統(tǒng)將針對詳細狀況做出相應的退款處理。
后臺管理頁面包括以下4個模塊:
(1)班次信息管理:對于班次信息,系統(tǒng)設計了增減編輯和檢查班次滿座率等管理工作;
(2)乘客信息管理:統(tǒng)計并記錄用戶的預訂信息以及申請加車信息,針對退票用戶及時地進行返款處理,對數(shù)據(jù)庫信息實時更新;
(3)加車信息管理:對乘客申請加車情況重新添加班次;
(4)財務信息管理:能夠記錄唐曹客運的周、月、年運營收入狀況。管理員可以在后臺管理用戶、對班車的相關信息進行錄入和修改、按照乘客申請加車的具體情況重新添加班次并合理調度車輛安排發(fā)車。
微信訂票系統(tǒng)主要由用戶模塊和管理員模塊構成:
(1)用戶模塊有查詢、訂票、退票、申請加車、個人信息5個功能模塊,如圖1所示。其中,用戶可以通過“查詢”功能,查看車票預訂詳情。若無滿意的車票顯示,可以在此界面重新輸入出發(fā)地、到達地以及出發(fā)日期,并再次進行查詢。也可以點擊“加車”按鈕進行加車,對班次不足的車次進行加車反饋。通過系統(tǒng)的“預訂”功能可以檢查車票信息。
(2)管理員模塊有班次、乘客、加車、財務4個信息模塊,管理員的站點管理界面可進行具體車輛信息參數(shù)的更改,以及增加或減少具體日期的車次,如圖2所示。
圖1 用戶模塊界面圖
圖2 管理員模塊界面圖
微信訂票系統(tǒng)實體屬性:
(1)用戶信息實體屬性包含ID、登錄名和密碼;
(2)班次信息實體屬性包含始發(fā)地、目的地、發(fā)車時間、到達時間、和價格;
(3)加車信息實體屬性包含登錄名、發(fā)車日期和車次;
(4)訂單信息實體屬性包含登錄名、班次、票數(shù)和支付狀態(tài);
(5)財務信息實體屬性包含周收入、月收入、年收入和訂單列表;
(6)管理員信息實體屬性包含ID、登錄名和密碼。
在User類的使用中,對象創(chuàng)建完成后Django自動生成表auth_user,乘客信息表繼承User類,并繼承id,username,password字段。通過在班次信息表(booksystem_bus)和乘客信息表(auth_user)之間增加一張新表booksystem_bus_user,以及在加車信息表(choice_choice)和乘客信息表(auth_user)之間增加一張新表choice_choice_user,由此實現(xiàn)多對多關系。
考慮到本系統(tǒng)Nginx對靜態(tài)文件的處理能力,設計構建了Nginx+Uwsgi+Django的服務器用來動態(tài)分離和反向代理。HTTP的請求由Nginx做解包與分析,其中,Nginx對靜態(tài)文件進行靜態(tài)的處理返回。Nginx會將動態(tài)文件的請求輸出給Uwsgi,調用Django的文件函數(shù)后將數(shù)據(jù)傳送回Uwsgi,將數(shù)據(jù)輸出到Nginx,最終輸出到客戶端。
微信服務器采用Django的服務器構架,使用wechatpy的SDK進行不同API的接口接入。在微信項目APP下,引入check_signature Invalid Signature Exception、parse_message等函數(shù),解析XML的消息,驗證接入微信請求的有效性;引入WeChatMenu自定義下的view,引導用戶進入客戶端;在項目APP下增加wechatpay下的WeChatJSAPI、WeChatOrder、WeChatRefund,統(tǒng)一下單接口,公眾號網頁JS支付接口以及退款接口,進行微信支付的配置。用戶發(fā)送支付請求,系統(tǒng)會通過Ajax輸送數(shù)據(jù),后臺把前臺數(shù)據(jù)合成XML完成統(tǒng)一下單接口的調用。前臺提取prepay_id通過微信瀏覽器內置JS調用JSAPI支付。在退款接口中,通過雙向證書的驗證,調用WeChatRefundAPI,即可實現(xiàn)申請退款功能。
MTV模式的主要特點體現(xiàn)在全部組件的松耦合形式。Django驅動的Web運用都有精確目標并能獨立修改。當重新命名數(shù)據(jù)表時,管理員的任務可簡化為只更改模型。
該反饋式訂票系統(tǒng)設計采用了Python2.7語言,利用Django1.8.3框架,其自帶的SQLite作為數(shù)據(jù)庫,HTML、CSS與JavaScript作為Web前臺設計,以VMware工作站虛擬機中的Ubuntu作為開發(fā)環(huán)境,為開發(fā)者在Windows系統(tǒng)中順利運行Linux Ubuntu系統(tǒng)提供了必要條件。
(1)班次信息代碼分析:班次信息屬于Django模型,繼承了models.Model,Django默認的后臺管理界面使進度管理得以實現(xiàn)。
(2)乘客信息代碼分析:乘客繼承了Django.contrib.認證。除了auth_user需要輸入的對象,其他的默認字段不需要考慮。
(3)URL映射代碼分析:當用戶在訂票系統(tǒng)中發(fā)起一個網頁的請求時,Django控制器會接管通過url.py文件來尋找相應的視圖,然后返回HTML響應或如果沒有找到則返回404未找到錯誤,其中最重要的是“相符”元組,這是URL和視圖之間映射的定義。
(4)登錄判定代碼分析:當管理員和普通用戶共享登錄窗口時,可以在顯示登錄者信息前確定登錄者的身份并顯示相應的內容。
(5)訂票流程代碼分析:在整個訂票的過程中,第一要明確用戶是否登錄,假如未登錄,就加載登錄頁面;假如用戶已經登錄了,則將其確定的班次傳入bus.id;第二判斷,如果用戶已經預訂了該班次,則沖突信息將被反饋,否則,預訂成功并顯示更新后的預訂成功界面。
(6)退票信息代碼分析:當用戶退款時,后臺需要更新數(shù)據(jù)庫,更新飛行(能力,book_sum,收入)領域,并在booksystem_bus_user刪除順序表。
(7)后臺增加加車信息代碼分析:后臺管理系統(tǒng)具有對加車信息增減修改的功能,具體操作如圖3,可添加加車日期并選擇一個或多個該日期的加車時間點,為前臺提供了供用戶進行反饋操作的加車信息選項。
圖3 增加加車信息代碼
系統(tǒng)設計應用了Django框架,以Nginx+Uwsgi+Django組合作為后臺服務器構架,使用了Python語言,實現(xiàn)了班車查詢、購票、退票以及加車等功能,可以用于緩解學校班車運行壓力,方便師生出行,且具有可自助管理后臺、方便運行與維護和運行穩(wěn)定的優(yōu)點,對于新區(qū)開發(fā)初期的通勤班車運行管理有一定的參考和應用價值。
[1]馬強,肖俊生.大學校車調度系統(tǒng)模型研究[J].科技風, 2012.
[2]王冉陽.基于Django和Python的Web開發(fā)[J].電腦編程技巧與維護,2009.
[3]李舜,王輝.基于WAP的手機上網訂票系統(tǒng)的設計與實現(xiàn)[J].計算機工程與設計,2008.
[4]黃耿生.利用虛擬機搭建Linux操作系統(tǒng)的實踐環(huán)境[J].福建電腦,2013.
[5]梁永恩,萬世明,翟敏換.SQLite數(shù)據(jù)庫在嵌入式系統(tǒng)中的應用研究[J].現(xiàn)代計算機(專業(yè)版),2015.
[6]邱鵬,萬懷宇,林友芳等.基于用戶行為分析的在線訂票系統(tǒng)緩存優(yōu)化策略研究[J].計算機與現(xiàn)代化,2017.
[7]商恩福.網上訂票系統(tǒng)分析與設計[J].電腦編程技巧與維護,2009.
[8]張霞,張志強,呂曉艷等.鐵路學生團體票訂票系統(tǒng)的設計與實現(xiàn)[J].鐵路計算機應用,2013.
華北理工大學2017大學生創(chuàng)新訓練項目“基于微信平臺的反饋式訂票系統(tǒng)”,項目編號:X2017143;華北理工大學校內科技項目,項目編號:25398899。